diff --git a/www/dist-dev/static/app.js b/www/dist-dev/static/app.js index 72ae9eb9..a95c960f 100644 --- a/www/dist-dev/static/app.js +++ b/www/dist-dev/static/app.js @@ -856,7 +856,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ EndpointChart)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var chart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! chart.js */ \"./node_modules/chart.js/dist/chart.esm.js\");\n/* harmony import */ var _actions_CheckActions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../actions/CheckActions */ \"./app/actions/CheckActions.js\");\n/* harmony import */ var _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../actions/EndpointActions */ \"./app/actions/EndpointActions.js\");\n/* harmony import */ var _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../types/ChartTypes */ \"./app/types/ChartTypes.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n/* harmony import */ var _Theme__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Theme */ \"./app/Theme.js\");\n\n\n\n\n\n\n\nconst colors = [\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n];\nclass EndpointChart extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor(props, context) {\n super(props, context);\n this.ticks = (axis) => {\n let ticks = axis.ticks;\n let newTicks = [];\n let dataset = Object.values(this.data)[0];\n let tickMod = 3600000;\n let len = dataset.length;\n if (len) {\n let first = dataset[0];\n let last = dataset[len - 1];\n let range = last.x - first.x;\n if (range >= 2833920000) {\n tickMod = 604800000;\n }\n else if (range >= 1451520000) {\n tickMod = 172800000;\n }\n else if (range >= 611280000) {\n tickMod = 86400000;\n }\n else if (range >= 276480000) {\n tickMod = 43200000;\n }\n else if (range >= 89280000) {\n tickMod = 21600000;\n }\n else {\n tickMod = 3600000;\n }\n }\n for (let i = 0; i < ticks.length; i++) {\n let tick = ticks[i];\n if (tick.value % tickMod === 0) {\n newTicks.push(tick);\n }\n }\n axis.ticks = newTicks;\n };\n this.config = () => {\n this.labels = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartLabels(this.props.resource, this.data);\n let self = this;\n let config = {\n type: 'line',\n options: {\n scales: {\n x: {\n type: 'time',\n title: {\n display: true,\n text: 'Time',\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n padding: 0,\n font: {\n weight: 'bold',\n },\n },\n time: {\n unit: 'minute',\n displayFormats: {\n minute: 'HH:mm',\n },\n },\n ticks: {\n stepSize: 1,\n count: 100,\n maxTicksLimit: 100,\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n source: 'data',\n },\n grid: {\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor2(),\n },\n beforeTickToLabelConversion: this.ticks,\n },\n y: {\n min: this.labels.resource_min,\n max: this.labels.resource_max,\n offset: false,\n beginAtZero: true,\n title: {\n display: true,\n text: this.labels.resource_label,\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n padding: 0,\n font: {\n weight: 'bold',\n },\n },\n ticks: {\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n callback: (val) => {\n switch (this.labels.resource_type) {\n case 'bytes':\n return _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatBytes(val, 0);\n case 'milliseconds':\n return _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatMs(val);\n default:\n return val;\n }\n }\n },\n grid: {\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor2(),\n },\n },\n },\n plugins: {\n title: {\n display: true,\n text: this.labels.title,\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n padding: 3,\n font: {\n size: 13,\n },\n },\n tooltip: {\n enabled: false,\n mode: 'index',\n intersect: false,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n external: (context) => {\n let toolElm = document.getElementById('chartjs-tooltip');\n if (!toolElm) {\n toolElm = document.createElement('div');\n toolElm.id = 'chartjs-tooltip';\n toolElm.className = 'bp3-card';\n toolElm.innerHTML = '
';\n document.body.appendChild(toolElm);\n }\n const model = context.tooltip;\n if (model.opacity === 0) {\n toolElm.style.opacity = '0';\n return;\n }\n function getBody(bodyItem) {\n return bodyItem.lines;\n }\n let boxRect = this.props.getBoxRect();\n let boxBottom = boxRect.bottom + window.pageYOffset;\n let boxTop = boxRect.top + window.pageYOffset + 130;\n let rowCount = 0;\n let height = 0;\n if (model.body) {\n const titleLines = model.title || [];\n const bodyLines = model.body.map(getBody);\n let innerHtml = '';\n titleLines.forEach(function (title) {\n innerHtml += '' + title + '';\n });\n innerHtml += '';\n let tableRows = [];\n bodyLines.forEach(function (body, i) {\n if (!body || !body.length) {\n return;\n }\n let items = body[0].split(';');\n if (items.length < 2) {\n return;\n }\n const colors = model.labelColors[i];\n let style = 'background:' + colors.backgroundColor;\n style += '; border-color:' + colors.borderColor;\n const span = '';\n tableRows.push('' + span + items[0] +\n '' + items[1] + '');\n rowCount += 1;\n });\n height = 26.33 + (rowCount * 17.33);\n let double = height > (boxRect.height - 130);\n let curRow = '';\n rowCount = 0;\n tableRows.forEach(function (columns, i) {\n if (double && !curRow) {\n curRow = columns;\n }\n else {\n innerHtml += '' + curRow + columns + '';\n curRow = '';\n rowCount += 1;\n }\n });\n if (curRow) {\n innerHtml += '' + curRow + '';\n curRow = '';\n rowCount += 1;\n }\n height = 26.33 + (rowCount * 17.33);\n innerHtml += '';\n let tableRoot = toolElm.querySelector('table');\n tableRoot.innerHTML = innerHtml;\n }\n toolElm = document.getElementById('chartjs-tooltip');\n const position = context.chart.canvas.getBoundingClientRect();\n toolElm.style.opacity = '1';\n toolElm.style.position = 'absolute';\n if (this.props.left) {\n toolElm.style.right = \"\";\n toolElm.style.left = (document.body.offsetWidth -\n position.right + window.pageXOffset - 18) + 'px';\n }\n else {\n toolElm.style.left = \"\";\n toolElm.style.right = (document.body.offsetWidth -\n position.left + window.pageXOffset + 3) + 'px';\n }\n let toolTop = Math.round(position.top + (position.height / 2) -\n (height / 2) + window.pageYOffset);\n if (height > (boxRect.height - 130)) {\n toolTop = Math.round(boxRect.top + (boxRect.height / 2) -\n (height / 2) + window.pageYOffset);\n }\n else if (toolTop < boxTop) {\n toolTop = boxTop;\n }\n else if ((toolTop + height) > boxBottom) {\n toolTop = boxBottom - height;\n }\n toolElm.style.top = toolTop + 'px';\n toolElm.style.pointerEvents = 'none';\n },\n callbacks: {\n label(item) {\n let raw = item.raw;\n if (self.labels.hide_zero && !raw.y) {\n return '';\n }\n let val = '';\n if (raw) {\n switch (self.labels.resource_type) {\n case 'bytes':\n val = _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatBytes(raw.y, self.labels.resource_fixed);\n break;\n case 'milliseconds':\n val = _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatMs(raw.y);\n break;\n case 'float':\n val = raw.y.toFixed(self.labels.resource_fixed);\n break;\n default:\n val = raw.y;\n }\n }\n let dataset = item.dataset;\n if (self.labels.resource_fixed) {\n return dataset.label + ';' +\n val + self.labels.resource_suffix;\n }\n return dataset.label + ';' + val +\n self.labels.resource_suffix;\n },\n },\n },\n },\n },\n data: {\n datasets: [],\n },\n };\n let data = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartData(this.props.resource, this.data);\n for (let i = 0; i < this.labels.datasets.length; i++) {\n let datasetLabels = this.labels.datasets[i];\n config.data.datasets.push({\n label: datasetLabels.label,\n data: data[i],\n fill: 'origin',\n pointRadius: 0,\n backgroundColor: colors[i] + '15',\n borderColor: colors[i],\n borderWidth: 2,\n });\n }\n return config;\n };\n this.state = {\n hidden: false,\n disabled: false,\n };\n this.chartRef = react__WEBPACK_IMPORTED_MODULE_0__.createRef();\n }\n update(sync, period, interval) {\n this.sync = sync;\n this.period = period;\n this.interval = interval;\n let loading = true;\n this.props.onLoading();\n let chartResp;\n if (this.props.check) {\n chartResp = _actions_CheckActions__WEBPACK_IMPORTED_MODULE_2__.chart(this.props.check, this.props.resource, this.period, this.interval);\n }\n else {\n chartResp = _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_3__.chart(this.props.endpoint, this.props.resource, this.period, this.interval);\n }\n chartResp.then((data) => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n if (data && data.has_data && data.data) {\n if (this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: false,\n });\n }\n this.data = data.data;\n if (this.chart) {\n this.updateChart();\n }\n else {\n this.chart = new chart_js__WEBPACK_IMPORTED_MODULE_1__.Chart(this.chartRef.current, this.config());\n }\n }\n else {\n if (!this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: true,\n });\n }\n }\n }).catch(() => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n });\n }\n updateChart() {\n try {\n this.labels = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartLabels(this.props.resource, this.data);\n let data = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartData(this.props.resource, this.data);\n let dataLen = data.length;\n let datasetsLen = this.chart.data.datasets.length;\n for (let i = 0; i < Math.min(dataLen, datasetsLen); i++) {\n this.chart.data.datasets[i].label = this.labels.datasets[i].label;\n this.chart.data.datasets[i].data = data[i];\n }\n if (dataLen > datasetsLen) {\n for (let i = datasetsLen; i < dataLen; i++) {\n this.chart.data.datasets.push({\n label: this.labels.datasets[i].label,\n data: data[i],\n fill: 'origin',\n pointRadius: 0,\n backgroundColor: colors[i] + '15',\n borderColor: colors[i],\n borderWidth: 2,\n });\n }\n }\n else if (datasetsLen > dataLen) {\n for (let i = 0; i < datasetsLen - dataLen; i++) {\n this.chart.data.datasets.pop();\n }\n }\n this.chart.update();\n }\n catch (error) {\n console.error(error);\n }\n }\n componentDidMount() {\n this.sync = this.props.sync;\n this.period = this.props.period;\n this.interval = this.props.interval;\n let loading = true;\n this.props.onLoading();\n let chartResp;\n if (this.props.check) {\n chartResp = _actions_CheckActions__WEBPACK_IMPORTED_MODULE_2__.chart(this.props.check, this.props.resource, this.period, this.interval);\n }\n else {\n chartResp = _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_3__.chart(this.props.endpoint, this.props.resource, this.period, this.interval);\n }\n chartResp.then((data) => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n if (data && data.has_data && data.data) {\n if (this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: false,\n });\n }\n this.data = data.data;\n this.chart = new chart_js__WEBPACK_IMPORTED_MODULE_1__.Chart(this.chartRef.current, this.config());\n }\n else {\n if (!this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: true,\n });\n }\n }\n }).catch(() => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n });\n }\n componentWillUnmount() {\n if (this.chart) {\n this.chart.destroy();\n }\n }\n render() {\n if ((this.sync !== undefined && this.period !== undefined &&\n this.interval !== undefined) &&\n (this.props.sync !== this.sync ||\n this.props.period !== this.period ||\n this.props.interval !== this.interval)) {\n this.update(this.props.sync, this.props.period, this.props.interval);\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"canvas\", { hidden: this.state.hidden, ref: this.chartRef });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LG9CQUFvQjtRQUNuQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ3JCO0lBQ0YsQ0FBQztJQUVELE1BQU07UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxTQUFTO1lBQ3ZELElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDO1lBQzVCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUk7Z0JBQzlCLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNO2dCQUNqQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQ3JFO1FBRUQsT0FBTyw2REFDTixNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQ3pCLEdBQUcsRUFBRSxJQUFJLENBQUMsUUFBUSxHQUNqQixDQUFDO0lBQ0osQ0FBQztDQUNEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcHJpdHVubC16ZXJvLy4vYXBwL2NvbXBvbmVudHMvRW5kcG9pbnRDaGFydC50c3g/ZjYyZCJdLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vUmVmZXJlbmNlcy5kLnRzXCIvPlxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgQ2hhcnRKcyBmcm9tICdjaGFydC5qcyc7XG5pbXBvcnQgKiBhcyBDaGVja0FjdGlvbnMgZnJvbSAnLi4vYWN0aW9ucy9DaGVja0FjdGlvbnMnO1xuaW1wb3J0ICogYXMgRW5kcG9pbnRBY3Rpb25zIGZyb20gJy4uL2FjdGlvbnMvRW5kcG9pbnRBY3Rpb25zJztcbmltcG9ydCAqIGFzIENoYXJ0VHlwZXMgZnJvbSAnLi4vdHlwZXMvQ2hhcnRUeXBlcyc7XG5pbXBvcnQgKiBhcyBNaXNjVXRpbHMgZnJvbSAnLi4vdXRpbHMvTWlzY1V0aWxzJztcbmltcG9ydCAqIGFzIFRoZW1lIGZyb20gJy4uL1RoZW1lJztcblxuaW50ZXJmYWNlIFByb3BzIHtcblx0ZW5kcG9pbnQ/OiBzdHJpbmc7XG5cdGNoZWNrPzogc3RyaW5nO1xuXHRyZXNvdXJjZTogc3RyaW5nO1xuXHRzeW5jOiBudW1iZXI7XG5cdHBlcmlvZDogbnVtYmVyO1xuXHRpbnRlcnZhbDogbnVtYmVyO1xuXHRsZWZ0OiBib29sZWFuO1xuXHRvbkxvYWRpbmc6ICgpID0+IHZvaWQ7XG5cdG9uTG9hZGVkOiAoKSA9PiB2b2lkO1xuXHRnZXRCb3hSZWN0OiAoKSA9PiBET01SZWN0O1xufVxuXG5pbnRlcmZhY2UgU3RhdGUge1xuXHRoaWRkZW46IGJvb2xlYW47XG5cdGRpc2FibGVkOiBib29sZWFuO1xufVxuXG4vLyBjb25zdCBjb2xvcnMgPSBbXG4vLyBcdCcjZDUwMDAwJywgLy8gcmVkXG4vLyBcdCcjYzUxMTYyJywgLy8gcGlua1xuLy8gXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuLy8gXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG4vLyBcdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG4vLyBcdCcjMjk2MmZmJywgLy8gYmx1ZVxuLy8gXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcbi8vIFx0JyMwMGI4ZDQnLCAvLyBjeWFuXG4vLyBcdCcjMDBiZmE1JywgLy8gdGVhbFxuLy8gXHQnIzAwYzg1MycsIC8vIGdyZWVuXG4vLyBcdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cbi8vIFx0JyNhZWVhMDAnLCAvLyBsaW1lXG4vLyBcdCcjZmZkNjAwJywgLy8geWVsbG93XG4vLyBcdCcjZmZhYjAwJywgLy8gYW1iZXJcbi8vIFx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcbi8vIFx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuLy8gXHQnIzVkNDAzNycsIC8vIGJyb3duXG4vLyBcdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG4vLyBdO1xuXG5jb25zdCBjb2xvcnMgPSBbXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5cblx0JyMwMDkxZWEnLCAvLyBsaWdodCBibHVlXG5cdCcjZDUwMDAwJywgLy8gcmVkXG5cdCcjMDBjODUzJywgLy8gZ3JlZW5cblx0JyNhYTAwZmYnLCAvLyBwdXJwbGVcblx0JyNmZmFiMDAnLCAvLyBhbWJlclxuXHQnI2M1MTE2MicsIC8vIHBpbmtcblx0JyMyOTYyZmYnLCAvLyBibHVlXG5cdCcjZmY2ZDAwJywgLy8gb3JhbmdlXG5cdCcjMDBiZmE1JywgLy8gdGVhbFxuXHQnIzMwNGZmZScsIC8vIGluZGlnb1xuXHQnIzAwYjhkNCcsIC8vIGN5YW5cblx0JyM2MjAwZWEnLCAvLyBkZWVwIHB1cnBsZVxuXHQnI2ZmZDYwMCcsIC8vIHllbGxvd1xuXHQnI2RkMmMwMCcsIC8vIGRlZXAgb3JhbmdlXG5cdCcjNWQ0MDM3JywgLy8gYnJvd25cblx0JyM0NTVhNjQnLCAvLyBibHVlIGdyZXlcblx0JyM2NGRkMTcnLCAvLyBsaWdodCBncmVlblxuXHQnI2FlZWEwMCcsIC8vIGxpbWVcblxuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5dO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmRwb2ludENoYXJ0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuXHRkYXRhOiBDaGFydFR5cGVzLkNoYXJ0RGF0YTtcblx0c3luYzogbnVtYmVyO1xuXHRwZXJpb2Q6IG51bWJlcjtcblx0aW50ZXJ2YWw6IG51bWJlcjtcblx0Y2hhcnQ6IENoYXJ0SnMuQ2hhcnQ7XG5cdGNoYXJ0UmVmOiBSZWFjdC5SZWZPYmplY3Q8SFRNTENhbnZhc0VsZW1lbnQ+O1xuXHRsYWJlbHM6IENoYXJ0VHlwZXMuTGFiZWxzO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBhbnksIGNvbnRleHQ6IGFueSkge1xuXHRcdHN1cGVyKHByb3BzLCBjb250ZXh0KTtcblx0XHR0aGlzLnN0YXRlID0ge1xuXHRcdFx0aGlkZGVuOiBmYWxzZSxcblx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHR9O1xuXHRcdHRoaXMuY2hhcnRSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcblx0fVxuXG5cdHRpY2tzID0gKGF4aXM6IENoYXJ0SnMuU2NhbGUpID0+IHtcblx0XHRsZXQgdGlja3MgPSBheGlzLnRpY2tzO1xuXHRcdGxldCBuZXdUaWNrczogQ2hhcnRKcy5UaWNrW10gPSBbXTtcblx0XHRsZXQgZGF0YXNldCA9IE9iamVjdC52YWx1ZXModGhpcy5kYXRhKVswXTtcblx0XHRsZXQgdGlja01vZCA9IDM2MDAwMDA7IC8vIDEgaG91clxuXHRcdGxldCBsZW4gPSBkYXRhc2V0Lmxlbmd0aDtcblxuXHRcdGlmIChsZW4pIHtcblx0XHRcdGxldCBmaXJzdCA9IGRhdGFzZXRbMF0gYXMgQ2hhcnRKcy5TY2F0dGVyRGF0YVBvaW50O1xuXHRcdFx0bGV0IGxhc3QgPSBkYXRhc2V0W2xlbi0xXSBhcyBDaGFydEpzLlNjYXR0ZXJEYXRhUG9pbnQ7XG5cdFx0XHRsZXQgcmFuZ2UgPSBsYXN0LnggLSBmaXJzdC54O1xuXG5cdFx0XHRpZiAocmFuZ2UgPj0gMjgzMzkyMDAwMCkge1xuXHRcdFx0XHR0aWNrTW9kID0gNjA0ODAwMDAwOyAvLyA3IGRheVxuXHRcdFx0fSBlbHNlIGlmIChyYW5nZSA+PSAxNDUxNTIwMDAwKSB7XG5cdFx0XHRcdHRpY2tNb2QgPSAxNzI4MDAwMDA7IC8vIDIgZGF5XG5cdFx0XHR9IGVsc2UgaWYgKHJhbmdlID49IDYxMTI4MDAwMCkge1xuXHRcdFx0XHR0aWNrTW9kID0gODY0MDAwMDA7IC8vIDEgZGF5XG5cdFx0XHR9IGVsc2UgaWYgKHJhbmdlID49IDI3NjQ4MDAwMCkge1xuXHRcdFx0XHR0aWNrTW9kID0gNDMyMDAwMDA7IC8vIDEyIGhvdXJzXG5cdFx0XHR9IGVsc2UgaWYgKHJhbmdlID49IDg5MjgwMDAwKSB7XG5cdFx0XHRcdHRpY2tNb2QgPSAyMTYwMDAwMDsgLy8gNiBob3Vyc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGlja01vZCA9IDM2MDAwMDA7IC8vIDEgaG91cnNcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRpY2tzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgdGljayA9IHRpY2tzW2ldO1xuXG5cdFx0XHRpZiAodGljay52YWx1ZSAlIHRpY2tNb2QgPT09IDApIHtcblx0XHRcdFx0bmV3VGlja3MucHVzaCh0aWNrKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRheGlzLnRpY2tzID0gbmV3VGlja3M7XG5cdH1cblxuXHRjb25maWcgPSAoKTogQ2hhcnRKcy5DaGFydENvbmZpZ3VyYXRpb24gPT4ge1xuXHRcdHRoaXMubGFiZWxzID0gQ2hhcnRUeXBlcy5nZXRDaGFydExhYmVscyh0aGlzLnByb3BzLnJlc291cmNlLCB0aGlzLmRhdGEpO1xuXHRcdGxldCBzZWxmID0gdGhpcztcblxuXHRcdGxldCBjb25maWcgPSB7XG5cdFx0XHR0eXBlOiAnbGluZScsXG5cdFx0XHRvcHRpb25zOiB7XG5cdFx0XHRcdHNjYWxlczoge1xuXHRcdFx0XHRcdHg6IHtcblx0XHRcdFx0XHRcdHR5cGU6ICd0aW1lJyxcblx0XHRcdFx0XHRcdHRpdGxlOiB7XG5cdFx0XHRcdFx0XHRcdGRpc3BsYXk6IHRydWUsXG5cdFx0XHRcdFx0XHRcdHRleHQ6ICdUaW1lJyxcblx0XHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IxKCksXG5cdFx0XHRcdFx0XHRcdHBhZGRpbmc6IDAsXG5cdFx0XHRcdFx0XHRcdGZvbnQ6IHtcblx0XHRcdFx0XHRcdFx0XHR3ZWlnaHQ6ICdib2xkJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR0aW1lOiB7XG5cdFx0XHRcdFx0XHRcdHVuaXQ6ICdtaW51dGUnLFxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5Rm9ybWF0czoge1xuXHRcdFx0XHRcdFx0XHRcdG1pbnV0ZTogJ0hIOm1tJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR0aWNrczoge1xuXHRcdFx0XHRcdFx0XHRzdGVwU2l6ZTogMSxcblx0XHRcdFx0XHRcdFx0Y291bnQ6IDEwMCxcblx0XHRcdFx0XHRcdFx0bWF4VGlja3NMaW1pdDogMTAwLFxuXHRcdFx0XHRcdFx0XHRjb2xvcjogVGhlbWUuY2hhcnRDb2xvcjEoKSxcblx0XHRcdFx0XHRcdFx0c291cmNlOiAnZGF0YScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Z3JpZDoge1xuXHRcdFx0XHRcdFx0XHRjb2xvcjogVGhlbWUuY2hhcnRDb2xvcjIoKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRiZWZvcmVUaWNrVG9MYWJlbENvbnZlcnNpb246IHRoaXMudGlja3MsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR5OiB7XG5cdFx0XHRcdFx0XHRtaW46IHRoaXMubGFiZWxzLnJlc291cmNlX21pbixcblx0XHRcdFx0XHRcdG1heDogdGhpcy5sYWJlbHMucmVzb3VyY2VfbWF4LFxuXHRcdFx0XHRcdFx0b2Zmc2V0OiBmYWxzZSxcblx0XHRcdFx0XHRcdGJlZ2luQXRaZXJvOiB0cnVlLFxuXHRcdFx0XHRcdFx0dGl0bGU6IHtcblx0XHRcdFx0XHRcdFx0ZGlzcGxheTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0dGV4dDogdGhpcy5sYWJlbHMucmVzb3VyY2VfbGFiZWwsXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiBUaGVtZS5jaGFydENvbG9yMSgpLFxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nOiAwLFxuXHRcdFx0XHRcdFx0XHRmb250OiB7XG5cdFx0XHRcdFx0XHRcdFx0d2VpZ2h0OiAnYm9sZCcsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dGlja3M6IHtcblx0XHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IxKCksXG5cdFx0XHRcdFx0XHRcdGNhbGxiYWNrOiAodmFsOiBudW1iZXIpOiBudW1iZXIgfCBzdHJpbmcgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAodGhpcy5sYWJlbHMucmVzb3VyY2VfdHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnYnl0ZXMnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTWlzY1V0aWxzLmZvcm1hdEJ5dGVzKHZhbCwgMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdtaWxsaXNlY29uZHMnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTWlzY1V0aWxzLmZvcm1hdE1zKHZhbCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGdyaWQ6IHtcblx0XHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IyKCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHBsdWdpbnM6IHtcblx0XHRcdFx0XHR0aXRsZToge1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogdHJ1ZSxcblx0XHRcdFx0XHRcdHRleHQ6IHRoaXMubGFiZWxzLnRpdGxlLFxuXHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IxKCksXG5cdFx0XHRcdFx0XHRwYWRkaW5nOiAzLFxuXHRcdFx0XHRcdFx0Zm9udDoge1xuXHRcdFx0XHRcdFx0XHRzaXplOiAxMyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR0b29sdGlwOiB7XG5cdFx0XHRcdFx0XHRlbmFibGVkOiBmYWxzZSxcblx0XHRcdFx0XHRcdG1vZGU6ICdpbmRleCcsXG5cdFx0XHRcdFx0XHRpbnRlcnNlY3Q6IGZhbHNlLFxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjcpJyxcblx0XHRcdFx0XHRcdGV4dGVybmFsOiAoY29udGV4dCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRsZXQgdG9vbEVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFydGpzLXRvb2x0aXAnKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIXRvb2xFbG0pIHtcblx0XHRcdFx0XHRcdFx0XHR0b29sRWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRcdFx0XHRcdFx0dG9vbEVsbS5pZCA9ICdjaGFydGpzLXRvb2x0aXAnO1xuXHRcdFx0XHRcdFx0XHRcdHRvb2xFbG0uY2xhc3NOYW1lID0gJ2JwMy1jYXJkJztcblx0XHRcdFx0XHRcdFx0XHR0b29sRWxtLmlubmVySFRNTCA9ICc8dGFibGUgY2xhc3M9XCJicDMtaHRtbC10YWJsZSAnICtcblx0XHRcdFx0XHRcdFx0XHRcdCdicDMtaHRtbC10YWJsZS1ib3JkZXJlZCBicDMtaHRtbC10YWJsZS1zdHJpcGVkICcgK1xuXHRcdFx0XHRcdFx0XHRcdFx0J2JwMy1zbWFsbFwiPjwvdGFibGU+Jztcblx0XHRcdFx0XHRcdFx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRvb2xFbG0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Y29uc3QgbW9kZWwgPSBjb250ZXh0LnRvb2x0aXA7XG5cdFx0XHRcdFx0XHRcdGlmIChtb2RlbC5vcGFjaXR5ID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dG9vbEVsbS5zdHlsZS5vcGFjaXR5ID0gJzAnO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIGdldEJvZHkoYm9keUl0ZW06IGFueSkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBib2R5SXRlbS5saW5lcztcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGxldCBib3hSZWN0ID0gdGhpcy5wcm9wcy5nZXRCb3hSZWN0KClcblx0XHRcdFx0XHRcdFx0bGV0IGJveEJvdHRvbSA9IGJveFJlY3QuYm90dG9tICsgd2luZG93LnBhZ2VZT2Zmc2V0XG5cdFx0XHRcdFx0XHRcdGxldCBib3hUb3AgPSBib3hSZWN0LnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCArIDEzMFxuXG5cdFx0XHRcdFx0XHRcdGxldCByb3dDb3VudCA9IDA7XG5cdFx0XHRcdFx0XHRcdGxldCBoZWlnaHQgPSAwO1xuXHRcdFx0XHRcdFx0XHRpZiAobW9kZWwuYm9keSkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRpdGxlTGluZXMgPSBtb2RlbC50aXRsZSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBib2R5TGluZXMgPSBtb2RlbC5ib2R5Lm1hcChnZXRCb2R5KTtcblxuXHRcdFx0XHRcdFx0XHRcdGxldCBpbm5lckh0bWwgPSAnPHRoZWFkPic7XG5cblx0XHRcdFx0XHRcdFx0XHR0aXRsZUxpbmVzLmZvckVhY2goZnVuY3Rpb24odGl0bGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlubmVySHRtbCArPSAnPHRyPjx0aCBjb2xzcGFuPVwiMlwiPicgKyB0aXRsZSArICc8L3RoPjwvdHI+Jztcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRpbm5lckh0bWwgKz0gJzwvdGhlYWQ+PHRib2R5Pic7XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgdGFibGVSb3dzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdFx0XHRcdFx0XHRcdFx0Ym9keUxpbmVzLmZvckVhY2goZnVuY3Rpb24oYm9keSwgaSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFib2R5IHx8ICFib2R5Lmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IGl0ZW1zID0gYm9keVswXS5zcGxpdCgnOycpXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoaXRlbXMubGVuZ3RoIDwgMikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgY29sb3JzID0gbW9kZWwubGFiZWxDb2xvcnNbaV07XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgc3R5bGUgPSAnYmFja2dyb3VuZDonICsgY29sb3JzLmJhY2tncm91bmRDb2xvcjtcblx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlICs9ICc7IGJvcmRlci1jb2xvcjonICsgY29sb3JzLmJvcmRlckNvbG9yO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qgc3BhbiA9ICc8c3BhbiBzdHlsZT1cIicgKyBzdHlsZSArICdcIj48L3NwYW4+Jztcblx0XHRcdFx0XHRcdFx0XHRcdHRhYmxlUm93cy5wdXNoKCc8dGQgY2xhc3M9XCJsaW5lLWJveFwiPicgKyBzcGFuICsgaXRlbXNbMF0gK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQnPC90ZD48dGQ+JyArIGl0ZW1zWzFdICsgJzwvdGQ+JylcblxuXHRcdFx0XHRcdFx0XHRcdFx0cm93Q291bnQgKz0gMVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0aGVpZ2h0ID0gMjYuMzMgKyAocm93Q291bnQgKiAxNy4zMyk7XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgZG91YmxlID0gaGVpZ2h0ID4gKGJveFJlY3QuaGVpZ2h0IC0gMTMwKTtcblx0XHRcdFx0XHRcdFx0XHRsZXQgY3VyUm93ID0gJyc7XG5cblx0XHRcdFx0XHRcdFx0XHRyb3dDb3VudCA9IDBcblx0XHRcdFx0XHRcdFx0XHR0YWJsZVJvd3MuZm9yRWFjaChmdW5jdGlvbihjb2x1bW5zLCBpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoZG91YmxlICYmICFjdXJSb3cpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VyUm93ID0gY29sdW1uc1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5uZXJIdG1sICs9ICc8dHI+JyArIGN1clJvdyArIGNvbHVtbnMgKyAnPC90cj4nO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjdXJSb3cgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRcdFx0cm93Q291bnQgKz0gMVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0pXG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoY3VyUm93KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpbm5lckh0bWwgKz0gJzx0cj4nICsgY3VyUm93ICsgJzwvdHI+Jztcblx0XHRcdFx0XHRcdFx0XHRcdGN1clJvdyA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdFx0cm93Q291bnQgKz0gMVxuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdGhlaWdodCA9IDI2LjMzICsgKHJvd0NvdW50ICogMTcuMzMpO1xuXG5cdFx0XHRcdFx0XHRcdFx0aW5uZXJIdG1sICs9ICc8L3Rib2R5Pic7XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgdGFibGVSb290ID0gdG9vbEVsbS5xdWVyeVNlbGVjdG9yKCd0YWJsZScpO1xuXHRcdFx0XHRcdFx0XHRcdHRhYmxlUm9vdC5pbm5lckhUTUwgPSBpbm5lckh0bWw7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHR0b29sRWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NoYXJ0anMtdG9vbHRpcCcpO1xuXHRcdFx0XHRcdFx0XHRjb25zdCBwb3NpdGlvbiA9IGNvbnRleHQuY2hhcnQuY2FudmFzLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG5cdFx0XHRcdFx0XHRcdHRvb2xFbG0uc3R5bGUub3BhY2l0eSA9ICcxJztcblx0XHRcdFx0XHRcdFx0dG9vbEVsbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG5cblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMucHJvcHMubGVmdCkge1xuXHRcdFx0XHRcdFx0XHRcdHRvb2xFbG0uc3R5bGUucmlnaHQgPSBcIlwiXG5cdFx0XHRcdFx0XHRcdFx0dG9vbEVsbS5zdHlsZS5sZWZ0ID0gKGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGggLVxuXHRcdFx0XHRcdFx0XHRcdFx0cG9zaXRpb24ucmlnaHQgKyB3aW5kb3cucGFnZVhPZmZzZXQgLSAxOCkgKyAncHgnO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRvb2xFbG0uc3R5bGUubGVmdCA9IFwiXCJcblx0XHRcdFx0XHRcdFx0XHR0b29sRWxtLnN0eWxlLnJpZ2h0ID0gKGRvY3VtZW50LmJvZHkub2Zmc2V0V2lkdGggLVxuXHRcdFx0XHRcdFx0XHRcdFx0cG9zaXRpb24ubGVmdCArIHdpbmRvdy5wYWdlWE9mZnNldCArIDMpICsgJ3B4Jztcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGxldCB0b29sVG9wID0gTWF0aC5yb3VuZChwb3NpdGlvbi50b3AgKyAocG9zaXRpb24uaGVpZ2h0IC8gMikgLVxuXHRcdFx0XHRcdFx0XHRcdChoZWlnaHQgLyAyKSArIHdpbmRvdy5wYWdlWU9mZnNldCk7XG5cblx0XHRcdFx0XHRcdFx0aWYgKGhlaWdodCA+IChib3hSZWN0LmhlaWdodCAtIDEzMCkpIHtcblx0XHRcdFx0XHRcdFx0XHR0b29sVG9wID0gTWF0aC5yb3VuZChib3hSZWN0LnRvcCArIChib3hSZWN0LmhlaWdodCAvIDIpIC1cblx0XHRcdFx0XHRcdFx0XHRcdChoZWlnaHQgLyAyKSArIHdpbmRvdy5wYWdlWU9mZnNldCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAodG9vbFRvcCA8IGJveFRvcCkge1xuXHRcdFx0XHRcdFx0XHRcdHRvb2xUb3AgPSBib3hUb3Bcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmICgodG9vbFRvcCArIGhlaWdodCkgPiBib3hCb3R0b20pIHtcblx0XHRcdFx0XHRcdFx0XHQvL3Rvb2xUb3AgLT0gKHRvb2xUb3AgKyBoZWlnaHQpIC0gYm94Qm90dG9tXG5cdFx0XHRcdFx0XHRcdFx0dG9vbFRvcCA9IGJveEJvdHRvbSAtIGhlaWdodFxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0dG9vbEVsbS5zdHlsZS50b3AgPSB0b29sVG9wICsgJ3B4Jztcblx0XHRcdFx0XHRcdFx0dG9vbEVsbS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJ25vbmUnO1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGNhbGxiYWNrczoge1xuXHRcdFx0XHRcdFx0XHRsYWJlbChpdGVtKTogc3RyaW5nIHtcblx0XHRcdFx0XHRcdFx0XHRsZXQgcmF3ID0gaXRlbS5yYXcgYXMgYW55O1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKHNlbGYubGFiZWxzLmhpZGVfemVybyAmJiAhcmF3LnkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdGxldCB2YWwgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAocmF3KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRzd2l0Y2ggKHNlbGYubGFiZWxzLnJlc291cmNlX3R5cGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnYnl0ZXMnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbCA9IE1pc2NVdGlscy5mb3JtYXRCeXRlcyhyYXcueSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNlbGYubGFiZWxzLnJlc291cmNlX2ZpeGVkKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnbWlsbGlzZWNvbmRzJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWwgPSBNaXNjVXRpbHMuZm9ybWF0TXMocmF3LnkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdmbG9hdCc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsID0gcmF3LnkudG9GaXhlZChzZWxmLmxhYmVscy5yZXNvdXJjZV9maXhlZCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsID0gcmF3Lnk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0bGV0IGRhdGFzZXQgPSBpdGVtLmRhdGFzZXQgYXMgYW55O1xuXHRcdFx0XHRcdFx0XHRcdGlmIChzZWxmLmxhYmVscy5yZXNvdXJjZV9maXhlZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGRhdGFzZXQubGFiZWwgKyAnOycgK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWwgKyBzZWxmLmxhYmVscy5yZXNvdXJjZV9zdWZmaXg7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBkYXRhc2V0LmxhYmVsICsgJzsnICsgdmFsICtcblx0XHRcdFx0XHRcdFx0XHRcdHNlbGYubGFiZWxzLnJlc291cmNlX3N1ZmZpeDtcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fSxcblx0XHRcdH0sXG5cdFx0XHRkYXRhOiB7XG5cdFx0XHRcdGRhdGFzZXRzOiBbXSxcblx0XHRcdH0sXG5cdFx0fSBhcyBDaGFydEpzLkNoYXJ0Q29uZmlndXJhdGlvbjtcblxuXHRcdGxldCBkYXRhID0gQ2hhcnRUeXBlcy5nZXRDaGFydERhdGEodGhpcy5wcm9wcy5yZXNvdXJjZSwgdGhpcy5kYXRhKTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGFiZWxzLmRhdGFzZXRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgZGF0YXNldExhYmVscyA9IHRoaXMubGFiZWxzLmRhdGFzZXRzW2ldO1xuXG5cdFx0XHRjb25maWcuZGF0YS5kYXRhc2V0cy5wdXNoKHtcblx0XHRcdFx0bGFiZWw6IGRhdGFzZXRMYWJlbHMubGFiZWwsXG5cdFx0XHRcdGRhdGE6IGRhdGFbaV0sXG5cdFx0XHRcdGZpbGw6ICdvcmlnaW4nLFxuXHRcdFx0XHRwb2ludFJhZGl1czogMCxcblx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiBjb2xvcnNbaV0gKyAnMTUnLFxuXHRcdFx0XHRib3JkZXJDb2xvcjogY29sb3JzW2ldLFxuXHRcdFx0XHRib3JkZXJXaWR0aDogMixcblx0XHRcdH0gYXMgQ2hhcnRKcy5DaGFydERhdGFzZXQpO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb25maWc7XG5cdH1cblxuXHR1cGRhdGUoc3luYzogbnVtYmVyLCBwZXJpb2Q6IG51bWJlciwgaW50ZXJ2YWw6IG51bWJlcik6IHZvaWQge1xuXHRcdHRoaXMuc3luYyA9IHN5bmM7XG5cdFx0dGhpcy5wZXJpb2QgPSBwZXJpb2Q7XG5cdFx0dGhpcy5pbnRlcnZhbCA9IGludGVydmFsO1xuXG5cdFx0bGV0IGxvYWRpbmcgPSB0cnVlO1xuXHRcdHRoaXMucHJvcHMub25Mb2FkaW5nKCk7XG5cblx0XHRsZXQgY2hhcnRSZXNwOiBQcm9taXNlPGFueT5cblx0XHRpZiAodGhpcy5wcm9wcy5jaGVjaykge1xuXHRcdFx0Y2hhcnRSZXNwID0gQ2hlY2tBY3Rpb25zLmNoYXJ0KFxuXHRcdFx0XHR0aGlzLnByb3BzLmNoZWNrLFxuXHRcdFx0XHR0aGlzLnByb3BzLnJlc291cmNlLFxuXHRcdFx0XHR0aGlzLnBlcmlvZCxcblx0XHRcdFx0dGhpcy5pbnRlcnZhbCxcblx0XHRcdClcblx0XHR9IGVsc2Uge1xuXHRcdFx0Y2hhcnRSZXNwID0gRW5kcG9pbnRBY3Rpb25zLmNoYXJ0KFxuXHRcdFx0XHR0aGlzLnByb3BzLmVuZHBvaW50LFxuXHRcdFx0XHR0aGlzLnByb3BzLnJlc291cmNlLFxuXHRcdFx0XHR0aGlzLnBlcmlvZCxcblx0XHRcdFx0dGhpcy5pbnRlcnZhbCxcblx0XHRcdClcblx0XHR9XG5cblx0XHRjaGFydFJlc3AudGhlbigoZGF0YTogQ2hhcnRUeXBlcy5FbmRwb2ludERhdGEpOiB2b2lkID0+IHtcblx0XHRcdGlmIChsb2FkaW5nKSB7XG5cdFx0XHRcdGxvYWRpbmcgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5wcm9wcy5vbkxvYWRlZCgpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZGF0YSAmJiBkYXRhLmhhc19kYXRhICYmIGRhdGEuZGF0YSkge1xuXHRcdFx0XHRpZiAodGhpcy5zdGF0ZS5oaWRkZW4pIHtcblx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRoaWRkZW46IGZhbHNlLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5kYXRhID0gZGF0YS5kYXRhO1xuXHRcdFx0XHRpZiAodGhpcy5jaGFydCkge1xuXHRcdFx0XHRcdHRoaXMudXBkYXRlQ2hhcnQoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLmNoYXJ0ID0gbmV3IENoYXJ0SnMuQ2hhcnQoXG5cdFx0XHRcdFx0XHR0aGlzLmNoYXJ0UmVmLmN1cnJlbnQsXG5cdFx0XHRcdFx0XHR0aGlzLmNvbmZpZygpLFxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmICghdGhpcy5zdGF0ZS5oaWRkZW4pIHtcblx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRoaWRkZW46IHRydWUsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KS5jYXRjaCgoKTogdm9pZCA9PiB7XG5cdFx0XHRpZiAobG9hZGluZykge1xuXHRcdFx0XHRsb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMucHJvcHMub25Mb2FkZWQoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHVwZGF0ZUNoYXJ0KCk6IHZvaWQge1xuXHRcdHRyeSB7XG5cdFx0XHR0aGlzLmxhYmVscyA9IENoYXJ0VHlwZXMuZ2V0Q2hhcnRMYWJlbHModGhpcy5wcm9wcy5yZXNvdXJjZSwgdGhpcy5kYXRhKTtcblx0XHRcdGxldCBkYXRhID0gQ2hhcnRUeXBlcy5nZXRDaGFydERhdGEodGhpcy5wcm9wcy5yZXNvdXJjZSwgdGhpcy5kYXRhKTtcblxuXHRcdFx0bGV0IGRhdGFMZW4gPSBkYXRhLmxlbmd0aDtcblx0XHRcdGxldCBkYXRhc2V0c0xlbiA9IHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cy5sZW5ndGg7XG5cblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgTWF0aC5taW4oZGF0YUxlbiwgZGF0YXNldHNMZW4pOyBpKyspIHtcblx0XHRcdFx0dGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzW2ldLmxhYmVsID0gdGhpcy5sYWJlbHMuZGF0YXNldHNbaV0ubGFiZWw7XG5cdFx0XHRcdHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0c1tpXS5kYXRhID0gZGF0YVtpXSBhcyBhbnk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChkYXRhTGVuID4gZGF0YXNldHNMZW4pIHtcblx0XHRcdFx0Zm9yIChsZXQgaSA9IGRhdGFzZXRzTGVuOyBpIDwgZGF0YUxlbjsgaSsrKSB7XG5cdFx0XHRcdFx0dGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzLnB1c2goe1xuXHRcdFx0XHRcdFx0bGFiZWw6IHRoaXMubGFiZWxzLmRhdGFzZXRzW2ldLmxhYmVsLFxuXHRcdFx0XHRcdFx0ZGF0YTogZGF0YVtpXSxcblx0XHRcdFx0XHRcdGZpbGw6ICdvcmlnaW4nLFxuXHRcdFx0XHRcdFx0cG9pbnRSYWRpdXM6IDAsXG5cdFx0XHRcdFx0XHRiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yc1tpXSArICcxNScsXG5cdFx0XHRcdFx0XHRib3JkZXJDb2xvcjogY29sb3JzW2ldLFxuXHRcdFx0XHRcdFx0Ym9yZGVyV2lkdGg6IDIsXG5cdFx0XHRcdFx0fSBhcyBDaGFydEpzLkNoYXJ0RGF0YXNldCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoZGF0YXNldHNMZW4gPiBkYXRhTGVuKSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YXNldHNMZW4gLSBkYXRhTGVuOyBpKyspIHtcblx0XHRcdFx0XHR0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHMucG9wKCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0dGhpcy5jaGFydC51cGRhdGUoKTtcblx0XHR9IGNhdGNoKGVycm9yKSB7XG5cdFx0XHRjb25zb2xlLmVycm9yKGVycm9yKTtcblx0XHR9XG5cdH1cblxuXHRjb21wb25lbnREaWRNb3VudCgpOiB2b2lkIHtcblx0XHR0aGlzLnN5bmMgPSB0aGlzLnByb3BzLnN5bmM7XG5cdFx0dGhpcy5wZXJpb2QgPSB0aGlzLnByb3BzLnBlcmlvZDtcblx0XHR0aGlzLmludGVydmFsID0gdGhpcy5wcm9wcy5pbnRlcnZhbDtcblxuXHRcdGxldCBsb2FkaW5nID0gdHJ1ZTtcblx0XHR0aGlzLnByb3BzLm9uTG9hZGluZygpO1xuXG5cdFx0bGV0IGNoYXJ0UmVzcDogUHJvbWlzZTxhbnk+XG5cdFx0aWYgKHRoaXMucHJvcHMuY2hlY2spIHtcblx0XHRcdGNoYXJ0UmVzcCA9IENoZWNrQWN0aW9ucy5jaGFydChcblx0XHRcdFx0dGhpcy5wcm9wcy5jaGVjayxcblx0XHRcdFx0dGhpcy5wcm9wcy5yZXNvdXJjZSxcblx0XHRcdFx0dGhpcy5wZXJpb2QsXG5cdFx0XHRcdHRoaXMuaW50ZXJ2YWwsXG5cdFx0XHQpXG5cdFx0fSBlbHNlIHtcblx0XHRcdGNoYXJ0UmVzcCA9IEVuZHBvaW50QWN0aW9ucy5jaGFydChcblx0XHRcdFx0dGhpcy5wcm9wcy5lbmRwb2ludCxcblx0XHRcdFx0dGhpcy5wcm9wcy5yZXNvdXJjZSxcblx0XHRcdFx0dGhpcy5wZXJpb2QsXG5cdFx0XHRcdHRoaXMuaW50ZXJ2YWwsXG5cdFx0XHQpXG5cdFx0fVxuXG5cdFx0Y2hhcnRSZXNwLnRoZW4oKGRhdGE6IENoYXJ0VHlwZXMuRW5kcG9pbnREYXRhKTogdm9pZCA9PiB7XG5cdFx0XHRpZiAobG9hZGluZykge1xuXHRcdFx0XHRsb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMucHJvcHMub25Mb2FkZWQoKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGRhdGEgJiYgZGF0YS5oYXNfZGF0YSAmJiBkYXRhLmRhdGEpIHtcblx0XHRcdFx0aWYgKHRoaXMuc3RhdGUuaGlkZGVuKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0aGlkZGVuOiBmYWxzZSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuZGF0YSA9IGRhdGEuZGF0YTtcblx0XHRcdFx0dGhpcy5jaGFydCA9IG5ldyBDaGFydEpzLkNoYXJ0KFxuXHRcdFx0XHRcdHRoaXMuY2hhcnRSZWYuY3VycmVudCxcblx0XHRcdFx0XHR0aGlzLmNvbmZpZygpLFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKCF0aGlzLnN0YXRlLmhpZGRlbikge1xuXHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdGhpZGRlbjogdHJ1ZSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pLmNhdGNoKCgpOiB2b2lkID0+IHtcblx0XHRcdGlmIChsb2FkaW5nKSB7XG5cdFx0XHRcdGxvYWRpbmcgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy5wcm9wcy5vbkxvYWRlZCgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0Y29tcG9uZW50V2lsbFVubW91bnQoKTogdm9pZCB7XG5cdFx0aWYgKHRoaXMuY2hhcnQpIHtcblx0XHRcdHRoaXMuY2hhcnQuZGVzdHJveSgpO1xuXHRcdH1cblx0fVxuXG5cdHJlbmRlcigpOiBKU1guRWxlbWVudCB7XG5cdFx0aWYgKCh0aGlzLnN5bmMgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnBlcmlvZCAhPT0gdW5kZWZpbmVkICYmXG5cdFx0XHRcdHRoaXMuaW50ZXJ2YWwgIT09IHVuZGVmaW5lZCkgJiZcblx0XHRcdFx0KHRoaXMucHJvcHMuc3luYyAhPT0gdGhpcy5zeW5jIHx8XG5cdFx0XHRcdHRoaXMucHJvcHMucGVyaW9kICE9PSB0aGlzLnBlcmlvZCB8fFxuXHRcdFx0XHR0aGlzLnByb3BzLmludGVydmFsICE9PSB0aGlzLmludGVydmFsKSkge1xuXHRcdFx0dGhpcy51cGRhdGUodGhpcy5wcm9wcy5zeW5jLCB0aGlzLnByb3BzLnBlcmlvZCwgdGhpcy5wcm9wcy5pbnRlcnZhbCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIDxjYW52YXNcblx0XHRcdGhpZGRlbj17dGhpcy5zdGF0ZS5oaWRkZW59XG5cdFx0XHRyZWY9e3RoaXMuY2hhcnRSZWZ9XG5cdFx0Lz47XG5cdH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/components/EndpointChart.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ EndpointChart)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var chart_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! chart.js */ \"./node_modules/chart.js/dist/chart.esm.js\");\n/* harmony import */ var _actions_CheckActions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../actions/CheckActions */ \"./app/actions/CheckActions.js\");\n/* harmony import */ var _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../actions/EndpointActions */ \"./app/actions/EndpointActions.js\");\n/* harmony import */ var _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../types/ChartTypes */ \"./app/types/ChartTypes.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n/* harmony import */ var _Theme__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../Theme */ \"./app/Theme.js\");\n\n\n\n\n\n\n\nconst colors = [\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n '#0091ea',\n '#d50000',\n '#00c853',\n '#aa00ff',\n '#ffab00',\n '#c51162',\n '#2962ff',\n '#ff6d00',\n '#00bfa5',\n '#304ffe',\n '#00b8d4',\n '#6200ea',\n '#ffd600',\n '#dd2c00',\n '#5d4037',\n '#455a64',\n '#64dd17',\n '#aeea00',\n];\nclass EndpointChart extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor(props, context) {\n super(props, context);\n this.ticks = (axis) => {\n let ticks = axis.ticks;\n let newTicks = [];\n let dataset = Object.values(this.data)[0];\n let tickMod = 3600000;\n let len = dataset.length;\n if (len) {\n let first = dataset[0];\n let last = dataset[len - 1];\n let range = last.x - first.x;\n if (range >= 2833920000) {\n tickMod = 604800000;\n }\n else if (range >= 1451520000) {\n tickMod = 172800000;\n }\n else if (range >= 611280000) {\n tickMod = 86400000;\n }\n else if (range >= 276480000) {\n tickMod = 43200000;\n }\n else if (range >= 89280000) {\n tickMod = 21600000;\n }\n else {\n tickMod = 3600000;\n }\n }\n for (let i = 0; i < ticks.length; i++) {\n let tick = ticks[i];\n if (tick.value % tickMod === 0) {\n newTicks.push(tick);\n }\n }\n axis.ticks = newTicks;\n };\n this.config = () => {\n this.labels = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartLabels(this.props.resource, this.data);\n let self = this;\n let config = {\n type: 'line',\n options: {\n scales: {\n x: {\n type: 'time',\n title: {\n display: true,\n text: 'Time',\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n padding: 0,\n font: {\n weight: 'bold',\n },\n },\n time: {\n unit: 'minute',\n displayFormats: {\n minute: 'HH:mm',\n },\n },\n ticks: {\n stepSize: 1,\n count: 100,\n maxTicksLimit: 100,\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n source: 'data',\n },\n grid: {\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor2(),\n },\n beforeTickToLabelConversion: this.ticks,\n },\n y: {\n min: this.labels.resource_min,\n max: this.labels.resource_max,\n offset: false,\n beginAtZero: true,\n title: {\n display: true,\n text: this.labels.resource_label,\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n padding: 0,\n font: {\n weight: 'bold',\n },\n },\n ticks: {\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n callback: (val) => {\n switch (this.labels.resource_type) {\n case 'bytes':\n return _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatBytes(val, 0);\n case 'milliseconds':\n return _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatMs(val);\n default:\n return val;\n }\n }\n },\n grid: {\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor2(),\n },\n },\n },\n plugins: {\n title: {\n display: true,\n text: this.labels.title,\n color: _Theme__WEBPACK_IMPORTED_MODULE_6__.chartColor1(),\n padding: 3,\n font: {\n size: 13,\n },\n },\n tooltip: {\n enabled: false,\n mode: 'index',\n intersect: false,\n backgroundColor: 'rgba(0, 0, 0, 0.7)',\n external: (context) => {\n let toolElm = document.getElementById('chartjs-tooltip');\n if (!toolElm) {\n toolElm = document.createElement('div');\n toolElm.id = 'chartjs-tooltip';\n toolElm.className = 'bp3-card';\n toolElm.innerHTML = '
';\n document.body.appendChild(toolElm);\n }\n const model = context.tooltip;\n if (model.opacity === 0) {\n toolElm.style.opacity = '0';\n return;\n }\n function getBody(bodyItem) {\n return bodyItem.lines;\n }\n let boxRect = this.props.getBoxRect();\n let boxBottom = boxRect.bottom + window.pageYOffset;\n let boxTop = boxRect.top + window.pageYOffset + 130;\n let rowCount = 0;\n let height = 0;\n if (model.body) {\n const titleLines = model.title || [];\n const bodyLines = model.body.map(getBody);\n let innerHtml = '';\n titleLines.forEach(function (title) {\n innerHtml += '' + title + '';\n });\n innerHtml += '';\n let tableRows = [];\n bodyLines.forEach(function (body, i) {\n if (!body || !body.length) {\n return;\n }\n let items = body[0].split(';');\n if (items.length < 2) {\n return;\n }\n const colors = model.labelColors[i];\n let style = 'background:' + colors.backgroundColor;\n style += '; border-color:' + colors.borderColor;\n const span = '';\n tableRows.push('' + span + items[0] +\n '' + items[1] + '');\n rowCount += 1;\n });\n height = 26.33 + (rowCount * 17.33);\n let double = false;\n let curRow = '';\n let curTime = Math.round(Date.now() / 1000);\n if (curTime - this.lastDouble < 60 &&\n height > (boxRect.height - 280)) {\n double = true;\n this.lastDouble = curTime;\n }\n else if (height > (boxRect.height - 130)) {\n double = true;\n this.lastDouble = curTime;\n }\n rowCount = 0;\n tableRows.forEach(function (columns, i) {\n if (double && !curRow) {\n curRow = columns;\n }\n else {\n innerHtml += '' + curRow + columns + '';\n curRow = '';\n rowCount += 1;\n }\n });\n if (curRow) {\n innerHtml += '' + curRow + '';\n curRow = '';\n rowCount += 1;\n }\n height = 26.33 + (rowCount * 17.33);\n innerHtml += '';\n let tableRoot = toolElm.querySelector('table');\n tableRoot.innerHTML = innerHtml;\n }\n toolElm = document.getElementById('chartjs-tooltip');\n const position = context.chart.canvas.getBoundingClientRect();\n toolElm.style.opacity = '1';\n toolElm.style.position = 'absolute';\n if (this.props.left) {\n toolElm.style.right = \"\";\n toolElm.style.left = (document.body.offsetWidth -\n position.right + window.pageXOffset - 18) + 'px';\n }\n else {\n toolElm.style.left = \"\";\n toolElm.style.right = (document.body.offsetWidth -\n position.left + window.pageXOffset + 3) + 'px';\n }\n let toolTop = Math.round(position.top + (position.height / 2) -\n (height / 2) + window.pageYOffset);\n if (height > (boxRect.height - 130)) {\n toolTop = Math.round(boxRect.top + (boxRect.height / 2) -\n (height / 2) + window.pageYOffset);\n }\n else if (toolTop < boxTop) {\n toolTop = boxTop;\n }\n else if ((toolTop + height) > boxBottom) {\n toolTop = boxBottom - height;\n }\n toolElm.style.top = toolTop + 'px';\n toolElm.style.pointerEvents = 'none';\n },\n callbacks: {\n label(item) {\n let raw = item.raw;\n if (self.labels.hide_zero && !raw.y) {\n return '';\n }\n let val = '';\n if (raw) {\n switch (self.labels.resource_type) {\n case 'bytes':\n val = _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatBytes(raw.y, self.labels.resource_fixed);\n break;\n case 'milliseconds':\n val = _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_5__.formatMs(raw.y);\n break;\n case 'float':\n val = raw.y.toFixed(self.labels.resource_fixed);\n break;\n default:\n val = raw.y;\n }\n }\n let dataset = item.dataset;\n if (self.labels.resource_fixed) {\n return dataset.label + ';' +\n val + self.labels.resource_suffix;\n }\n return dataset.label + ';' + val +\n self.labels.resource_suffix;\n },\n },\n },\n },\n },\n data: {\n datasets: [],\n },\n };\n let data = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartData(this.props.resource, this.data);\n for (let i = 0; i < this.labels.datasets.length; i++) {\n let datasetLabels = this.labels.datasets[i];\n config.data.datasets.push({\n label: datasetLabels.label,\n data: data[i],\n fill: 'origin',\n pointRadius: 0,\n backgroundColor: colors[i] + '15',\n borderColor: colors[i],\n borderWidth: 2,\n });\n }\n return config;\n };\n this.state = {\n hidden: false,\n disabled: false,\n };\n this.chartRef = react__WEBPACK_IMPORTED_MODULE_0__.createRef();\n }\n update(sync, period, interval) {\n this.sync = sync;\n this.period = period;\n this.interval = interval;\n let loading = true;\n this.props.onLoading();\n let chartResp;\n if (this.props.check) {\n chartResp = _actions_CheckActions__WEBPACK_IMPORTED_MODULE_2__.chart(this.props.check, this.props.resource, this.period, this.interval);\n }\n else {\n chartResp = _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_3__.chart(this.props.endpoint, this.props.resource, this.period, this.interval);\n }\n chartResp.then((data) => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n if (data && data.has_data && data.data) {\n if (this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: false,\n });\n }\n this.data = data.data;\n if (this.chart) {\n this.updateChart();\n }\n else {\n this.chart = new chart_js__WEBPACK_IMPORTED_MODULE_1__.Chart(this.chartRef.current, this.config());\n }\n }\n else {\n if (!this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: true,\n });\n }\n }\n }).catch(() => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n });\n }\n updateChart() {\n try {\n this.labels = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartLabels(this.props.resource, this.data);\n let data = _types_ChartTypes__WEBPACK_IMPORTED_MODULE_4__.getChartData(this.props.resource, this.data);\n let dataLen = data.length;\n let datasetsLen = this.chart.data.datasets.length;\n for (let i = 0; i < Math.min(dataLen, datasetsLen); i++) {\n this.chart.data.datasets[i].label = this.labels.datasets[i].label;\n this.chart.data.datasets[i].data = data[i];\n }\n if (dataLen > datasetsLen) {\n for (let i = datasetsLen; i < dataLen; i++) {\n this.chart.data.datasets.push({\n label: this.labels.datasets[i].label,\n data: data[i],\n fill: 'origin',\n pointRadius: 0,\n backgroundColor: colors[i] + '15',\n borderColor: colors[i],\n borderWidth: 2,\n });\n }\n }\n else if (datasetsLen > dataLen) {\n for (let i = 0; i < datasetsLen - dataLen; i++) {\n this.chart.data.datasets.pop();\n }\n }\n this.chart.update();\n }\n catch (error) {\n console.error(error);\n }\n }\n componentDidMount() {\n this.sync = this.props.sync;\n this.period = this.props.period;\n this.interval = this.props.interval;\n let loading = true;\n this.props.onLoading();\n let chartResp;\n if (this.props.check) {\n chartResp = _actions_CheckActions__WEBPACK_IMPORTED_MODULE_2__.chart(this.props.check, this.props.resource, this.period, this.interval);\n }\n else {\n chartResp = _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_3__.chart(this.props.endpoint, this.props.resource, this.period, this.interval);\n }\n chartResp.then((data) => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n if (data && data.has_data && data.data) {\n if (this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: false,\n });\n }\n this.data = data.data;\n this.chart = new chart_js__WEBPACK_IMPORTED_MODULE_1__.Chart(this.chartRef.current, this.config());\n }\n else {\n if (!this.state.hidden) {\n this.setState({\n ...this.state,\n hidden: true,\n });\n }\n }\n }).catch(() => {\n if (loading) {\n loading = false;\n this.props.onLoaded();\n }\n });\n }\n componentWillUnmount() {\n if (this.chart) {\n this.chart.destroy();\n }\n }\n render() {\n if ((this.sync !== undefined && this.period !== undefined &&\n this.interval !== undefined) &&\n (this.props.sync !== this.sync ||\n this.props.period !== this.period ||\n this.props.interval !== this.interval)) {\n this.update(this.props.sync, this.props.period, this.props.interval);\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"canvas\", { hidden: this.state.hidden, ref: this.chartRef });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hcHAvY29tcG9uZW50cy9FbmRwb2ludENoYXJ0LmpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQytCO0FBQ0s7QUFDb0I7QUFDTTtBQUNaO0FBQ0Y7QUFDZDtBQW9CbEMsTUFBTSxNQUFNLEdBQUc7SUFDZCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFFVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7Q0FDVCxDQUFDO0FBRWEsTUFBTSxhQUFjLFNBQVEsNENBQTZCO0lB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TUFBTSxFQUN6QixHQUFHLEVBQUUsSUFBSSxDQUFDLFFBQVEsR0FDakIsQ0FBQztJQUNKLENBQUM7Q0FDRCIsInNvdXJjZXMiOlsid2VicGFjazovL3ByaXR1bmwtemVyby8uL2FwcC9jb21wb25lbnRzL0VuZHBvaW50Q2hhcnQudHN4P2Y2MmQiXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1JlZmVyZW5jZXMuZC50c1wiLz5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIENoYXJ0SnMgZnJvbSAnY2hhcnQuanMnO1xuaW1wb3J0ICogYXMgQ2hlY2tBY3Rpb25zIGZyb20gJy4uL2FjdGlvbnMvQ2hlY2tBY3Rpb25zJztcbmltcG9ydCAqIGFzIEVuZHBvaW50QWN0aW9ucyBmcm9tICcuLi9hY3Rpb25zL0VuZHBvaW50QWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBDaGFydFR5cGVzIGZyb20gJy4uL3R5cGVzL0NoYXJ0VHlwZXMnO1xuaW1wb3J0ICogYXMgTWlzY1V0aWxzIGZyb20gJy4uL3V0aWxzL01pc2NVdGlscyc7XG5pbXBvcnQgKiBhcyBUaGVtZSBmcm9tICcuLi9UaGVtZSc7XG5cbmludGVyZmFjZSBQcm9wcyB7XG5cdGVuZHBvaW50Pzogc3RyaW5nO1xuXHRjaGVjaz86IHN0cmluZztcblx0cmVzb3VyY2U6IHN0cmluZztcblx0c3luYzogbnVtYmVyO1xuXHRwZXJpb2Q6IG51bWJlcjtcblx0aW50ZXJ2YWw6IG51bWJlcjtcblx0bGVmdDogYm9vbGVhbjtcblx0b25Mb2FkaW5nOiAoKSA9PiB2b2lkO1xuXHRvbkxvYWRlZDogKCkgPT4gdm9pZDtcblx0Z2V0Qm94UmVjdDogKCkgPT4gRE9NUmVjdDtcbn1cblxuaW50ZXJmYWNlIFN0YXRlIHtcblx0aGlkZGVuOiBib29sZWFuO1xuXHRkaXNhYmxlZDogYm9vbGVhbjtcbn1cblxuY29uc3QgY29sb3JzID0gW1xuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5cblx0JyMwMDkxZWEnLCAvLyBsaWdodCBibHVlXG5cdCcjZDUwMDAwJywgLy8gcmVkXG5cdCcjMDBjODUzJywgLy8gZ3JlZW5cblx0JyNhYTAwZmYnLCAvLyBwdXJwbGVcblx0JyNmZmFiMDAnLCAvLyBhbWJlclxuXHQnI2M1MTE2MicsIC8vIHBpbmtcblx0JyMyOTYyZmYnLCAvLyBibHVlXG5cdCcjZmY2ZDAwJywgLy8gb3JhbmdlXG5cdCcjMDBiZmE1JywgLy8gdGVhbFxuXHQnIzMwNGZmZScsIC8vIGluZGlnb1xuXHQnIzAwYjhkNCcsIC8vIGN5YW5cblx0JyM2MjAwZWEnLCAvLyBkZWVwIHB1cnBsZVxuXHQnI2ZmZDYwMCcsIC8vIHllbGxvd1xuXHQnI2RkMmMwMCcsIC8vIGRlZXAgb3JhbmdlXG5cdCcjNWQ0MDM3JywgLy8gYnJvd25cblx0JyM0NTVhNjQnLCAvLyBibHVlIGdyZXlcblx0JyM2NGRkMTcnLCAvLyBsaWdodCBncmVlblxuXHQnI2FlZWEwMCcsIC8vIGxpbWVcblxuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5cblx0JyMwMDkxZWEnLCAvLyBsaWdodCBibHVlXG5cdCcjZDUwMDAwJywgLy8gcmVkXG5cdCcjMDBjODUzJywgLy8gZ3JlZW5cblx0JyNhYTAwZmYnLCAvLyBwdXJwbGVcblx0JyNmZmFiMDAnLCAvLyBhbWJlclxuXHQnI2M1MTE2MicsIC8vIHBpbmtcblx0JyMyOTYyZmYnLCAvLyBibHVlXG5cdCcjZmY2ZDAwJywgLy8gb3JhbmdlXG5cdCcjMDBiZmE1JywgLy8gdGVhbFxuXHQnIzMwNGZmZScsIC8vIGluZGlnb1xuXHQnIzAwYjhkNCcsIC8vIGN5YW5cblx0JyM2MjAwZWEnLCAvLyBkZWVwIHB1cnBsZVxuXHQnI2ZmZDYwMCcsIC8vIHllbGxvd1xuXHQnI2RkMmMwMCcsIC8vIGRlZXAgb3JhbmdlXG5cdCcjNWQ0MDM3JywgLy8gYnJvd25cblx0JyM0NTVhNjQnLCAvLyBibHVlIGdyZXlcblx0JyM2NGRkMTcnLCAvLyBsaWdodCBncmVlblxuXHQnI2FlZWEwMCcsIC8vIGxpbWVcblxuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5cblx0JyMwMDkxZWEnLCAvLyBsaWdodCBibHVlXG5cdCcjZDUwMDAwJywgLy8gcmVkXG5cdCcjMDBjODUzJywgLy8gZ3JlZW5cblx0JyNhYTAwZmYnLCAvLyBwdXJwbGVcblx0JyNmZmFiMDAnLCAvLyBhbWJlclxuXHQnI2M1MTE2MicsIC8vIHBpbmtcblx0JyMyOTYyZmYnLCAvLyBibHVlXG5cdCcjZmY2ZDAwJywgLy8gb3JhbmdlXG5cdCcjMDBiZmE1JywgLy8gdGVhbFxuXHQnIzMwNGZmZScsIC8vIGluZGlnb1xuXHQnIzAwYjhkNCcsIC8vIGN5YW5cblx0JyM2MjAwZWEnLCAvLyBkZWVwIHB1cnBsZVxuXHQnI2ZmZDYwMCcsIC8vIHllbGxvd1xuXHQnI2RkMmMwMCcsIC8vIGRlZXAgb3JhbmdlXG5cdCcjNWQ0MDM3JywgLy8gYnJvd25cblx0JyM0NTVhNjQnLCAvLyBibHVlIGdyZXlcblx0JyM2NGRkMTcnLCAvLyBsaWdodCBncmVlblxuXHQnI2FlZWEwMCcsIC8vIGxpbWVcblxuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5cblx0JyMwMDkxZWEnLCAvLyBsaWdodCBibHVlXG5cdCcjZDUwMDAwJywgLy8gcmVkXG5cdCcjMDBjODUzJywgLy8gZ3JlZW5cblx0JyNhYTAwZmYnLCAvLyBwdXJwbGVcblx0JyNmZmFiMDAnLCAvLyBhbWJlclxuXHQnI2M1MTE2MicsIC8vIHBpbmtcblx0JyMyOTYyZmYnLCAvLyBibHVlXG5cdCcjZmY2ZDAwJywgLy8gb3JhbmdlXG5cdCcjMDBiZmE1JywgLy8gdGVhbFxuXHQnIzMwNGZmZScsIC8vIGluZGlnb1xuXHQnIzAwYjhkNCcsIC8vIGN5YW5cblx0JyM2MjAwZWEnLCAvLyBkZWVwIHB1cnBsZVxuXHQnI2ZmZDYwMCcsIC8vIHllbGxvd1xuXHQnI2RkMmMwMCcsIC8vIGRlZXAgb3JhbmdlXG5cdCcjNWQ0MDM3JywgLy8gYnJvd25cblx0JyM0NTVhNjQnLCAvLyBibHVlIGdyZXlcblx0JyM2NGRkMTcnLCAvLyBsaWdodCBncmVlblxuXHQnI2FlZWEwMCcsIC8vIGxpbWVcblxuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5cblx0JyMwMDkxZWEnLCAvLyBsaWdodCBibHVlXG5cdCcjZDUwMDAwJywgLy8gcmVkXG5cdCcjMDBjODUzJywgLy8gZ3JlZW5cblx0JyNhYTAwZmYnLCAvLyBwdXJwbGVcblx0JyNmZmFiMDAnLCAvLyBhbWJlclxuXHQnI2M1MTE2MicsIC8vIHBpbmtcblx0JyMyOTYyZmYnLCAvLyBibHVlXG5cdCcjZmY2ZDAwJywgLy8gb3JhbmdlXG5cdCcjMDBiZmE1JywgLy8gdGVhbFxuXHQnIzMwNGZmZScsIC8vIGluZGlnb1xuXHQnIzAwYjhkNCcsIC8vIGN5YW5cblx0JyM2MjAwZWEnLCAvLyBkZWVwIHB1cnBsZVxuXHQnI2ZmZDYwMCcsIC8vIHllbGxvd1xuXHQnI2RkMmMwMCcsIC8vIGRlZXAgb3JhbmdlXG5cdCcjNWQ0MDM3JywgLy8gYnJvd25cblx0JyM0NTVhNjQnLCAvLyBibHVlIGdyZXlcblx0JyM2NGRkMTcnLCAvLyBsaWdodCBncmVlblxuXHQnI2FlZWEwMCcsIC8vIGxpbWVcblxuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXG5cdCcjMDA5MWVhJywgLy8gbGlnaHQgYmx1ZVxuXHQnI2Q1MDAwMCcsIC8vIHJlZFxuXHQnIzAwYzg1MycsIC8vIGdyZWVuXG5cdCcjYWEwMGZmJywgLy8gcHVycGxlXG5cdCcjZmZhYjAwJywgLy8gYW1iZXJcblx0JyNjNTExNjInLCAvLyBwaW5rXG5cdCcjMjk2MmZmJywgLy8gYmx1ZVxuXHQnI2ZmNmQwMCcsIC8vIG9yYW5nZVxuXHQnIzAwYmZhNScsIC8vIHRlYWxcblx0JyMzMDRmZmUnLCAvLyBpbmRpZ29cblx0JyMwMGI4ZDQnLCAvLyBjeWFuXG5cdCcjNjIwMGVhJywgLy8gZGVlcCBwdXJwbGVcblx0JyNmZmQ2MDAnLCAvLyB5ZWxsb3dcblx0JyNkZDJjMDAnLCAvLyBkZWVwIG9yYW5nZVxuXHQnIzVkNDAzNycsIC8vIGJyb3duXG5cdCcjNDU1YTY0JywgLy8gYmx1ZSBncmV5XG5cdCcjNjRkZDE3JywgLy8gbGlnaHQgZ3JlZW5cblx0JyNhZWVhMDAnLCAvLyBsaW1lXG5cblx0JyMwMDkxZWEnLCAvLyBsaWdodCBibHVlXG5cdCcjZDUwMDAwJywgLy8gcmVkXG5cdCcjMDBjODUzJywgLy8gZ3JlZW5cblx0JyNhYTAwZmYnLCAvLyBwdXJwbGVcblx0JyNmZmFiMDAnLCAvLyBhbWJlclxuXHQnI2M1MTE2MicsIC8vIHBpbmtcblx0JyMyOTYyZmYnLCAvLyBibHVlXG5cdCcjZmY2ZDAwJywgLy8gb3JhbmdlXG5cdCcjMDBiZmE1JywgLy8gdGVhbFxuXHQnIzMwNGZmZScsIC8vIGluZGlnb1xuXHQnIzAwYjhkNCcsIC8vIGN5YW5cblx0JyM2MjAwZWEnLCAvLyBkZWVwIHB1cnBsZVxuXHQnI2ZmZDYwMCcsIC8vIHllbGxvd1xuXHQnI2RkMmMwMCcsIC8vIGRlZXAgb3JhbmdlXG5cdCcjNWQ0MDM3JywgLy8gYnJvd25cblx0JyM0NTVhNjQnLCAvLyBibHVlIGdyZXlcblx0JyM2NGRkMTcnLCAvLyBsaWdodCBncmVlblxuXHQnI2FlZWEwMCcsIC8vIGxpbWVcblxuXHQnIzAwOTFlYScsIC8vIGxpZ2h0IGJsdWVcblx0JyNkNTAwMDAnLCAvLyByZWRcblx0JyMwMGM4NTMnLCAvLyBncmVlblxuXHQnI2FhMDBmZicsIC8vIHB1cnBsZVxuXHQnI2ZmYWIwMCcsIC8vIGFtYmVyXG5cdCcjYzUxMTYyJywgLy8gcGlua1xuXHQnIzI5NjJmZicsIC8vIGJsdWVcblx0JyNmZjZkMDAnLCAvLyBvcmFuZ2Vcblx0JyMwMGJmYTUnLCAvLyB0ZWFsXG5cdCcjMzA0ZmZlJywgLy8gaW5kaWdvXG5cdCcjMDBiOGQ0JywgLy8gY3lhblxuXHQnIzYyMDBlYScsIC8vIGRlZXAgcHVycGxlXG5cdCcjZmZkNjAwJywgLy8geWVsbG93XG5cdCcjZGQyYzAwJywgLy8gZGVlcCBvcmFuZ2Vcblx0JyM1ZDQwMzcnLCAvLyBicm93blxuXHQnIzQ1NWE2NCcsIC8vIGJsdWUgZ3JleVxuXHQnIzY0ZGQxNycsIC8vIGxpZ2h0IGdyZWVuXG5cdCcjYWVlYTAwJywgLy8gbGltZVxuXTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRW5kcG9pbnRDaGFydCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxQcm9wcywgU3RhdGU+IHtcblx0ZGF0YTogQ2hhcnRUeXBlcy5DaGFydERhdGE7XG5cdHN5bmM6IG51bWJlcjtcblx0cGVyaW9kOiBudW1iZXI7XG5cdGludGVydmFsOiBudW1iZXI7XG5cdGNoYXJ0OiBDaGFydEpzLkNoYXJ0O1xuXHRjaGFydFJlZjogUmVhY3QuUmVmT2JqZWN0PEhUTUxDYW52YXNFbGVtZW50Pjtcblx0bGFiZWxzOiBDaGFydFR5cGVzLkxhYmVscztcblx0bGFzdERvdWJsZTogbnVtYmVyO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBhbnksIGNvbnRleHQ6IGFueSkge1xuXHRcdHN1cGVyKHByb3BzLCBjb250ZXh0KTtcblx0XHR0aGlzLnN0YXRlID0ge1xuXHRcdFx0aGlkZGVuOiBmYWxzZSxcblx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHR9O1xuXHRcdHRoaXMuY2hhcnRSZWYgPSBSZWFjdC5jcmVhdGVSZWYoKTtcblx0fVxuXG5cdHRpY2tzID0gKGF4aXM6IENoYXJ0SnMuU2NhbGUpID0+IHtcblx0XHRsZXQgdGlja3MgPSBheGlzLnRpY2tzO1xuXHRcdGxldCBuZXdUaWNrczogQ2hhcnRKcy5UaWNrW10gPSBbXTtcblx0XHRsZXQgZGF0YXNldCA9IE9iamVjdC52YWx1ZXModGhpcy5kYXRhKVswXTtcblx0XHRsZXQgdGlja01vZCA9IDM2MDAwMDA7IC8vIDEgaG91clxuXHRcdGxldCBsZW4gPSBkYXRhc2V0Lmxlbmd0aDtcblxuXHRcdGlmIChsZW4pIHtcblx0XHRcdGxldCBmaXJzdCA9IGRhdGFzZXRbMF0gYXMgQ2hhcnRKcy5TY2F0dGVyRGF0YVBvaW50O1xuXHRcdFx0bGV0IGxhc3QgPSBkYXRhc2V0W2xlbi0xXSBhcyBDaGFydEpzLlNjYXR0ZXJEYXRhUG9pbnQ7XG5cdFx0XHRsZXQgcmFuZ2UgPSBsYXN0LnggLSBmaXJzdC54O1xuXG5cdFx0XHRpZiAocmFuZ2UgPj0gMjgzMzkyMDAwMCkge1xuXHRcdFx0XHR0aWNrTW9kID0gNjA0ODAwMDAwOyAvLyA3IGRheVxuXHRcdFx0fSBlbHNlIGlmIChyYW5nZSA+PSAxNDUxNTIwMDAwKSB7XG5cdFx0XHRcdHRpY2tNb2QgPSAxNzI4MDAwMDA7IC8vIDIgZGF5XG5cdFx0XHR9IGVsc2UgaWYgKHJhbmdlID49IDYxMTI4MDAwMCkge1xuXHRcdFx0XHR0aWNrTW9kID0gODY0MDAwMDA7IC8vIDEgZGF5XG5cdFx0XHR9IGVsc2UgaWYgKHJhbmdlID49IDI3NjQ4MDAwMCkge1xuXHRcdFx0XHR0aWNrTW9kID0gNDMyMDAwMDA7IC8vIDEyIGhvdXJzXG5cdFx0XHR9IGVsc2UgaWYgKHJhbmdlID49IDg5MjgwMDAwKSB7XG5cdFx0XHRcdHRpY2tNb2QgPSAyMTYwMDAwMDsgLy8gNiBob3Vyc1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGlja01vZCA9IDM2MDAwMDA7IC8vIDEgaG91cnNcblx0XHRcdH1cblx0XHR9XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHRpY2tzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgdGljayA9IHRpY2tzW2ldO1xuXG5cdFx0XHRpZiAodGljay52YWx1ZSAlIHRpY2tNb2QgPT09IDApIHtcblx0XHRcdFx0bmV3VGlja3MucHVzaCh0aWNrKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRheGlzLnRpY2tzID0gbmV3VGlja3M7XG5cdH1cblxuXHRjb25maWcgPSAoKTogQ2hhcnRKcy5DaGFydENvbmZpZ3VyYXRpb24gPT4ge1xuXHRcdHRoaXMubGFiZWxzID0gQ2hhcnRUeXBlcy5nZXRDaGFydExhYmVscyh0aGlzLnByb3BzLnJlc291cmNlLCB0aGlzLmRhdGEpO1xuXHRcdGxldCBzZWxmID0gdGhpcztcblxuXHRcdGxldCBjb25maWcgPSB7XG5cdFx0XHR0eXBlOiAnbGluZScsXG5cdFx0XHRvcHRpb25zOiB7XG5cdFx0XHRcdHNjYWxlczoge1xuXHRcdFx0XHRcdHg6IHtcblx0XHRcdFx0XHRcdHR5cGU6ICd0aW1lJyxcblx0XHRcdFx0XHRcdHRpdGxlOiB7XG5cdFx0XHRcdFx0XHRcdGRpc3BsYXk6IHRydWUsXG5cdFx0XHRcdFx0XHRcdHRleHQ6ICdUaW1lJyxcblx0XHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IxKCksXG5cdFx0XHRcdFx0XHRcdHBhZGRpbmc6IDAsXG5cdFx0XHRcdFx0XHRcdGZvbnQ6IHtcblx0XHRcdFx0XHRcdFx0XHR3ZWlnaHQ6ICdib2xkJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR0aW1lOiB7XG5cdFx0XHRcdFx0XHRcdHVuaXQ6ICdtaW51dGUnLFxuXHRcdFx0XHRcdFx0XHRkaXNwbGF5Rm9ybWF0czoge1xuXHRcdFx0XHRcdFx0XHRcdG1pbnV0ZTogJ0hIOm1tJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR0aWNrczoge1xuXHRcdFx0XHRcdFx0XHRzdGVwU2l6ZTogMSxcblx0XHRcdFx0XHRcdFx0Y291bnQ6IDEwMCxcblx0XHRcdFx0XHRcdFx0bWF4VGlja3NMaW1pdDogMTAwLFxuXHRcdFx0XHRcdFx0XHRjb2xvcjogVGhlbWUuY2hhcnRDb2xvcjEoKSxcblx0XHRcdFx0XHRcdFx0c291cmNlOiAnZGF0YScsXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0Z3JpZDoge1xuXHRcdFx0XHRcdFx0XHRjb2xvcjogVGhlbWUuY2hhcnRDb2xvcjIoKSxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRiZWZvcmVUaWNrVG9MYWJlbENvbnZlcnNpb246IHRoaXMudGlja3MsXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR5OiB7XG5cdFx0XHRcdFx0XHRtaW46IHRoaXMubGFiZWxzLnJlc291cmNlX21pbixcblx0XHRcdFx0XHRcdG1heDogdGhpcy5sYWJlbHMucmVzb3VyY2VfbWF4LFxuXHRcdFx0XHRcdFx0b2Zmc2V0OiBmYWxzZSxcblx0XHRcdFx0XHRcdGJlZ2luQXRaZXJvOiB0cnVlLFxuXHRcdFx0XHRcdFx0dGl0bGU6IHtcblx0XHRcdFx0XHRcdFx0ZGlzcGxheTogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0dGV4dDogdGhpcy5sYWJlbHMucmVzb3VyY2VfbGFiZWwsXG5cdFx0XHRcdFx0XHRcdGNvbG9yOiBUaGVtZS5jaGFydENvbG9yMSgpLFxuXHRcdFx0XHRcdFx0XHRwYWRkaW5nOiAwLFxuXHRcdFx0XHRcdFx0XHRmb250OiB7XG5cdFx0XHRcdFx0XHRcdFx0d2VpZ2h0OiAnYm9sZCcsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0dGlja3M6IHtcblx0XHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IxKCksXG5cdFx0XHRcdFx0XHRcdGNhbGxiYWNrOiAodmFsOiBudW1iZXIpOiBudW1iZXIgfCBzdHJpbmcgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHN3aXRjaCAodGhpcy5sYWJlbHMucmVzb3VyY2VfdHlwZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnYnl0ZXMnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTWlzY1V0aWxzLmZvcm1hdEJ5dGVzKHZhbCwgMCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRjYXNlICdtaWxsaXNlY29uZHMnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gTWlzY1V0aWxzLmZvcm1hdE1zKHZhbCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGdyaWQ6IHtcblx0XHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IyKCksXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHBsdWdpbnM6IHtcblx0XHRcdFx0XHR0aXRsZToge1xuXHRcdFx0XHRcdFx0ZGlzcGxheTogdHJ1ZSxcblx0XHRcdFx0XHRcdHRleHQ6IHRoaXMubGFiZWxzLnRpdGxlLFxuXHRcdFx0XHRcdFx0Y29sb3I6IFRoZW1lLmNoYXJ0Q29sb3IxKCksXG5cdFx0XHRcdFx0XHRwYWRkaW5nOiAzLFxuXHRcdFx0XHRcdFx0Zm9udDoge1xuXHRcdFx0XHRcdFx0XHRzaXplOiAxMyxcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR0b29sdGlwOiB7XG5cdFx0XHRcdFx0XHRlbmFibGVkOiBmYWxzZSxcblx0XHRcdFx0XHRcdG1vZGU6ICdpbmRleCcsXG5cdFx0XHRcdFx0XHRpbnRlcnNlY3Q6IGZhbHNlLFxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjcpJyxcblx0XHRcdFx0XHRcdGV4dGVybmFsOiAoY29udGV4dCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRsZXQgdG9vbEVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFydGpzLXRvb2x0aXAnKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoIXRvb2xFbG0pIHtcblx0XHRcdFx0XHRcdFx0XHR0b29sRWxtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdFx0XHRcdFx0XHRcdFx0dG9vbEVsbS5pZCA9ICdjaGFydGpzLXRvb2x0aXAnO1xuXHRcdFx0XHRcdFx0XHRcdHRvb2xFbG0uY2xhc3NOYW1lID0gJ2JwMy1jYXJkJztcblx0XHRcdFx0XHRcdFx0XHR0b29sRWxtLmlubmVySFRNTCA9ICc8dGFibGUgY2xhc3M9XCJicDMtaHRtbC10YWJsZSAnICtcblx0XHRcdFx0XHRcdFx0XHRcdCdicDMtaHRtbC10YWJsZS1ib3JkZXJlZCBicDMtaHRtbC10YWJsZS1zdHJpcGVkICcgK1xuXHRcdFx0XHRcdFx0XHRcdFx0J2JwMy1zbWFsbFwiPjwvdGFibGU+Jztcblx0XHRcdFx0XHRcdFx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRvb2xFbG0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0Y29uc3QgbW9kZWwgPSBjb250ZXh0LnRvb2x0aXA7XG5cdFx0XHRcdFx0XHRcdGlmIChtb2RlbC5vcGFjaXR5ID09PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dG9vbEVsbS5zdHlsZS5vcGFjaXR5ID0gJzAnO1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGZ1bmN0aW9uIGdldEJvZHkoYm9keUl0ZW06IGFueSkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiBib2R5SXRlbS5saW5lcztcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGxldCBib3hSZWN0ID0gdGhpcy5wcm9wcy5nZXRCb3hSZWN0KClcblx0XHRcdFx0XHRcdFx0bGV0IGJveEJvdHRvbSA9IGJveFJlY3QuYm90dG9tICsgd2luZG93LnBhZ2VZT2Zmc2V0XG5cdFx0XHRcdFx0XHRcdGxldCBib3hUb3AgPSBib3hSZWN0LnRvcCArIHdpbmRvdy5wYWdlWU9mZnNldCArIDEzMFxuXG5cdFx0XHRcdFx0XHRcdGxldCByb3dDb3VudCA9IDA7XG5cdFx0XHRcdFx0XHRcdGxldCBoZWlnaHQgPSAwO1xuXHRcdFx0XHRcdFx0XHRpZiAobW9kZWwuYm9keSkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHRpdGxlTGluZXMgPSBtb2RlbC50aXRsZSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBib2R5TGluZXMgPSBtb2RlbC5ib2R5Lm1hcChnZXRCb2R5KTtcblxuXHRcdFx0XHRcdFx0XHRcdGxldCBpbm5lckh0bWwgPSAnPHRoZWFkPic7XG5cblx0XHRcdFx0XHRcdFx0XHR0aXRsZUxpbmVzLmZvckVhY2goZnVuY3Rpb24odGl0bGUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlubmVySHRtbCArPSAnPHRyPjx0aCBjb2xzcGFuPVwiMlwiPicgKyB0aXRsZSArICc8L3RoPjwvdHI+Jztcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRpbm5lckh0bWwgKz0gJzwvdGhlYWQ+PHRib2R5Pic7XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgdGFibGVSb3dzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdFx0XHRcdFx0XHRcdFx0Ym9keUxpbmVzLmZvckVhY2goZnVuY3Rpb24oYm9keSwgaSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCFib2R5IHx8ICFib2R5Lmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IGl0ZW1zID0gYm9keVswXS5zcGxpdCgnOycpXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoaXRlbXMubGVuZ3RoIDwgMikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgY29sb3JzID0gbW9kZWwubGFiZWxDb2xvcnNbaV07XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgc3R5bGUgPSAnYmFja2dyb3VuZDonICsgY29sb3JzLmJhY2tncm91bmRDb2xvcjtcblx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlICs9ICc7IGJvcmRlci1jb2xvcjonICsgY29sb3JzLmJvcmRlckNvbG9yO1xuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc3Qgc3BhbiA9ICc8c3BhbiBzdHlsZT1cIicgKyBzdHlsZSArICdcIj48L3NwYW4+Jztcblx0XHRcdFx0XHRcdFx0XHRcdHRhYmxlUm93cy5wdXNoKCc8dGQgY2xhc3M9XCJsaW5lLWJveFwiPicgKyBzcGFuICsgaXRlbXNbMF0gK1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQnPC90ZD48dGQ+JyArIGl0ZW1zWzFdICsgJzwvdGQ+JylcblxuXHRcdFx0XHRcdFx0XHRcdFx0cm93Q291bnQgKz0gMVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0aGVpZ2h0ID0gMjYuMzMgKyAocm93Q291bnQgKiAxNy4zMyk7XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgZG91YmxlID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IGN1clJvdyA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdGxldCBjdXJUaW1lID0gTWF0aC5yb3VuZChEYXRlLm5vdygpIC8gMTAwMCk7XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoY3VyVGltZSAtIHRoaXMubGFzdERvdWJsZSA8IDYwICYmXG5cdFx0XHRcdFx0XHRcdFx0XHRoZWlnaHQgPiAoYm94UmVjdC5oZWlnaHQgLSAyODApKSB7XG5cblx0XHRcdFx0XHRcdFx0XHRcdGRvdWJsZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmxhc3REb3VibGUgPSBjdXJUaW1lO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoaGVpZ2h0ID4gKGJveFJlY3QuaGVpZ2h0IC0gMTMwKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZG91YmxlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMubGFzdERvdWJsZSA9IGN1clRpbWU7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0cm93Q291bnQgPSAwXG5cdFx0XHRcdFx0XHRcdFx0dGFibGVSb3dzLmZvckVhY2goZnVuY3Rpb24oY29sdW1ucywgaSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGRvdWJsZSAmJiAhY3VyUm93KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGN1clJvdyA9IGNvbHVtbnNcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlubmVySHRtbCArPSAnPHRyPicgKyBjdXJSb3cgKyBjb2x1bW5zICsgJzwvdHI+Jztcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y3VyUm93ID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJvd0NvdW50ICs9IDFcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9KVxuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGN1clJvdykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aW5uZXJIdG1sICs9ICc8dHI+JyArIGN1clJvdyArICc8L3RyPic7XG5cdFx0XHRcdFx0XHRcdFx0XHRjdXJSb3cgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRcdHJvd0NvdW50ICs9IDFcblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRoZWlnaHQgPSAyNi4zMyArIChyb3dDb3VudCAqIDE3LjMzKTtcblxuXHRcdFx0XHRcdFx0XHRcdGlubmVySHRtbCArPSAnPC90Ym9keT4nO1xuXG5cdFx0XHRcdFx0XHRcdFx0bGV0IHRhYmxlUm9vdCA9IHRvb2xFbG0ucXVlcnlTZWxlY3RvcigndGFibGUnKTtcblx0XHRcdFx0XHRcdFx0XHR0YWJsZVJvb3QuaW5uZXJIVE1MID0gaW5uZXJIdG1sO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0dG9vbEVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGFydGpzLXRvb2x0aXAnKTtcblx0XHRcdFx0XHRcdFx0Y29uc3QgcG9zaXRpb24gPSBjb250ZXh0LmNoYXJ0LmNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuXHRcdFx0XHRcdFx0XHR0b29sRWxtLnN0eWxlLm9wYWNpdHkgPSAnMSc7XG5cdFx0XHRcdFx0XHRcdHRvb2xFbG0uc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuXG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLnByb3BzLmxlZnQpIHtcblx0XHRcdFx0XHRcdFx0XHR0b29sRWxtLnN0eWxlLnJpZ2h0ID0gXCJcIlxuXHRcdFx0XHRcdFx0XHRcdHRvb2xFbG0uc3R5bGUubGVmdCA9IChkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoIC1cblx0XHRcdFx0XHRcdFx0XHRcdHBvc2l0aW9uLnJpZ2h0ICsgd2luZG93LnBhZ2VYT2Zmc2V0IC0gMTgpICsgJ3B4Jztcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHR0b29sRWxtLnN0eWxlLmxlZnQgPSBcIlwiXG5cdFx0XHRcdFx0XHRcdFx0dG9vbEVsbS5zdHlsZS5yaWdodCA9IChkb2N1bWVudC5ib2R5Lm9mZnNldFdpZHRoIC1cblx0XHRcdFx0XHRcdFx0XHRcdHBvc2l0aW9uLmxlZnQgKyB3aW5kb3cucGFnZVhPZmZzZXQgKyAzKSArICdweCc7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRsZXQgdG9vbFRvcCA9IE1hdGgucm91bmQocG9zaXRpb24udG9wICsgKHBvc2l0aW9uLmhlaWdodCAvIDIpIC1cblx0XHRcdFx0XHRcdFx0XHQoaGVpZ2h0IC8gMikgKyB3aW5kb3cucGFnZVlPZmZzZXQpO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChoZWlnaHQgPiAoYm94UmVjdC5oZWlnaHQgLSAxMzApKSB7XG5cdFx0XHRcdFx0XHRcdFx0dG9vbFRvcCA9IE1hdGgucm91bmQoYm94UmVjdC50b3AgKyAoYm94UmVjdC5oZWlnaHQgLyAyKSAtXG5cdFx0XHRcdFx0XHRcdFx0XHQoaGVpZ2h0IC8gMikgKyB3aW5kb3cucGFnZVlPZmZzZXQpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHRvb2xUb3AgPCBib3hUb3ApIHtcblx0XHRcdFx0XHRcdFx0XHR0b29sVG9wID0gYm94VG9wXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoKHRvb2xUb3AgKyBoZWlnaHQpID4gYm94Qm90dG9tKSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly90b29sVG9wIC09ICh0b29sVG9wICsgaGVpZ2h0KSAtIGJveEJvdHRvbVxuXHRcdFx0XHRcdFx0XHRcdHRvb2xUb3AgPSBib3hCb3R0b20gLSBoZWlnaHRcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHRvb2xFbG0uc3R5bGUudG9wID0gdG9vbFRvcCArICdweCc7XG5cdFx0XHRcdFx0XHRcdHRvb2xFbG0uc3R5bGUucG9pbnRlckV2ZW50cyA9ICdub25lJztcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRjYWxsYmFja3M6IHtcblx0XHRcdFx0XHRcdFx0bGFiZWwoaXRlbSk6IHN0cmluZyB7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IHJhdyA9IGl0ZW0ucmF3IGFzIGFueTtcblxuXHRcdFx0XHRcdFx0XHRcdGlmIChzZWxmLmxhYmVscy5oaWRlX3plcm8gJiYgIXJhdy55KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gJydcblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRsZXQgdmFsID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHJhdykge1xuXHRcdFx0XHRcdFx0XHRcdFx0c3dpdGNoIChzZWxmLmxhYmVscy5yZXNvdXJjZV90eXBlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ2J5dGVzJzpcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWwgPSBNaXNjVXRpbHMuZm9ybWF0Qnl0ZXMocmF3LnksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzZWxmLmxhYmVscy5yZXNvdXJjZV9maXhlZCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhc2UgJ21pbGxpc2Vjb25kcyc6XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsID0gTWlzY1V0aWxzLmZvcm1hdE1zKHJhdy55KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2FzZSAnZmxvYXQnOlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbCA9IHJhdy55LnRvRml4ZWQoc2VsZi5sYWJlbHMucmVzb3VyY2VfZml4ZWQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbCA9IHJhdy55O1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdGxldCBkYXRhc2V0ID0gaXRlbS5kYXRhc2V0IGFzIGFueTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoc2VsZi5sYWJlbHMucmVzb3VyY2VfZml4ZWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiBkYXRhc2V0LmxhYmVsICsgJzsnICtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsICsgc2VsZi5sYWJlbHMucmVzb3VyY2Vfc3VmZml4O1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZGF0YXNldC5sYWJlbCArICc7JyArIHZhbCArXG5cdFx0XHRcdFx0XHRcdFx0XHRzZWxmLmxhYmVscy5yZXNvdXJjZV9zdWZmaXg7XG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdH0sXG5cdFx0XHR9LFxuXHRcdFx0ZGF0YToge1xuXHRcdFx0XHRkYXRhc2V0czogW10sXG5cdFx0XHR9LFxuXHRcdH0gYXMgQ2hhcnRKcy5DaGFydENvbmZpZ3VyYXRpb247XG5cblx0XHRsZXQgZGF0YSA9IENoYXJ0VHlwZXMuZ2V0Q2hhcnREYXRhKHRoaXMucHJvcHMucmVzb3VyY2UsIHRoaXMuZGF0YSk7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxhYmVscy5kYXRhc2V0cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0bGV0IGRhdGFzZXRMYWJlbHMgPSB0aGlzLmxhYmVscy5kYXRhc2V0c1tpXTtcblxuXHRcdFx0Y29uZmlnLmRhdGEuZGF0YXNldHMucHVzaCh7XG5cdFx0XHRcdGxhYmVsOiBkYXRhc2V0TGFiZWxzLmxhYmVsLFxuXHRcdFx0XHRkYXRhOiBkYXRhW2ldLFxuXHRcdFx0XHRmaWxsOiAnb3JpZ2luJyxcblx0XHRcdFx0cG9pbnRSYWRpdXM6IDAsXG5cdFx0XHRcdGJhY2tncm91bmRDb2xvcjogY29sb3JzW2ldICsgJzE1Jyxcblx0XHRcdFx0Ym9yZGVyQ29sb3I6IGNvbG9yc1tpXSxcblx0XHRcdFx0Ym9yZGVyV2lkdGg6IDIsXG5cdFx0XHR9IGFzIENoYXJ0SnMuQ2hhcnREYXRhc2V0KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gY29uZmlnO1xuXHR9XG5cblx0dXBkYXRlKHN5bmM6IG51bWJlciwgcGVyaW9kOiBudW1iZXIsIGludGVydmFsOiBudW1iZXIpOiB2b2lkIHtcblx0XHR0aGlzLnN5bmMgPSBzeW5jO1xuXHRcdHRoaXMucGVyaW9kID0gcGVyaW9kO1xuXHRcdHRoaXMuaW50ZXJ2YWwgPSBpbnRlcnZhbDtcblxuXHRcdGxldCBsb2FkaW5nID0gdHJ1ZTtcblx0XHR0aGlzLnByb3BzLm9uTG9hZGluZygpO1xuXG5cdFx0bGV0IGNoYXJ0UmVzcDogUHJvbWlzZTxhbnk+XG5cdFx0aWYgKHRoaXMucHJvcHMuY2hlY2spIHtcblx0XHRcdGNoYXJ0UmVzcCA9IENoZWNrQWN0aW9ucy5jaGFydChcblx0XHRcdFx0dGhpcy5wcm9wcy5jaGVjayxcblx0XHRcdFx0dGhpcy5wcm9wcy5yZXNvdXJjZSxcblx0XHRcdFx0dGhpcy5wZXJpb2QsXG5cdFx0XHRcdHRoaXMuaW50ZXJ2YWwsXG5cdFx0XHQpXG5cdFx0fSBlbHNlIHtcblx0XHRcdGNoYXJ0UmVzcCA9IEVuZHBvaW50QWN0aW9ucy5jaGFydChcblx0XHRcdFx0dGhpcy5wcm9wcy5lbmRwb2ludCxcblx0XHRcdFx0dGhpcy5wcm9wcy5yZXNvdXJjZSxcblx0XHRcdFx0dGhpcy5wZXJpb2QsXG5cdFx0XHRcdHRoaXMuaW50ZXJ2YWwsXG5cdFx0XHQpXG5cdFx0fVxuXG5cdFx0Y2hhcnRSZXNwLnRoZW4oKGRhdGE6IENoYXJ0VHlwZXMuRW5kcG9pbnREYXRhKTogdm9pZCA9PiB7XG5cdFx0XHRpZiAobG9hZGluZykge1xuXHRcdFx0XHRsb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMucHJvcHMub25Mb2FkZWQoKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGRhdGEgJiYgZGF0YS5oYXNfZGF0YSAmJiBkYXRhLmRhdGEpIHtcblx0XHRcdFx0aWYgKHRoaXMuc3RhdGUuaGlkZGVuKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0aGlkZGVuOiBmYWxzZSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuZGF0YSA9IGRhdGEuZGF0YTtcblx0XHRcdFx0aWYgKHRoaXMuY2hhcnQpIHtcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZUNoYXJ0KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5jaGFydCA9IG5ldyBDaGFydEpzLkNoYXJ0KFxuXHRcdFx0XHRcdFx0dGhpcy5jaGFydFJlZi5jdXJyZW50LFxuXHRcdFx0XHRcdFx0dGhpcy5jb25maWcoKSxcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRpZiAoIXRoaXMuc3RhdGUuaGlkZGVuKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0aGlkZGVuOiB0cnVlLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSkuY2F0Y2goKCk6IHZvaWQgPT4ge1xuXHRcdFx0aWYgKGxvYWRpbmcpIHtcblx0XHRcdFx0bG9hZGluZyA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLnByb3BzLm9uTG9hZGVkKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHR1cGRhdGVDaGFydCgpOiB2b2lkIHtcblx0XHR0cnkge1xuXHRcdFx0dGhpcy5sYWJlbHMgPSBDaGFydFR5cGVzLmdldENoYXJ0TGFiZWxzKHRoaXMucHJvcHMucmVzb3VyY2UsIHRoaXMuZGF0YSk7XG5cdFx0XHRsZXQgZGF0YSA9IENoYXJ0VHlwZXMuZ2V0Q2hhcnREYXRhKHRoaXMucHJvcHMucmVzb3VyY2UsIHRoaXMuZGF0YSk7XG5cblx0XHRcdGxldCBkYXRhTGVuID0gZGF0YS5sZW5ndGg7XG5cdFx0XHRsZXQgZGF0YXNldHNMZW4gPSB0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHMubGVuZ3RoO1xuXG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IE1hdGgubWluKGRhdGFMZW4sIGRhdGFzZXRzTGVuKTsgaSsrKSB7XG5cdFx0XHRcdHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0c1tpXS5sYWJlbCA9IHRoaXMubGFiZWxzLmRhdGFzZXRzW2ldLmxhYmVsO1xuXHRcdFx0XHR0aGlzLmNoYXJ0LmRhdGEuZGF0YXNldHNbaV0uZGF0YSA9IGRhdGFbaV0gYXMgYW55O1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZGF0YUxlbiA+IGRhdGFzZXRzTGVuKSB7XG5cdFx0XHRcdGZvciAobGV0IGkgPSBkYXRhc2V0c0xlbjsgaSA8IGRhdGFMZW47IGkrKykge1xuXHRcdFx0XHRcdHRoaXMuY2hhcnQuZGF0YS5kYXRhc2V0cy5wdXNoKHtcblx0XHRcdFx0XHRcdGxhYmVsOiB0aGlzLmxhYmVscy5kYXRhc2V0c1tpXS5sYWJlbCxcblx0XHRcdFx0XHRcdGRhdGE6IGRhdGFbaV0sXG5cdFx0XHRcdFx0XHRmaWxsOiAnb3JpZ2luJyxcblx0XHRcdFx0XHRcdHBvaW50UmFkaXVzOiAwLFxuXHRcdFx0XHRcdFx0YmFja2dyb3VuZENvbG9yOiBjb2xvcnNbaV0gKyAnMTUnLFxuXHRcdFx0XHRcdFx0Ym9yZGVyQ29sb3I6IGNvbG9yc1tpXSxcblx0XHRcdFx0XHRcdGJvcmRlcldpZHRoOiAyLFxuXHRcdFx0XHRcdH0gYXMgQ2hhcnRKcy5DaGFydERhdGFzZXQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGRhdGFzZXRzTGVuID4gZGF0YUxlbikge1xuXHRcdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IGRhdGFzZXRzTGVuIC0gZGF0YUxlbjsgaSsrKSB7XG5cdFx0XHRcdFx0dGhpcy5jaGFydC5kYXRhLmRhdGFzZXRzLnBvcCgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuY2hhcnQudXBkYXRlKCk7XG5cdFx0fSBjYXRjaChlcnJvcikge1xuXHRcdFx0Y29uc29sZS5lcnJvcihlcnJvcik7XG5cdFx0fVxuXHR9XG5cblx0Y29tcG9uZW50RGlkTW91bnQoKTogdm9pZCB7XG5cdFx0dGhpcy5zeW5jID0gdGhpcy5wcm9wcy5zeW5jO1xuXHRcdHRoaXMucGVyaW9kID0gdGhpcy5wcm9wcy5wZXJpb2Q7XG5cdFx0dGhpcy5pbnRlcnZhbCA9IHRoaXMucHJvcHMuaW50ZXJ2YWw7XG5cblx0XHRsZXQgbG9hZGluZyA9IHRydWU7XG5cdFx0dGhpcy5wcm9wcy5vbkxvYWRpbmcoKTtcblxuXHRcdGxldCBjaGFydFJlc3A6IFByb21pc2U8YW55PlxuXHRcdGlmICh0aGlzLnByb3BzLmNoZWNrKSB7XG5cdFx0XHRjaGFydFJlc3AgPSBDaGVja0FjdGlvbnMuY2hhcnQoXG5cdFx0XHRcdHRoaXMucHJvcHMuY2hlY2ssXG5cdFx0XHRcdHRoaXMucHJvcHMucmVzb3VyY2UsXG5cdFx0XHRcdHRoaXMucGVyaW9kLFxuXHRcdFx0XHR0aGlzLmludGVydmFsLFxuXHRcdFx0KVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRjaGFydFJlc3AgPSBFbmRwb2ludEFjdGlvbnMuY2hhcnQoXG5cdFx0XHRcdHRoaXMucHJvcHMuZW5kcG9pbnQsXG5cdFx0XHRcdHRoaXMucHJvcHMucmVzb3VyY2UsXG5cdFx0XHRcdHRoaXMucGVyaW9kLFxuXHRcdFx0XHR0aGlzLmludGVydmFsLFxuXHRcdFx0KVxuXHRcdH1cblxuXHRcdGNoYXJ0UmVzcC50aGVuKChkYXRhOiBDaGFydFR5cGVzLkVuZHBvaW50RGF0YSk6IHZvaWQgPT4ge1xuXHRcdFx0aWYgKGxvYWRpbmcpIHtcblx0XHRcdFx0bG9hZGluZyA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLnByb3BzLm9uTG9hZGVkKCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChkYXRhICYmIGRhdGEuaGFzX2RhdGEgJiYgZGF0YS5kYXRhKSB7XG5cdFx0XHRcdGlmICh0aGlzLnN0YXRlLmhpZGRlbikge1xuXHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdGhpZGRlbjogZmFsc2UsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLmRhdGEgPSBkYXRhLmRhdGE7XG5cdFx0XHRcdHRoaXMuY2hhcnQgPSBuZXcgQ2hhcnRKcy5DaGFydChcblx0XHRcdFx0XHR0aGlzLmNoYXJ0UmVmLmN1cnJlbnQsXG5cdFx0XHRcdFx0dGhpcy5jb25maWcoKSxcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGlmICghdGhpcy5zdGF0ZS5oaWRkZW4pIHtcblx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRoaWRkZW46IHRydWUsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KS5jYXRjaCgoKTogdm9pZCA9PiB7XG5cdFx0XHRpZiAobG9hZGluZykge1xuXHRcdFx0XHRsb2FkaW5nID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMucHJvcHMub25Mb2FkZWQoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGNvbXBvbmVudFdpbGxVbm1vdW50KCk6IHZvaWQge1xuXHRcdGlmICh0aGlzLmNoYXJ0KSB7XG5cdFx0XHR0aGlzLmNoYXJ0LmRlc3Ryb3koKTtcblx0XHR9XG5cdH1cblxuXHRyZW5kZXIoKTogSlNYLkVsZW1lbnQge1xuXHRcdGlmICgodGhpcy5zeW5jICE9PSB1bmRlZmluZWQgJiYgdGhpcy5wZXJpb2QgIT09IHVuZGVmaW5lZCAmJlxuXHRcdFx0XHR0aGlzLmludGVydmFsICE9PSB1bmRlZmluZWQpICYmXG5cdFx0XHRcdCh0aGlzLnByb3BzLnN5bmMgIT09IHRoaXMuc3luYyB8fFxuXHRcdFx0XHR0aGlzLnByb3BzLnBlcmlvZCAhPT0gdGhpcy5wZXJpb2QgfHxcblx0XHRcdFx0dGhpcy5wcm9wcy5pbnRlcnZhbCAhPT0gdGhpcy5pbnRlcnZhbCkpIHtcblx0XHRcdHRoaXMudXBkYXRlKHRoaXMucHJvcHMuc3luYywgdGhpcy5wcm9wcy5wZXJpb2QsIHRoaXMucHJvcHMuaW50ZXJ2YWwpO1xuXHRcdH1cblxuXHRcdHJldHVybiA8Y2FudmFzXG5cdFx0XHRoaWRkZW49e3RoaXMuc3RhdGUuaGlkZGVufVxuXHRcdFx0cmVmPXt0aGlzLmNoYXJ0UmVmfVxuXHRcdC8+O1xuXHR9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/components/EndpointChart.js\n"); /***/ }), @@ -878,7 +878,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ EndpointDetailed)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../actions/EndpointActions */ \"./app/actions/EndpointActions.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n/* harmony import */ var _PageInput__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./PageInput */ \"./app/components/PageInput.js\");\n/* harmony import */ var _PageSave__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./PageSave */ \"./app/components/PageSave.js\");\n/* harmony import */ var _PageInfo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./PageInfo */ \"./app/components/PageInfo.js\");\n/* harmony import */ var _ConfirmButton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ConfirmButton */ \"./app/components/ConfirmButton.js\");\n/* harmony import */ var _PageInputButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./PageInputButton */ \"./app/components/PageInputButton.js\");\n/* harmony import */ var _EndpointCharts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./EndpointCharts */ \"./app/components/EndpointCharts.js\");\n/* harmony import */ var _EndpointKmsg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./EndpointKmsg */ \"./app/components/EndpointKmsg.js\");\n/* harmony import */ var _Help__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Help */ \"./app/components/Help.js\");\n/* harmony import */ var _PageSwitch__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./PageSwitch */ \"./app/components/PageSwitch.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nconst css = {\n card: {\n position: 'relative',\n padding: '48px 10px 0 10px',\n width: '100%',\n },\n remove: {\n position: 'absolute',\n top: '5px',\n right: '5px',\n },\n item: {\n margin: '9px 5px 0 5px',\n height: '20px',\n },\n itemsLabel: {\n display: 'block',\n },\n itemsAdd: {\n margin: '8px 0 15px 0',\n },\n group: {\n flex: 1,\n minWidth: '250px',\n margin: '0 10px',\n },\n controlButton: {\n marginRight: '10px',\n },\n save: {\n paddingBottom: '10px',\n },\n button: {\n height: '30px',\n },\n buttons: {\n cursor: 'pointer',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n padding: '4px',\n height: '39px',\n backgroundColor: 'rgba(0, 0, 0, 0.13)',\n },\n label: {\n width: '100%',\n maxWidth: '280px',\n },\n status: {\n margin: '6px 0 0 1px',\n },\n icon: {\n marginRight: '3px',\n },\n inputGroup: {\n width: '100%',\n },\n protocol: {\n flex: '0 1 auto',\n },\n port: {\n flex: '1',\n },\n select: {\n margin: '7px 0px 0px 6px',\n paddingTop: '3px',\n },\n};\nclass EndpointDetailed extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor(props, context) {\n super(props, context);\n this.onResetClientKey = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n let endpoint = {\n ...this.props.endpoint,\n reset_client_key: true,\n };\n _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__.commit(endpoint).then(() => {\n this.setState({\n ...this.state,\n message: 'Client key reset',\n changed: false,\n disabled: false,\n });\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n endpoint: null,\n changed: false,\n });\n }\n }, 1000);\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n message: '',\n });\n }\n }, 3000);\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.onSave = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__.commit(this.state.endpoint).then(() => {\n this.setState({\n ...this.state,\n message: 'Your changes have been saved',\n changed: false,\n disabled: false,\n });\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n endpoint: null,\n changed: false,\n });\n }\n }, 1000);\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n message: '',\n });\n }\n }, 3000);\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.onDelete = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__.remove(this.props.endpoint.id).then(() => {\n this.setState({\n ...this.state,\n disabled: false,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n disabled: false,\n });\n });\n };\n this.onAddRole = () => {\n let endpoint;\n if (this.state.changed) {\n endpoint = {\n ...this.state.endpoint,\n };\n }\n else {\n endpoint = {\n ...this.props.endpoint,\n };\n }\n let roles = [\n ...endpoint.roles,\n ];\n if (!this.state.addRole) {\n return;\n }\n if (roles.indexOf(this.state.addRole) === -1) {\n roles.push(this.state.addRole);\n }\n roles.sort();\n endpoint.roles = roles;\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n endpoint: endpoint,\n });\n };\n this.state = {\n disabled: false,\n changed: false,\n message: '',\n addRole: '',\n endpoint: null,\n showCharts: true,\n };\n }\n set(name, val) {\n let endpoint;\n if (this.state.changed) {\n endpoint = {\n ...this.state.endpoint,\n };\n }\n else {\n endpoint = {\n ...this.props.endpoint,\n };\n }\n endpoint[name] = val;\n this.setState({\n ...this.state,\n changed: true,\n endpoint: endpoint,\n });\n }\n onRemoveRole(role) {\n let endpoint;\n if (this.state.changed) {\n endpoint = {\n ...this.state.endpoint,\n };\n }\n else {\n endpoint = {\n ...this.props.endpoint,\n };\n }\n let roles = [\n ...endpoint.roles,\n ];\n let i = roles.indexOf(role);\n if (i === -1) {\n return;\n }\n roles.splice(i, 1);\n endpoint.roles = roles;\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n endpoint: endpoint,\n });\n }\n render() {\n let endpoint = this.state.endpoint ||\n this.props.endpoint;\n let fields = [\n {\n label: 'ID',\n value: this.props.endpoint.id || 'None',\n },\n ];\n let endpointData = endpoint.data || {};\n if (endpointData) {\n if (endpointData.hostname) {\n fields.push({\n label: 'Hostname',\n value: endpointData.hostname,\n });\n }\n if (endpointData.uptime) {\n fields.push({\n label: 'Uptime',\n value: _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__.formatUptime(endpointData.uptime),\n });\n }\n if (endpointData.platform) {\n fields.push({\n label: 'Platform',\n value: endpointData.platform,\n });\n }\n if (endpointData.package_updates) {\n fields.push({\n label: 'System Package Updates',\n value: endpointData.package_updates,\n valueClass: 'bp3-text-intent-danger',\n });\n }\n if (endpointData.virtualization) {\n fields.push({\n label: 'Virtualization',\n value: endpointData.virtualization,\n });\n }\n if (endpointData.cpu_cores) {\n fields.push({\n label: 'CPU Cores',\n value: endpointData.cpu_cores,\n });\n }\n if (endpointData.mem_total) {\n fields.push({\n label: 'Memory',\n value: endpointData.mem_total + 'MB',\n });\n }\n if (endpointData.swap_total) {\n fields.push({\n label: 'Swap',\n value: endpointData.swap_total + 'MB',\n });\n }\n if (endpointData.huge_total) {\n fields.push({\n label: 'HugePages',\n value: endpointData.huge_total + 'MB',\n });\n }\n }\n if (endpoint.data.md_stat && endpoint.data.md_stat.length) {\n let failed = 0;\n let total = 0;\n for (let md of endpoint.data.md_stat) {\n failed += md.failed;\n total += md.total;\n }\n fields.push({\n label: 'Raid Devices',\n value: 'Failed: ' + failed + ' Total: ' + total,\n });\n }\n let roles = [];\n for (let role of endpoint.roles) {\n roles.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-tag bp3-tag-removable bp3-intent-primary\", style: css.item, key: role },\n role,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", { className: \"bp3-tag-remove\", onMouseUp: () => {\n this.onRemoveRole(role);\n } })));\n }\n let alerts = [];\n for (let alert of Object.values(endpoint.info.alerts)) {\n alerts.push(alert);\n }\n let checks = [];\n for (let check of Object.values(endpoint.info.checks)) {\n checks.push(check);\n }\n let secretKey = '';\n let secretUri = '';\n if (!endpoint.has_client_key) {\n if (endpoint.client_key) {\n secretKey = endpoint.id + '_' + endpoint.client_key.secret;\n }\n else {\n secretKey = 'unknown';\n }\n secretUri = 'pritunl://' + window.location.host + '/' + secretKey;\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"td\", { className: \"bp3-cell\", colSpan: 3, style: css.card },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal wrap\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { style: css.group },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal tab-close\", style: css.buttons, onClick: (evt) => {\n let target = evt.target;\n if (target.className.indexOf('tab-close') !== -1) {\n this.props.onClose();\n }\n } },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-control bp3-checkbox\", style: css.select },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"input\", { type: \"checkbox\", checked: this.props.selected, onChange: (evt) => {\n }, onClick: (evt) => {\n this.props.onSelect(evt.shiftKey);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: \"bp3-control-indicator\" }))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"flex tab-close\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ConfirmButton__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { safe: true, className: \"bp3-minimal bp3-intent-danger bp3-icon-trash\", progressClassName: \"bp3-intent-danger\", dialogClassName: \"bp3-intent-danger bp3-icon-delete\", dialogLabel: \"Delete Endpoint\", confirmMsg: \"Permanently delete this endpoint\", confirmInput: true, items: [endpoint.name], disabled: this.state.disabled, onConfirm: this.onDelete })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { label: \"Name\", help: \"Name of endpoint\", type: \"text\", placeholder: \"Enter name\", value: endpoint.name, onChange: (val) => {\n this.set('name', val);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { hidden: endpoint.has_client_key, disabled: this.state.disabled, readOnly: true, autoSelect: true, label: \"Registration Key\", help: \"Key for endpoint registration\", type: \"text\", placeholder: \"\", value: secretKey }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-label\" },\n \"Roles\",\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Help__WEBPACK_IMPORTED_MODULE_10__[\"default\"], { title: \"Roles\", content: \"The user roles that will be allowed access to this endpoint. At least one role must match for the user to access the endpoint.\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, roles)),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInputButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { buttonClass: \"bp3-intent-success bp3-icon-add\", label: \"Add\", type: \"text\", placeholder: \"Add role\", value: this.state.addRole, onChange: (val) => {\n this.setState({\n ...this.state,\n addRole: val,\n });\n }, onSubmit: this.onAddRole }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_11__[\"default\"], { label: \"Show charts and dmesg\", help: \"Show endpoint charts and dmesg.\", checked: this.state.showCharts, hidden: !endpointData.hostname, onToggle: () => {\n this.setState({\n ...this.state,\n showCharts: !this.state.showCharts,\n });\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], { fields: [\n {\n label: 'Alerts',\n value: alerts.length ? alerts : '-',\n },\n {\n label: 'Health Checks',\n value: checks.length ? checks : '-',\n },\n ] })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { style: css.group },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], { fields: fields }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { hidden: endpoint.has_client_key, disabled: this.state.disabled, readOnly: true, autoSelect: true, label: \"Registration URI\", help: \"URI for endpoint registration\", type: \"text\", placeholder: \"\", value: secretUri }))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_EndpointCharts__WEBPACK_IMPORTED_MODULE_8__[\"default\"], { endpoint: endpoint.id, disabled: !endpointData.hostname || !this.state.showCharts }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_EndpointKmsg__WEBPACK_IMPORTED_MODULE_9__[\"default\"], { endpoint: endpoint.id, disabled: !endpointData.hostname || !this.state.showCharts }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSave__WEBPACK_IMPORTED_MODULE_4__[\"default\"], { style: css.save, hidden: !this.state.endpoint && !this.state.message, message: this.state.message, changed: this.state.changed, disabled: this.state.disabled, light: true, onCancel: () => {\n this.setState({\n ...this.state,\n changed: false,\n endpoint: null,\n });\n }, onSave: this.onSave },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ConfirmButton__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { label: \"Reset Key\", className: \"bp3-intent-danger bp3-icon-key\", progressClassName: \"bp3-intent-danger\", style: css.controlButton, hidden: !endpoint.has_client_key, disabled: this.state.disabled, safe: true, onConfirm: () => {\n this.onResetClientKey();\n } })));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUksRUFDZixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUNuRCxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUM3QixLQUFLLEVBQUUsSUFBSSxFQUNYLFFBQVEsRUFBRSxHQUFTLEVBQUU7b0JBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUM7d0JBQ2IsR0FBRyxJQUFJLENBQUMsS0FBSzt3QkFDYixPQUFPLEVBQUUsS0FBSzt3QkFDZCxRQUFRLEVBQUUsSUFBSTtxQkFDZCxDQUFDLENBQUM7Z0JBQ0osQ0FBQyxFQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFFbkIsaURBQUMsc0RBQWEsSUFDYixLQUFLLEVBQUMsV0FBVyxFQUNqQixTQUFTLEVBQUMsZ0NBQWdDLEVBQzFDLGlCQUFpQixFQUFDLG1CQUFtQixFQUNyQyxLQUFLLEVBQUUsR0FBRyxDQUFDLGFBQWEsRUFDeEIsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFDaEMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUM3QixJQUFJLEVBQUUsSUFBSSxFQUNWLFNBQVMsRUFBRSxHQUFTLEVBQUU7d0JBQ3JCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO29CQUN6QixDQUFDLEdBQ0EsQ0FDUSxDQUNQLENBQUM7SUFDUCxDQUFDO0NBQ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcml0dW5sLXplcm8vLi9hcHAvY29tcG9uZW50cy9FbmRwb2ludERldGFpbGVkLnRzeD81NzZjIl0sInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9SZWZlcmVuY2VzLmQudHNcIi8+XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBFbmRwb2ludFR5cGVzIGZyb20gJy4uL3R5cGVzL0VuZHBvaW50VHlwZXMnO1xuaW1wb3J0ICogYXMgQXV0aG9yaXR5VHlwZXMgZnJvbSBcIi4uL3R5cGVzL0F1dGhvcml0eVR5cGVzXCI7XG5pbXBvcnQgKiBhcyBFbmRwb2ludEFjdGlvbnMgZnJvbSAnLi4vYWN0aW9ucy9FbmRwb2ludEFjdGlvbnMnO1xuaW1wb3J0ICogYXMgUGFnZUluZm9zIGZyb20gJy4vUGFnZUluZm8nO1xuaW1wb3J0ICogYXMgTWlzY1V0aWxzIGZyb20gJy4uL3V0aWxzL01pc2NVdGlscyc7XG5pbXBvcnQgUGFnZUlucHV0IGZyb20gJy4vUGFnZUlucHV0JztcbmltcG9ydCBQYWdlU2F2ZSBmcm9tICcuL1BhZ2VTYXZlJztcbmltcG9ydCBQYWdlSW5mbyBmcm9tICcuL1BhZ2VJbmZvJztcbmltcG9ydCBDb25maXJtQnV0dG9uIGZyb20gJy4vQ29uZmlybUJ1dHRvbic7XG5pbXBvcnQgUGFnZUlucHV0QnV0dG9uIGZyb20gJy4vUGFnZUlucHV0QnV0dG9uJztcbmltcG9ydCBFbmRwb2ludENoYXJ0cyBmcm9tICcuL0VuZHBvaW50Q2hhcnRzJztcbmltcG9ydCBFbmRwb2ludEttc2cgZnJvbSAnLi9FbmRwb2ludEttc2cnO1xuaW1wb3J0IEhlbHAgZnJvbSAnLi9IZWxwJztcbmltcG9ydCBQYWdlU3dpdGNoIGZyb20gXCIuL1BhZ2VTd2l0Y2hcIjtcblxuaW50ZXJmYWNlIFByb3BzIHtcblx0ZW5kcG9pbnQ6IEVuZHBvaW50VHlwZXMuRW5kcG9pbnRSbztcblx0YXV0aG9yaXRpZXM6IEF1dGhvcml0eVR5cGVzLkF1dGhvcml0aWVzUm87XG5cdHNlbGVjdGVkOiBib29sZWFuO1xuXHRvblNlbGVjdDogKHNoaWZ0OiBib29sZWFuKSA9PiB2b2lkO1xuXHRvbkNsb3NlOiAoKSA9PiB2b2lkO1xufVxuXG5pbnRlcmZhY2UgU3RhdGUge1xuXHRkaXNhYmxlZDogYm9vbGVhbjtcblx0Y2hhbmdlZDogYm9vbGVhbjtcblx0bWVzc2FnZTogc3RyaW5nO1xuXHRhZGRSb2xlOiBzdHJpbmc7XG5cdHNob3dDaGFydHM6IGJvb2xlYW47XG5cdGVuZHBvaW50OiBFbmRwb2ludFR5cGVzLkVuZHBvaW50O1xufVxuXG5jb25zdCBjc3MgPSB7XG5cdGNhcmQ6IHtcblx0XHRwb3NpdGlvbjogJ3JlbGF0aXZlJyxcblx0XHRwYWRkaW5nOiAnNDhweCAxMHB4IDAgMTBweCcsXG5cdFx0d2lkdGg6ICcxMDAlJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRyZW1vdmU6IHtcblx0XHRwb3NpdGlvbjogJ2Fic29sdXRlJyxcblx0XHR0b3A6ICc1cHgnLFxuXHRcdHJpZ2h0OiAnNXB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRpdGVtOiB7XG5cdFx0bWFyZ2luOiAnOXB4IDVweCAwIDVweCcsXG5cdFx0aGVpZ2h0OiAnMjBweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0aXRlbXNMYWJlbDoge1xuXHRcdGRpc3BsYXk6ICdibG9jaycsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0aXRlbXNBZGQ6IHtcblx0XHRtYXJnaW46ICc4cHggMCAxNXB4IDAnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdGdyb3VwOiB7XG5cdFx0ZmxleDogMSxcblx0XHRtaW5XaWR0aDogJzI1MHB4Jyxcblx0XHRtYXJnaW46ICcwIDEwcHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdGNvbnRyb2xCdXR0b246IHtcblx0XHRtYXJnaW5SaWdodDogJzEwcHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHNhdmU6IHtcblx0XHRwYWRkaW5nQm90dG9tOiAnMTBweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0YnV0dG9uOiB7XG5cdFx0aGVpZ2h0OiAnMzBweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0YnV0dG9uczoge1xuXHRcdGN1cnNvcjogJ3BvaW50ZXInLFxuXHRcdHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuXHRcdHRvcDogMCxcblx0XHRsZWZ0OiAwLFxuXHRcdHJpZ2h0OiAwLFxuXHRcdHBhZGRpbmc6ICc0cHgnLFxuXHRcdGhlaWdodDogJzM5cHgnLFxuXHRcdGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwgMCwgMCwgMC4xMyknLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdGxhYmVsOiB7XG5cdFx0d2lkdGg6ICcxMDAlJyxcblx0XHRtYXhXaWR0aDogJzI4MHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRzdGF0dXM6IHtcblx0XHRtYXJnaW46ICc2cHggMCAwIDFweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0aWNvbjoge1xuXHRcdG1hcmdpblJpZ2h0OiAnM3B4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRpbnB1dEdyb3VwOiB7XG5cdFx0d2lkdGg6ICcxMDAlJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRwcm90b2NvbDoge1xuXHRcdGZsZXg6ICcwIDEgYXV0bycsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0cG9ydDoge1xuXHRcdGZsZXg6ICcxJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRzZWxlY3Q6IHtcblx0XHRtYXJnaW46ICc3cHggMHB4IDBweCA2cHgnLFxuXHRcdHBhZGRpbmdUb3A6ICczcHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFbmRwb2ludERldGFpbGVkIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuXHRjb25zdHJ1Y3Rvcihwcm9wczogYW55LCBjb250ZXh0OiBhbnkpIHtcblx0XHRzdXBlcihwcm9wcywgY29udGV4dCk7XG5cdFx0dGhpcy5zdGF0ZSA9IHtcblx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRhZGRSb2xlOiAnJyxcblx0XHRcdGVuZHBvaW50OiBudWxsLFxuXHRcdFx0c2hvd0NoYXJ0czogdHJ1ZSxcblx0XHR9O1xuXHR9XG5cblx0c2V0KG5hbWU6IHN0cmluZywgdmFsOiBhbnkpOiB2b2lkIHtcblx0XHRsZXQgZW5kcG9pbnQ6IGFueTtcblxuXHRcdGlmICh0aGlzLnN0YXRlLmNoYW5nZWQpIHtcblx0XHRcdGVuZHBvaW50ID0ge1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLmVuZHBvaW50LFxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZW5kcG9pbnQgPSB7XG5cdFx0XHRcdC4uLnRoaXMucHJvcHMuZW5kcG9pbnQsXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGVuZHBvaW50W25hbWVdID0gdmFsO1xuXG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0Y2hhbmdlZDogdHJ1ZSxcblx0XHRcdGVuZHBvaW50OiBlbmRwb2ludCxcblx0XHR9KTtcblx0fVxuXG5cdG9uUmVzZXRDbGllbnRLZXkgPSAoKTogdm9pZCA9PiB7XG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0ZGlzYWJsZWQ6IHRydWUsXG5cdFx0fSk7XG5cblx0XHRsZXQgZW5kcG9pbnQgPSB7XG5cdFx0XHQuLi50aGlzLnByb3BzLmVuZHBvaW50LFxuXHRcdFx0cmVzZXRfY2xpZW50X2tleTogdHJ1ZSxcblx0XHR9O1xuXG5cdFx0RW5kcG9pbnRBY3Rpb25zLmNvbW1pdChlbmRwb2ludCkudGhlbigoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJ0NsaWVudCBrZXkgcmVzZXQnLFxuXHRcdFx0XHRjaGFuZ2VkOiBmYWxzZSxcblx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0fSk7XG5cblx0XHRcdHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRpZiAoIXRoaXMuc3RhdGUuY2hhbmdlZCkge1xuXHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdGVuZHBvaW50OiBudWxsLFxuXHRcdFx0XHRcdFx0Y2hhbmdlZDogZmFsc2UsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sIDEwMDApO1xuXG5cdFx0XHRzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLnN0YXRlLmNoYW5nZWQpIHtcblx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgMzAwMCk7XG5cdFx0fSkuY2F0Y2goKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdG1lc3NhZ2U6ICcnLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdG9uU2F2ZSA9ICgpOiB2b2lkID0+IHtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRkaXNhYmxlZDogdHJ1ZSxcblx0XHR9KTtcblx0XHRFbmRwb2ludEFjdGlvbnMuY29tbWl0KHRoaXMuc3RhdGUuZW5kcG9pbnQpLnRoZW4oKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdG1lc3NhZ2U6ICdZb3VyIGNoYW5nZXMgaGF2ZSBiZWVuIHNhdmVkJyxcblx0XHRcdFx0Y2hhbmdlZDogZmFsc2UsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdH0pO1xuXG5cdFx0XHRzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLnN0YXRlLmNoYW5nZWQpIHtcblx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRlbmRwb2ludDogbnVsbCxcblx0XHRcdFx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LCAxMDAwKTtcblxuXHRcdFx0c2V0VGltZW91dCgoKTogdm9pZCA9PiB7XG5cdFx0XHRcdGlmICghdGhpcy5zdGF0ZS5jaGFuZ2VkKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sIDMwMDApO1xuXHRcdH0pLmNhdGNoKCgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRvbkRlbGV0ZSA9ICgpOiB2b2lkID0+IHtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRkaXNhYmxlZDogdHJ1ZSxcblx0XHR9KTtcblx0XHRFbmRwb2ludEFjdGlvbnMucmVtb3ZlKHRoaXMucHJvcHMuZW5kcG9pbnQuaWQpLnRoZW4oKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdH0pO1xuXHRcdH0pLmNhdGNoKCgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdG9uQWRkUm9sZSA9ICgpOiB2b2lkID0+IHtcblx0XHRsZXQgZW5kcG9pbnQ6IEVuZHBvaW50VHlwZXMuRW5kcG9pbnQ7XG5cblx0XHRpZiAodGhpcy5zdGF0ZS5jaGFuZ2VkKSB7XG5cdFx0XHRlbmRwb2ludCA9IHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZS5lbmRwb2ludCxcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVuZHBvaW50ID0ge1xuXHRcdFx0XHQuLi50aGlzLnByb3BzLmVuZHBvaW50LFxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRsZXQgcm9sZXMgPSBbXG5cdFx0XHQuLi5lbmRwb2ludC5yb2xlcyxcblx0XHRdO1xuXG5cdFx0aWYgKCF0aGlzLnN0YXRlLmFkZFJvbGUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAocm9sZXMuaW5kZXhPZih0aGlzLnN0YXRlLmFkZFJvbGUpID09PSAtMSkge1xuXHRcdFx0cm9sZXMucHVzaCh0aGlzLnN0YXRlLmFkZFJvbGUpO1xuXHRcdH1cblxuXHRcdHJvbGVzLnNvcnQoKTtcblxuXHRcdGVuZHBvaW50LnJvbGVzID0gcm9sZXM7XG5cblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRjaGFuZ2VkOiB0cnVlLFxuXHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRhZGRSb2xlOiAnJyxcblx0XHRcdGVuZHBvaW50OiBlbmRwb2ludCxcblx0XHR9KTtcblx0fVxuXG5cdG9uUmVtb3ZlUm9sZShyb2xlOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRsZXQgZW5kcG9pbnQ6IEVuZHBvaW50VHlwZXMuRW5kcG9pbnQ7XG5cblx0XHRpZiAodGhpcy5zdGF0ZS5jaGFuZ2VkKSB7XG5cdFx0XHRlbmRwb2ludCA9IHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZS5lbmRwb2ludCxcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGVuZHBvaW50ID0ge1xuXHRcdFx0XHQuLi50aGlzLnByb3BzLmVuZHBvaW50LFxuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRsZXQgcm9sZXMgPSBbXG5cdFx0XHQuLi5lbmRwb2ludC5yb2xlcyxcblx0XHRdO1xuXG5cdFx0bGV0IGkgPSByb2xlcy5pbmRleE9mKHJvbGUpO1xuXHRcdGlmIChpID09PSAtMSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHJvbGVzLnNwbGljZShpLCAxKTtcblxuXHRcdGVuZHBvaW50LnJvbGVzID0gcm9sZXM7XG5cblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRjaGFuZ2VkOiB0cnVlLFxuXHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRhZGRSb2xlOiAnJyxcblx0XHRcdGVuZHBvaW50OiBlbmRwb2ludCxcblx0XHR9KTtcblx0fVxuXG5cdHJlbmRlcigpOiBKU1guRWxlbWVudCB7XG5cdFx0bGV0IGVuZHBvaW50OiBFbmRwb2ludFR5cGVzLkVuZHBvaW50ID0gdGhpcy5zdGF0ZS5lbmRwb2ludCB8fFxuXHRcdFx0dGhpcy5wcm9wcy5lbmRwb2ludDtcblxuXHRcdGxldCBmaWVsZHM6IFBhZ2VJbmZvcy5GaWVsZFtdID0gW1xuXHRcdFx0e1xuXHRcdFx0XHRsYWJlbDogJ0lEJyxcblx0XHRcdFx0dmFsdWU6IHRoaXMucHJvcHMuZW5kcG9pbnQuaWQgfHwgJ05vbmUnLFxuXHRcdFx0fSxcblx0XHRdO1xuXG5cdFx0bGV0IGVuZHBvaW50RGF0YSA9IGVuZHBvaW50LmRhdGEgfHwge307XG5cdFx0aWYgKGVuZHBvaW50RGF0YSkge1xuXHRcdFx0aWYgKGVuZHBvaW50RGF0YS5ob3N0bmFtZSkge1xuXHRcdFx0XHRmaWVsZHMucHVzaCh7XG5cdFx0XHRcdFx0bGFiZWw6ICdIb3N0bmFtZScsXG5cdFx0XHRcdFx0dmFsdWU6IGVuZHBvaW50RGF0YS5ob3N0bmFtZSxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZW5kcG9pbnREYXRhLnVwdGltZSkge1xuXHRcdFx0XHRmaWVsZHMucHVzaCh7XG5cdFx0XHRcdFx0bGFiZWw6ICdVcHRpbWUnLFxuXHRcdFx0XHRcdHZhbHVlOiBNaXNjVXRpbHMuZm9ybWF0VXB0aW1lKGVuZHBvaW50RGF0YS51cHRpbWUpLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGlmIChlbmRwb2ludERhdGEucGxhdGZvcm0pIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnUGxhdGZvcm0nLFxuXHRcdFx0XHRcdHZhbHVlOiBlbmRwb2ludERhdGEucGxhdGZvcm0sXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVuZHBvaW50RGF0YS5wYWNrYWdlX3VwZGF0ZXMpIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnU3lzdGVtIFBhY2thZ2UgVXBkYXRlcycsXG5cdFx0XHRcdFx0dmFsdWU6IGVuZHBvaW50RGF0YS5wYWNrYWdlX3VwZGF0ZXMsXG5cdFx0XHRcdFx0dmFsdWVDbGFzczogJ2JwMy10ZXh0LWludGVudC1kYW5nZXInLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGlmIChlbmRwb2ludERhdGEudmlydHVhbGl6YXRpb24pIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnVmlydHVhbGl6YXRpb24nLFxuXHRcdFx0XHRcdHZhbHVlOiBlbmRwb2ludERhdGEudmlydHVhbGl6YXRpb24sXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVuZHBvaW50RGF0YS5jcHVfY29yZXMpIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnQ1BVIENvcmVzJyxcblx0XHRcdFx0XHR2YWx1ZTogZW5kcG9pbnREYXRhLmNwdV9jb3Jlcyxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZW5kcG9pbnREYXRhLm1lbV90b3RhbCkge1xuXHRcdFx0XHRmaWVsZHMucHVzaCh7XG5cdFx0XHRcdFx0bGFiZWw6ICdNZW1vcnknLFxuXHRcdFx0XHRcdHZhbHVlOiBlbmRwb2ludERhdGEubWVtX3RvdGFsICsgJ01CJyxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZW5kcG9pbnREYXRhLnN3YXBfdG90YWwpIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnU3dhcCcsXG5cdFx0XHRcdFx0dmFsdWU6IGVuZHBvaW50RGF0YS5zd2FwX3RvdGFsICsgJ01CJyxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZW5kcG9pbnREYXRhLmh1Z2VfdG90YWwpIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnSHVnZVBhZ2VzJyxcblx0XHRcdFx0XHR2YWx1ZTogZW5kcG9pbnREYXRhLmh1Z2VfdG90YWwgKyAnTUInLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoZW5kcG9pbnQuZGF0YS5tZF9zdGF0ICYmIGVuZHBvaW50LmRhdGEubWRfc3RhdC5sZW5ndGgpIHtcblx0XHRcdGxldCBmYWlsZWQgPSAwO1xuXHRcdFx0bGV0IHRvdGFsID0gMDtcblxuXHRcdFx0Zm9yIChsZXQgbWQgb2YgZW5kcG9pbnQuZGF0YS5tZF9zdGF0KSB7XG5cdFx0XHRcdGZhaWxlZCArPSBtZC5mYWlsZWQ7XG5cdFx0XHRcdHRvdGFsICs9IG1kLnRvdGFsO1xuXHRcdFx0fVxuXG5cdFx0XHRmaWVsZHMucHVzaCh7XG5cdFx0XHRcdGxhYmVsOiAnUmFpZCBEZXZpY2VzJyxcblx0XHRcdFx0dmFsdWU6ICdGYWlsZWQ6ICcgKyBmYWlsZWQgKyAnIFRvdGFsOiAnICsgdG90YWwsXG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRsZXQgcm9sZXM6IEpTWC5FbGVtZW50W10gPSBbXTtcblx0XHRmb3IgKGxldCByb2xlIG9mIGVuZHBvaW50LnJvbGVzKSB7XG5cdFx0XHRyb2xlcy5wdXNoKFxuXHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnAzLXRhZyBicDMtdGFnLXJlbW92YWJsZSBicDMtaW50ZW50LXByaW1hcnlcIlxuXHRcdFx0XHRcdHN0eWxlPXtjc3MuaXRlbX1cblx0XHRcdFx0XHRrZXk9e3JvbGV9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7cm9sZX1cblx0XHRcdFx0XHQ8YnV0dG9uXG5cdFx0XHRcdFx0XHRjbGFzc05hbWU9XCJicDMtdGFnLXJlbW92ZVwiXG5cdFx0XHRcdFx0XHRvbk1vdXNlVXA9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5vblJlbW92ZVJvbGUocm9sZSk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvZGl2Pixcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0bGV0IGFsZXJ0czogc3RyaW5nW10gPSBbXTtcblx0XHRmb3IgKGxldCBhbGVydCBvZiBPYmplY3QudmFsdWVzKGVuZHBvaW50LmluZm8uYWxlcnRzKSkge1xuXHRcdFx0YWxlcnRzLnB1c2goYWxlcnQpO1xuXHRcdH1cblxuXHRcdGxldCBjaGVja3M6IHN0cmluZ1tdID0gW107XG5cdFx0Zm9yIChsZXQgY2hlY2sgb2YgT2JqZWN0LnZhbHVlcyhlbmRwb2ludC5pbmZvLmNoZWNrcykpIHtcblx0XHRcdGNoZWNrcy5wdXNoKGNoZWNrKTtcblx0XHR9XG5cblx0XHRsZXQgc2VjcmV0S2V5ID0gJyc7XG5cdFx0bGV0IHNlY3JldFVyaSA9ICcnO1xuXHRcdGlmICghZW5kcG9pbnQuaGFzX2NsaWVudF9rZXkpIHtcblx0XHRcdGlmIChlbmRwb2ludC5jbGllbnRfa2V5KSB7XG5cdFx0XHRcdHNlY3JldEtleSA9IGVuZHBvaW50LmlkICsgJ18nICsgZW5kcG9pbnQuY2xpZW50X2tleS5zZWNyZXQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRzZWNyZXRLZXkgPSAndW5rbm93bic7XG5cdFx0XHR9XG5cdFx0XHRzZWNyZXRVcmkgPSAncHJpdHVubDovLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArICcvJyArIHNlY3JldEtleTtcblx0XHR9XG5cblx0XHRyZXR1cm4gPHRkXG5cdFx0XHRjbGFzc05hbWU9XCJicDMtY2VsbFwiXG5cdFx0XHRjb2xTcGFuPXszfVxuXHRcdFx0c3R5bGU9e2Nzcy5jYXJkfVxuXHRcdD5cblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwibGF5b3V0IGhvcml6b250YWwgd3JhcFwiPlxuXHRcdFx0XHQ8ZGl2IHN0eWxlPXtjc3MuZ3JvdXB9PlxuXHRcdFx0XHRcdDxkaXZcblx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cImxheW91dCBob3Jpem9udGFsIHRhYi1jbG9zZVwiXG5cdFx0XHRcdFx0XHRzdHlsZT17Y3NzLmJ1dHRvbnN9XG5cdFx0XHRcdFx0XHRvbkNsaWNrPXsoZXZ0KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdGxldCB0YXJnZXQgPSBldnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG5cdFx0XHRcdFx0XHRcdGlmICh0YXJnZXQuY2xhc3NOYW1lLmluZGV4T2YoJ3RhYi1jbG9zZScpICE9PSAtMSkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucHJvcHMub25DbG9zZSgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdD5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImJwMy1jb250cm9sIGJwMy1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e2Nzcy5zZWxlY3R9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt0aGlzLnByb3BzLnNlbGVjdGVkfVxuXHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyhldnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdH19XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZXZ0KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMucHJvcHMub25TZWxlY3QoZXZ0LnNoaWZ0S2V5KTtcblx0XHRcdFx0XHRcdFx0XHRcdH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJicDMtY29udHJvbC1pbmRpY2F0b3JcIi8+XG4gICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cblx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiZmxleCB0YWItY2xvc2VcIi8+XG5cdFx0XHRcdFx0XHQ8Q29uZmlybUJ1dHRvblxuXHRcdFx0XHRcdFx0XHRzYWZlPXt0cnVlfVxuXHRcdFx0XHRcdFx0XHRjbGFzc05hbWU9XCJicDMtbWluaW1hbCBicDMtaW50ZW50LWRhbmdlciBicDMtaWNvbi10cmFzaFwiXG5cdFx0XHRcdFx0XHRcdHByb2dyZXNzQ2xhc3NOYW1lPVwiYnAzLWludGVudC1kYW5nZXJcIlxuXHRcdFx0XHRcdFx0XHRkaWFsb2dDbGFzc05hbWU9XCJicDMtaW50ZW50LWRhbmdlciBicDMtaWNvbi1kZWxldGVcIlxuXHRcdFx0XHRcdFx0XHRkaWFsb2dMYWJlbD1cIkRlbGV0ZSBFbmRwb2ludFwiXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1Nc2c9XCJQZXJtYW5lbnRseSBkZWxldGUgdGhpcyBlbmRwb2ludFwiXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1JbnB1dD17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0aXRlbXM9e1tlbmRwb2ludC5uYW1lXX1cblx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWR9XG5cdFx0XHRcdFx0XHRcdG9uQ29uZmlybT17dGhpcy5vbkRlbGV0ZX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dFxuXHRcdFx0XHRcdFx0bGFiZWw9XCJOYW1lXCJcblx0XHRcdFx0XHRcdGhlbHA9XCJOYW1lIG9mIGVuZHBvaW50XCJcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiRW50ZXIgbmFtZVwiXG5cdFx0XHRcdFx0XHR2YWx1ZT17ZW5kcG9pbnQubmFtZX1cblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCduYW1lJywgdmFsKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZUlucHV0XG5cdFx0XHRcdFx0XHRoaWRkZW49e2VuZHBvaW50Lmhhc19jbGllbnRfa2V5fVxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWR9XG5cdFx0XHRcdFx0XHRyZWFkT25seT17dHJ1ZX1cblx0XHRcdFx0XHRcdGF1dG9TZWxlY3Q9e3RydWV9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIlJlZ2lzdHJhdGlvbiBLZXlcIlxuXHRcdFx0XHRcdFx0aGVscD1cIktleSBmb3IgZW5kcG9pbnQgcmVnaXN0cmF0aW9uXCJcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiXCJcblx0XHRcdFx0XHRcdHZhbHVlPXtzZWNyZXRLZXl9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8bGFiZWwgY2xhc3NOYW1lPVwiYnAzLWxhYmVsXCI+XG5cdFx0XHRcdFx0XHRSb2xlc1xuXHRcdFx0XHRcdFx0PEhlbHBcblx0XHRcdFx0XHRcdFx0dGl0bGU9XCJSb2xlc1wiXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ9XCJUaGUgdXNlciByb2xlcyB0aGF0IHdpbGwgYmUgYWxsb3dlZCBhY2Nlc3MgdG8gdGhpcyBlbmRwb2ludC4gQXQgbGVhc3Qgb25lIHJvbGUgbXVzdCBtYXRjaCBmb3IgdGhlIHVzZXIgdG8gYWNjZXNzIHRoZSBlbmRwb2ludC5cIlxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0XHRcdHtyb2xlc31cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvbGFiZWw+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dEJ1dHRvblxuXHRcdFx0XHRcdFx0YnV0dG9uQ2xhc3M9XCJicDMtaW50ZW50LXN1Y2Nlc3MgYnAzLWljb24tYWRkXCJcblx0XHRcdFx0XHRcdGxhYmVsPVwiQWRkXCJcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiQWRkIHJvbGVcIlxuXHRcdFx0XHRcdFx0dmFsdWU9e3RoaXMuc3RhdGUuYWRkUm9sZX1cblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRcdFx0YWRkUm9sZTogdmFsLFxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRvblN1Ym1pdD17dGhpcy5vbkFkZFJvbGV9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZVN3aXRjaFxuXHRcdFx0XHRcdFx0bGFiZWw9XCJTaG93IGNoYXJ0cyBhbmQgZG1lc2dcIlxuXHRcdFx0XHRcdFx0aGVscD1cIlNob3cgZW5kcG9pbnQgY2hhcnRzIGFuZCBkbWVzZy5cIlxuXHRcdFx0XHRcdFx0Y2hlY2tlZD17dGhpcy5zdGF0ZS5zaG93Q2hhcnRzfVxuXHRcdFx0XHRcdFx0aGlkZGVuPXshZW5kcG9pbnREYXRhLmhvc3RuYW1lfVxuXHRcdFx0XHRcdFx0b25Ub2dnbGU9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdFx0XHRzaG93Q2hhcnRzOiAhdGhpcy5zdGF0ZS5zaG93Q2hhcnRzLFxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZUluZm9cblx0XHRcdFx0XHRcdGZpZWxkcz17W1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6ICdBbGVydHMnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhbGVydHMubGVuZ3RoID8gYWxlcnRzIDogJy0nLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6ICdIZWFsdGggQ2hlY2tzJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogY2hlY2tzLmxlbmd0aCA/IGNoZWNrcyA6ICctJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDxkaXYgc3R5bGU9e2Nzcy5ncm91cH0+XG5cdFx0XHRcdFx0PFBhZ2VJbmZvXG5cdFx0XHRcdFx0XHRmaWVsZHM9e2ZpZWxkc31cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDxQYWdlSW5wdXRcblx0XHRcdFx0XHRcdGhpZGRlbj17ZW5kcG9pbnQuaGFzX2NsaWVudF9rZXl9XG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5kaXNhYmxlZH1cblx0XHRcdFx0XHRcdHJlYWRPbmx5PXt0cnVlfVxuXHRcdFx0XHRcdFx0YXV0b1NlbGVjdD17dHJ1ZX1cblx0XHRcdFx0XHRcdGxhYmVsPVwiUmVnaXN0cmF0aW9uIFVSSVwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiVVJJIGZvciBlbmRwb2ludCByZWdpc3RyYXRpb25cIlxuXHRcdFx0XHRcdFx0dHlwZT1cInRleHRcIlxuXHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJcIlxuXHRcdFx0XHRcdFx0dmFsdWU9e3NlY3JldFVyaX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PEVuZHBvaW50Q2hhcnRzXG5cdFx0XHRcdGVuZHBvaW50PXtlbmRwb2ludC5pZH1cblx0XHRcdFx0ZGlzYWJsZWQ9eyFlbmRwb2ludERhdGEuaG9zdG5hbWUgfHwgIXRoaXMuc3RhdGUuc2hvd0NoYXJ0c31cblx0XHRcdC8+XG5cdFx0XHQ8RW5kcG9pbnRLbXNnXG5cdFx0XHRcdGVuZHBvaW50PXtlbmRwb2ludC5pZH1cblx0XHRcdFx0ZGlzYWJsZWQ9eyFlbmRwb2ludERhdGEuaG9zdG5hbWUgfHwgIXRoaXMuc3RhdGUuc2hvd0NoYXJ0c31cblx0XHRcdC8+XG5cdFx0XHQ8UGFnZVNhdmVcblx0XHRcdFx0c3R5bGU9e2Nzcy5zYXZlfVxuXHRcdFx0XHRoaWRkZW49eyF0aGlzLnN0YXRlLmVuZHBvaW50ICYmICF0aGlzLnN0YXRlLm1lc3NhZ2V9XG5cdFx0XHRcdG1lc3NhZ2U9e3RoaXMuc3RhdGUubWVzc2FnZX1cblx0XHRcdFx0Y2hhbmdlZD17dGhpcy5zdGF0ZS5jaGFuZ2VkfVxuXHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5kaXNhYmxlZH1cblx0XHRcdFx0bGlnaHQ9e3RydWV9XG5cdFx0XHRcdG9uQ2FuY2VsPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0Y2hhbmdlZDogZmFsc2UsXG5cdFx0XHRcdFx0XHRlbmRwb2ludDogbnVsbCxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fX1cblx0XHRcdFx0b25TYXZlPXt0aGlzLm9uU2F2ZX1cblx0XHRcdD5cblx0XHRcdFx0PENvbmZpcm1CdXR0b25cblx0XHRcdFx0XHRsYWJlbD1cIlJlc2V0IEtleVwiXG5cdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnAzLWludGVudC1kYW5nZXIgYnAzLWljb24ta2V5XCJcblx0XHRcdFx0XHRwcm9ncmVzc0NsYXNzTmFtZT1cImJwMy1pbnRlbnQtZGFuZ2VyXCJcblx0XHRcdFx0XHRzdHlsZT17Y3NzLmNvbnRyb2xCdXR0b259XG5cdFx0XHRcdFx0aGlkZGVuPXshZW5kcG9pbnQuaGFzX2NsaWVudF9rZXl9XG5cdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWR9XG5cdFx0XHRcdFx0c2FmZT17dHJ1ZX1cblx0XHRcdFx0XHRvbkNvbmZpcm09eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdHRoaXMub25SZXNldENsaWVudEtleSgpO1xuXHRcdFx0XHRcdH19XG5cdFx0XHRcdC8+XG5cdFx0XHQ8L1BhZ2VTYXZlPlxuXHRcdDwvdGQ+O1xuXHR9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/components/EndpointDetailed.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ EndpointDetailed)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../actions/EndpointActions */ \"./app/actions/EndpointActions.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n/* harmony import */ var _PageInput__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./PageInput */ \"./app/components/PageInput.js\");\n/* harmony import */ var _PageSave__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./PageSave */ \"./app/components/PageSave.js\");\n/* harmony import */ var _PageInfo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./PageInfo */ \"./app/components/PageInfo.js\");\n/* harmony import */ var _ConfirmButton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./ConfirmButton */ \"./app/components/ConfirmButton.js\");\n/* harmony import */ var _PageInputButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./PageInputButton */ \"./app/components/PageInputButton.js\");\n/* harmony import */ var _EndpointCharts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./EndpointCharts */ \"./app/components/EndpointCharts.js\");\n/* harmony import */ var _EndpointKmsg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./EndpointKmsg */ \"./app/components/EndpointKmsg.js\");\n/* harmony import */ var _Help__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./Help */ \"./app/components/Help.js\");\n/* harmony import */ var _PageSwitch__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./PageSwitch */ \"./app/components/PageSwitch.js\");\n\n\n\n\n\n\n\n\n\n\n\n\nconst css = {\n card: {\n position: 'relative',\n padding: '48px 10px 0 10px',\n width: '100%',\n },\n remove: {\n position: 'absolute',\n top: '5px',\n right: '5px',\n },\n item: {\n margin: '9px 5px 0 5px',\n height: '20px',\n },\n itemsLabel: {\n display: 'block',\n },\n itemsAdd: {\n margin: '8px 0 15px 0',\n },\n group: {\n flex: 1,\n minWidth: '250px',\n margin: '0 10px',\n },\n controlButton: {\n marginRight: '10px',\n },\n save: {\n paddingBottom: '10px',\n },\n button: {\n height: '30px',\n },\n buttons: {\n cursor: 'pointer',\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n padding: '4px',\n height: '39px',\n backgroundColor: 'rgba(0, 0, 0, 0.13)',\n },\n label: {\n width: '100%',\n maxWidth: '280px',\n },\n status: {\n margin: '6px 0 0 1px',\n },\n icon: {\n marginRight: '3px',\n },\n inputGroup: {\n width: '100%',\n },\n protocol: {\n flex: '0 1 auto',\n },\n port: {\n flex: '1',\n },\n select: {\n margin: '7px 0px 0px 6px',\n paddingTop: '3px',\n },\n};\nclass EndpointDetailed extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor(props, context) {\n super(props, context);\n this.onResetClientKey = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n let endpoint = {\n ...this.props.endpoint,\n reset_client_key: true,\n };\n _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__.commit(endpoint).then(() => {\n this.setState({\n ...this.state,\n message: 'Client key reset',\n changed: false,\n disabled: false,\n });\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n endpoint: null,\n changed: false,\n });\n }\n }, 1000);\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n message: '',\n });\n }\n }, 3000);\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.onSave = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__.commit(this.state.endpoint).then(() => {\n this.setState({\n ...this.state,\n message: 'Your changes have been saved',\n changed: false,\n disabled: false,\n });\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n endpoint: null,\n changed: false,\n });\n }\n }, 1000);\n setTimeout(() => {\n if (!this.state.changed) {\n this.setState({\n ...this.state,\n message: '',\n });\n }\n }, 3000);\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.onDelete = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_EndpointActions__WEBPACK_IMPORTED_MODULE_1__.remove(this.props.endpoint.id).then(() => {\n this.setState({\n ...this.state,\n disabled: false,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n disabled: false,\n });\n });\n };\n this.onAddRole = () => {\n let endpoint;\n if (this.state.changed) {\n endpoint = {\n ...this.state.endpoint,\n };\n }\n else {\n endpoint = {\n ...this.props.endpoint,\n };\n }\n let roles = [\n ...endpoint.roles,\n ];\n if (!this.state.addRole) {\n return;\n }\n if (roles.indexOf(this.state.addRole) === -1) {\n roles.push(this.state.addRole);\n }\n roles.sort();\n endpoint.roles = roles;\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n endpoint: endpoint,\n });\n };\n this.state = {\n disabled: false,\n changed: false,\n message: '',\n addRole: '',\n endpoint: null,\n showCharts: true,\n };\n }\n set(name, val) {\n let endpoint;\n if (this.state.changed) {\n endpoint = {\n ...this.state.endpoint,\n };\n }\n else {\n endpoint = {\n ...this.props.endpoint,\n };\n }\n endpoint[name] = val;\n this.setState({\n ...this.state,\n changed: true,\n endpoint: endpoint,\n });\n }\n onRemoveRole(role) {\n let endpoint;\n if (this.state.changed) {\n endpoint = {\n ...this.state.endpoint,\n };\n }\n else {\n endpoint = {\n ...this.props.endpoint,\n };\n }\n let roles = [\n ...endpoint.roles,\n ];\n let i = roles.indexOf(role);\n if (i === -1) {\n return;\n }\n roles.splice(i, 1);\n endpoint.roles = roles;\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n endpoint: endpoint,\n });\n }\n render() {\n let endpoint = this.state.endpoint ||\n this.props.endpoint;\n let fields = [\n {\n label: 'ID',\n value: this.props.endpoint.id || 'None',\n },\n ];\n let endpointData = endpoint.data || {};\n if (endpointData) {\n if (endpointData.version) {\n fields.push({\n label: 'Endpoint Version',\n value: endpointData.version,\n });\n }\n if (endpointData.hostname) {\n fields.push({\n label: 'Hostname',\n value: endpointData.hostname,\n });\n }\n if (endpointData.uptime) {\n fields.push({\n label: 'Uptime',\n value: _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__.formatUptime(endpointData.uptime),\n });\n }\n if (endpointData.platform) {\n fields.push({\n label: 'Platform',\n value: endpointData.platform,\n });\n }\n if (endpointData.package_updates) {\n fields.push({\n label: 'System Package Updates',\n value: endpointData.package_updates,\n valueClass: 'bp3-text-intent-danger',\n });\n }\n if (endpointData.virtualization) {\n fields.push({\n label: 'Virtualization',\n value: endpointData.virtualization,\n });\n }\n if (endpointData.cpu_cores) {\n fields.push({\n label: 'CPU Cores',\n value: endpointData.cpu_cores,\n });\n }\n if (endpointData.mem_total) {\n fields.push({\n label: 'Memory',\n value: endpointData.mem_total + 'MB',\n });\n }\n if (endpointData.swap_total) {\n fields.push({\n label: 'Swap',\n value: endpointData.swap_total + 'MB',\n });\n }\n if (endpointData.huge_total) {\n fields.push({\n label: 'HugePages',\n value: endpointData.huge_total + 'MB',\n });\n }\n }\n if (endpoint.data.md_stat && endpoint.data.md_stat.length) {\n let failed = 0;\n let total = 0;\n for (let md of endpoint.data.md_stat) {\n failed += md.failed;\n total += md.total;\n }\n fields.push({\n label: 'Raid Devices',\n value: 'Failed: ' + failed + ' Total: ' + total,\n });\n }\n let roles = [];\n for (let role of endpoint.roles) {\n roles.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-tag bp3-tag-removable bp3-intent-primary\", style: css.item, key: role },\n role,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", { className: \"bp3-tag-remove\", onMouseUp: () => {\n this.onRemoveRole(role);\n } })));\n }\n let alerts = [];\n for (let alert of Object.values(endpoint.info.alerts)) {\n alerts.push(alert);\n }\n let checks = [];\n for (let check of Object.values(endpoint.info.checks)) {\n checks.push(check);\n }\n let secretKey = '';\n let secretUri = '';\n if (!endpoint.has_client_key) {\n if (endpoint.client_key) {\n secretKey = endpoint.id + '_' + endpoint.client_key.secret;\n }\n else {\n secretKey = 'unknown';\n }\n secretUri = 'pritunl://' + window.location.host + '/' + secretKey;\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"td\", { className: \"bp3-cell\", colSpan: 3, style: css.card },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal wrap\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { style: css.group },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal tab-close\", style: css.buttons, onClick: (evt) => {\n let target = evt.target;\n if (target.className.indexOf('tab-close') !== -1) {\n this.props.onClose();\n }\n } },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-control bp3-checkbox\", style: css.select },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"input\", { type: \"checkbox\", checked: this.props.selected, onChange: (evt) => {\n }, onClick: (evt) => {\n this.props.onSelect(evt.shiftKey);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: \"bp3-control-indicator\" }))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"flex tab-close\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ConfirmButton__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { safe: true, className: \"bp3-minimal bp3-intent-danger bp3-icon-trash\", progressClassName: \"bp3-intent-danger\", dialogClassName: \"bp3-intent-danger bp3-icon-delete\", dialogLabel: \"Delete Endpoint\", confirmMsg: \"Permanently delete this endpoint\", confirmInput: true, items: [endpoint.name], disabled: this.state.disabled, onConfirm: this.onDelete })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { label: \"Name\", help: \"Name of endpoint\", type: \"text\", placeholder: \"Enter name\", value: endpoint.name, onChange: (val) => {\n this.set('name', val);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { hidden: endpoint.has_client_key, disabled: this.state.disabled, readOnly: true, autoSelect: true, label: \"Registration Key\", help: \"Key for endpoint registration\", type: \"text\", placeholder: \"\", value: secretKey }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-label\" },\n \"Roles\",\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Help__WEBPACK_IMPORTED_MODULE_10__[\"default\"], { title: \"Roles\", content: \"The user roles that will be allowed access to this endpoint. At least one role must match for the user to access the endpoint.\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, roles)),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInputButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { buttonClass: \"bp3-intent-success bp3-icon-add\", label: \"Add\", type: \"text\", placeholder: \"Add role\", value: this.state.addRole, onChange: (val) => {\n this.setState({\n ...this.state,\n addRole: val,\n });\n }, onSubmit: this.onAddRole }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_11__[\"default\"], { label: \"Show charts and dmesg\", help: \"Show endpoint charts and dmesg.\", checked: this.state.showCharts, hidden: !endpointData.hostname, onToggle: () => {\n this.setState({\n ...this.state,\n showCharts: !this.state.showCharts,\n });\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], { fields: [\n {\n label: 'Alerts',\n value: alerts.length ? alerts : '-',\n },\n {\n label: 'Health Checks',\n value: checks.length ? checks : '-',\n },\n ] })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { style: css.group },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"], { fields: fields }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], { hidden: endpoint.has_client_key, disabled: this.state.disabled, readOnly: true, autoSelect: true, label: \"Registration URI\", help: \"URI for endpoint registration\", type: \"text\", placeholder: \"\", value: secretUri }))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_EndpointCharts__WEBPACK_IMPORTED_MODULE_8__[\"default\"], { endpoint: endpoint.id, disabled: !endpointData.hostname || !this.state.showCharts }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_EndpointKmsg__WEBPACK_IMPORTED_MODULE_9__[\"default\"], { endpoint: endpoint.id, disabled: !endpointData.hostname || !this.state.showCharts }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSave__WEBPACK_IMPORTED_MODULE_4__[\"default\"], { style: css.save, hidden: !this.state.endpoint && !this.state.message, message: this.state.message, changed: this.state.changed, disabled: this.state.disabled, light: true, onCancel: () => {\n this.setState({\n ...this.state,\n changed: false,\n endpoint: null,\n });\n }, onSave: this.onSave },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ConfirmButton__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { label: \"Reset Key\", className: \"bp3-intent-danger bp3-icon-key\", progressClassName: \"bp3-intent-danger\", style: css.controlButton, hidden: !endpoint.has_client_key, disabled: this.state.disabled, safe: true, onConfirm: () => {\n this.onResetClientKey();\n } })));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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cC9jb21wb25lbnRzL0VuZHBvaW50RGV0YWlsZWQudHN4PzU3NmMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1JlZmVyZW5jZXMuZC50c1wiLz5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIEVuZHBvaW50VHlwZXMgZnJvbSAnLi4vdHlwZXMvRW5kcG9pbnRUeXBlcyc7XG5pbXBvcnQgKiBhcyBBdXRob3JpdHlUeXBlcyBmcm9tIFwiLi4vdHlwZXMvQXV0aG9yaXR5VHlwZXNcIjtcbmltcG9ydCAqIGFzIEVuZHBvaW50QWN0aW9ucyBmcm9tICcuLi9hY3Rpb25zL0VuZHBvaW50QWN0aW9ucyc7XG5pbXBvcnQgKiBhcyBQYWdlSW5mb3MgZnJvbSAnLi9QYWdlSW5mbyc7XG5pbXBvcnQgKiBhcyBNaXNjVXRpbHMgZnJvbSAnLi4vdXRpbHMvTWlzY1V0aWxzJztcbmltcG9ydCBQYWdlSW5wdXQgZnJvbSAnLi9QYWdlSW5wdXQnO1xuaW1wb3J0IFBhZ2VTYXZlIGZyb20gJy4vUGFnZVNhdmUnO1xuaW1wb3J0IFBhZ2VJbmZvIGZyb20gJy4vUGFnZUluZm8nO1xuaW1wb3J0IENvbmZpcm1CdXR0b24gZnJvbSAnLi9Db25maXJtQnV0dG9uJztcbmltcG9ydCBQYWdlSW5wdXRCdXR0b24gZnJvbSAnLi9QYWdlSW5wdXRCdXR0b24nO1xuaW1wb3J0IEVuZHBvaW50Q2hhcnRzIGZyb20gJy4vRW5kcG9pbnRDaGFydHMnO1xuaW1wb3J0IEVuZHBvaW50S21zZyBmcm9tICcuL0VuZHBvaW50S21zZyc7XG5pbXBvcnQgSGVscCBmcm9tICcuL0hlbHAnO1xuaW1wb3J0IFBhZ2VTd2l0Y2ggZnJvbSBcIi4vUGFnZVN3aXRjaFwiO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuXHRlbmRwb2ludDogRW5kcG9pbnRUeXBlcy5FbmRwb2ludFJvO1xuXHRhdXRob3JpdGllczogQXV0aG9yaXR5VHlwZXMuQXV0aG9yaXRpZXNSbztcblx0c2VsZWN0ZWQ6IGJvb2xlYW47XG5cdG9uU2VsZWN0OiAoc2hpZnQ6IGJvb2xlYW4pID0+IHZvaWQ7XG5cdG9uQ2xvc2U6ICgpID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBTdGF0ZSB7XG5cdGRpc2FibGVkOiBib29sZWFuO1xuXHRjaGFuZ2VkOiBib29sZWFuO1xuXHRtZXNzYWdlOiBzdHJpbmc7XG5cdGFkZFJvbGU6IHN0cmluZztcblx0c2hvd0NoYXJ0czogYm9vbGVhbjtcblx0ZW5kcG9pbnQ6IEVuZHBvaW50VHlwZXMuRW5kcG9pbnQ7XG59XG5cbmNvbnN0IGNzcyA9IHtcblx0Y2FyZDoge1xuXHRcdHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuXHRcdHBhZGRpbmc6ICc0OHB4IDEwcHggMCAxMHB4Jyxcblx0XHR3aWR0aDogJzEwMCUnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHJlbW92ZToge1xuXHRcdHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuXHRcdHRvcDogJzVweCcsXG5cdFx0cmlnaHQ6ICc1cHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdGl0ZW06IHtcblx0XHRtYXJnaW46ICc5cHggNXB4IDAgNXB4Jyxcblx0XHRoZWlnaHQ6ICcyMHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRpdGVtc0xhYmVsOiB7XG5cdFx0ZGlzcGxheTogJ2Jsb2NrJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRpdGVtc0FkZDoge1xuXHRcdG1hcmdpbjogJzhweCAwIDE1cHggMCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0Z3JvdXA6IHtcblx0XHRmbGV4OiAxLFxuXHRcdG1pbldpZHRoOiAnMjUwcHgnLFxuXHRcdG1hcmdpbjogJzAgMTBweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0Y29udHJvbEJ1dHRvbjoge1xuXHRcdG1hcmdpblJpZ2h0OiAnMTBweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0c2F2ZToge1xuXHRcdHBhZGRpbmdCb3R0b206ICcxMHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRidXR0b246IHtcblx0XHRoZWlnaHQ6ICczMHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRidXR0b25zOiB7XG5cdFx0Y3Vyc29yOiAncG9pbnRlcicsXG5cdFx0cG9zaXRpb246ICdhYnNvbHV0ZScsXG5cdFx0dG9wOiAwLFxuXHRcdGxlZnQ6IDAsXG5cdFx0cmlnaHQ6IDAsXG5cdFx0cGFkZGluZzogJzRweCcsXG5cdFx0aGVpZ2h0OiAnMzlweCcsXG5cdFx0YmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjEzKScsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0bGFiZWw6IHtcblx0XHR3aWR0aDogJzEwMCUnLFxuXHRcdG1heFdpZHRoOiAnMjgwcHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHN0YXR1czoge1xuXHRcdG1hcmdpbjogJzZweCAwIDAgMXB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRpY29uOiB7XG5cdFx0bWFyZ2luUmlnaHQ6ICczcHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdGlucHV0R3JvdXA6IHtcblx0XHR3aWR0aDogJzEwMCUnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHByb3RvY29sOiB7XG5cdFx0ZmxleDogJzAgMSBhdXRvJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRwb3J0OiB7XG5cdFx0ZmxleDogJzEnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHNlbGVjdDoge1xuXHRcdG1hcmdpbjogJzdweCAwcHggMHB4IDZweCcsXG5cdFx0cGFkZGluZ1RvcDogJzNweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEVuZHBvaW50RGV0YWlsZWQgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8UHJvcHMsIFN0YXRlPiB7XG5cdGNvbnN0cnVjdG9yKHByb3BzOiBhbnksIGNvbnRleHQ6IGFueSkge1xuXHRcdHN1cGVyKHByb3BzLCBjb250ZXh0KTtcblx0XHR0aGlzLnN0YXRlID0ge1xuXHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0Y2hhbmdlZDogZmFsc2UsXG5cdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdGFkZFJvbGU6ICcnLFxuXHRcdFx0ZW5kcG9pbnQ6IG51bGwsXG5cdFx0XHRzaG93Q2hhcnRzOiB0cnVlLFxuXHRcdH07XG5cdH1cblxuXHRzZXQobmFtZTogc3RyaW5nLCB2YWw6IGFueSk6IHZvaWQge1xuXHRcdGxldCBlbmRwb2ludDogYW55O1xuXG5cdFx0aWYgKHRoaXMuc3RhdGUuY2hhbmdlZCkge1xuXHRcdFx0ZW5kcG9pbnQgPSB7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUuZW5kcG9pbnQsXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRlbmRwb2ludCA9IHtcblx0XHRcdFx0Li4udGhpcy5wcm9wcy5lbmRwb2ludCxcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0ZW5kcG9pbnRbbmFtZV0gPSB2YWw7XG5cblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRjaGFuZ2VkOiB0cnVlLFxuXHRcdFx0ZW5kcG9pbnQ6IGVuZHBvaW50LFxuXHRcdH0pO1xuXHR9XG5cblx0b25SZXNldENsaWVudEtleSA9ICgpOiB2b2lkID0+IHtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRkaXNhYmxlZDogdHJ1ZSxcblx0XHR9KTtcblxuXHRcdGxldCBlbmRwb2ludCA9IHtcblx0XHRcdC4uLnRoaXMucHJvcHMuZW5kcG9pbnQsXG5cdFx0XHRyZXNldF9jbGllbnRfa2V5OiB0cnVlLFxuXHRcdH07XG5cblx0XHRFbmRwb2ludEFjdGlvbnMuY29tbWl0KGVuZHBvaW50KS50aGVuKCgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRtZXNzYWdlOiAnQ2xpZW50IGtleSByZXNldCcsXG5cdFx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHR9KTtcblxuXHRcdFx0c2V0VGltZW91dCgoKTogdm9pZCA9PiB7XG5cdFx0XHRcdGlmICghdGhpcy5zdGF0ZS5jaGFuZ2VkKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0ZW5kcG9pbnQ6IG51bGwsXG5cdFx0XHRcdFx0XHRjaGFuZ2VkOiBmYWxzZSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgMTAwMCk7XG5cblx0XHRcdHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRpZiAoIXRoaXMuc3RhdGUuY2hhbmdlZCkge1xuXHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdG1lc3NhZ2U6ICcnLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LCAzMDAwKTtcblx0XHR9KS5jYXRjaCgoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0b25TYXZlID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGRpc2FibGVkOiB0cnVlLFxuXHRcdH0pO1xuXHRcdEVuZHBvaW50QWN0aW9ucy5jb21taXQodGhpcy5zdGF0ZS5lbmRwb2ludCkudGhlbigoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJ1lvdXIgY2hhbmdlcyBoYXZlIGJlZW4gc2F2ZWQnLFxuXHRcdFx0XHRjaGFuZ2VkOiBmYWxzZSxcblx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0fSk7XG5cblx0XHRcdHNldFRpbWVvdXQoKCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRpZiAoIXRoaXMuc3RhdGUuY2hhbmdlZCkge1xuXHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdGVuZHBvaW50OiBudWxsLFxuXHRcdFx0XHRcdFx0Y2hhbmdlZDogZmFsc2UsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sIDEwMDApO1xuXG5cdFx0XHRzZXRUaW1lb3V0KCgpOiB2b2lkID0+IHtcblx0XHRcdFx0aWYgKCF0aGlzLnN0YXRlLmNoYW5nZWQpIHtcblx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSwgMzAwMCk7XG5cdFx0fSkuY2F0Y2goKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdG1lc3NhZ2U6ICcnLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdG9uRGVsZXRlID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGRpc2FibGVkOiB0cnVlLFxuXHRcdH0pO1xuXHRcdEVuZHBvaW50QWN0aW9ucy5yZW1vdmUodGhpcy5wcm9wcy5lbmRwb2ludC5pZCkudGhlbigoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0fSk7XG5cdFx0fSkuY2F0Y2goKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0b25BZGRSb2xlID0gKCk6IHZvaWQgPT4ge1xuXHRcdGxldCBlbmRwb2ludDogRW5kcG9pbnRUeXBlcy5FbmRwb2ludDtcblxuXHRcdGlmICh0aGlzLnN0YXRlLmNoYW5nZWQpIHtcblx0XHRcdGVuZHBvaW50ID0ge1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLmVuZHBvaW50LFxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZW5kcG9pbnQgPSB7XG5cdFx0XHRcdC4uLnRoaXMucHJvcHMuZW5kcG9pbnQsXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGxldCByb2xlcyA9IFtcblx0XHRcdC4uLmVuZHBvaW50LnJvbGVzLFxuXHRcdF07XG5cblx0XHRpZiAoIXRoaXMuc3RhdGUuYWRkUm9sZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmIChyb2xlcy5pbmRleE9mKHRoaXMuc3RhdGUuYWRkUm9sZSkgPT09IC0xKSB7XG5cdFx0XHRyb2xlcy5wdXNoKHRoaXMuc3RhdGUuYWRkUm9sZSk7XG5cdFx0fVxuXG5cdFx0cm9sZXMuc29ydCgpO1xuXG5cdFx0ZW5kcG9pbnQucm9sZXMgPSByb2xlcztcblxuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGNoYW5nZWQ6IHRydWUsXG5cdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdGFkZFJvbGU6ICcnLFxuXHRcdFx0ZW5kcG9pbnQ6IGVuZHBvaW50LFxuXHRcdH0pO1xuXHR9XG5cblx0b25SZW1vdmVSb2xlKHJvbGU6IHN0cmluZyk6IHZvaWQge1xuXHRcdGxldCBlbmRwb2ludDogRW5kcG9pbnRUeXBlcy5FbmRwb2ludDtcblxuXHRcdGlmICh0aGlzLnN0YXRlLmNoYW5nZWQpIHtcblx0XHRcdGVuZHBvaW50ID0ge1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLmVuZHBvaW50LFxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZW5kcG9pbnQgPSB7XG5cdFx0XHRcdC4uLnRoaXMucHJvcHMuZW5kcG9pbnQsXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGxldCByb2xlcyA9IFtcblx0XHRcdC4uLmVuZHBvaW50LnJvbGVzLFxuXHRcdF07XG5cblx0XHRsZXQgaSA9IHJvbGVzLmluZGV4T2Yocm9sZSk7XG5cdFx0aWYgKGkgPT09IC0xKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0cm9sZXMuc3BsaWNlKGksIDEpO1xuXG5cdFx0ZW5kcG9pbnQucm9sZXMgPSByb2xlcztcblxuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGNoYW5nZWQ6IHRydWUsXG5cdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdGFkZFJvbGU6ICcnLFxuXHRcdFx0ZW5kcG9pbnQ6IGVuZHBvaW50LFxuXHRcdH0pO1xuXHR9XG5cblx0cmVuZGVyKCk6IEpTWC5FbGVtZW50IHtcblx0XHRsZXQgZW5kcG9pbnQ6IEVuZHBvaW50VHlwZXMuRW5kcG9pbnQgPSB0aGlzLnN0YXRlLmVuZHBvaW50IHx8XG5cdFx0XHR0aGlzLnByb3BzLmVuZHBvaW50O1xuXG5cdFx0bGV0IGZpZWxkczogUGFnZUluZm9zLkZpZWxkW10gPSBbXG5cdFx0XHR7XG5cdFx0XHRcdGxhYmVsOiAnSUQnLFxuXHRcdFx0XHR2YWx1ZTogdGhpcy5wcm9wcy5lbmRwb2ludC5pZCB8fCAnTm9uZScsXG5cdFx0XHR9LFxuXHRcdF07XG5cblx0XHRsZXQgZW5kcG9pbnREYXRhID0gZW5kcG9pbnQuZGF0YSB8fCB7fTtcblx0XHRpZiAoZW5kcG9pbnREYXRhKSB7XG5cdFx0XHRpZiAoZW5kcG9pbnREYXRhLnZlcnNpb24pIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnRW5kcG9pbnQgVmVyc2lvbicsXG5cdFx0XHRcdFx0dmFsdWU6IGVuZHBvaW50RGF0YS52ZXJzaW9uLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGlmIChlbmRwb2ludERhdGEuaG9zdG5hbWUpIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnSG9zdG5hbWUnLFxuXHRcdFx0XHRcdHZhbHVlOiBlbmRwb2ludERhdGEuaG9zdG5hbWUsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVuZHBvaW50RGF0YS51cHRpbWUpIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnVXB0aW1lJyxcblx0XHRcdFx0XHR2YWx1ZTogTWlzY1V0aWxzLmZvcm1hdFVwdGltZShlbmRwb2ludERhdGEudXB0aW1lKSxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZW5kcG9pbnREYXRhLnBsYXRmb3JtKSB7XG5cdFx0XHRcdGZpZWxkcy5wdXNoKHtcblx0XHRcdFx0XHRsYWJlbDogJ1BsYXRmb3JtJyxcblx0XHRcdFx0XHR2YWx1ZTogZW5kcG9pbnREYXRhLnBsYXRmb3JtLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGlmIChlbmRwb2ludERhdGEucGFja2FnZV91cGRhdGVzKSB7XG5cdFx0XHRcdGZpZWxkcy5wdXNoKHtcblx0XHRcdFx0XHRsYWJlbDogJ1N5c3RlbSBQYWNrYWdlIFVwZGF0ZXMnLFxuXHRcdFx0XHRcdHZhbHVlOiBlbmRwb2ludERhdGEucGFja2FnZV91cGRhdGVzLFxuXHRcdFx0XHRcdHZhbHVlQ2xhc3M6ICdicDMtdGV4dC1pbnRlbnQtZGFuZ2VyJyxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAoZW5kcG9pbnREYXRhLnZpcnR1YWxpemF0aW9uKSB7XG5cdFx0XHRcdGZpZWxkcy5wdXNoKHtcblx0XHRcdFx0XHRsYWJlbDogJ1ZpcnR1YWxpemF0aW9uJyxcblx0XHRcdFx0XHR2YWx1ZTogZW5kcG9pbnREYXRhLnZpcnR1YWxpemF0aW9uLFxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGlmIChlbmRwb2ludERhdGEuY3B1X2NvcmVzKSB7XG5cdFx0XHRcdGZpZWxkcy5wdXNoKHtcblx0XHRcdFx0XHRsYWJlbDogJ0NQVSBDb3JlcycsXG5cdFx0XHRcdFx0dmFsdWU6IGVuZHBvaW50RGF0YS5jcHVfY29yZXMsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVuZHBvaW50RGF0YS5tZW1fdG90YWwpIHtcblx0XHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRcdGxhYmVsOiAnTWVtb3J5Jyxcblx0XHRcdFx0XHR2YWx1ZTogZW5kcG9pbnREYXRhLm1lbV90b3RhbCArICdNQicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVuZHBvaW50RGF0YS5zd2FwX3RvdGFsKSB7XG5cdFx0XHRcdGZpZWxkcy5wdXNoKHtcblx0XHRcdFx0XHRsYWJlbDogJ1N3YXAnLFxuXHRcdFx0XHRcdHZhbHVlOiBlbmRwb2ludERhdGEuc3dhcF90b3RhbCArICdNQicsXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0aWYgKGVuZHBvaW50RGF0YS5odWdlX3RvdGFsKSB7XG5cdFx0XHRcdGZpZWxkcy5wdXNoKHtcblx0XHRcdFx0XHRsYWJlbDogJ0h1Z2VQYWdlcycsXG5cdFx0XHRcdFx0dmFsdWU6IGVuZHBvaW50RGF0YS5odWdlX3RvdGFsICsgJ01CJyxcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGVuZHBvaW50LmRhdGEubWRfc3RhdCAmJiBlbmRwb2ludC5kYXRhLm1kX3N0YXQubGVuZ3RoKSB7XG5cdFx0XHRsZXQgZmFpbGVkID0gMDtcblx0XHRcdGxldCB0b3RhbCA9IDA7XG5cblx0XHRcdGZvciAobGV0IG1kIG9mIGVuZHBvaW50LmRhdGEubWRfc3RhdCkge1xuXHRcdFx0XHRmYWlsZWQgKz0gbWQuZmFpbGVkO1xuXHRcdFx0XHR0b3RhbCArPSBtZC50b3RhbDtcblx0XHRcdH1cblxuXHRcdFx0ZmllbGRzLnB1c2goe1xuXHRcdFx0XHRsYWJlbDogJ1JhaWQgRGV2aWNlcycsXG5cdFx0XHRcdHZhbHVlOiAnRmFpbGVkOiAnICsgZmFpbGVkICsgJyBUb3RhbDogJyArIHRvdGFsLFxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0bGV0IHJvbGVzOiBKU1guRWxlbWVudFtdID0gW107XG5cdFx0Zm9yIChsZXQgcm9sZSBvZiBlbmRwb2ludC5yb2xlcykge1xuXHRcdFx0cm9sZXMucHVzaChcblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImJwMy10YWcgYnAzLXRhZy1yZW1vdmFibGUgYnAzLWludGVudC1wcmltYXJ5XCJcblx0XHRcdFx0XHRzdHlsZT17Y3NzLml0ZW19XG5cdFx0XHRcdFx0a2V5PXtyb2xlfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3JvbGV9XG5cdFx0XHRcdFx0PGJ1dHRvblxuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnAzLXRhZy1yZW1vdmVcIlxuXHRcdFx0XHRcdFx0b25Nb3VzZVVwPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMub25SZW1vdmVSb2xlKHJvbGUpO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L2Rpdj4sXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGxldCBhbGVydHM6IHN0cmluZ1tdID0gW107XG5cdFx0Zm9yIChsZXQgYWxlcnQgb2YgT2JqZWN0LnZhbHVlcyhlbmRwb2ludC5pbmZvLmFsZXJ0cykpIHtcblx0XHRcdGFsZXJ0cy5wdXNoKGFsZXJ0KTtcblx0XHR9XG5cblx0XHRsZXQgY2hlY2tzOiBzdHJpbmdbXSA9IFtdO1xuXHRcdGZvciAobGV0IGNoZWNrIG9mIE9iamVjdC52YWx1ZXMoZW5kcG9pbnQuaW5mby5jaGVja3MpKSB7XG5cdFx0XHRjaGVja3MucHVzaChjaGVjayk7XG5cdFx0fVxuXG5cdFx0bGV0IHNlY3JldEtleSA9ICcnO1xuXHRcdGxldCBzZWNyZXRVcmkgPSAnJztcblx0XHRpZiAoIWVuZHBvaW50Lmhhc19jbGllbnRfa2V5KSB7XG5cdFx0XHRpZiAoZW5kcG9pbnQuY2xpZW50X2tleSkge1xuXHRcdFx0XHRzZWNyZXRLZXkgPSBlbmRwb2ludC5pZCArICdfJyArIGVuZHBvaW50LmNsaWVudF9rZXkuc2VjcmV0O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0c2VjcmV0S2V5ID0gJ3Vua25vd24nO1xuXHRcdFx0fVxuXHRcdFx0c2VjcmV0VXJpID0gJ3ByaXR1bmw6Ly8nICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnLycgKyBzZWNyZXRLZXk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIDx0ZFxuXHRcdFx0Y2xhc3NOYW1lPVwiYnAzLWNlbGxcIlxuXHRcdFx0Y29sU3Bhbj17M31cblx0XHRcdHN0eWxlPXtjc3MuY2FyZH1cblx0XHQ+XG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImxheW91dCBob3Jpem9udGFsIHdyYXBcIj5cblx0XHRcdFx0PGRpdiBzdHlsZT17Y3NzLmdyb3VwfT5cblx0XHRcdFx0XHQ8ZGl2XG5cdFx0XHRcdFx0XHRjbGFzc05hbWU9XCJsYXlvdXQgaG9yaXpvbnRhbCB0YWItY2xvc2VcIlxuXHRcdFx0XHRcdFx0c3R5bGU9e2Nzcy5idXR0b25zfVxuXHRcdFx0XHRcdFx0b25DbGljaz17KGV2dCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRsZXQgdGFyZ2V0ID0gZXZ0LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcblxuXHRcdFx0XHRcdFx0XHRpZiAodGFyZ2V0LmNsYXNzTmFtZS5pbmRleE9mKCd0YWItY2xvc2UnKSAhPT0gLTEpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnByb3BzLm9uQ2xvc2UoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQ+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJicDMtY29udHJvbCBicDMtY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXtjc3Muc2VsZWN0fVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17dGhpcy5wcm9wcy5zZWxlY3RlZH1cblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsoZXZ0KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHR9fVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KGV2dCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnByb3BzLm9uU2VsZWN0KGV2dC5zaGlmdEtleSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiYnAzLWNvbnRyb2wtaW5kaWNhdG9yXCIvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG5cdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImZsZXggdGFiLWNsb3NlXCIvPlxuXHRcdFx0XHRcdFx0PENvbmZpcm1CdXR0b25cblx0XHRcdFx0XHRcdFx0c2FmZT17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnAzLW1pbmltYWwgYnAzLWludGVudC1kYW5nZXIgYnAzLWljb24tdHJhc2hcIlxuXHRcdFx0XHRcdFx0XHRwcm9ncmVzc0NsYXNzTmFtZT1cImJwMy1pbnRlbnQtZGFuZ2VyXCJcblx0XHRcdFx0XHRcdFx0ZGlhbG9nQ2xhc3NOYW1lPVwiYnAzLWludGVudC1kYW5nZXIgYnAzLWljb24tZGVsZXRlXCJcblx0XHRcdFx0XHRcdFx0ZGlhbG9nTGFiZWw9XCJEZWxldGUgRW5kcG9pbnRcIlxuXHRcdFx0XHRcdFx0XHRjb25maXJtTXNnPVwiUGVybWFuZW50bHkgZGVsZXRlIHRoaXMgZW5kcG9pbnRcIlxuXHRcdFx0XHRcdFx0XHRjb25maXJtSW5wdXQ9e3RydWV9XG5cdFx0XHRcdFx0XHRcdGl0ZW1zPXtbZW5kcG9pbnQubmFtZV19XG5cdFx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmRpc2FibGVkfVxuXHRcdFx0XHRcdFx0XHRvbkNvbmZpcm09e3RoaXMub25EZWxldGV9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDxQYWdlSW5wdXRcblx0XHRcdFx0XHRcdGxhYmVsPVwiTmFtZVwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiTmFtZSBvZiBlbmRwb2ludFwiXG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIkVudGVyIG5hbWVcIlxuXHRcdFx0XHRcdFx0dmFsdWU9e2VuZHBvaW50Lm5hbWV9XG5cdFx0XHRcdFx0XHRvbkNoYW5nZT17KHZhbCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNldCgnbmFtZScsIHZhbCk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dFxuXHRcdFx0XHRcdFx0aGlkZGVuPXtlbmRwb2ludC5oYXNfY2xpZW50X2tleX1cblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmRpc2FibGVkfVxuXHRcdFx0XHRcdFx0cmVhZE9ubHk9e3RydWV9XG5cdFx0XHRcdFx0XHRhdXRvU2VsZWN0PXt0cnVlfVxuXHRcdFx0XHRcdFx0bGFiZWw9XCJSZWdpc3RyYXRpb24gS2V5XCJcblx0XHRcdFx0XHRcdGhlbHA9XCJLZXkgZm9yIGVuZHBvaW50IHJlZ2lzdHJhdGlvblwiXG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIlwiXG5cdFx0XHRcdFx0XHR2YWx1ZT17c2VjcmV0S2V5fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PGxhYmVsIGNsYXNzTmFtZT1cImJwMy1sYWJlbFwiPlxuXHRcdFx0XHRcdFx0Um9sZXNcblx0XHRcdFx0XHRcdDxIZWxwXG5cdFx0XHRcdFx0XHRcdHRpdGxlPVwiUm9sZXNcIlxuXHRcdFx0XHRcdFx0XHRjb250ZW50PVwiVGhlIHVzZXIgcm9sZXMgdGhhdCB3aWxsIGJlIGFsbG93ZWQgYWNjZXNzIHRvIHRoaXMgZW5kcG9pbnQuIEF0IGxlYXN0IG9uZSByb2xlIG11c3QgbWF0Y2ggZm9yIHRoZSB1c2VyIHRvIGFjY2VzcyB0aGUgZW5kcG9pbnQuXCJcblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0XHR7cm9sZXN9XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHRcdDxQYWdlSW5wdXRCdXR0b25cblx0XHRcdFx0XHRcdGJ1dHRvbkNsYXNzPVwiYnAzLWludGVudC1zdWNjZXNzIGJwMy1pY29uLWFkZFwiXG5cdFx0XHRcdFx0XHRsYWJlbD1cIkFkZFwiXG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIkFkZCByb2xlXCJcblx0XHRcdFx0XHRcdHZhbHVlPXt0aGlzLnN0YXRlLmFkZFJvbGV9XG5cdFx0XHRcdFx0XHRvbkNoYW5nZT17KHZhbCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0XHRcdGFkZFJvbGU6IHZhbCxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0b25TdWJtaXQ9e3RoaXMub25BZGRSb2xlfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VTd2l0Y2hcblx0XHRcdFx0XHRcdGxhYmVsPVwiU2hvdyBjaGFydHMgYW5kIGRtZXNnXCJcblx0XHRcdFx0XHRcdGhlbHA9XCJTaG93IGVuZHBvaW50IGNoYXJ0cyBhbmQgZG1lc2cuXCJcblx0XHRcdFx0XHRcdGNoZWNrZWQ9e3RoaXMuc3RhdGUuc2hvd0NoYXJ0c31cblx0XHRcdFx0XHRcdGhpZGRlbj17IWVuZHBvaW50RGF0YS5ob3N0bmFtZX1cblx0XHRcdFx0XHRcdG9uVG9nZ2xlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRcdFx0c2hvd0NoYXJ0czogIXRoaXMuc3RhdGUuc2hvd0NoYXJ0cyxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VJbmZvXG5cdFx0XHRcdFx0XHRmaWVsZHM9e1tcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiAnQWxlcnRzJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYWxlcnRzLmxlbmd0aCA/IGFsZXJ0cyA6ICctJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdGxhYmVsOiAnSGVhbHRoIENoZWNrcycsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGNoZWNrcy5sZW5ndGggPyBjaGVja3MgOiAnLScsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8ZGl2IHN0eWxlPXtjc3MuZ3JvdXB9PlxuXHRcdFx0XHRcdDxQYWdlSW5mb1xuXHRcdFx0XHRcdFx0ZmllbGRzPXtmaWVsZHN9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZUlucHV0XG5cdFx0XHRcdFx0XHRoaWRkZW49e2VuZHBvaW50Lmhhc19jbGllbnRfa2V5fVxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWR9XG5cdFx0XHRcdFx0XHRyZWFkT25seT17dHJ1ZX1cblx0XHRcdFx0XHRcdGF1dG9TZWxlY3Q9e3RydWV9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIlJlZ2lzdHJhdGlvbiBVUklcIlxuXHRcdFx0XHRcdFx0aGVscD1cIlVSSSBmb3IgZW5kcG9pbnQgcmVnaXN0cmF0aW9uXCJcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiXCJcblx0XHRcdFx0XHRcdHZhbHVlPXtzZWNyZXRVcml9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxFbmRwb2ludENoYXJ0c1xuXHRcdFx0XHRlbmRwb2ludD17ZW5kcG9pbnQuaWR9XG5cdFx0XHRcdGRpc2FibGVkPXshZW5kcG9pbnREYXRhLmhvc3RuYW1lIHx8ICF0aGlzLnN0YXRlLnNob3dDaGFydHN9XG5cdFx0XHQvPlxuXHRcdFx0PEVuZHBvaW50S21zZ1xuXHRcdFx0XHRlbmRwb2ludD17ZW5kcG9pbnQuaWR9XG5cdFx0XHRcdGRpc2FibGVkPXshZW5kcG9pbnREYXRhLmhvc3RuYW1lIHx8ICF0aGlzLnN0YXRlLnNob3dDaGFydHN9XG5cdFx0XHQvPlxuXHRcdFx0PFBhZ2VTYXZlXG5cdFx0XHRcdHN0eWxlPXtjc3Muc2F2ZX1cblx0XHRcdFx0aGlkZGVuPXshdGhpcy5zdGF0ZS5lbmRwb2ludCAmJiAhdGhpcy5zdGF0ZS5tZXNzYWdlfVxuXHRcdFx0XHRtZXNzYWdlPXt0aGlzLnN0YXRlLm1lc3NhZ2V9XG5cdFx0XHRcdGNoYW5nZWQ9e3RoaXMuc3RhdGUuY2hhbmdlZH1cblx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWR9XG5cdFx0XHRcdGxpZ2h0PXt0cnVlfVxuXHRcdFx0XHRvbkNhbmNlbD17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0ZW5kcG9pbnQ6IG51bGwsXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH19XG5cdFx0XHRcdG9uU2F2ZT17dGhpcy5vblNhdmV9XG5cdFx0XHQ+XG5cdFx0XHRcdDxDb25maXJtQnV0dG9uXG5cdFx0XHRcdFx0bGFiZWw9XCJSZXNldCBLZXlcIlxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImJwMy1pbnRlbnQtZGFuZ2VyIGJwMy1pY29uLWtleVwiXG5cdFx0XHRcdFx0cHJvZ3Jlc3NDbGFzc05hbWU9XCJicDMtaW50ZW50LWRhbmdlclwiXG5cdFx0XHRcdFx0c3R5bGU9e2Nzcy5jb250cm9sQnV0dG9ufVxuXHRcdFx0XHRcdGhpZGRlbj17IWVuZHBvaW50Lmhhc19jbGllbnRfa2V5fVxuXHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmRpc2FibGVkfVxuXHRcdFx0XHRcdHNhZmU9e3RydWV9XG5cdFx0XHRcdFx0b25Db25maXJtPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLm9uUmVzZXRDbGllbnRLZXkoKTtcblx0XHRcdFx0XHR9fVxuXHRcdFx0XHQvPlxuXHRcdFx0PC9QYWdlU2F2ZT5cblx0XHQ8L3RkPjtcblx0fVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/components/EndpointDetailed.js\n"); /***/ }), @@ -1461,7 +1461,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ User)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/esm/react-router-dom.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n\n\n\nconst css = {\n card: {\n display: 'table-row',\n width: '100%',\n padding: 0,\n boxShadow: 'none',\n },\n select: {\n margin: '2px 0 0 0',\n paddingTop: '3px',\n minHeight: '18px',\n },\n name: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '8px',\n },\n type: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '9px',\n },\n lastActivity: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '9px',\n whiteSpace: 'nowrap',\n },\n roles: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '0 8px 8px 8px',\n },\n tag: {\n margin: '8px 5px 0 5px',\n height: '20px',\n },\n nameLink: {\n margin: '0 5px 0 0',\n },\n};\nclass User extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n render() {\n let user = this.props.user;\n let roles = [];\n for (let role of user.roles) {\n roles.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-tag bp3-intent-primary\", style: css.tag, key: role }, role));\n }\n let cardStyle = {\n ...css.card,\n };\n if (user.disabled) {\n cardStyle.opacity = 0.6;\n }\n let userType;\n switch (user.type) {\n case 'local':\n userType = 'Local';\n break;\n case 'google':\n userType = 'Google';\n break;\n case 'onelogin':\n userType = 'OneLogin';\n break;\n case 'okta':\n userType = 'Okta';\n break;\n case 'authzero':\n userType = 'Auth0';\n break;\n case 'azure':\n userType = 'Azure';\n break;\n case 'api':\n userType = 'API';\n break;\n default:\n userType = user.type;\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-card bp3-row\", style: cardStyle },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-cell\", style: css.name },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-control bp3-checkbox\", style: css.select },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"input\", { type: \"checkbox\", checked: this.props.selected, onChange: (evt) => {\n }, onClick: (evt) => {\n this.props.onSelect(evt.shiftKey);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: \"bp3-control-indicator\" })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_2__.Link, { to: '/user/' + user.id, style: css.nameLink }, user.username))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-cell\", style: css.type }, userType),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-cell\", style: css.lastActivity }, _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_1__.formatDateShortTime(user.last_active) || 'Inactive'),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"flex bp3-cell\", style: css.roles },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: \"bp3-tag bp3-intent-danger\", style: css.tag, hidden: !user.administrator }, \"admin\"),\n roles));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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REFBTyxTQUFTLEVBQUMsMEJBQTBCLEVBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxNQUFNO3dCQUM1RCw0REFDQyxJQUFJLEVBQUMsVUFBVSxFQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFDNUIsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFRLEVBQUU7NEJBQ3hCLENBQUMsRUFDRCxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQVEsRUFBRTtnQ0FDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRCQUNuQyxDQUFDLEdBQ0E7d0JBQ0YsMkRBQU0sU0FBUyxFQUFDLHVCQUF1QixHQUFFLENBQ2xDO29CQUNSLGlEQUFDLGtEQUFnQixJQUFDLEVBQUUsRUFBRSxRQUFRLEdBQUcsSUFBSSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLFFBQVEsSUFDM0QsSUFBSSxDQUFDLFFBQVEsQ0FDSSxDQUNkLENBQ0Q7WUFDTiwwREFBSyxTQUFTLEVBQUMsVUFBVSxFQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFBSSxJQUN2QyxRQUFRLENBQ0o7WUFDTiwwREFBSyxTQUFTLEVBQUMsVUFBVSxFQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsWUFBWSxJQUMvQyxpRUFBNkIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksVUFBVSxDQUN6RDtZQUNOLDBEQUFLLFNBQVMsRUFBQyxlQUFlLEVBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO2dCQUM5QywyREFDQyxTQUFTLEVBQUMsMkJBQTJCLEVBQ3JDLEtBQUssRUFBRSxHQUFHLENBQUMsR0FBRyxFQUNkLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLFlBR3JCO2dCQUNOLEtBQUssQ0FDRCxDQUNELENBQUM7SUFDUixDQUFDO0NBQ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcml0dW5sLXplcm8vLi9hcHAvY29tcG9uZW50cy9Vc2VyLnRzeD85NDVmIl0sInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9SZWZlcmVuY2VzLmQudHNcIi8+XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBSZWFjdFJvdXRlciBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCAqIGFzIE1pc2NVdGlscyBmcm9tICcuLi91dGlscy9NaXNjVXRpbHMnO1xuaW1wb3J0ICogYXMgVXNlclR5cGVzIGZyb20gJy4uL3R5cGVzL1VzZXJUeXBlcyc7XG5cbmludGVyZmFjZSBQcm9wcyB7XG5cdHVzZXI6IFVzZXJUeXBlcy5Vc2VyUm87XG5cdHNlbGVjdGVkOiBib29sZWFuO1xuXHRvblNlbGVjdDogKHNoaWZ0OiBib29sZWFuKSA9PiB2b2lkO1xufVxuXG5jb25zdCBjc3MgPSB7XG5cdGNhcmQ6IHtcblx0XHRkaXNwbGF5OiAndGFibGUtcm93Jyxcblx0XHR3aWR0aDogJzEwMCUnLFxuXHRcdHBhZGRpbmc6IDAsXG5cdFx0Ym94U2hhZG93OiAnbm9uZScsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0c2VsZWN0OiB7XG5cdFx0bWFyZ2luOiAnMnB4IDAgMCAwJyxcblx0XHRwYWRkaW5nVG9wOiAnM3B4Jyxcblx0XHRtaW5IZWlnaHQ6ICcxOHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRuYW1lOiB7XG5cdFx0dmVydGljYWxBbGlnbjogJ3RvcCcsXG5cdFx0ZGlzcGxheTogJ3RhYmxlLWNlbGwnLFxuXHRcdHBhZGRpbmc6ICc4cHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHR5cGU6IHtcblx0XHR2ZXJ0aWNhbEFsaWduOiAndG9wJyxcblx0XHRkaXNwbGF5OiAndGFibGUtY2VsbCcsXG5cdFx0cGFkZGluZzogJzlweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0bGFzdEFjdGl2aXR5OiB7XG5cdFx0dmVydGljYWxBbGlnbjogJ3RvcCcsXG5cdFx0ZGlzcGxheTogJ3RhYmxlLWNlbGwnLFxuXHRcdHBhZGRpbmc6ICc5cHgnLFxuXHRcdHdoaXRlU3BhY2U6ICdub3dyYXAnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHJvbGVzOiB7XG5cdFx0dmVydGljYWxBbGlnbjogJ3RvcCcsXG5cdFx0ZGlzcGxheTogJ3RhYmxlLWNlbGwnLFxuXHRcdHBhZGRpbmc6ICcwIDhweCA4cHggOHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHR0YWc6IHtcblx0XHRtYXJnaW46ICc4cHggNXB4IDAgNXB4Jyxcblx0XHRoZWlnaHQ6ICcyMHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRuYW1lTGluazoge1xuXHRcdG1hcmdpbjogJzAgNXB4IDAgMCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVzZXIgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8UHJvcHMsIHt9PiB7XG5cdHJlbmRlcigpOiBKU1guRWxlbWVudCB7XG5cdFx0bGV0IHVzZXIgPSB0aGlzLnByb3BzLnVzZXI7XG5cdFx0bGV0IHJvbGVzOiBKU1guRWxlbWVudFtdID0gW107XG5cblx0XHRmb3IgKGxldCByb2xlIG9mIHVzZXIucm9sZXMpIHtcblx0XHRcdHJvbGVzLnB1c2goXG5cdFx0XHRcdDxkaXZcblx0XHRcdFx0XHRjbGFzc05hbWU9XCJicDMtdGFnIGJwMy1pbnRlbnQtcHJpbWFyeVwiXG5cdFx0XHRcdFx0c3R5bGU9e2Nzcy50YWd9XG5cdFx0XHRcdFx0a2V5PXtyb2xlfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3JvbGV9XG5cdFx0XHRcdDwvZGl2Pixcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0bGV0IGNhcmRTdHlsZSA9IHtcblx0XHRcdC4uLmNzcy5jYXJkLFxuXHRcdH07XG5cdFx0aWYgKHVzZXIuZGlzYWJsZWQpIHtcblx0XHRcdGNhcmRTdHlsZS5vcGFjaXR5ID0gMC42O1xuXHRcdH1cblxuXHRcdGxldCB1c2VyVHlwZTogc3RyaW5nO1xuXHRcdHN3aXRjaCAodXNlci50eXBlKSB7XG5cdFx0XHRjYXNlICdsb2NhbCc6XG5cdFx0XHRcdHVzZXJUeXBlID0gJ0xvY2FsJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdnb29nbGUnOlxuXHRcdFx0XHR1c2VyVHlwZSA9ICdHb29nbGUnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ29uZWxvZ2luJzpcblx0XHRcdFx0dXNlclR5cGUgPSAnT25lTG9naW4nO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ29rdGEnOlxuXHRcdFx0XHR1c2VyVHlwZSA9ICdPa3RhJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdhdXRoemVybyc6XG5cdFx0XHRcdHVzZXJUeXBlID0gJ0F1dGgwJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdhenVyZSc6XG5cdFx0XHRcdHVzZXJUeXBlID0gJ0F6dXJlJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlICdhcGknOlxuXHRcdFx0XHR1c2VyVHlwZSA9ICdBUEknO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdHVzZXJUeXBlID0gdXNlci50eXBlO1xuXHRcdH1cblxuXHRcdHJldHVybiA8ZGl2XG5cdFx0XHRjbGFzc05hbWU9XCJicDMtY2FyZCBicDMtcm93XCJcblx0XHRcdHN0eWxlPXtjYXJkU3R5bGV9XG5cdFx0PlxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJicDMtY2VsbFwiIHN0eWxlPXtjc3MubmFtZX0+XG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwibGF5b3V0IGhvcml6b250YWxcIj5cblx0XHRcdFx0XHQ8bGFiZWwgY2xhc3NOYW1lPVwiYnAzLWNvbnRyb2wgYnAzLWNoZWNrYm94XCIgc3R5bGU9e2Nzcy5zZWxlY3R9PlxuXHRcdFx0XHRcdFx0PGlucHV0XG5cdFx0XHRcdFx0XHRcdHR5cGU9XCJjaGVja2JveFwiXG5cdFx0XHRcdFx0XHRcdGNoZWNrZWQ9e3RoaXMucHJvcHMuc2VsZWN0ZWR9XG5cdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsoZXZ0KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRcdG9uQ2xpY2s9eyhldnQpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnByb3BzLm9uU2VsZWN0KGV2dC5zaGlmdEtleSk7XG5cdFx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3NOYW1lPVwiYnAzLWNvbnRyb2wtaW5kaWNhdG9yXCIvPlxuXHRcdFx0XHRcdDwvbGFiZWw+XG5cdFx0XHRcdFx0PFJlYWN0Um91dGVyLkxpbmsgdG89eycvdXNlci8nICsgdXNlci5pZH0gc3R5bGU9e2Nzcy5uYW1lTGlua30+XG5cdFx0XHRcdFx0XHR7dXNlci51c2VybmFtZX1cblx0XHRcdFx0XHQ8L1JlYWN0Um91dGVyLkxpbms+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImJwMy1jZWxsXCIgc3R5bGU9e2Nzcy50eXBlfT5cblx0XHRcdFx0e3VzZXJUeXBlfVxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImJwMy1jZWxsXCIgc3R5bGU9e2Nzcy5sYXN0QWN0aXZpdHl9PlxuXHRcdFx0XHR7TWlzY1V0aWxzLmZvcm1hdERhdGVTaG9ydFRpbWUodXNlci5sYXN0X2FjdGl2ZSkgfHwgJ0luYWN0aXZlJ31cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJmbGV4IGJwMy1jZWxsXCIgc3R5bGU9e2Nzcy5yb2xlc30+XG5cdFx0XHRcdDxzcGFuXG5cdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnAzLXRhZyBicDMtaW50ZW50LWRhbmdlclwiXG5cdFx0XHRcdFx0c3R5bGU9e2Nzcy50YWd9XG5cdFx0XHRcdFx0aGlkZGVuPXshdXNlci5hZG1pbmlzdHJhdG9yfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0YWRtaW5cblx0XHRcdFx0PC9zcGFuPlxuXHRcdFx0XHR7cm9sZXN9XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj47XG5cdH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/components/User.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ User)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/esm/react-router-dom.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n\n\n\nconst css = {\n card: {\n display: 'table-row',\n width: '100%',\n padding: 0,\n boxShadow: 'none',\n },\n select: {\n margin: '2px 0 0 0',\n paddingTop: '3px',\n minHeight: '18px',\n },\n name: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '8px',\n },\n type: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '9px',\n },\n lastActivity: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '9px',\n whiteSpace: 'nowrap',\n },\n roles: {\n verticalAlign: 'top',\n display: 'table-cell',\n padding: '0 8px 8px 8px',\n },\n tag: {\n margin: '8px 5px 0 5px',\n height: '20px',\n },\n nameLink: {\n margin: '0 5px 0 0',\n },\n};\nclass User extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n render() {\n let user = this.props.user;\n let roles = [];\n for (let role of user.roles) {\n roles.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-tag bp3-intent-primary\", style: css.tag, key: role }, role));\n }\n let cardStyle = {\n ...css.card,\n };\n if (user.disabled) {\n cardStyle.opacity = 0.6;\n }\n let userType;\n switch (user.type) {\n case 'local':\n userType = 'Local';\n break;\n case 'google':\n userType = 'Google';\n break;\n case 'onelogin':\n userType = 'OneLogin';\n break;\n case 'okta':\n userType = 'Okta';\n break;\n case 'authzero':\n userType = 'Auth0';\n break;\n case 'azure':\n userType = 'Azure';\n break;\n case 'jumpcloud':\n userType = 'JumpCloud';\n break;\n case 'api':\n userType = 'API';\n break;\n default:\n userType = user.type;\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-card bp3-row\", style: cardStyle },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-cell\", style: css.name },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-control bp3-checkbox\", style: css.select },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"input\", { type: \"checkbox\", checked: this.props.selected, onChange: (evt) => {\n }, onClick: (evt) => {\n this.props.onSelect(evt.shiftKey);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: \"bp3-control-indicator\" })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_2__.Link, { to: '/user/' + user.id, style: css.nameLink }, user.username))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-cell\", style: css.type }, userType),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-cell\", style: css.lastActivity }, _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_1__.formatDateShortTime(user.last_active) || 'Inactive'),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"flex bp3-cell\", style: css.roles },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"span\", { className: \"bp3-tag bp3-intent-danger\", style: css.tag, hidden: !user.administrator }, \"admin\"),\n roles));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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azovL3ByaXR1bmwtemVyby8uL2FwcC9jb21wb25lbnRzL1VzZXIudHN4Pzk0NWYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1JlZmVyZW5jZXMuZC50c1wiLz5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0Um91dGVyIGZyb20gJ3JlYWN0LXJvdXRlci1kb20nO1xuaW1wb3J0ICogYXMgTWlzY1V0aWxzIGZyb20gJy4uL3V0aWxzL01pc2NVdGlscyc7XG5pbXBvcnQgKiBhcyBVc2VyVHlwZXMgZnJvbSAnLi4vdHlwZXMvVXNlclR5cGVzJztcblxuaW50ZXJmYWNlIFByb3BzIHtcblx0dXNlcjogVXNlclR5cGVzLlVzZXJSbztcblx0c2VsZWN0ZWQ6IGJvb2xlYW47XG5cdG9uU2VsZWN0OiAoc2hpZnQ6IGJvb2xlYW4pID0+IHZvaWQ7XG59XG5cbmNvbnN0IGNzcyA9IHtcblx0Y2FyZDoge1xuXHRcdGRpc3BsYXk6ICd0YWJsZS1yb3cnLFxuXHRcdHdpZHRoOiAnMTAwJScsXG5cdFx0cGFkZGluZzogMCxcblx0XHRib3hTaGFkb3c6ICdub25lJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRzZWxlY3Q6IHtcblx0XHRtYXJnaW46ICcycHggMCAwIDAnLFxuXHRcdHBhZGRpbmdUb3A6ICczcHgnLFxuXHRcdG1pbkhlaWdodDogJzE4cHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdG5hbWU6IHtcblx0XHR2ZXJ0aWNhbEFsaWduOiAndG9wJyxcblx0XHRkaXNwbGF5OiAndGFibGUtY2VsbCcsXG5cdFx0cGFkZGluZzogJzhweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0dHlwZToge1xuXHRcdHZlcnRpY2FsQWxpZ246ICd0b3AnLFxuXHRcdGRpc3BsYXk6ICd0YWJsZS1jZWxsJyxcblx0XHRwYWRkaW5nOiAnOXB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRsYXN0QWN0aXZpdHk6IHtcblx0XHR2ZXJ0aWNhbEFsaWduOiAndG9wJyxcblx0XHRkaXNwbGF5OiAndGFibGUtY2VsbCcsXG5cdFx0cGFkZGluZzogJzlweCcsXG5cdFx0d2hpdGVTcGFjZTogJ25vd3JhcCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0cm9sZXM6IHtcblx0XHR2ZXJ0aWNhbEFsaWduOiAndG9wJyxcblx0XHRkaXNwbGF5OiAndGFibGUtY2VsbCcsXG5cdFx0cGFkZGluZzogJzAgOHB4IDhweCA4cHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHRhZzoge1xuXHRcdG1hcmdpbjogJzhweCA1cHggMCA1cHgnLFxuXHRcdGhlaWdodDogJzIwcHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdG5hbWVMaW5rOiB7XG5cdFx0bWFyZ2luOiAnMCA1cHggMCAwJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXNlciBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxQcm9wcywge30+IHtcblx0cmVuZGVyKCk6IEpTWC5FbGVtZW50IHtcblx0XHRsZXQgdXNlciA9IHRoaXMucHJvcHMudXNlcjtcblx0XHRsZXQgcm9sZXM6IEpTWC5FbGVtZW50W10gPSBbXTtcblxuXHRcdGZvciAobGV0IHJvbGUgb2YgdXNlci5yb2xlcykge1xuXHRcdFx0cm9sZXMucHVzaChcblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImJwMy10YWcgYnAzLWludGVudC1wcmltYXJ5XCJcblx0XHRcdFx0XHRzdHlsZT17Y3NzLnRhZ31cblx0XHRcdFx0XHRrZXk9e3JvbGV9XG5cdFx0XHRcdD5cblx0XHRcdFx0XHR7cm9sZX1cblx0XHRcdFx0PC9kaXY+LFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRsZXQgY2FyZFN0eWxlID0ge1xuXHRcdFx0Li4uY3NzLmNhcmQsXG5cdFx0fTtcblx0XHRpZiAodXNlci5kaXNhYmxlZCkge1xuXHRcdFx0Y2FyZFN0eWxlLm9wYWNpdHkgPSAwLjY7XG5cdFx0fVxuXG5cdFx0bGV0IHVzZXJUeXBlOiBzdHJpbmc7XG5cdFx0c3dpdGNoICh1c2VyLnR5cGUpIHtcblx0XHRcdGNhc2UgJ2xvY2FsJzpcblx0XHRcdFx0dXNlclR5cGUgPSAnTG9jYWwnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2dvb2dsZSc6XG5cdFx0XHRcdHVzZXJUeXBlID0gJ0dvb2dsZSc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnb25lbG9naW4nOlxuXHRcdFx0XHR1c2VyVHlwZSA9ICdPbmVMb2dpbic7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnb2t0YSc6XG5cdFx0XHRcdHVzZXJUeXBlID0gJ09rdGEnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2F1dGh6ZXJvJzpcblx0XHRcdFx0dXNlclR5cGUgPSAnQXV0aDAnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2F6dXJlJzpcblx0XHRcdFx0dXNlclR5cGUgPSAnQXp1cmUnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2p1bXBjbG91ZCc6XG5cdFx0XHRcdHVzZXJUeXBlID0gJ0p1bXBDbG91ZCc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnYXBpJzpcblx0XHRcdFx0dXNlclR5cGUgPSAnQVBJJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR1c2VyVHlwZSA9IHVzZXIudHlwZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gPGRpdlxuXHRcdFx0Y2xhc3NOYW1lPVwiYnAzLWNhcmQgYnAzLXJvd1wiXG5cdFx0XHRzdHlsZT17Y2FyZFN0eWxlfVxuXHRcdD5cblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiYnAzLWNlbGxcIiBzdHlsZT17Y3NzLm5hbWV9PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImxheW91dCBob3Jpem9udGFsXCI+XG5cdFx0XHRcdFx0PGxhYmVsIGNsYXNzTmFtZT1cImJwMy1jb250cm9sIGJwMy1jaGVja2JveFwiIHN0eWxlPXtjc3Muc2VsZWN0fT5cblx0XHRcdFx0XHRcdDxpbnB1dFxuXHRcdFx0XHRcdFx0XHR0eXBlPVwiY2hlY2tib3hcIlxuXHRcdFx0XHRcdFx0XHRjaGVja2VkPXt0aGlzLnByb3BzLnNlbGVjdGVkfVxuXHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17KGV2dCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0XHRvbkNsaWNrPXsoZXZ0KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5wcm9wcy5vblNlbGVjdChldnQuc2hpZnRLZXkpO1xuXHRcdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzTmFtZT1cImJwMy1jb250cm9sLWluZGljYXRvclwiLz5cblx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHRcdDxSZWFjdFJvdXRlci5MaW5rIHRvPXsnL3VzZXIvJyArIHVzZXIuaWR9IHN0eWxlPXtjc3MubmFtZUxpbmt9PlxuXHRcdFx0XHRcdFx0e3VzZXIudXNlcm5hbWV9XG5cdFx0XHRcdFx0PC9SZWFjdFJvdXRlci5MaW5rPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJicDMtY2VsbFwiIHN0eWxlPXtjc3MudHlwZX0+XG5cdFx0XHRcdHt1c2VyVHlwZX1cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJicDMtY2VsbFwiIHN0eWxlPXtjc3MubGFzdEFjdGl2aXR5fT5cblx0XHRcdFx0e01pc2NVdGlscy5mb3JtYXREYXRlU2hvcnRUaW1lKHVzZXIubGFzdF9hY3RpdmUpIHx8ICdJbmFjdGl2ZSd9XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiZmxleCBicDMtY2VsbFwiIHN0eWxlPXtjc3Mucm9sZXN9PlxuXHRcdFx0XHQ8c3BhblxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImJwMy10YWcgYnAzLWludGVudC1kYW5nZXJcIlxuXHRcdFx0XHRcdHN0eWxlPXtjc3MudGFnfVxuXHRcdFx0XHRcdGhpZGRlbj17IXVzZXIuYWRtaW5pc3RyYXRvcn1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdGFkbWluXG5cdFx0XHRcdDwvc3Bhbj5cblx0XHRcdFx0e3JvbGVzfVxuXHRcdFx0PC9kaXY+XG5cdFx0PC9kaXY+O1xuXHR9XG59XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./app/components/User.js\n"); /***/ }), @@ -1472,7 +1472,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ UserDetailed)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../actions/UserActions */ \"./app/actions/UserActions.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n/* harmony import */ var _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../stores/UserStore */ \"./app/stores/UserStore.js\");\n/* harmony import */ var _Sessions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Sessions */ \"./app/components/Sessions.js\");\n/* harmony import */ var _Devices__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Devices */ \"./app/components/Devices.js\");\n/* harmony import */ var _Audits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Audits */ \"./app/components/Audits.js\");\n/* harmony import */ var _Sshcertificates__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Sshcertificates */ \"./app/components/Sshcertificates.js\");\n/* harmony import */ var _Page__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Page */ \"./app/components/Page.js\");\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PageHeader */ \"./app/components/PageHeader.js\");\n/* harmony import */ var _PagePanel__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./PagePanel */ \"./app/components/PagePanel.js\");\n/* harmony import */ var _PageSplit__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./PageSplit */ \"./app/components/PageSplit.js\");\n/* harmony import */ var _PageInfo__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./PageInfo */ \"./app/components/PageInfo.js\");\n/* harmony import */ var _PageInput__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./PageInput */ \"./app/components/PageInput.js\");\n/* harmony import */ var _PageInputButton__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./PageInputButton */ \"./app/components/PageInputButton.js\");\n/* harmony import */ var _PageSwitch__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./PageSwitch */ \"./app/components/PageSwitch.js\");\n/* harmony import */ var _PageSelect__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./PageSelect */ \"./app/components/PageSelect.js\");\n/* harmony import */ var _PageDateTime__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./PageDateTime */ \"./app/components/PageDateTime.js\");\n/* harmony import */ var _PageSave__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./PageSave */ \"./app/components/PageSave.js\");\n/* harmony import */ var _PageNew__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./PageNew */ \"./app/components/PageNew.js\");\n/* harmony import */ var _ConfirmButton__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./ConfirmButton */ \"./app/components/ConfirmButton.js\");\n/* harmony import */ var _Help__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Help */ \"./app/components/Help.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst css = {\n header: {\n marginTop: '-19px',\n },\n heading: {\n margin: '19px 0 0 0',\n },\n button: {\n margin: '10px 0 0 0',\n },\n role: {\n margin: '9px 5px 0 5px',\n height: '20px',\n },\n};\nclass UserDetailed extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor(props, context) {\n super(props, context);\n this.onChange = () => {\n this.setState({\n ...this.state,\n user: _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].userM,\n });\n };\n this.onSave = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.commit(this.state.user).then(() => {\n this.setState({\n ...this.state,\n message: 'Your changes have been saved',\n changed: false,\n disabled: false,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.onNew = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.create(this.state.user).then(() => {\n this.setState({\n ...this.state,\n message: 'User has been created',\n changed: false,\n disabled: false,\n locked: true,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.set = (name, val) => {\n let user = {\n ...this.state.user,\n };\n user[name] = val;\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n user: user,\n });\n };\n this.onAddRole = () => {\n let roles = [\n ...this.state.user.roles,\n ];\n if (!this.state.addRole) {\n return;\n }\n if (roles.indexOf(this.state.addRole) === -1) {\n roles.push(this.state.addRole);\n }\n roles.sort();\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n user: {\n ...this.state.user,\n roles: roles,\n },\n });\n };\n this.onRemoveRole = (role) => {\n let roles = [\n ...this.state.user.roles,\n ];\n let i = roles.indexOf(role);\n if (i === -1) {\n return;\n }\n roles.splice(i, 1);\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n user: {\n ...this.state.user,\n roles: roles,\n },\n });\n };\n this.onDelete = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.remove([this.props.userId]).then(() => {\n this.setState({\n ...this.state,\n message: 'User has been deleted',\n changed: false,\n disabled: false,\n locked: true,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n disabled: false,\n });\n });\n };\n this.state = {\n changed: false,\n disabled: false,\n locked: false,\n message: '',\n addRole: '',\n user: _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].userM,\n };\n }\n componentDidMount() {\n _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].addChangeListener(this.onChange);\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.load(this.props.userId);\n }\n componentWillUnmount() {\n _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeChangeListener(this.onChange);\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.unload();\n }\n render() {\n let userId = this.props.userId;\n let user = this.state.user;\n if (!user) {\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null);\n }\n let roles = [];\n for (let role of user.roles) {\n roles.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-tag bp3-tag-removable bp3-intent-primary\", style: css.role, key: role },\n role,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", { className: \"bp3-tag-remove\", disabled: this.state.locked, onMouseUp: () => {\n this.onRemoveRole(role);\n } })));\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Page__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageHeader__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal wrap\", style: css.header },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"h2\", { style: css.heading }, userId ? 'User Info' : 'New User'),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"flex\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ConfirmButton__WEBPACK_IMPORTED_MODULE_20__[\"default\"], { className: \"bp3-minimal bp3-intent-danger bp3-icon-trash\", style: css.button, safe: true, progressClassName: \"bp3-intent-danger\", dialogClassName: \"bp3-intent-danger bp3-icon-delete\", dialogLabel: \"Delete User\", confirmMsg: \"Permanently delete this user\", confirmInput: true, items: [user.username], disabled: this.state.disabled, onConfirm: this.onDelete })))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSplit__WEBPACK_IMPORTED_MODULE_11__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PagePanel__WEBPACK_IMPORTED_MODULE_10__[\"default\"], { className: \"layout vertical\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { disabled: this.state.locked, label: \"Username\", help: \"Username, if using single sign-on username must match\", type: \"text\", placeholder: \"Enter username\", value: user.username, onChange: (val) => {\n this.set('username', val);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { hidden: user.type !== 'local', disabled: this.state.locked, label: \"Password\", help: \"Password, leave blank to keep current password\", type: \"password\", placeholder: \"Change password\", value: user.password, onChange: (val) => {\n this.set('password', val);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { hidden: user.type !== 'api', disabled: this.state.locked, readOnly: true, autoSelect: true, label: \"Token\", help: \"API token\", type: \"text\", placeholder: \"Save to generate token\", value: user.token }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { hidden: user.type !== 'api' || !user.token || !user.secret, disabled: this.state.locked, readOnly: true, autoSelect: true, label: \"Secret\", help: \"API secret, will only be shown once\", type: \"text\", placeholder: \"\", value: user.secret }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_15__[\"default\"], { hidden: user.type !== 'api' || !user.token || !!user.secret, label: \"Generate new token and secret\", help: \"Enable to generate a new token and secret on save. Secret can only be shown by generating new credentials.\", disabled: this.state.locked, checked: user.generate_secret, onToggle: () => {\n this.set('generate_secret', !user.generate_secret);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSelect__WEBPACK_IMPORTED_MODULE_16__[\"default\"], { disabled: this.state.locked, label: \"Type\", help: \"A local user is a user that is created on the Pritunl Zero database that has a username and password. The other user types can be used to create users for single sign-on services. Generally single sign-on users will be created automatically when the user authenticates for the first time. It can sometimes be desired to manaully create a single sign-on user to provide roles in advanced of the first login.\", value: user.type, onChange: (val) => {\n this.set('type', val);\n } },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"local\" }, \"Local\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"authzero\" }, \"Auth0\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"azure\" }, \"Azure\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"google\" }, \"Google\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"onelogin\" }, \"OneLogin\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"okta\" }, \"Okta\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"api\" }, \"API\")),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-label\" },\n \"Roles\",\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Help__WEBPACK_IMPORTED_MODULE_21__[\"default\"], { title: \"Roles\", content: \"User roles will be used to match with service roles. A user must have a matching role to access a service.\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, roles)),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInputButton__WEBPACK_IMPORTED_MODULE_14__[\"default\"], { disabled: this.state.locked, buttonClass: \"bp3-intent-success bp3-icon-add\", label: \"Add\", type: \"text\", placeholder: \"Add role\", value: this.state.addRole, onChange: (val) => {\n this.setState({\n ...this.state,\n addRole: val,\n });\n }, onSubmit: this.onAddRole }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_15__[\"default\"], { label: \"Administrator\", help: \"Enable to give user administrator access to the management console\", disabled: this.state.locked, checked: user.administrator === 'super', onToggle: () => {\n if (this.state.user.administrator === 'super') {\n this.set('administrator', '');\n }\n else {\n this.set('administrator', 'super');\n }\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_15__[\"default\"], { label: \"Disabled\", help: \"Disables the user ending all active sessions and prevents new authentications\", disabled: this.state.locked, checked: user.disabled, onToggle: () => {\n this.set('disabled', !this.state.user.disabled);\n } })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PagePanel__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInfo__WEBPACK_IMPORTED_MODULE_12__[\"default\"], { fields: [\n {\n label: 'ID',\n value: user.id || 'None',\n },\n {\n label: 'Last Active',\n value: _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__.formatDate(user.last_active) || 'Inactive',\n },\n ] }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageDateTime__WEBPACK_IMPORTED_MODULE_17__[\"default\"], { label: \"Active Until\", help: \"Set this to schedule the user to be disabled at the set date and time. This is useful to give a user temporary access to a service.\", value: user.active_until, disabled: user.disabled || this.state.locked, onChange: (val) => {\n this.set('active_until', val);\n } }))),\n userId ? react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSave__WEBPACK_IMPORTED_MODULE_18__[\"default\"], { message: this.state.message, changed: this.state.changed, disabled: this.state.disabled || this.state.locked, onCancel: () => {\n this.setState({\n ...this.state,\n changed: false,\n message: 'Your changes have been discarded',\n addRole: '',\n user: _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].userM,\n });\n }, onSave: this.onSave }) : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageNew__WEBPACK_IMPORTED_MODULE_19__[\"default\"], { message: this.state.message, changed: this.state.changed, disabled: this.state.disabled || this.state.locked, onSave: this.onNew }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Sessions__WEBPACK_IMPORTED_MODULE_4__[\"default\"], { userId: userId }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Devices__WEBPACK_IMPORTED_MODULE_5__[\"default\"], { userId: userId }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Sshcertificates__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { userId: userId }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Audits__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { userId: userId }));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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SUFBSSxFQUFFLCtEQUFlO3FCQUNyQixDQUFDLENBQUM7Z0JBQ0osQ0FBQyxFQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxHQUNsQixDQUFDLENBQUMsQ0FBQyxpREFBQyxpREFBTyxJQUNaLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFDM0IsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUMzQixRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQ2xELE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxHQUNqQjtZQUNELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlEQUFDLGlEQUFRLElBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRztZQUN0RCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpREFBQyxnREFBTyxJQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUc7WUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaURBQUMsd0RBQWUsSUFBQyxNQUFNLEVBQUUsTUFBTSxHQUFHO1lBQzdELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlEQUFDLCtDQUFNLElBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUMvQyxDQUFDO0lBQ1QsQ0FBQztDQUNEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcHJpdHVubC16ZXJvLy4vYXBwL2NvbXBvbmVudHMvVXNlckRldGFpbGVkLnRzeD8xMjhhIl0sInNvdXJjZXNDb250ZW50IjpbIi8vLyA8cmVmZXJlbmNlIHBhdGg9XCIuLi9SZWZlcmVuY2VzLmQudHNcIi8+XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBVc2VyQWN0aW9ucyBmcm9tICcuLi9hY3Rpb25zL1VzZXJBY3Rpb25zJztcbmltcG9ydCAqIGFzIFVzZXJUeXBlcyBmcm9tICcuLi90eXBlcy9Vc2VyVHlwZXMnO1xuaW1wb3J0ICogYXMgTWlzY1V0aWxzIGZyb20gJy4uL3V0aWxzL01pc2NVdGlscyc7XG5pbXBvcnQgVXNlclN0b3JlIGZyb20gJy4uL3N0b3Jlcy9Vc2VyU3RvcmUnO1xuaW1wb3J0IFNlc3Npb25zIGZyb20gJy4vU2Vzc2lvbnMnO1xuaW1wb3J0IERldmljZXMgZnJvbSAnLi9EZXZpY2VzJztcbmltcG9ydCBBdWRpdHMgZnJvbSAnLi9BdWRpdHMnO1xuaW1wb3J0IFNzaGNlcnRpZmljYXRlcyBmcm9tICcuL1NzaGNlcnRpZmljYXRlcyc7XG5pbXBvcnQgUGFnZSBmcm9tICcuL1BhZ2UnO1xuaW1wb3J0IFBhZ2VIZWFkZXIgZnJvbSAnLi9QYWdlSGVhZGVyJztcbmltcG9ydCBQYWdlUGFuZWwgZnJvbSAnLi9QYWdlUGFuZWwnO1xuaW1wb3J0IFBhZ2VTcGxpdCBmcm9tICcuL1BhZ2VTcGxpdCc7XG5pbXBvcnQgUGFnZUluZm8gZnJvbSAnLi9QYWdlSW5mbyc7XG5pbXBvcnQgUGFnZUlucHV0IGZyb20gJy4vUGFnZUlucHV0JztcbmltcG9ydCBQYWdlSW5wdXRCdXR0b24gZnJvbSAnLi9QYWdlSW5wdXRCdXR0b24nO1xuaW1wb3J0IFBhZ2VTd2l0Y2ggZnJvbSAnLi9QYWdlU3dpdGNoJztcbmltcG9ydCBQYWdlU2VsZWN0IGZyb20gJy4vUGFnZVNlbGVjdCc7XG5pbXBvcnQgUGFnZURhdGVUaW1lIGZyb20gJy4vUGFnZURhdGVUaW1lJztcbmltcG9ydCBQYWdlU2F2ZSBmcm9tICcuL1BhZ2VTYXZlJztcbmltcG9ydCBQYWdlTmV3IGZyb20gJy4vUGFnZU5ldyc7XG5pbXBvcnQgQ29uZmlybUJ1dHRvbiBmcm9tICcuL0NvbmZpcm1CdXR0b24nO1xuaW1wb3J0IEhlbHAgZnJvbSAnLi9IZWxwJztcblxuaW50ZXJmYWNlIFByb3BzIHtcblx0dXNlcklkPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU3RhdGUge1xuXHRjaGFuZ2VkOiBib29sZWFuO1xuXHRkaXNhYmxlZDogYm9vbGVhbjtcblx0bG9ja2VkOiBib29sZWFuO1xuXHRtZXNzYWdlOiBzdHJpbmc7XG5cdGFkZFJvbGU6IHN0cmluZztcblx0dXNlcjogVXNlclR5cGVzLlVzZXI7XG59XG5cbmNvbnN0IGNzcyA9IHtcblx0aGVhZGVyOiB7XG5cdFx0bWFyZ2luVG9wOiAnLTE5cHgnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdGhlYWRpbmc6IHtcblx0XHRtYXJnaW46ICcxOXB4IDAgMCAwJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRidXR0b246IHtcblx0XHRtYXJnaW46ICcxMHB4IDAgMCAwJyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxuXHRyb2xlOiB7XG5cdFx0bWFyZ2luOiAnOXB4IDVweCAwIDVweCcsXG5cdFx0aGVpZ2h0OiAnMjBweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVzZXJEZXRhaWxlZCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxQcm9wcywgU3RhdGU+IHtcblx0Y29uc3RydWN0b3IocHJvcHM6IGFueSwgY29udGV4dDogYW55KSB7XG5cdFx0c3VwZXIocHJvcHMsIGNvbnRleHQpO1xuXHRcdHRoaXMuc3RhdGUgPSB7XG5cdFx0XHRjaGFuZ2VkOiBmYWxzZSxcblx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdGxvY2tlZDogZmFsc2UsXG5cdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdGFkZFJvbGU6ICcnLFxuXHRcdFx0dXNlcjogVXNlclN0b3JlLnVzZXJNLFxuXHRcdH07XG5cdH1cblxuXHRjb21wb25lbnREaWRNb3VudCgpOiB2b2lkIHtcblx0XHRVc2VyU3RvcmUuYWRkQ2hhbmdlTGlzdGVuZXIodGhpcy5vbkNoYW5nZSk7XG5cdFx0VXNlckFjdGlvbnMubG9hZCh0aGlzLnByb3BzLnVzZXJJZCk7XG5cdH1cblxuXHRjb21wb25lbnRXaWxsVW5tb3VudCgpOiB2b2lkIHtcblx0XHRVc2VyU3RvcmUucmVtb3ZlQ2hhbmdlTGlzdGVuZXIodGhpcy5vbkNoYW5nZSk7XG5cdFx0VXNlckFjdGlvbnMudW5sb2FkKCk7XG5cdH1cblxuXHRvbkNoYW5nZSA9ICgpOiB2b2lkID0+IHtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHR1c2VyOiBVc2VyU3RvcmUudXNlck0sXG5cdFx0fSk7XG5cdH1cblxuXHRvblNhdmUgPSAoKTogdm9pZCA9PiB7XG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0ZGlzYWJsZWQ6IHRydWUsXG5cdFx0fSk7XG5cdFx0VXNlckFjdGlvbnMuY29tbWl0KHRoaXMuc3RhdGUudXNlcikudGhlbigoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJ1lvdXIgY2hhbmdlcyBoYXZlIGJlZW4gc2F2ZWQnLFxuXHRcdFx0XHRjaGFuZ2VkOiBmYWxzZSxcblx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0fSk7XG5cdFx0fSkuY2F0Y2goKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdG1lc3NhZ2U6ICcnLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdG9uTmV3ID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGRpc2FibGVkOiB0cnVlLFxuXHRcdH0pO1xuXHRcdFVzZXJBY3Rpb25zLmNyZWF0ZSh0aGlzLnN0YXRlLnVzZXIpLnRoZW4oKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdG1lc3NhZ2U6ICdVc2VyIGhhcyBiZWVuIGNyZWF0ZWQnLFxuXHRcdFx0XHRjaGFuZ2VkOiBmYWxzZSxcblx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0XHRsb2NrZWQ6IHRydWUsXG5cdFx0XHR9KTtcblx0XHR9KS5jYXRjaCgoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0c2V0ID0gKG5hbWU6IHN0cmluZywgdmFsOiBhbnkpOiB2b2lkID0+IHtcblx0XHRsZXQgdXNlcjogYW55ID0ge1xuXHRcdFx0Li4udGhpcy5zdGF0ZS51c2VyLFxuXHRcdH07XG5cblx0XHR1c2VyW25hbWVdID0gdmFsO1xuXG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0Y2hhbmdlZDogdHJ1ZSxcblx0XHRcdG1lc3NhZ2U6ICcnLFxuXHRcdFx0dXNlcjogdXNlcixcblx0XHR9KTtcblx0fVxuXG5cdG9uQWRkUm9sZSA9ICgpOiB2b2lkID0+IHtcblx0XHRsZXQgcm9sZXMgPSBbXG5cdFx0XHQuLi50aGlzLnN0YXRlLnVzZXIucm9sZXMsXG5cdFx0XTtcblxuXHRcdGlmICghdGhpcy5zdGF0ZS5hZGRSb2xlKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKHJvbGVzLmluZGV4T2YodGhpcy5zdGF0ZS5hZGRSb2xlKSA9PT0gLTEpIHtcblx0XHRcdHJvbGVzLnB1c2godGhpcy5zdGF0ZS5hZGRSb2xlKTtcblx0XHR9XG5cblx0XHRyb2xlcy5zb3J0KCk7XG5cblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRjaGFuZ2VkOiB0cnVlLFxuXHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRhZGRSb2xlOiAnJyxcblx0XHRcdHVzZXI6IHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZS51c2VyLFxuXHRcdFx0XHRyb2xlczogcm9sZXMsXG5cdFx0XHR9LFxuXHRcdH0pO1xuXHR9XG5cblx0b25SZW1vdmVSb2xlID0gKHJvbGU6IHN0cmluZyk6IHZvaWQgPT4ge1xuXHRcdGxldCByb2xlcyA9IFtcblx0XHRcdC4uLnRoaXMuc3RhdGUudXNlci5yb2xlcyxcblx0XHRdO1xuXG5cdFx0bGV0IGkgPSByb2xlcy5pbmRleE9mKHJvbGUpO1xuXHRcdGlmIChpID09PSAtMSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHJvbGVzLnNwbGljZShpLCAxKTtcblxuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGNoYW5nZWQ6IHRydWUsXG5cdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdGFkZFJvbGU6ICcnLFxuXHRcdFx0dXNlcjoge1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLnVzZXIsXG5cdFx0XHRcdHJvbGVzOiByb2xlcyxcblx0XHRcdH0sXG5cdFx0fSk7XG5cdH1cblxuXHRvbkRlbGV0ZSA9ICgpOiB2b2lkID0+IHtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRkaXNhYmxlZDogdHJ1ZSxcblx0XHR9KTtcblx0XHRVc2VyQWN0aW9ucy5yZW1vdmUoW3RoaXMucHJvcHMudXNlcklkXSkudGhlbigoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJ1VzZXIgaGFzIGJlZW4gZGVsZXRlZCcsXG5cdFx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHRcdGxvY2tlZDogdHJ1ZSxcblx0XHRcdH0pO1xuXHRcdH0pLmNhdGNoKCgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHR9KTtcblx0XHR9KTtcblx0fVxuXG5cdHJlbmRlcigpOiBKU1guRWxlbWVudCB7XG5cdFx0bGV0IHVzZXJJZCA9IHRoaXMucHJvcHMudXNlcklkO1xuXHRcdGxldCB1c2VyID0gdGhpcy5zdGF0ZS51c2VyO1xuXHRcdGlmICghdXNlcikge1xuXHRcdFx0cmV0dXJuIDxkaXYvPjtcblx0XHR9XG5cblx0XHRsZXQgcm9sZXM6IEpTWC5FbGVtZW50W10gPSBbXTtcblx0XHRmb3IgKGxldCByb2xlIG9mIHVzZXIucm9sZXMpIHtcblx0XHRcdHJvbGVzLnB1c2goXG5cdFx0XHRcdDxkaXZcblx0XHRcdFx0XHRjbGFzc05hbWU9XCJicDMtdGFnIGJwMy10YWctcmVtb3ZhYmxlIGJwMy1pbnRlbnQtcHJpbWFyeVwiXG5cdFx0XHRcdFx0c3R5bGU9e2Nzcy5yb2xlfVxuXHRcdFx0XHRcdGtleT17cm9sZX1cblx0XHRcdFx0PlxuXHRcdFx0XHRcdHtyb2xlfVxuXHRcdFx0XHRcdDxidXR0b25cblx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cImJwMy10YWctcmVtb3ZlXCJcblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0XHRcdG9uTW91c2VVcD17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLm9uUmVtb3ZlUm9sZShyb2xlKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9kaXY+LFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gPFBhZ2U+XG5cdFx0XHQ8UGFnZUhlYWRlcj5cblx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJsYXlvdXQgaG9yaXpvbnRhbCB3cmFwXCIgc3R5bGU9e2Nzcy5oZWFkZXJ9PlxuXHRcdFx0XHRcdDxoMiBzdHlsZT17Y3NzLmhlYWRpbmd9Pnt1c2VySWQgPyAnVXNlciBJbmZvJyA6ICdOZXcgVXNlcid9PC9oMj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImZsZXhcIi8+XG5cdFx0XHRcdFx0PGRpdj5cblx0XHRcdFx0XHRcdDxDb25maXJtQnV0dG9uXG5cdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cImJwMy1taW5pbWFsIGJwMy1pbnRlbnQtZGFuZ2VyIGJwMy1pY29uLXRyYXNoXCJcblx0XHRcdFx0XHRcdFx0c3R5bGU9e2Nzcy5idXR0b259XG5cdFx0XHRcdFx0XHRcdHNhZmU9e3RydWV9XG5cdFx0XHRcdFx0XHRcdHByb2dyZXNzQ2xhc3NOYW1lPVwiYnAzLWludGVudC1kYW5nZXJcIlxuXHRcdFx0XHRcdFx0XHRkaWFsb2dDbGFzc05hbWU9XCJicDMtaW50ZW50LWRhbmdlciBicDMtaWNvbi1kZWxldGVcIlxuXHRcdFx0XHRcdFx0XHRkaWFsb2dMYWJlbD1cIkRlbGV0ZSBVc2VyXCJcblx0XHRcdFx0XHRcdFx0Y29uZmlybU1zZz1cIlBlcm1hbmVudGx5IGRlbGV0ZSB0aGlzIHVzZXJcIlxuXHRcdFx0XHRcdFx0XHRjb25maXJtSW5wdXQ9e3RydWV9XG5cdFx0XHRcdFx0XHRcdGl0ZW1zPXtbdXNlci51c2VybmFtZV19XG5cdFx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmRpc2FibGVkfVxuXHRcdFx0XHRcdFx0XHRvbkNvbmZpcm09e3RoaXMub25EZWxldGV9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvUGFnZUhlYWRlcj5cblx0XHRcdDxQYWdlU3BsaXQ+XG5cdFx0XHRcdDxQYWdlUGFuZWwgY2xhc3NOYW1lPVwibGF5b3V0IHZlcnRpY2FsXCI+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dFxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRcdFx0bGFiZWw9XCJVc2VybmFtZVwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiVXNlcm5hbWUsIGlmIHVzaW5nIHNpbmdsZSBzaWduLW9uIHVzZXJuYW1lIG11c3QgbWF0Y2hcIlxuXHRcdFx0XHRcdFx0dHlwZT1cInRleHRcIlxuXHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJFbnRlciB1c2VybmFtZVwiXG5cdFx0XHRcdFx0XHR2YWx1ZT17dXNlci51c2VybmFtZX1cblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCd1c2VybmFtZScsIHZhbCk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dFxuXHRcdFx0XHRcdFx0aGlkZGVuPXt1c2VyLnR5cGUgIT09ICdsb2NhbCd9XG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIlBhc3N3b3JkXCJcblx0XHRcdFx0XHRcdGhlbHA9XCJQYXNzd29yZCwgbGVhdmUgYmxhbmsgdG8ga2VlcCBjdXJyZW50IHBhc3N3b3JkXCJcblx0XHRcdFx0XHRcdHR5cGU9XCJwYXNzd29yZFwiXG5cdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIkNoYW5nZSBwYXNzd29yZFwiXG5cdFx0XHRcdFx0XHR2YWx1ZT17dXNlci5wYXNzd29yZH1cblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCdwYXNzd29yZCcsIHZhbCk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dFxuXHRcdFx0XHRcdFx0aGlkZGVuPXt1c2VyLnR5cGUgIT09ICdhcGknfVxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRcdFx0cmVhZE9ubHk9e3RydWV9XG5cdFx0XHRcdFx0XHRhdXRvU2VsZWN0PXt0cnVlfVxuXHRcdFx0XHRcdFx0bGFiZWw9XCJUb2tlblwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiQVBJIHRva2VuXCJcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiU2F2ZSB0byBnZW5lcmF0ZSB0b2tlblwiXG5cdFx0XHRcdFx0XHR2YWx1ZT17dXNlci50b2tlbn1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDxQYWdlSW5wdXRcblx0XHRcdFx0XHRcdGhpZGRlbj17dXNlci50eXBlICE9PSAnYXBpJyB8fCAhdXNlci50b2tlbiB8fCAhdXNlci5zZWNyZXR9XG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRyZWFkT25seT17dHJ1ZX1cblx0XHRcdFx0XHRcdGF1dG9TZWxlY3Q9e3RydWV9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIlNlY3JldFwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiQVBJIHNlY3JldCwgd2lsbCBvbmx5IGJlIHNob3duIG9uY2VcIlxuXHRcdFx0XHRcdFx0dHlwZT1cInRleHRcIlxuXHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJcIlxuXHRcdFx0XHRcdFx0dmFsdWU9e3VzZXIuc2VjcmV0fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VTd2l0Y2hcblx0XHRcdFx0XHRcdGhpZGRlbj17dXNlci50eXBlICE9PSAnYXBpJyB8fCAhdXNlci50b2tlbiB8fCAhIXVzZXIuc2VjcmV0fVxuXHRcdFx0XHRcdFx0bGFiZWw9XCJHZW5lcmF0ZSBuZXcgdG9rZW4gYW5kIHNlY3JldFwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiRW5hYmxlIHRvIGdlbmVyYXRlIGEgbmV3IHRva2VuIGFuZCBzZWNyZXQgb24gc2F2ZS4gU2VjcmV0IGNhbiBvbmx5IGJlIHNob3duIGJ5IGdlbmVyYXRpbmcgbmV3IGNyZWRlbnRpYWxzLlwiXG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRjaGVja2VkPXt1c2VyLmdlbmVyYXRlX3NlY3JldH1cblx0XHRcdFx0XHRcdG9uVG9nZ2xlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCdnZW5lcmF0ZV9zZWNyZXQnLCAhdXNlci5nZW5lcmF0ZV9zZWNyZXQpO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDxQYWdlU2VsZWN0XG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIlR5cGVcIlxuXHRcdFx0XHRcdFx0aGVscD1cIkEgbG9jYWwgdXNlciBpcyBhIHVzZXIgdGhhdCBpcyBjcmVhdGVkIG9uIHRoZSBQcml0dW5sIFplcm8gZGF0YWJhc2UgdGhhdCBoYXMgYSB1c2VybmFtZSBhbmQgcGFzc3dvcmQuIFRoZSBvdGhlciB1c2VyIHR5cGVzIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSB1c2VycyBmb3Igc2luZ2xlIHNpZ24tb24gc2VydmljZXMuIEdlbmVyYWxseSBzaW5nbGUgc2lnbi1vbiB1c2VycyB3aWxsIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSB1c2VyIGF1dGhlbnRpY2F0ZXMgZm9yIHRoZSBmaXJzdCB0aW1lLiBJdCBjYW4gc29tZXRpbWVzIGJlIGRlc2lyZWQgdG8gbWFuYXVsbHkgY3JlYXRlIGEgc2luZ2xlIHNpZ24tb24gdXNlciB0byBwcm92aWRlIHJvbGVzIGluIGFkdmFuY2VkIG9mIHRoZSBmaXJzdCBsb2dpbi5cIlxuXHRcdFx0XHRcdFx0dmFsdWU9e3VzZXIudHlwZX1cblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCd0eXBlJywgdmFsKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cImxvY2FsXCI+TG9jYWw8L29wdGlvbj5cblx0XHRcdFx0XHRcdDxvcHRpb24gdmFsdWU9XCJhdXRoemVyb1wiPkF1dGgwPC9vcHRpb24+XG5cdFx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwiYXp1cmVcIj5BenVyZTwvb3B0aW9uPlxuXHRcdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cImdvb2dsZVwiPkdvb2dsZTwvb3B0aW9uPlxuXHRcdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cIm9uZWxvZ2luXCI+T25lTG9naW48L29wdGlvbj5cblx0XHRcdFx0XHRcdDxvcHRpb24gdmFsdWU9XCJva3RhXCI+T2t0YTwvb3B0aW9uPlxuXHRcdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cImFwaVwiPkFQSTwvb3B0aW9uPlxuXHRcdFx0XHRcdDwvUGFnZVNlbGVjdD5cblx0XHRcdFx0XHQ8bGFiZWwgY2xhc3NOYW1lPVwiYnAzLWxhYmVsXCI+XG5cdFx0XHRcdFx0XHRSb2xlc1xuXHRcdFx0XHRcdFx0PEhlbHBcblx0XHRcdFx0XHRcdFx0dGl0bGU9XCJSb2xlc1wiXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ9XCJVc2VyIHJvbGVzIHdpbGwgYmUgdXNlZCB0byBtYXRjaCB3aXRoIHNlcnZpY2Ugcm9sZXMuIEEgdXNlciBtdXN0IGhhdmUgYSBtYXRjaGluZyByb2xlIHRvIGFjY2VzcyBhIHNlcnZpY2UuXCJcblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0XHR7cm9sZXN9XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHRcdDxQYWdlSW5wdXRCdXR0b25cblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0XHRcdGJ1dHRvbkNsYXNzPVwiYnAzLWludGVudC1zdWNjZXNzIGJwMy1pY29uLWFkZFwiXG5cdFx0XHRcdFx0XHRsYWJlbD1cIkFkZFwiXG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIkFkZCByb2xlXCJcblx0XHRcdFx0XHRcdHZhbHVlPXt0aGlzLnN0YXRlLmFkZFJvbGV9XG5cdFx0XHRcdFx0XHRvbkNoYW5nZT17KHZhbCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRcdFx0XHRcdGFkZFJvbGU6IHZhbCxcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdFx0b25TdWJtaXQ9e3RoaXMub25BZGRSb2xlfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VTd2l0Y2hcblx0XHRcdFx0XHRcdGxhYmVsPVwiQWRtaW5pc3RyYXRvclwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiRW5hYmxlIHRvIGdpdmUgdXNlciBhZG1pbmlzdHJhdG9yIGFjY2VzcyB0byB0aGUgbWFuYWdlbWVudCBjb25zb2xlXCJcblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0XHRcdGNoZWNrZWQ9e3VzZXIuYWRtaW5pc3RyYXRvciA9PT0gJ3N1cGVyJ31cblx0XHRcdFx0XHRcdG9uVG9nZ2xlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLnN0YXRlLnVzZXIuYWRtaW5pc3RyYXRvciA9PT0gJ3N1cGVyJykge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCdhZG1pbmlzdHJhdG9yJywgJycpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCdhZG1pbmlzdHJhdG9yJywgJ3N1cGVyJyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZVN3aXRjaFxuXHRcdFx0XHRcdFx0bGFiZWw9XCJEaXNhYmxlZFwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiRGlzYWJsZXMgdGhlIHVzZXIgZW5kaW5nIGFsbCBhY3RpdmUgc2Vzc2lvbnMgYW5kIHByZXZlbnRzIG5ldyBhdXRoZW50aWNhdGlvbnNcIlxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRcdFx0Y2hlY2tlZD17dXNlci5kaXNhYmxlZH1cblx0XHRcdFx0XHRcdG9uVG9nZ2xlPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0KCdkaXNhYmxlZCcsICF0aGlzLnN0YXRlLnVzZXIuZGlzYWJsZWQpO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L1BhZ2VQYW5lbD5cblx0XHRcdFx0PFBhZ2VQYW5lbD5cblx0XHRcdFx0XHQ8UGFnZUluZm9cblx0XHRcdFx0XHRcdGZpZWxkcz17W1xuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6ICdJRCcsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHVzZXIuaWQgfHwgJ05vbmUnLFxuXHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0bGFiZWw6ICdMYXN0IEFjdGl2ZScsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IE1pc2NVdGlscy5mb3JtYXREYXRlKHVzZXIubGFzdF9hY3RpdmUpIHx8ICdJbmFjdGl2ZScsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRdfVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VEYXRlVGltZVxuXHRcdFx0XHRcdFx0bGFiZWw9XCJBY3RpdmUgVW50aWxcIlxuXHRcdFx0XHRcdFx0aGVscD1cIlNldCB0aGlzIHRvIHNjaGVkdWxlIHRoZSB1c2VyIHRvIGJlIGRpc2FibGVkIGF0IHRoZSBzZXQgZGF0ZSBhbmQgdGltZS4gVGhpcyBpcyB1c2VmdWwgdG8gZ2l2ZSBhIHVzZXIgdGVtcG9yYXJ5IGFjY2VzcyB0byBhIHNlcnZpY2UuXCJcblx0XHRcdFx0XHRcdHZhbHVlPXt1c2VyLmFjdGl2ZV91bnRpbH1cblx0XHRcdFx0XHRcdGRpc2FibGVkPXt1c2VyLmRpc2FibGVkIHx8IHRoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWwpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ2FjdGl2ZV91bnRpbCcsIHZhbCk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvUGFnZVBhbmVsPlxuXHRcdFx0PC9QYWdlU3BsaXQ+XG5cdFx0XHR7dXNlcklkID8gPFBhZ2VTYXZlXG5cdFx0XHRcdG1lc3NhZ2U9e3RoaXMuc3RhdGUubWVzc2FnZX1cblx0XHRcdFx0Y2hhbmdlZD17dGhpcy5zdGF0ZS5jaGFuZ2VkfVxuXHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5kaXNhYmxlZCB8fCB0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0b25DYW5jZWw9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRjaGFuZ2VkOiBmYWxzZSxcblx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdZb3VyIGNoYW5nZXMgaGF2ZSBiZWVuIGRpc2NhcmRlZCcsXG5cdFx0XHRcdFx0XHRhZGRSb2xlOiAnJyxcblx0XHRcdFx0XHRcdHVzZXI6IFVzZXJTdG9yZS51c2VyTSxcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fX1cblx0XHRcdFx0b25TYXZlPXt0aGlzLm9uU2F2ZX1cblx0XHRcdC8+IDogPFBhZ2VOZXdcblx0XHRcdFx0bWVzc2FnZT17dGhpcy5zdGF0ZS5tZXNzYWdlfVxuXHRcdFx0XHRjaGFuZ2VkPXt0aGlzLnN0YXRlLmNoYW5nZWR9XG5cdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmRpc2FibGVkIHx8IHRoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRvblNhdmU9e3RoaXMub25OZXd9XG5cdFx0XHQvPn1cblx0XHRcdHt0aGlzLnN0YXRlLmxvY2tlZCA/IG51bGwgOiA8U2Vzc2lvbnMgdXNlcklkPXt1c2VySWR9Lz59XG5cdFx0XHR7dGhpcy5zdGF0ZS5sb2NrZWQgPyBudWxsIDogPERldmljZXMgdXNlcklkPXt1c2VySWR9Lz59XG5cdFx0XHR7dGhpcy5zdGF0ZS5sb2NrZWQgPyBudWxsIDogPFNzaGNlcnRpZmljYXRlcyB1c2VySWQ9e3VzZXJJZH0vPn1cblx0XHRcdHt0aGlzLnN0YXRlLmxvY2tlZCA/IG51bGwgOiA8QXVkaXRzIHVzZXJJZD17dXNlcklkfS8+fVxuXHRcdDwvUGFnZT47XG5cdH1cbn1cbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/components/UserDetailed.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ UserDetailed)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../actions/UserActions */ \"./app/actions/UserActions.js\");\n/* harmony import */ var _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/MiscUtils */ \"./app/utils/MiscUtils.js\");\n/* harmony import */ var _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../stores/UserStore */ \"./app/stores/UserStore.js\");\n/* harmony import */ var _Sessions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Sessions */ \"./app/components/Sessions.js\");\n/* harmony import */ var _Devices__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Devices */ \"./app/components/Devices.js\");\n/* harmony import */ var _Audits__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./Audits */ \"./app/components/Audits.js\");\n/* harmony import */ var _Sshcertificates__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./Sshcertificates */ \"./app/components/Sshcertificates.js\");\n/* harmony import */ var _Page__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./Page */ \"./app/components/Page.js\");\n/* harmony import */ var _PageHeader__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./PageHeader */ \"./app/components/PageHeader.js\");\n/* harmony import */ var _PagePanel__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./PagePanel */ \"./app/components/PagePanel.js\");\n/* harmony import */ var _PageSplit__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./PageSplit */ \"./app/components/PageSplit.js\");\n/* harmony import */ var _PageInfo__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./PageInfo */ \"./app/components/PageInfo.js\");\n/* harmony import */ var _PageInput__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./PageInput */ \"./app/components/PageInput.js\");\n/* harmony import */ var _PageInputButton__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./PageInputButton */ \"./app/components/PageInputButton.js\");\n/* harmony import */ var _PageSwitch__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./PageSwitch */ \"./app/components/PageSwitch.js\");\n/* harmony import */ var _PageSelect__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./PageSelect */ \"./app/components/PageSelect.js\");\n/* harmony import */ var _PageDateTime__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./PageDateTime */ \"./app/components/PageDateTime.js\");\n/* harmony import */ var _PageSave__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./PageSave */ \"./app/components/PageSave.js\");\n/* harmony import */ var _PageNew__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./PageNew */ \"./app/components/PageNew.js\");\n/* harmony import */ var _ConfirmButton__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./ConfirmButton */ \"./app/components/ConfirmButton.js\");\n/* harmony import */ var _Help__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./Help */ \"./app/components/Help.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst css = {\n header: {\n marginTop: '-19px',\n },\n heading: {\n margin: '19px 0 0 0',\n },\n button: {\n margin: '10px 0 0 0',\n },\n role: {\n margin: '9px 5px 0 5px',\n height: '20px',\n },\n};\nclass UserDetailed extends react__WEBPACK_IMPORTED_MODULE_0__.Component {\n constructor(props, context) {\n super(props, context);\n this.onChange = () => {\n this.setState({\n ...this.state,\n user: _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].userM,\n });\n };\n this.onSave = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.commit(this.state.user).then(() => {\n this.setState({\n ...this.state,\n message: 'Your changes have been saved',\n changed: false,\n disabled: false,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.onNew = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.create(this.state.user).then(() => {\n this.setState({\n ...this.state,\n message: 'User has been created',\n changed: false,\n disabled: false,\n locked: true,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n message: '',\n disabled: false,\n });\n });\n };\n this.set = (name, val) => {\n let user = {\n ...this.state.user,\n };\n user[name] = val;\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n user: user,\n });\n };\n this.onAddRole = () => {\n let roles = [\n ...this.state.user.roles,\n ];\n if (!this.state.addRole) {\n return;\n }\n if (roles.indexOf(this.state.addRole) === -1) {\n roles.push(this.state.addRole);\n }\n roles.sort();\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n user: {\n ...this.state.user,\n roles: roles,\n },\n });\n };\n this.onRemoveRole = (role) => {\n let roles = [\n ...this.state.user.roles,\n ];\n let i = roles.indexOf(role);\n if (i === -1) {\n return;\n }\n roles.splice(i, 1);\n this.setState({\n ...this.state,\n changed: true,\n message: '',\n addRole: '',\n user: {\n ...this.state.user,\n roles: roles,\n },\n });\n };\n this.onDelete = () => {\n this.setState({\n ...this.state,\n disabled: true,\n });\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.remove([this.props.userId]).then(() => {\n this.setState({\n ...this.state,\n message: 'User has been deleted',\n changed: false,\n disabled: false,\n locked: true,\n });\n }).catch(() => {\n this.setState({\n ...this.state,\n disabled: false,\n });\n });\n };\n this.state = {\n changed: false,\n disabled: false,\n locked: false,\n message: '',\n addRole: '',\n user: _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].userM,\n };\n }\n componentDidMount() {\n _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].addChangeListener(this.onChange);\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.load(this.props.userId);\n }\n componentWillUnmount() {\n _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeChangeListener(this.onChange);\n _actions_UserActions__WEBPACK_IMPORTED_MODULE_1__.unload();\n }\n render() {\n let userId = this.props.userId;\n let user = this.state.user;\n if (!user) {\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null);\n }\n let roles = [];\n for (let role of user.roles) {\n roles.push(react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"bp3-tag bp3-tag-removable bp3-intent-primary\", style: css.role, key: role },\n role,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"button\", { className: \"bp3-tag-remove\", disabled: this.state.locked, onMouseUp: () => {\n this.onRemoveRole(role);\n } })));\n }\n return react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Page__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageHeader__WEBPACK_IMPORTED_MODULE_9__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"layout horizontal wrap\", style: css.header },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"h2\", { style: css.heading }, userId ? 'User Info' : 'New User'),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", { className: \"flex\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ConfirmButton__WEBPACK_IMPORTED_MODULE_20__[\"default\"], { className: \"bp3-minimal bp3-intent-danger bp3-icon-trash\", style: css.button, safe: true, progressClassName: \"bp3-intent-danger\", dialogClassName: \"bp3-intent-danger bp3-icon-delete\", dialogLabel: \"Delete User\", confirmMsg: \"Permanently delete this user\", confirmInput: true, items: [user.username], disabled: this.state.disabled, onConfirm: this.onDelete })))),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSplit__WEBPACK_IMPORTED_MODULE_11__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PagePanel__WEBPACK_IMPORTED_MODULE_10__[\"default\"], { className: \"layout vertical\" },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { disabled: this.state.locked, label: \"Username\", help: \"Username, if using single sign-on username must match\", type: \"text\", placeholder: \"Enter username\", value: user.username, onChange: (val) => {\n this.set('username', val);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { hidden: user.type !== 'local', disabled: this.state.locked, label: \"Password\", help: \"Password, leave blank to keep current password\", type: \"password\", placeholder: \"Change password\", value: user.password, onChange: (val) => {\n this.set('password', val);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { hidden: user.type !== 'api', disabled: this.state.locked, readOnly: true, autoSelect: true, label: \"Token\", help: \"API token\", type: \"text\", placeholder: \"Save to generate token\", value: user.token }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInput__WEBPACK_IMPORTED_MODULE_13__[\"default\"], { hidden: user.type !== 'api' || !user.token || !user.secret, disabled: this.state.locked, readOnly: true, autoSelect: true, label: \"Secret\", help: \"API secret, will only be shown once\", type: \"text\", placeholder: \"\", value: user.secret }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_15__[\"default\"], { hidden: user.type !== 'api' || !user.token || !!user.secret, label: \"Generate new token and secret\", help: \"Enable to generate a new token and secret on save. Secret can only be shown by generating new credentials.\", disabled: this.state.locked, checked: user.generate_secret, onToggle: () => {\n this.set('generate_secret', !user.generate_secret);\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSelect__WEBPACK_IMPORTED_MODULE_16__[\"default\"], { disabled: this.state.locked, label: \"Type\", help: \"A local user is a user that is created on the Pritunl Zero database that has a username and password. The other user types can be used to create users for single sign-on services. Generally single sign-on users will be created automatically when the user authenticates for the first time. It can sometimes be desired to manaully create a single sign-on user to provide roles in advanced of the first login.\", value: user.type, onChange: (val) => {\n this.set('type', val);\n } },\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"local\" }, \"Local\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"authzero\" }, \"Auth0\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"azure\" }, \"Azure\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"google\" }, \"Google\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"onelogin\" }, \"OneLogin\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"okta\" }, \"Okta\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"jumpcloud\" }, \"JumpCloud\"),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"option\", { value: \"api\" }, \"API\")),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"label\", { className: \"bp3-label\" },\n \"Roles\",\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Help__WEBPACK_IMPORTED_MODULE_21__[\"default\"], { title: \"Roles\", content: \"User roles will be used to match with service roles. A user must have a matching role to access a service.\" }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(\"div\", null, roles)),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInputButton__WEBPACK_IMPORTED_MODULE_14__[\"default\"], { disabled: this.state.locked, buttonClass: \"bp3-intent-success bp3-icon-add\", label: \"Add\", type: \"text\", placeholder: \"Add role\", value: this.state.addRole, onChange: (val) => {\n this.setState({\n ...this.state,\n addRole: val,\n });\n }, onSubmit: this.onAddRole }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_15__[\"default\"], { label: \"Administrator\", help: \"Enable to give user administrator access to the management console\", disabled: this.state.locked, checked: user.administrator === 'super', onToggle: () => {\n if (this.state.user.administrator === 'super') {\n this.set('administrator', '');\n }\n else {\n this.set('administrator', 'super');\n }\n } }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSwitch__WEBPACK_IMPORTED_MODULE_15__[\"default\"], { label: \"Disabled\", help: \"Disables the user ending all active sessions and prevents new authentications\", disabled: this.state.locked, checked: user.disabled, onToggle: () => {\n this.set('disabled', !this.state.user.disabled);\n } })),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PagePanel__WEBPACK_IMPORTED_MODULE_10__[\"default\"], null,\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageInfo__WEBPACK_IMPORTED_MODULE_12__[\"default\"], { fields: [\n {\n label: 'ID',\n value: user.id || 'None',\n },\n {\n label: 'Last Active',\n value: _utils_MiscUtils__WEBPACK_IMPORTED_MODULE_2__.formatDate(user.last_active) || 'Inactive',\n },\n ] }),\n react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageDateTime__WEBPACK_IMPORTED_MODULE_17__[\"default\"], { label: \"Active Until\", help: \"Set this to schedule the user to be disabled at the set date and time. This is useful to give a user temporary access to a service.\", value: user.active_until, disabled: user.disabled || this.state.locked, onChange: (val) => {\n this.set('active_until', val);\n } }))),\n userId ? react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageSave__WEBPACK_IMPORTED_MODULE_18__[\"default\"], { message: this.state.message, changed: this.state.changed, disabled: this.state.disabled || this.state.locked, onCancel: () => {\n this.setState({\n ...this.state,\n changed: false,\n message: 'Your changes have been discarded',\n addRole: '',\n user: _stores_UserStore__WEBPACK_IMPORTED_MODULE_3__[\"default\"].userM,\n });\n }, onSave: this.onSave }) : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_PageNew__WEBPACK_IMPORTED_MODULE_19__[\"default\"], { message: this.state.message, changed: this.state.changed, disabled: this.state.disabled || this.state.locked, onSave: this.onNew }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Sessions__WEBPACK_IMPORTED_MODULE_4__[\"default\"], { userId: userId }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Devices__WEBPACK_IMPORTED_MODULE_5__[\"default\"], { userId: userId }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Sshcertificates__WEBPACK_IMPORTED_MODULE_7__[\"default\"], { userId: userId }),\n this.state.locked ? null : react__WEBPACK_IMPORTED_MODULE_0__.createElement(_Audits__WEBPACK_IMPORTED_MODULE_6__[\"default\"], { userId: userId }));\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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a0NBQWtDO3dCQUMzQyxPQUFPLEVBQUUsRUFBRTt3QkFDWCxJQUFJLEVBQUUsK0RBQWU7cUJBQ3JCLENBQUMsQ0FBQztnQkFDSixDQUFDLEVBQ0QsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLEdBQ2xCLENBQUMsQ0FBQyxDQUFDLGlEQUFDLGlEQUFPLElBQ1osT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUMzQixPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQzNCLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFDbEQsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQ2pCO1lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaURBQUMsaURBQVEsSUFBQyxNQUFNLEVBQUUsTUFBTSxHQUFHO1lBQ3RELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlEQUFDLGdEQUFPLElBQUMsTUFBTSxFQUFFLE1BQU0sR0FBRztZQUNyRCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxpREFBQyx3REFBZSxJQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUc7WUFDN0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsaURBQUMsK0NBQU0sSUFBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLENBQy9DLENBQUM7SUFDVCxDQUFDO0NBQ0QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wcml0dW5sLXplcm8vLi9hcHAvY29tcG9uZW50cy9Vc2VyRGV0YWlsZWQudHN4PzEyOGEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1JlZmVyZW5jZXMuZC50c1wiLz5cbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFVzZXJBY3Rpb25zIGZyb20gJy4uL2FjdGlvbnMvVXNlckFjdGlvbnMnO1xuaW1wb3J0ICogYXMgVXNlclR5cGVzIGZyb20gJy4uL3R5cGVzL1VzZXJUeXBlcyc7XG5pbXBvcnQgKiBhcyBNaXNjVXRpbHMgZnJvbSAnLi4vdXRpbHMvTWlzY1V0aWxzJztcbmltcG9ydCBVc2VyU3RvcmUgZnJvbSAnLi4vc3RvcmVzL1VzZXJTdG9yZSc7XG5pbXBvcnQgU2Vzc2lvbnMgZnJvbSAnLi9TZXNzaW9ucyc7XG5pbXBvcnQgRGV2aWNlcyBmcm9tICcuL0RldmljZXMnO1xuaW1wb3J0IEF1ZGl0cyBmcm9tICcuL0F1ZGl0cyc7XG5pbXBvcnQgU3NoY2VydGlmaWNhdGVzIGZyb20gJy4vU3NoY2VydGlmaWNhdGVzJztcbmltcG9ydCBQYWdlIGZyb20gJy4vUGFnZSc7XG5pbXBvcnQgUGFnZUhlYWRlciBmcm9tICcuL1BhZ2VIZWFkZXInO1xuaW1wb3J0IFBhZ2VQYW5lbCBmcm9tICcuL1BhZ2VQYW5lbCc7XG5pbXBvcnQgUGFnZVNwbGl0IGZyb20gJy4vUGFnZVNwbGl0JztcbmltcG9ydCBQYWdlSW5mbyBmcm9tICcuL1BhZ2VJbmZvJztcbmltcG9ydCBQYWdlSW5wdXQgZnJvbSAnLi9QYWdlSW5wdXQnO1xuaW1wb3J0IFBhZ2VJbnB1dEJ1dHRvbiBmcm9tICcuL1BhZ2VJbnB1dEJ1dHRvbic7XG5pbXBvcnQgUGFnZVN3aXRjaCBmcm9tICcuL1BhZ2VTd2l0Y2gnO1xuaW1wb3J0IFBhZ2VTZWxlY3QgZnJvbSAnLi9QYWdlU2VsZWN0JztcbmltcG9ydCBQYWdlRGF0ZVRpbWUgZnJvbSAnLi9QYWdlRGF0ZVRpbWUnO1xuaW1wb3J0IFBhZ2VTYXZlIGZyb20gJy4vUGFnZVNhdmUnO1xuaW1wb3J0IFBhZ2VOZXcgZnJvbSAnLi9QYWdlTmV3JztcbmltcG9ydCBDb25maXJtQnV0dG9uIGZyb20gJy4vQ29uZmlybUJ1dHRvbic7XG5pbXBvcnQgSGVscCBmcm9tICcuL0hlbHAnO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuXHR1c2VySWQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTdGF0ZSB7XG5cdGNoYW5nZWQ6IGJvb2xlYW47XG5cdGRpc2FibGVkOiBib29sZWFuO1xuXHRsb2NrZWQ6IGJvb2xlYW47XG5cdG1lc3NhZ2U6IHN0cmluZztcblx0YWRkUm9sZTogc3RyaW5nO1xuXHR1c2VyOiBVc2VyVHlwZXMuVXNlcjtcbn1cblxuY29uc3QgY3NzID0ge1xuXHRoZWFkZXI6IHtcblx0XHRtYXJnaW5Ub3A6ICctMTlweCcsXG5cdH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllcyxcblx0aGVhZGluZzoge1xuXHRcdG1hcmdpbjogJzE5cHggMCAwIDAnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdGJ1dHRvbjoge1xuXHRcdG1hcmdpbjogJzEwcHggMCAwIDAnLFxuXHR9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMsXG5cdHJvbGU6IHtcblx0XHRtYXJnaW46ICc5cHggNXB4IDAgNXB4Jyxcblx0XHRoZWlnaHQ6ICcyMHB4Jyxcblx0fSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzLFxufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXNlckRldGFpbGVkIGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50PFByb3BzLCBTdGF0ZT4ge1xuXHRjb25zdHJ1Y3Rvcihwcm9wczogYW55LCBjb250ZXh0OiBhbnkpIHtcblx0XHRzdXBlcihwcm9wcywgY29udGV4dCk7XG5cdFx0dGhpcy5zdGF0ZSA9IHtcblx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0bG9ja2VkOiBmYWxzZSxcblx0XHRcdG1lc3NhZ2U6ICcnLFxuXHRcdFx0YWRkUm9sZTogJycsXG5cdFx0XHR1c2VyOiBVc2VyU3RvcmUudXNlck0sXG5cdFx0fTtcblx0fVxuXG5cdGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xuXHRcdFVzZXJTdG9yZS5hZGRDaGFuZ2VMaXN0ZW5lcih0aGlzLm9uQ2hhbmdlKTtcblx0XHRVc2VyQWN0aW9ucy5sb2FkKHRoaXMucHJvcHMudXNlcklkKTtcblx0fVxuXG5cdGNvbXBvbmVudFdpbGxVbm1vdW50KCk6IHZvaWQge1xuXHRcdFVzZXJTdG9yZS5yZW1vdmVDaGFuZ2VMaXN0ZW5lcih0aGlzLm9uQ2hhbmdlKTtcblx0XHRVc2VyQWN0aW9ucy51bmxvYWQoKTtcblx0fVxuXG5cdG9uQ2hhbmdlID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdHVzZXI6IFVzZXJTdG9yZS51c2VyTSxcblx0XHR9KTtcblx0fVxuXG5cdG9uU2F2ZSA9ICgpOiB2b2lkID0+IHtcblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRkaXNhYmxlZDogdHJ1ZSxcblx0XHR9KTtcblx0XHRVc2VyQWN0aW9ucy5jb21taXQodGhpcy5zdGF0ZS51c2VyKS50aGVuKCgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRtZXNzYWdlOiAnWW91ciBjaGFuZ2VzIGhhdmUgYmVlbiBzYXZlZCcsXG5cdFx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHR9KTtcblx0XHR9KS5jYXRjaCgoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0b25OZXcgPSAoKTogdm9pZCA9PiB7XG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0ZGlzYWJsZWQ6IHRydWUsXG5cdFx0fSk7XG5cdFx0VXNlckFjdGlvbnMuY3JlYXRlKHRoaXMuc3RhdGUudXNlcikudGhlbigoKTogdm9pZCA9PiB7XG5cdFx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0bWVzc2FnZTogJ1VzZXIgaGFzIGJlZW4gY3JlYXRlZCcsXG5cdFx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0XHRkaXNhYmxlZDogZmFsc2UsXG5cdFx0XHRcdGxvY2tlZDogdHJ1ZSxcblx0XHRcdH0pO1xuXHRcdH0pLmNhdGNoKCgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRzZXQgPSAobmFtZTogc3RyaW5nLCB2YWw6IGFueSk6IHZvaWQgPT4ge1xuXHRcdGxldCB1c2VyOiBhbnkgPSB7XG5cdFx0XHQuLi50aGlzLnN0YXRlLnVzZXIsXG5cdFx0fTtcblxuXHRcdHVzZXJbbmFtZV0gPSB2YWw7XG5cblx0XHR0aGlzLnNldFN0YXRlKHtcblx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRjaGFuZ2VkOiB0cnVlLFxuXHRcdFx0bWVzc2FnZTogJycsXG5cdFx0XHR1c2VyOiB1c2VyLFxuXHRcdH0pO1xuXHR9XG5cblx0b25BZGRSb2xlID0gKCk6IHZvaWQgPT4ge1xuXHRcdGxldCByb2xlcyA9IFtcblx0XHRcdC4uLnRoaXMuc3RhdGUudXNlci5yb2xlcyxcblx0XHRdO1xuXG5cdFx0aWYgKCF0aGlzLnN0YXRlLmFkZFJvbGUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAocm9sZXMuaW5kZXhPZih0aGlzLnN0YXRlLmFkZFJvbGUpID09PSAtMSkge1xuXHRcdFx0cm9sZXMucHVzaCh0aGlzLnN0YXRlLmFkZFJvbGUpO1xuXHRcdH1cblxuXHRcdHJvbGVzLnNvcnQoKTtcblxuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGNoYW5nZWQ6IHRydWUsXG5cdFx0XHRtZXNzYWdlOiAnJyxcblx0XHRcdGFkZFJvbGU6ICcnLFxuXHRcdFx0dXNlcjoge1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLnVzZXIsXG5cdFx0XHRcdHJvbGVzOiByb2xlcyxcblx0XHRcdH0sXG5cdFx0fSk7XG5cdH1cblxuXHRvblJlbW92ZVJvbGUgPSAocm9sZTogc3RyaW5nKTogdm9pZCA9PiB7XG5cdFx0bGV0IHJvbGVzID0gW1xuXHRcdFx0Li4udGhpcy5zdGF0ZS51c2VyLnJvbGVzLFxuXHRcdF07XG5cblx0XHRsZXQgaSA9IHJvbGVzLmluZGV4T2Yocm9sZSk7XG5cdFx0aWYgKGkgPT09IC0xKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0cm9sZXMuc3BsaWNlKGksIDEpO1xuXG5cdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0Y2hhbmdlZDogdHJ1ZSxcblx0XHRcdG1lc3NhZ2U6ICcnLFxuXHRcdFx0YWRkUm9sZTogJycsXG5cdFx0XHR1c2VyOiB7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUudXNlcixcblx0XHRcdFx0cm9sZXM6IHJvbGVzLFxuXHRcdFx0fSxcblx0XHR9KTtcblx0fVxuXG5cdG9uRGVsZXRlID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdGRpc2FibGVkOiB0cnVlLFxuXHRcdH0pO1xuXHRcdFVzZXJBY3Rpb25zLnJlbW92ZShbdGhpcy5wcm9wcy51c2VySWRdKS50aGVuKCgpOiB2b2lkID0+IHtcblx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHQuLi50aGlzLnN0YXRlLFxuXHRcdFx0XHRtZXNzYWdlOiAnVXNlciBoYXMgYmVlbiBkZWxldGVkJyxcblx0XHRcdFx0Y2hhbmdlZDogZmFsc2UsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdFx0bG9ja2VkOiB0cnVlLFxuXHRcdFx0fSk7XG5cdFx0fSkuY2F0Y2goKCk6IHZvaWQgPT4ge1xuXHRcdFx0dGhpcy5zZXRTdGF0ZSh7XG5cdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdGRpc2FibGVkOiBmYWxzZSxcblx0XHRcdH0pO1xuXHRcdH0pO1xuXHR9XG5cblx0cmVuZGVyKCk6IEpTWC5FbGVtZW50IHtcblx0XHRsZXQgdXNlcklkID0gdGhpcy5wcm9wcy51c2VySWQ7XG5cdFx0bGV0IHVzZXIgPSB0aGlzLnN0YXRlLnVzZXI7XG5cdFx0aWYgKCF1c2VyKSB7XG5cdFx0XHRyZXR1cm4gPGRpdi8+O1xuXHRcdH1cblxuXHRcdGxldCByb2xlczogSlNYLkVsZW1lbnRbXSA9IFtdO1xuXHRcdGZvciAobGV0IHJvbGUgb2YgdXNlci5yb2xlcykge1xuXHRcdFx0cm9sZXMucHVzaChcblx0XHRcdFx0PGRpdlxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImJwMy10YWcgYnAzLXRhZy1yZW1vdmFibGUgYnAzLWludGVudC1wcmltYXJ5XCJcblx0XHRcdFx0XHRzdHlsZT17Y3NzLnJvbGV9XG5cdFx0XHRcdFx0a2V5PXtyb2xlfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdFx0e3JvbGV9XG5cdFx0XHRcdFx0PGJ1dHRvblxuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnAzLXRhZy1yZW1vdmVcIlxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRcdFx0b25Nb3VzZVVwPXsoKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMub25SZW1vdmVSb2xlKHJvbGUpO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L2Rpdj4sXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHJldHVybiA8UGFnZT5cblx0XHRcdDxQYWdlSGVhZGVyPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImxheW91dCBob3Jpem9udGFsIHdyYXBcIiBzdHlsZT17Y3NzLmhlYWRlcn0+XG5cdFx0XHRcdFx0PGgyIHN0eWxlPXtjc3MuaGVhZGluZ30+e3VzZXJJZCA/ICdVc2VyIEluZm8nIDogJ05ldyBVc2VyJ308L2gyPlxuXHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiZmxleFwiLz5cblx0XHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdFx0PENvbmZpcm1CdXR0b25cblx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiYnAzLW1pbmltYWwgYnAzLWludGVudC1kYW5nZXIgYnAzLWljb24tdHJhc2hcIlxuXHRcdFx0XHRcdFx0XHRzdHlsZT17Y3NzLmJ1dHRvbn1cblx0XHRcdFx0XHRcdFx0c2FmZT17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0cHJvZ3Jlc3NDbGFzc05hbWU9XCJicDMtaW50ZW50LWRhbmdlclwiXG5cdFx0XHRcdFx0XHRcdGRpYWxvZ0NsYXNzTmFtZT1cImJwMy1pbnRlbnQtZGFuZ2VyIGJwMy1pY29uLWRlbGV0ZVwiXG5cdFx0XHRcdFx0XHRcdGRpYWxvZ0xhYmVsPVwiRGVsZXRlIFVzZXJcIlxuXHRcdFx0XHRcdFx0XHRjb25maXJtTXNnPVwiUGVybWFuZW50bHkgZGVsZXRlIHRoaXMgdXNlclwiXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1JbnB1dD17dHJ1ZX1cblx0XHRcdFx0XHRcdFx0aXRlbXM9e1t1c2VyLnVzZXJuYW1lXX1cblx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWR9XG5cdFx0XHRcdFx0XHRcdG9uQ29uZmlybT17dGhpcy5vbkRlbGV0ZX1cblx0XHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PC9kaXY+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9QYWdlSGVhZGVyPlxuXHRcdFx0PFBhZ2VTcGxpdD5cblx0XHRcdFx0PFBhZ2VQYW5lbCBjbGFzc05hbWU9XCJsYXlvdXQgdmVydGljYWxcIj5cblx0XHRcdFx0XHQ8UGFnZUlucHV0XG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIlVzZXJuYW1lXCJcblx0XHRcdFx0XHRcdGhlbHA9XCJVc2VybmFtZSwgaWYgdXNpbmcgc2luZ2xlIHNpZ24tb24gdXNlcm5hbWUgbXVzdCBtYXRjaFwiXG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIkVudGVyIHVzZXJuYW1lXCJcblx0XHRcdFx0XHRcdHZhbHVlPXt1c2VyLnVzZXJuYW1lfVxuXHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWwpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ3VzZXJuYW1lJywgdmFsKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZUlucHV0XG5cdFx0XHRcdFx0XHRoaWRkZW49e3VzZXIudHlwZSAhPT0gJ2xvY2FsJ31cblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0XHRcdGxhYmVsPVwiUGFzc3dvcmRcIlxuXHRcdFx0XHRcdFx0aGVscD1cIlBhc3N3b3JkLCBsZWF2ZSBibGFuayB0byBrZWVwIGN1cnJlbnQgcGFzc3dvcmRcIlxuXHRcdFx0XHRcdFx0dHlwZT1cInBhc3N3b3JkXCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiQ2hhbmdlIHBhc3N3b3JkXCJcblx0XHRcdFx0XHRcdHZhbHVlPXt1c2VyLnBhc3N3b3JkfVxuXHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWwpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ3Bhc3N3b3JkJywgdmFsKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZUlucHV0XG5cdFx0XHRcdFx0XHRoaWRkZW49e3VzZXIudHlwZSAhPT0gJ2FwaSd9XG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRyZWFkT25seT17dHJ1ZX1cblx0XHRcdFx0XHRcdGF1dG9TZWxlY3Q9e3RydWV9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIlRva2VuXCJcblx0XHRcdFx0XHRcdGhlbHA9XCJBUEkgdG9rZW5cIlxuXHRcdFx0XHRcdFx0dHlwZT1cInRleHRcIlxuXHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJTYXZlIHRvIGdlbmVyYXRlIHRva2VuXCJcblx0XHRcdFx0XHRcdHZhbHVlPXt1c2VyLnRva2VufVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dFxuXHRcdFx0XHRcdFx0aGlkZGVuPXt1c2VyLnR5cGUgIT09ICdhcGknIHx8ICF1c2VyLnRva2VuIHx8ICF1c2VyLnNlY3JldH1cblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0XHRcdHJlYWRPbmx5PXt0cnVlfVxuXHRcdFx0XHRcdFx0YXV0b1NlbGVjdD17dHJ1ZX1cblx0XHRcdFx0XHRcdGxhYmVsPVwiU2VjcmV0XCJcblx0XHRcdFx0XHRcdGhlbHA9XCJBUEkgc2VjcmV0LCB3aWxsIG9ubHkgYmUgc2hvd24gb25jZVwiXG5cdFx0XHRcdFx0XHR0eXBlPVwidGV4dFwiXG5cdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIlwiXG5cdFx0XHRcdFx0XHR2YWx1ZT17dXNlci5zZWNyZXR9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZVN3aXRjaFxuXHRcdFx0XHRcdFx0aGlkZGVuPXt1c2VyLnR5cGUgIT09ICdhcGknIHx8ICF1c2VyLnRva2VuIHx8ICEhdXNlci5zZWNyZXR9XG5cdFx0XHRcdFx0XHRsYWJlbD1cIkdlbmVyYXRlIG5ldyB0b2tlbiBhbmQgc2VjcmV0XCJcblx0XHRcdFx0XHRcdGhlbHA9XCJFbmFibGUgdG8gZ2VuZXJhdGUgYSBuZXcgdG9rZW4gYW5kIHNlY3JldCBvbiBzYXZlLiBTZWNyZXQgY2FuIG9ubHkgYmUgc2hvd24gYnkgZ2VuZXJhdGluZyBuZXcgY3JlZGVudGlhbHMuXCJcblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0XHRcdGNoZWNrZWQ9e3VzZXIuZ2VuZXJhdGVfc2VjcmV0fVxuXHRcdFx0XHRcdFx0b25Ub2dnbGU9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ2dlbmVyYXRlX3NlY3JldCcsICF1c2VyLmdlbmVyYXRlX3NlY3JldCk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdFx0PFBhZ2VTZWxlY3Rcblx0XHRcdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmxvY2tlZH1cblx0XHRcdFx0XHRcdGxhYmVsPVwiVHlwZVwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiQSBsb2NhbCB1c2VyIGlzIGEgdXNlciB0aGF0IGlzIGNyZWF0ZWQgb24gdGhlIFByaXR1bmwgWmVybyBkYXRhYmFzZSB0aGF0IGhhcyBhIHVzZXJuYW1lIGFuZCBwYXNzd29yZC4gVGhlIG90aGVyIHVzZXIgdHlwZXMgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIHVzZXJzIGZvciBzaW5nbGUgc2lnbi1vbiBzZXJ2aWNlcy4gR2VuZXJhbGx5IHNpbmdsZSBzaWduLW9uIHVzZXJzIHdpbGwgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IHdoZW4gdGhlIHVzZXIgYXV0aGVudGljYXRlcyBmb3IgdGhlIGZpcnN0IHRpbWUuIEl0IGNhbiBzb21ldGltZXMgYmUgZGVzaXJlZCB0byBtYW5hdWxseSBjcmVhdGUgYSBzaW5nbGUgc2lnbi1vbiB1c2VyIHRvIHByb3ZpZGUgcm9sZXMgaW4gYWR2YW5jZWQgb2YgdGhlIGZpcnN0IGxvZ2luLlwiXG5cdFx0XHRcdFx0XHR2YWx1ZT17dXNlci50eXBlfVxuXHRcdFx0XHRcdFx0b25DaGFuZ2U9eyh2YWwpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ3R5cGUnLCB2YWwpO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQ+XG5cdFx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwibG9jYWxcIj5Mb2NhbDwvb3B0aW9uPlxuXHRcdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cImF1dGh6ZXJvXCI+QXV0aDA8L29wdGlvbj5cblx0XHRcdFx0XHRcdDxvcHRpb24gdmFsdWU9XCJhenVyZVwiPkF6dXJlPC9vcHRpb24+XG5cdFx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwiZ29vZ2xlXCI+R29vZ2xlPC9vcHRpb24+XG5cdFx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwib25lbG9naW5cIj5PbmVMb2dpbjwvb3B0aW9uPlxuXHRcdFx0XHRcdFx0PG9wdGlvbiB2YWx1ZT1cIm9rdGFcIj5Pa3RhPC9vcHRpb24+XG5cdFx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwianVtcGNsb3VkXCI+SnVtcENsb3VkPC9vcHRpb24+XG5cdFx0XHRcdFx0XHQ8b3B0aW9uIHZhbHVlPVwiYXBpXCI+QVBJPC9vcHRpb24+XG5cdFx0XHRcdFx0PC9QYWdlU2VsZWN0PlxuXHRcdFx0XHRcdDxsYWJlbCBjbGFzc05hbWU9XCJicDMtbGFiZWxcIj5cblx0XHRcdFx0XHRcdFJvbGVzXG5cdFx0XHRcdFx0XHQ8SGVscFxuXHRcdFx0XHRcdFx0XHR0aXRsZT1cIlJvbGVzXCJcblx0XHRcdFx0XHRcdFx0Y29udGVudD1cIlVzZXIgcm9sZXMgd2lsbCBiZSB1c2VkIHRvIG1hdGNoIHdpdGggc2VydmljZSByb2xlcy4gQSB1c2VyIG11c3QgaGF2ZSBhIG1hdGNoaW5nIHJvbGUgdG8gYWNjZXNzIGEgc2VydmljZS5cIlxuXHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0XHRcdHtyb2xlc31cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvbGFiZWw+XG5cdFx0XHRcdFx0PFBhZ2VJbnB1dEJ1dHRvblxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRcdFx0YnV0dG9uQ2xhc3M9XCJicDMtaW50ZW50LXN1Y2Nlc3MgYnAzLWljb24tYWRkXCJcblx0XHRcdFx0XHRcdGxhYmVsPVwiQWRkXCJcblx0XHRcdFx0XHRcdHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiQWRkIHJvbGVcIlxuXHRcdFx0XHRcdFx0dmFsdWU9e3RoaXMuc3RhdGUuYWRkUm9sZX1cblx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsodmFsKTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0XHRcdC4uLnRoaXMuc3RhdGUsXG5cdFx0XHRcdFx0XHRcdFx0YWRkUm9sZTogdmFsLFxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0XHRvblN1Ym1pdD17dGhpcy5vbkFkZFJvbGV9XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZVN3aXRjaFxuXHRcdFx0XHRcdFx0bGFiZWw9XCJBZG1pbmlzdHJhdG9yXCJcblx0XHRcdFx0XHRcdGhlbHA9XCJFbmFibGUgdG8gZ2l2ZSB1c2VyIGFkbWluaXN0cmF0b3IgYWNjZXNzIHRvIHRoZSBtYW5hZ2VtZW50IGNvbnNvbGVcIlxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRcdFx0Y2hlY2tlZD17dXNlci5hZG1pbmlzdHJhdG9yID09PSAnc3VwZXInfVxuXHRcdFx0XHRcdFx0b25Ub2dnbGU9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuc3RhdGUudXNlci5hZG1pbmlzdHJhdG9yID09PSAnc3VwZXInKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ2FkbWluaXN0cmF0b3InLCAnJyk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ2FkbWluaXN0cmF0b3InLCAnc3VwZXInKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHRcdDxQYWdlU3dpdGNoXG5cdFx0XHRcdFx0XHRsYWJlbD1cIkRpc2FibGVkXCJcblx0XHRcdFx0XHRcdGhlbHA9XCJEaXNhYmxlcyB0aGUgdXNlciBlbmRpbmcgYWxsIGFjdGl2ZSBzZXNzaW9ucyBhbmQgcHJldmVudHMgbmV3IGF1dGhlbnRpY2F0aW9uc1wiXG5cdFx0XHRcdFx0XHRkaXNhYmxlZD17dGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRjaGVja2VkPXt1c2VyLmRpc2FibGVkfVxuXHRcdFx0XHRcdFx0b25Ub2dnbGU9eygpOiB2b2lkID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZXQoJ2Rpc2FibGVkJywgIXRoaXMuc3RhdGUudXNlci5kaXNhYmxlZCk7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvUGFnZVBhbmVsPlxuXHRcdFx0XHQ8UGFnZVBhbmVsPlxuXHRcdFx0XHRcdDxQYWdlSW5mb1xuXHRcdFx0XHRcdFx0ZmllbGRzPXtbXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogJ0lEJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdXNlci5pZCB8fCAnTm9uZScsXG5cdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0XHRsYWJlbDogJ0xhc3QgQWN0aXZlJyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogTWlzY1V0aWxzLmZvcm1hdERhdGUodXNlci5sYXN0X2FjdGl2ZSkgfHwgJ0luYWN0aXZlJyxcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdF19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHQ8UGFnZURhdGVUaW1lXG5cdFx0XHRcdFx0XHRsYWJlbD1cIkFjdGl2ZSBVbnRpbFwiXG5cdFx0XHRcdFx0XHRoZWxwPVwiU2V0IHRoaXMgdG8gc2NoZWR1bGUgdGhlIHVzZXIgdG8gYmUgZGlzYWJsZWQgYXQgdGhlIHNldCBkYXRlIGFuZCB0aW1lLiBUaGlzIGlzIHVzZWZ1bCB0byBnaXZlIGEgdXNlciB0ZW1wb3JhcnkgYWNjZXNzIHRvIGEgc2VydmljZS5cIlxuXHRcdFx0XHRcdFx0dmFsdWU9e3VzZXIuYWN0aXZlX3VudGlsfVxuXHRcdFx0XHRcdFx0ZGlzYWJsZWQ9e3VzZXIuZGlzYWJsZWQgfHwgdGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdFx0XHRvbkNoYW5nZT17KHZhbCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNldCgnYWN0aXZlX3VudGlsJywgdmFsKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0Lz5cblx0XHRcdFx0PC9QYWdlUGFuZWw+XG5cdFx0XHQ8L1BhZ2VTcGxpdD5cblx0XHRcdHt1c2VySWQgPyA8UGFnZVNhdmVcblx0XHRcdFx0bWVzc2FnZT17dGhpcy5zdGF0ZS5tZXNzYWdlfVxuXHRcdFx0XHRjaGFuZ2VkPXt0aGlzLnN0YXRlLmNoYW5nZWR9XG5cdFx0XHRcdGRpc2FibGVkPXt0aGlzLnN0YXRlLmRpc2FibGVkIHx8IHRoaXMuc3RhdGUubG9ja2VkfVxuXHRcdFx0XHRvbkNhbmNlbD17KCk6IHZvaWQgPT4ge1xuXHRcdFx0XHRcdHRoaXMuc2V0U3RhdGUoe1xuXHRcdFx0XHRcdFx0Li4udGhpcy5zdGF0ZSxcblx0XHRcdFx0XHRcdGNoYW5nZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdFx0bWVzc2FnZTogJ1lvdXIgY2hhbmdlcyBoYXZlIGJlZW4gZGlzY2FyZGVkJyxcblx0XHRcdFx0XHRcdGFkZFJvbGU6ICcnLFxuXHRcdFx0XHRcdFx0dXNlcjogVXNlclN0b3JlLnVzZXJNLFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9fVxuXHRcdFx0XHRvblNhdmU9e3RoaXMub25TYXZlfVxuXHRcdFx0Lz4gOiA8UGFnZU5ld1xuXHRcdFx0XHRtZXNzYWdlPXt0aGlzLnN0YXRlLm1lc3NhZ2V9XG5cdFx0XHRcdGNoYW5nZWQ9e3RoaXMuc3RhdGUuY2hhbmdlZH1cblx0XHRcdFx0ZGlzYWJsZWQ9e3RoaXMuc3RhdGUuZGlzYWJsZWQgfHwgdGhpcy5zdGF0ZS5sb2NrZWR9XG5cdFx0XHRcdG9uU2F2ZT17dGhpcy5vbk5ld31cblx0XHRcdC8+fVxuXHRcdFx0e3RoaXMuc3RhdGUubG9ja2VkID8gbnVsbCA6IDxTZXNzaW9ucyB1c2VySWQ9e3VzZXJJZH0vPn1cblx0XHRcdHt0aGlzLnN0YXRlLmxvY2tlZCA/IG51bGwgOiA8RGV2aWNlcyB1c2VySWQ9e3VzZXJJZH0vPn1cblx0XHRcdHt0aGlzLnN0YXRlLmxvY2tlZCA/IG51bGwgOiA8U3NoY2VydGlmaWNhdGVzIHVzZXJJZD17dXNlcklkfS8+fVxuXHRcdFx0e3RoaXMuc3RhdGUubG9ja2VkID8gbnVsbCA6IDxBdWRpdHMgdXNlcklkPXt1c2VySWR9Lz59XG5cdFx0PC9QYWdlPjtcblx0fVxufVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./app/components/UserDetailed.js\n"); /***/ }), @@ -1813,7 +1813,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SYNC\": () => (/* binding */ SYNC),\n/* harmony export */ \"SYNC_NAMES\": () => (/* binding */ SYNC_NAMES),\n/* harmony export */ \"TRAVERSE\": () => (/* binding */ TRAVERSE),\n/* harmony export */ \"FILTER\": () => (/* binding */ FILTER),\n/* harmony export */ \"CHANGE\": () => (/* binding */ CHANGE)\n/* harmony export */ });\nconst SYNC = 'endpoint.sync';\nconst SYNC_NAMES = 'endpoint.sync_names';\nconst TRAVERSE = 'endpoint.traverse';\nconst FILTER = 'endpoint.filter';\nconst CHANGE = 'endpoint.change';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hcHAvdHlwZXMvRW5kcG9pbnRUeXBlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUdPLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQztBQUM3QixNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQztBQUN6QyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQztBQUNyQyxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQztBQUNqQyxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL3ByaXR1bmwtemVyby8uL2FwcC90eXBlcy9FbmRwb2ludFR5cGVzLnRzPzVlNWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1JlZmVyZW5jZXMuZC50c1wiLz5cbmltcG9ydCAqIGFzIENoYXJ0VHlwZXMgZnJvbSAnLi4vdHlwZXMvQ2hhcnRUeXBlcyc7XG5cbmV4cG9ydCBjb25zdCBTWU5DID0gJ2VuZHBvaW50LnN5bmMnO1xuZXhwb3J0IGNvbnN0IFNZTkNfTkFNRVMgPSAnZW5kcG9pbnQuc3luY19uYW1lcyc7XG5leHBvcnQgY29uc3QgVFJBVkVSU0UgPSAnZW5kcG9pbnQudHJhdmVyc2UnO1xuZXhwb3J0IGNvbnN0IEZJTFRFUiA9ICdlbmRwb2ludC5maWx0ZXInO1xuZXhwb3J0IGNvbnN0IENIQU5HRSA9ICdlbmRwb2ludC5jaGFuZ2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50IHtcblx0aWQ6IHN0cmluZztcblx0bmFtZT86IHN0cmluZztcblx0cm9sZXM/OiBzdHJpbmdbXTtcblx0Y2xpZW50X2tleT86IENsaWVudEtleTtcblx0aGFzX2NsaWVudF9rZXk/OiBib29sZWFuO1xuXHRyZXNldF9jbGllbnRfa2V5PzogYm9vbGVhbjtcblx0ZGF0YT86IEVuZHBvaW50RGF0YTtcblx0aW5mbz86IEVuZHBvaW50SW5mbztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludEluZm8ge1xuXHRhbGVydHM/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcblx0Y2hlY2tzPzoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW5kcG9pbnREYXRhIHtcblx0aG9zdG5hbWU/OiBzdHJpbmc7XG5cdHVwdGltZT86IG51bWJlcjtcblx0cGxhdGZvcm0/OiBzdHJpbmc7XG5cdHBhY2thZ2VfdXBkYXRlcz86IG51bWJlcjtcblx0dmlydHVhbGl6YXRpb24/OiBzdHJpbmc7XG5cdGNwdV9jb3Jlcz86IG51bWJlcjtcblx0bWVtX3RvdGFsPzogbnVtYmVyO1xuXHRzd2FwX3RvdGFsPzogbnVtYmVyO1xuXHRodWdlX3RvdGFsPzogbnVtYmVyO1xuXHRtZF9zdGF0PzogTWRTdGF0ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1kU3RhdGUge1xuXHRuYW1lPzogc3RyaW5nO1xuXHRzdGF0ZT86IHN0cmluZztcblx0bGV2ZWw/OiBzdHJpbmc7XG5cdGZhaWxlZD86IG51bWJlcjtcblx0c3BhcmU/OiBudW1iZXI7XG5cdHRvdGFsPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBMb2dEYXRhID0gc3RyaW5nW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpZW50S2V5IHtcblx0c2VjcmV0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlciB7XG5cdGlkPzogc3RyaW5nO1xuXHRuYW1lPzogc3RyaW5nO1xuXHRyb2xlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBFbmRwb2ludHMgPSBFbmRwb2ludFtdO1xuXG5leHBvcnQgdHlwZSBFbmRwb2ludFJvID0gUmVhZG9ubHk8RW5kcG9pbnQ+O1xuZXhwb3J0IHR5cGUgRW5kcG9pbnRzUm8gPSBSZWFkb25seUFycmF5PEVuZHBvaW50Um8+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50RGlzcGF0Y2gge1xuXHR0eXBlOiBzdHJpbmc7XG5cdGRhdGE/OiB7XG5cdFx0aWQ/OiBzdHJpbmc7XG5cdFx0ZW5kcG9pbnQ/OiBFbmRwb2ludDtcblx0XHRlbmRwb2ludHM/OiBFbmRwb2ludHM7XG5cdFx0cGFnZT86IG51bWJlcjtcblx0XHRwYWdlQ291bnQ/OiBudW1iZXI7XG5cdFx0ZmlsdGVyPzogRmlsdGVyO1xuXHRcdGNvdW50PzogbnVtYmVyO1xuXHR9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN5c3RlbUNoYXJ0IHtcblx0Y3B1X3VzYWdlPzogQ2hhcnRUeXBlcy5Qb2ludHM7XG5cdG1lbV91c2FnZT86IENoYXJ0VHlwZXMuUG9pbnRzO1xuXHRzd2FwX3VzYWdlPzogQ2hhcnRUeXBlcy5Qb2ludHM7XG5cdGh1Z2VfdXNhZ2U/OiBDaGFydFR5cGVzLlBvaW50cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2FkQ2hhcnQge1xuXHRsb2FkMT86IENoYXJ0VHlwZXMuUG9pbnRzO1xuXHRsb2FkNT86IENoYXJ0VHlwZXMuUG9pbnRzO1xuXHRsb2FkMTU/OiBDaGFydFR5cGVzLlBvaW50cztcbn1cblxuZXhwb3J0IHR5cGUgRGlza0NoYXJ0ID0ge1trZXk6IHN0cmluZ106IENoYXJ0VHlwZXMuUG9pbnRzfTtcblxuZXhwb3J0IHR5cGUgRGlza0lvQ2hhcnQgPSB7W2tleTogc3RyaW5nXTogQ2hhcnRUeXBlcy5Qb2ludHN9O1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrQ2hhcnQgPSB7W2tleTogc3RyaW5nXTogQ2hhcnRUeXBlcy5Qb2ludHN9O1xuXG5leHBvcnQgdHlwZSBDaGVja0NoYXJ0ID0ge1trZXk6IHN0cmluZ106IENoYXJ0VHlwZXMuUG9pbnRzfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/types/EndpointTypes.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"SYNC\": () => (/* binding */ SYNC),\n/* harmony export */ \"SYNC_NAMES\": () => (/* binding */ SYNC_NAMES),\n/* harmony export */ \"TRAVERSE\": () => (/* binding */ TRAVERSE),\n/* harmony export */ \"FILTER\": () => (/* binding */ FILTER),\n/* harmony export */ \"CHANGE\": () => (/* binding */ CHANGE)\n/* harmony export */ });\nconst SYNC = 'endpoint.sync';\nconst SYNC_NAMES = 'endpoint.sync_names';\nconst TRAVERSE = 'endpoint.traverse';\nconst FILTER = 'endpoint.filter';\nconst CHANGE = 'endpoint.change';\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9hcHAvdHlwZXMvRW5kcG9pbnRUeXBlcy5qcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUdPLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQztBQUM3QixNQUFNLFVBQVUsR0FBRyxxQkFBcUIsQ0FBQztBQUN6QyxNQUFNLFFBQVEsR0FBRyxtQkFBbUIsQ0FBQztBQUNyQyxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQztBQUNqQyxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL3ByaXR1bmwtemVyby8uL2FwcC90eXBlcy9FbmRwb2ludFR5cGVzLnRzPzVlNWUiXSwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgcGF0aD1cIi4uL1JlZmVyZW5jZXMuZC50c1wiLz5cbmltcG9ydCAqIGFzIENoYXJ0VHlwZXMgZnJvbSAnLi4vdHlwZXMvQ2hhcnRUeXBlcyc7XG5cbmV4cG9ydCBjb25zdCBTWU5DID0gJ2VuZHBvaW50LnN5bmMnO1xuZXhwb3J0IGNvbnN0IFNZTkNfTkFNRVMgPSAnZW5kcG9pbnQuc3luY19uYW1lcyc7XG5leHBvcnQgY29uc3QgVFJBVkVSU0UgPSAnZW5kcG9pbnQudHJhdmVyc2UnO1xuZXhwb3J0IGNvbnN0IEZJTFRFUiA9ICdlbmRwb2ludC5maWx0ZXInO1xuZXhwb3J0IGNvbnN0IENIQU5HRSA9ICdlbmRwb2ludC5jaGFuZ2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50IHtcblx0aWQ6IHN0cmluZztcblx0bmFtZT86IHN0cmluZztcblx0cm9sZXM/OiBzdHJpbmdbXTtcblx0Y2xpZW50X2tleT86IENsaWVudEtleTtcblx0aGFzX2NsaWVudF9rZXk/OiBib29sZWFuO1xuXHRyZXNldF9jbGllbnRfa2V5PzogYm9vbGVhbjtcblx0ZGF0YT86IEVuZHBvaW50RGF0YTtcblx0aW5mbz86IEVuZHBvaW50SW5mbztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludEluZm8ge1xuXHRhbGVydHM/OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcblx0Y2hlY2tzPzoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW5kcG9pbnREYXRhIHtcblx0dmVyc2lvbj86IHN0cmluZztcblx0aG9zdG5hbWU/OiBzdHJpbmc7XG5cdHVwdGltZT86IG51bWJlcjtcblx0cGxhdGZvcm0/OiBzdHJpbmc7XG5cdHBhY2thZ2VfdXBkYXRlcz86IG51bWJlcjtcblx0dmlydHVhbGl6YXRpb24/OiBzdHJpbmc7XG5cdGNwdV9jb3Jlcz86IG51bWJlcjtcblx0bWVtX3RvdGFsPzogbnVtYmVyO1xuXHRzd2FwX3RvdGFsPzogbnVtYmVyO1xuXHRodWdlX3RvdGFsPzogbnVtYmVyO1xuXHRtZF9zdGF0PzogTWRTdGF0ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1kU3RhdGUge1xuXHRuYW1lPzogc3RyaW5nO1xuXHRzdGF0ZT86IHN0cmluZztcblx0bGV2ZWw/OiBzdHJpbmc7XG5cdGZhaWxlZD86IG51bWJlcjtcblx0c3BhcmU/OiBudW1iZXI7XG5cdHRvdGFsPzogbnVtYmVyO1xufVxuXG5leHBvcnQgdHlwZSBMb2dEYXRhID0gc3RyaW5nW107XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xpZW50S2V5IHtcblx0c2VjcmV0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlciB7XG5cdGlkPzogc3RyaW5nO1xuXHRuYW1lPzogc3RyaW5nO1xuXHRyb2xlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBFbmRwb2ludHMgPSBFbmRwb2ludFtdO1xuXG5leHBvcnQgdHlwZSBFbmRwb2ludFJvID0gUmVhZG9ubHk8RW5kcG9pbnQ+O1xuZXhwb3J0IHR5cGUgRW5kcG9pbnRzUm8gPSBSZWFkb25seUFycmF5PEVuZHBvaW50Um8+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVuZHBvaW50RGlzcGF0Y2gge1xuXHR0eXBlOiBzdHJpbmc7XG5cdGRhdGE/OiB7XG5cdFx0aWQ/OiBzdHJpbmc7XG5cdFx0ZW5kcG9pbnQ/OiBFbmRwb2ludDtcblx0XHRlbmRwb2ludHM/OiBFbmRwb2ludHM7XG5cdFx0cGFnZT86IG51bWJlcjtcblx0XHRwYWdlQ291bnQ/OiBudW1iZXI7XG5cdFx0ZmlsdGVyPzogRmlsdGVyO1xuXHRcdGNvdW50PzogbnVtYmVyO1xuXHR9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN5c3RlbUNoYXJ0IHtcblx0Y3B1X3VzYWdlPzogQ2hhcnRUeXBlcy5Qb2ludHM7XG5cdG1lbV91c2FnZT86IENoYXJ0VHlwZXMuUG9pbnRzO1xuXHRzd2FwX3VzYWdlPzogQ2hhcnRUeXBlcy5Qb2ludHM7XG5cdGh1Z2VfdXNhZ2U/OiBDaGFydFR5cGVzLlBvaW50cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb2FkQ2hhcnQge1xuXHRsb2FkMT86IENoYXJ0VHlwZXMuUG9pbnRzO1xuXHRsb2FkNT86IENoYXJ0VHlwZXMuUG9pbnRzO1xuXHRsb2FkMTU/OiBDaGFydFR5cGVzLlBvaW50cztcbn1cblxuZXhwb3J0IHR5cGUgRGlza0NoYXJ0ID0ge1trZXk6IHN0cmluZ106IENoYXJ0VHlwZXMuUG9pbnRzfTtcblxuZXhwb3J0IHR5cGUgRGlza0lvQ2hhcnQgPSB7W2tleTogc3RyaW5nXTogQ2hhcnRUeXBlcy5Qb2ludHN9O1xuXG5leHBvcnQgdHlwZSBOZXR3b3JrQ2hhcnQgPSB7W2tleTogc3RyaW5nXTogQ2hhcnRUeXBlcy5Qb2ludHN9O1xuXG5leHBvcnQgdHlwZSBDaGVja0NoYXJ0ID0ge1trZXk6IHN0cmluZ106IENoYXJ0VHlwZXMuUG9pbnRzfTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./app/types/EndpointTypes.js\n"); /***/ }), diff --git a/www/dist/index.html b/www/dist/index.html index ce23d836..5ea52242 100644 --- a/www/dist/index.html +++ b/www/dist/index.html @@ -20,6 +20,6 @@
- + diff --git a/www/dist/static/app.c2b686.js b/www/dist/static/app.fc66d6.js similarity index 85% rename from www/dist/static/app.c2b686.js rename to www/dist/static/app.fc66d6.js index a584f00c..f640a38e 100644 --- a/www/dist/static/app.c2b686.js +++ b/www/dist/static/app.fc66d6.js @@ -345,5 +345,5 @@ object-assign * (c) 2021 Chart.js Contributors * Released under the MIT License */ -class{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(e,t,n,i){const s=t.listeners[i],r=t.duration;s.forEach((i=>i({chart:e,initial:t.initial,numSteps:r,currentStep:Math.min(n-t.start,r)})))}_refresh(){this._request||(this._running=!0,this._request=i.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(e=Date.now()){let t=0;this._charts.forEach(((n,i)=>{if(!n.running||!n.items.length)return;const s=n.items;let r,a=s.length-1,o=!1;for(;a>=0;--a)r=s[a],r._active?(r._total>n.duration&&(n.duration=r._total),r.tick(e),o=!0):(s[a]=s[s.length-1],s.pop());o&&(i.draw(),this._notify(i,n,e,"progress")),s.length||(n.running=!1,this._notify(i,n,e,"complete"),n.initial=!1),t+=s.length})),this._lastDate=e,0===t&&(this._running=!1)}_getAnims(e){const t=this._charts;let n=t.get(e);return n||(n={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},t.set(e,n)),n}listen(e,t,n){this._getAnims(e).listeners[t].push(n)}add(e,t){t&&t.length&&this._getAnims(e).items.push(...t)}has(e){return this._getAnims(e).items.length>0}start(e){const t=this._charts.get(e);t&&(t.running=!0,t.start=Date.now(),t.duration=t.items.reduce(((e,t)=>Math.max(e,t._duration)),0),this._refresh())}running(e){if(!this._running)return!1;const t=this._charts.get(e);return!!(t&&t.running&&t.items.length)}stop(e){const t=this._charts.get(e);if(!t||!t.items.length)return;const n=t.items;let i=n.length-1;for(;i>=0;--i)n[i].cancel();t.items=[],this._notify(e,t,Date.now(),"complete")}remove(e){return this._charts.delete(e)}};const fn="transparent",gn={boolean:(e,t,n)=>n>.5?t:e,color(e,t,n){const i=Ve(e||fn),s=i.valid&&Ve(t||fn);return s&&s.valid?s.mix(i,n).hexString():t},number:(e,t,n)=>e+(t-e)*n};class vn{constructor(e,t,n,i){const s=t[n];i=ut([e.to,i,s,e.from]);const r=ut([e.from,s,i]);this._active=!0,this._fn=e.fn||gn[e.type||typeof r],this._easing=se[e.easing]||se.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=t,this._prop=n,this._from=r,this._to=i,this._promises=void 0}active(){return this._active}update(e,t,n){if(this._active){this._notify(!1);const i=this._target[this._prop],s=n-this._start,r=this._duration-s;this._start=n,this._duration=Math.floor(Math.max(r,e.duration)),this._total+=s,this._loop=!!e.loop,this._to=ut([e.to,t,i,e.from]),this._from=ut([e.from,i,t])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){const t=e-this._start,n=this._duration,i=this._prop,s=this._from,r=this._loop,a=this._to;let o;if(this._active=s!==a&&(r||t1?2-o:o,o=this._easing(Math.min(1,Math.max(0,o))),this._target[i]=this._fn(s,a,o))}wait(){const e=this._promises||(this._promises=[]);return new Promise(((t,n)=>{e.push({res:t,rej:n})}))}_notify(e){const t=e?"res":"rej",n=this._promises||[];for(let e=0;e"onProgress"!==e&&"onComplete"!==e&&"fn"!==e}),Be.set("animations",{colors:{type:"color",properties:["color","borderColor","backgroundColor"]},numbers:{type:"number",properties:["x","y","borderWidth","radius","tension"]}}),Be.describe("animations",{_fallback:"animation"}),Be.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:e=>0|e}}}});class bn{constructor(e,t){this._chart=e,this._properties=new Map,this.configure(t)}configure(e){if(!d(e))return;const t=this._properties;Object.getOwnPropertyNames(e).forEach((n=>{const i=e[n];if(!d(i))return;const s={};for(const e of yn)s[e]=i[e];(h(i.properties)&&i.properties||[n]).forEach((e=>{e!==n&&t.has(e)||t.set(e,s)}))}))}_animateOptions(e,t){const n=t.options,i=function(e,t){if(!t)return;let n=e.options;if(!n)return void(e.options=t);n.$shared&&(e.options=n=Object.assign({},n,{$shared:!1,$animations:{}}));return n}(e,n);if(!i)return[];const s=this._createAnimations(i,n);return n.$shared&&function(e,t){const n=[],i=Object.keys(t);for(let t=0;t{e.options=n}),(()=>{})),s}_createAnimations(e,t){const n=this._properties,i=[],s=e.$animations||(e.$animations={}),r=Object.keys(t),a=Date.now();let o;for(o=r.length-1;o>=0;--o){const l=r[o];if("$"===l.charAt(0))continue;if("options"===l){i.push(...this._animateOptions(e,t));continue}const c=t[l];let h=s[l];const d=n.get(l);if(h){if(d&&h.active()){h.update(d,c,a);continue}h.cancel()}d&&d.duration?(s[l]=h=new vn(d,e,l,c),i.push(h)):e[l]=c}return i}update(e,t){if(0===this._properties.size)return void Object.assign(e,t);const n=this._createAnimations(e,t);return n.length?(mn.add(this._chart,n),!0):void 0}}function _n(e,t){const n=e&&e.options||{},i=n.reverse,s=void 0===n.min?t:0,r=void 0===n.max?t:0;return{start:i?r:s,end:i?s:r}}function Mn(e,t){const n=[],i=e._getSortedDatasetMetas(t);let s,r;for(s=0,r=i.length;s0||!n&&t<0)return s.index}return null}function xn(e,t){const{chart:n,_cachedMeta:i}=e,s=n._stacks||(n._stacks={}),{iScale:r,vScale:a,index:o}=i,l=r.axis,c=a.axis,h=function(e,t,n){return`${e.id}.${t.id}.${n.stack||n.type}`}(r,a,i),d=t.length;let u;for(let e=0;en[e].axis===t)).shift()}function Tn(e,t){const n=e.controller.index,i=e.vScale&&e.vScale.axis;if(i){t=t||e._parsed;for(const e of t){const t=e._stacks;if(!t||void 0===t[i]||void 0===t[i][n])return;delete t[i][n]}}}const En=e=>"reset"===e||"none"===e,zn=(e,t)=>t?e:Object.assign({},e);class An{constructor(e,t){this.chart=e,this._ctx=e.ctx,this.index=t,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.$context=void 0,this._syncList=[],this.initialize()}initialize(){const e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=Sn(e.vScale,e),this.addElements()}updateIndex(e){this.index!==e&&Tn(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,t=this._cachedMeta,n=this.getDataset(),i=(e,t,n,i)=>"x"===e?t:"r"===e?i:n,s=t.xAxisID=m(n.xAxisID,Cn(e,"x")),r=t.yAxisID=m(n.yAxisID,Cn(e,"y")),a=t.rAxisID=m(n.rAxisID,Cn(e,"r")),o=t.indexAxis,l=t.iAxisID=i(o,s,r,a),c=t.vAxisID=i(o,r,s,a);t.xScale=this.getScaleForId(s),t.yScale=this.getScaleForId(r),t.rScale=this.getScaleForId(a),t.iScale=this.getScaleForId(l),t.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const t=this._cachedMeta;return e===t.iScale?t.vScale:t.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&yt(this._data,this),e._stacked&&Tn(e)}_dataCheck(){const e=this.getDataset(),t=e.data||(e.data=[]),n=this._data;if(d(t))this._data=function(e){const t=Object.keys(e),n=new Array(t.length);let i,s,r;for(i=0,s=t.length;i{const t="_onData"+C(e),n=i[e];Object.defineProperty(i,e,{configurable:!0,enumerable:!1,value(...e){const s=n.apply(this,e);return i._chartjs.listeners.forEach((n=>{"function"==typeof n[t]&&n[t](...e)})),s}})})))),this._syncList=[],this._data=t}var i,s}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const t=this._cachedMeta,n=this.getDataset();let i=!1;this._dataCheck();const s=t._stacked;t._stacked=Sn(t.vScale,t),t.stack!==n.stack&&(i=!0,Tn(t),t.stack=n.stack),this._resyncElements(e),(i||s!==t._stacked)&&xn(this,t._parsed)}configure(){const e=this.chart.config,t=e.datasetScopeKeys(this._type),n=e.getOptionScopes(this.getDataset(),t,!0);this.options=e.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,t){const{_cachedMeta:n,_data:i}=this,{iScale:s,_stacked:r}=n,a=s.axis;let o,l,c,u=0===e&&t===i.length||n._sorted,p=e>0&&n._parsed[e-1];if(!1===this._parsing)n._parsed=i,n._sorted=!0,c=i;else{c=h(i[e])?this.parseArrayData(n,i,e,t):d(i[e])?this.parseObjectData(n,i,e,t):this.parsePrimitiveData(n,i,e,t);const s=()=>null===l[a]||p&&l[a]e&&!t.hidden&&t._stacked&&{keys:Mn(n,!0),values:null})(t,n,this.chart),l={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:h}=function(e){const{min:t,max:n,minDefined:i,maxDefined:s}=e.getUserBounds();return{min:i?t:Number.NEGATIVE_INFINITY,max:s?n:Number.POSITIVE_INFINITY}}(a);let d,p;function m(){p=i[d];const t=p[a.axis];return!u(p[e.axis])||c>t||h=0;--d)if(!m()){this.updateRangeFromParsed(l,e,p,o);break}return l}getAllParsedValues(e){const t=this._cachedMeta._parsed,n=[];let i,s,r;for(i=0,s=t.length;i=0&&ethis.getContext(n,i)),h);return p.$shared&&(p.$shared=o,s[r]=Object.freeze(zn(p,o))),p}_resolveAnimations(e,t,n){const i=this.chart,s=this._cachedDataOpts,r=`animation-${t}`,a=s[r];if(a)return a;let o;if(!1!==i.options.animation){const i=this.chart.config,s=i.datasetAnimationScopeKeys(this._type,t),r=i.getOptionScopes(this.getDataset(),s);o=i.createResolver(r,this.getContext(e,n,t))}const l=new bn(i,o&&o.animations);return o&&o._cacheable&&(s[r]=Object.freeze(l)),l}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,t){return!t||En(e)||this.chart._animationsDisabled}updateElement(e,t,n,i){En(i)?Object.assign(e,n):this._resolveAnimations(t,i).update(e,n)}updateSharedOptions(e,t,n){e&&!En(t)&&this._resolveAnimations(void 0,t).update(e,n)}_setStyle(e,t,n,i){e.active=i;const s=this.getStyle(t,i);this._resolveAnimations(t,n,i).update(e,{options:!i&&this.getSharedOptions(s)||s})}removeHoverStyle(e,t,n){this._setStyle(e,n,"active",!1)}setHoverStyle(e,t,n){this._setStyle(e,n,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const t=this._data,n=this._cachedMeta.data;for(const[e,t,n]of this._syncList)this[e](t,n);this._syncList=[];const i=n.length,s=t.length,r=Math.min(s,i);r&&this.parse(0,r),s>i?this._insertElements(i,s-i,e):s{for(e.length+=t,a=e.length-1;a>=r;a--)e[a]=e[a-t]};for(o(s),a=e;ae-t)))}return e._cache.$bar}(t,e.type);let i,s,r,a,o=t._length;const l=()=>{32767!==r&&-32768!==r&&(T(a)&&(o=Math.min(o,Math.abs(r-a)||o)),a=r)};for(i=0,s=n.length;iMath.abs(o)&&(l=o,c=a),t[n.axis]=c,t._custom={barStart:l,barEnd:c,start:s,end:r,min:a,max:o}}(e,t,n,i):t[n.axis]=n.parse(e,i),t}function Pn(e,t,n,i){const s=e.iScale,r=e.vScale,a=s.getLabels(),o=s===r,l=[];let c,h,d,u;for(c=n,h=n+i;ce.x,n="left",i="right"):(t=e.base=n?1:-1)}(d,t,r)*s,u===r&&(g-=d/2),h=g+d),g===t.getPixelForValue(r)){const e=$(d)*t.getLineWidthForValue(r)/2;g+=e,d-=e}return{size:d,base:g,head:h,center:h+d/2}}_calculateBarIndexPixels(e,t){const n=t.scale,i=this.options,s=i.skipNull,r=m(i.maxBarThickness,1/0);let a,o;if(t.grouped){const n=s?this._getStackCount(e):t.stackCount,l="flex"===i.barThickness?function(e,t,n,i){const s=t.pixels,r=s[e];let a=e>0?s[e-1]:null,o=e=0;--n)t=Math.max(t,e[n].size(this.resolveDataElementOptions(n))/2);return t>0&&t}getLabelAndValue(e){const t=this._cachedMeta,{xScale:n,yScale:i}=t,s=this.getParsed(e),r=n.getLabelForValue(s.x),a=i.getLabelForValue(s.y),o=s._custom;return{label:t.label,value:"("+r+", "+a+(o?", "+o:"")+")"}}update(e){const t=this._cachedMeta.data;this.updateElements(t,0,t.length,e)}updateElements(e,t,n,i){const s="reset"===i,{iScale:r,vScale:a}=this._cachedMeta,o=this.resolveDataElementOptions(t,i),l=this.getSharedOptions(o),c=this.includeOptions(i,l),h=r.axis,d=a.axis;for(let o=t;o""}}}};class Fn extends An{constructor(e,t){super(e,t),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,t){const n=this.getDataset().data,i=this._cachedMeta;if(!1===this._parsing)i._parsed=n;else{let s,r,a=e=>+n[e];if(d(n[e])){const{key:e="value"}=this._parsing;a=t=>+x(n[t],e)}for(s=e,r=e+t;sQ(e,o,l,!0)?1:Math.max(t,t*n,i,i*n),m=(e,t,i)=>Q(e,o,l,!0)?-1:Math.min(t,t*n,i,i*n),f=p(0,c,d),g=p(Y,h,u),v=m(A,c,d),y=m(A+Y,h,u);i=(f-v)/2,s=(g-y)/2,r=-(f+v)/2,a=-(g+y)/2}return{ratioX:i,ratioY:s,offsetX:r,offsetY:a}}(u,d,o),y=(n.width-r)/p,b=(n.height-r)/m,_=Math.max(Math.min(y,b)/2,0),M=f(this.options.radius,_),w=(M-Math.max(M*o,0))/this._getVisibleDatasetWeightTotal();this.offsetX=g*M,this.offsetY=v*M,i.total=this.calculateTotal(),this.outerRadius=M-w*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-w*h,0),this.updateElements(s,0,s.length,e)}_circumference(e,t){const n=this.options,i=this._cachedMeta,s=this._getCircumference();return t&&n.animation.animateRotate||!this.chart.getDataVisibility(e)||null===i._parsed[e]||i.data[e].hidden?0:this.calculateCircumference(i._parsed[e]*s/H)}updateElements(e,t,n,i){const s="reset"===i,r=this.chart,a=r.chartArea,o=r.options.animation,l=(a.left+a.right)/2,c=(a.top+a.bottom)/2,h=s&&o.animateScale,d=h?0:this.innerRadius,u=h?0:this.outerRadius,p=this.resolveDataElementOptions(t,i),m=this.getSharedOptions(p),f=this.includeOptions(i,m);let g,v=this._getRotation();for(g=0;g0&&!isNaN(e)?H*(Math.abs(e)/t):0}getLabelAndValue(e){const t=this._cachedMeta,n=this.chart,i=n.data.labels||[],s=nn(t._parsed[e],n.options.locale);return{label:i[e]||"",value:s}}getMaxBorderWidth(e){let t=0;const n=this.chart;let i,s,r,a,o;if(!e)for(i=0,s=n.data.datasets.length;i"spacing"!==e,_indexable:e=>"spacing"!==e},Fn.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const t=e.data;if(t.labels.length&&t.datasets.length){const{labels:{pointStyle:n}}=e.legend.options;return t.labels.map(((t,i)=>{const s=e.getDatasetMeta(0).controller.getStyle(i);return{text:t,fillStyle:s.backgroundColor,strokeStyle:s.borderColor,lineWidth:s.borderWidth,pointStyle:n,hidden:!e.getDataVisibility(i),index:i}}))}return[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}},tooltip:{callbacks:{title:()=>"",label(e){let t=e.label;const n=": "+e.formattedValue;return h(t)?(t=t.slice(),t[0]+=n):t+=n,t}}}}};class jn extends An{initialize(){this.enableOptionSharing=!0,super.initialize()}update(e){const t=this._cachedMeta,{dataset:n,data:i=[],_dataset:s}=t,r=this.chart._animationsDisabled;let{start:a,count:o}=function(e,t,n){const i=t.length;let s=0,r=i;if(e._sorted){const{iScale:a,_parsed:o}=e,l=a.axis,{min:c,max:h,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(s=Z(Math.min(ft(o,a.axis,c).lo,n?i:ft(t,l,a.getPixelForValue(c)).lo),0,i-1)),r=u?Z(Math.max(ft(o,a.axis,h).hi+1,n?0:ft(t,l,a.getPixelForValue(h)).hi+1),s,i)-s:i-s}return{start:s,count:r}}(t,i,r);this._drawStart=a,this._drawCount=o,function(e){const{xScale:t,yScale:n,_scaleRanges:i}=e,s={xmin:t.min,xmax:t.max,ymin:n.min,ymax:n.max};if(!i)return e._scaleRanges=s,!0;const r=i.xmin!==t.min||i.xmax!==t.max||i.ymin!==n.min||i.ymax!==n.max;return Object.assign(i,s),r}(t)&&(a=0,o=i.length),n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!s._decimated,n.points=i;const l=this.resolveDatasetElementOptions(e);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(n,void 0,{animated:!r,options:l},e),this.updateElements(i,a,o,e)}updateElements(e,t,n,i){const s="reset"===i,{iScale:r,vScale:a,_stacked:o,_dataset:l}=this._cachedMeta,h=this.resolveDataElementOptions(t,i),d=this.getSharedOptions(h),u=this.includeOptions(i,d),p=r.axis,m=a.axis,{spanGaps:f,segment:g}=this.options,v=F(f)?f:Number.POSITIVE_INFINITY,y=this.chart._animationsDisabled||s||"none"===i;let b=t>0&&this.getParsed(t-1);for(let h=t;h0&&n[p]-b[p]>v,g&&(f.parsed=n,f.raw=l.data[h]),u&&(f.options=d||this.resolveDataElementOptions(h,t.active?"active":i)),y||this.updateElement(t,h,f,i),b=n}this.updateSharedOptions(d,i,h)}getMaxOverflow(){const e=this._cachedMeta,t=e.dataset,n=t.options&&t.options.borderWidth||0,i=e.data||[];if(!i.length)return n;const s=i[0].size(this.resolveDataElementOptions(0)),r=i[i.length-1].size(this.resolveDataElementOptions(i.length-1));return Math.max(n,s,r)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}}jn.id="line",jn.defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1},jn.overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};class Bn extends An{constructor(e,t){super(e,t),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){const t=this._cachedMeta,n=this.chart,i=n.data.labels||[],s=nn(t._parsed[e].r,n.options.locale);return{label:i[e]||"",value:s}}update(e){const t=this._cachedMeta.data;this._updateRadius(),this.updateElements(t,0,t.length,e)}_updateRadius(){const e=this.chart,t=e.chartArea,n=e.options,i=Math.min(t.right-t.left,t.bottom-t.top),s=Math.max(i/2,0),r=(s-Math.max(n.cutoutPercentage?s/100*n.cutoutPercentage:1,0))/e.getVisibleDatasetCount();this.outerRadius=s-r*this.index,this.innerRadius=this.outerRadius-r}updateElements(e,t,n,i){const s="reset"===i,r=this.chart,a=this.getDataset(),o=r.options.animation,l=this._cachedMeta.rScale,c=l.xCenter,h=l.yCenter,d=l.getIndexAngle(0)-.5*A;let u,p=d;const m=360/this.countVisibleElements();for(u=0;u{!isNaN(e.data[i])&&this.chart.getDataVisibility(i)&&n++})),n}_computeAngle(e,t,n){return this.chart.getDataVisibility(e)?W(this.resolveDataElementOptions(e,t).angle||n):0}}Bn.id="polarArea",Bn.defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0},Bn.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const t=e.data;if(t.labels.length&&t.datasets.length){const{labels:{pointStyle:n}}=e.legend.options;return t.labels.map(((t,i)=>{const s=e.getDatasetMeta(0).controller.getStyle(i);return{text:t,fillStyle:s.backgroundColor,strokeStyle:s.borderColor,lineWidth:s.borderWidth,pointStyle:n,hidden:!e.getDataVisibility(i),index:i}}))}return[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}},tooltip:{callbacks:{title:()=>"",label:e=>e.chart.data.labels[e.dataIndex]+": "+e.formattedValue}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};class Wn extends Fn{}Wn.id="pie",Wn.defaults={cutout:0,rotation:0,circumference:360,radius:"100%"};class Gn extends An{getLabelAndValue(e){const t=this._cachedMeta.vScale,n=this.getParsed(e);return{label:t.getLabels()[e],value:""+t.getLabelForValue(n[t.axis])}}update(e){const t=this._cachedMeta,n=t.dataset,i=t.data||[],s=t.iScale.getLabels();if(n.points=i,"resize"!==e){const t=this.resolveDatasetElementOptions(e);this.options.showLine||(t.borderWidth=0);const r={_loop:!0,_fullLoop:s.length===i.length,options:t};this.updateElement(n,void 0,r,e)}this.updateElements(i,0,i.length,e)}updateElements(e,t,n,i){const s=this.getDataset(),r=this._cachedMeta.rScale,a="reset"===i;for(let o=t;o"",label:e=>"("+e.label+", "+e.formattedValue+")"}}},scales:{x:{type:"linear"},y:{type:"linear"}}};function Kn(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Xn{constructor(e){this.options=e||{}}formats(){return Kn()}parse(e,t){return Kn()}format(e,t){return Kn()}add(e,t,n){return Kn()}diff(e,t,n){return Kn()}startOf(e,t,n){return Kn()}endOf(e,t){return Kn()}}Xn.override=function(e){Object.assign(Xn.prototype,e)};var qn={_date:Xn};function Jn(e,t){return"native"in e?{x:e.x,y:e.y}:Gt(e,t)}function Qn(e,t,n,i){const{controller:s,data:r,_sorted:a}=e,o=s._cachedMeta.iScale;if(o&&t===o.axis&&"r"!==t&&a&&r.length){const e=o._reversePixels?gt:ft;if(!i)return e(r,t,n);if(s._sharedOptions){const i=r[0],s="function"==typeof i.getRange&&i.getRange(t);if(s){const i=e(r,t,n-s),a=e(r,t,n+s);return{lo:i.lo,hi:a.hi}}}}return{lo:0,hi:r.length-1}}function Zn(e,t,n,i,s){const r=e.getSortedVisibleDatasetMetas(),a=n[t];for(let e=0,n=r.length;e{e[o](s[a],i)&&r.push({element:e,datasetIndex:t,index:n}),e.inRange(s.x,s.y,i)&&(l=!0)})),n.intersect&&!l?[]:r}var si={modes:{index(e,t,n,i){const s=Jn(t,e),r=n.axis||"x",a=n.intersect?ei(e,s,r,i):ni(e,s,r,!1,i),o=[];return a.length?(e.getSortedVisibleDatasetMetas().forEach((e=>{const t=a[0].index,n=e.data[t];n&&!n.skip&&o.push({element:n,datasetIndex:e.index,index:t})})),o):[]},dataset(e,t,n,i){const s=Jn(t,e),r=n.axis||"xy";let a=n.intersect?ei(e,s,r,i):ni(e,s,r,!1,i);if(a.length>0){const t=a[0].datasetIndex,n=e.getDatasetMeta(t).data;a=[];for(let e=0;eei(e,Jn(t,e),n.axis||"xy",i),nearest:(e,t,n,i)=>ni(e,Jn(t,e),n.axis||"xy",n.intersect,i),x:(e,t,n,i)=>ii(e,t,{axis:"x",intersect:n.intersect},i),y:(e,t,n,i)=>ii(e,t,{axis:"y",intersect:n.intersect},i)}};const ri=["left","top","right","bottom"];function ai(e,t){return e.filter((e=>e.pos===t))}function oi(e,t){return e.filter((e=>-1===ri.indexOf(e.pos)&&e.box.axis===t))}function li(e,t){return e.sort(((e,n)=>{const i=t?n:e,s=t?e:n;return i.weight===s.weight?i.index-s.index:i.weight-s.weight}))}function ci(e,t){const n=function(e){const t={};for(const n of e){const{stack:e,pos:i,stackWeight:s}=n;if(!e||!ri.includes(i))continue;const r=t[e]||(t[e]={count:0,placed:0,weight:0,size:0});r.count++,r.weight+=s}return t}(e),{vBoxMaxWidth:i,hBoxMaxHeight:s}=t;let r,a,o;for(r=0,a=e.length;r{i[e]=Math.max(t[e],n[e])})),i}return i(e?["left","right"]:["top","bottom"])}function mi(e,t,n,i){const s=[];let r,a,o,l,c,h;for(r=0,a=e.length,c=0;re.box.fullSize)),!0),i=li(ai(t,"left"),!0),s=li(ai(t,"right")),r=li(ai(t,"top"),!0),a=li(ai(t,"bottom")),o=oi(t,"x"),l=oi(t,"y");return{fullSize:n,leftAndTop:i.concat(r),rightAndBottom:s.concat(l).concat(a).concat(o),chartArea:ai(t,"chartArea"),vertical:i.concat(s).concat(l),horizontal:r.concat(a).concat(o)}}(e.boxes),l=o.vertical,c=o.horizontal;v(e.boxes,(e=>{"function"==typeof e.beforeLayout&&e.beforeLayout()}));const h=l.reduce(((e,t)=>t.box.options&&!1===t.box.options.display?e:e+1),0)||1,d=Object.freeze({outerWidth:t,outerHeight:n,padding:s,availableWidth:r,availableHeight:a,vBoxMaxWidth:r/2/h,hBoxMaxHeight:a/2}),u=Object.assign({},s);di(u,ht(i));const p=Object.assign({maxPadding:u,w:r,h:a,x:s.left,y:s.top},s),m=ci(l.concat(c),d);mi(o.fullSize,p,d,m),mi(l,p,d,m),mi(c,p,d,m)&&mi(l,p,d,m),function(e){const t=e.maxPadding;function n(n){const i=Math.max(t[n]-e[n],0);return e[n]+=i,i}e.y+=n("top"),e.x+=n("left"),n("right"),n("bottom")}(p),gi(o.leftAndTop,p,d,m),p.x+=p.w,p.y+=p.h,gi(o.rightAndBottom,p,d,m),e.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},v(o.chartArea,(t=>{const n=t.box;Object.assign(n,e.chartArea),n.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})}))}};class yi{acquireContext(e,t){}releaseContext(e){return!1}addEventListener(e,t,n){}removeEventListener(e,t,n){}getDevicePixelRatio(){return 1}getMaximumSize(e,t,n,i){return t=Math.max(0,t||e.width),n=n||e.height,{width:t,height:Math.max(0,i?Math.floor(t/i):n)}}isAttached(e){return!0}updateConfig(e){}}class bi extends yi{acquireContext(e){return e&&e.getContext&&e.getContext("2d")||null}updateConfig(e){e.options.animation=!1}}const _i={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},Mi=e=>null===e||""===e;const wi=!!qt&&{passive:!0};function Si(e,t,n){e.canvas.removeEventListener(t,n,wi)}function Li(e,t){for(const n of e)if(n===t||n.contains(t))return!0}function ki(e,t,n){const i=e.canvas,s=new MutationObserver((e=>{let t=!1;for(const n of e)t=t||Li(n.addedNodes,i),t=t&&!Li(n.removedNodes,i);t&&n()}));return s.observe(document,{childList:!0,subtree:!0}),s}function xi(e,t,n){const i=e.canvas,s=new MutationObserver((e=>{let t=!1;for(const n of e)t=t||Li(n.removedNodes,i),t=t&&!Li(n.addedNodes,i);t&&n()}));return s.observe(document,{childList:!0,subtree:!0}),s}const Ci=new Map;let Ti=0;function Ei(){const e=window.devicePixelRatio;e!==Ti&&(Ti=e,Ci.forEach(((t,n)=>{n.currentDevicePixelRatio!==e&&t()})))}function zi(e,t,n){const i=e.canvas,r=i&&It(i);if(!r)return;const a=s(((e,t)=>{const i=r.clientWidth;n(e,t),i{const t=e[0],n=t.contentRect.width,i=t.contentRect.height;0===n&&0===i||a(n,i)}));return o.observe(r),function(e,t){Ci.size||window.addEventListener("resize",Ei),Ci.set(e,t)}(e,a),o}function Ai(e,t,n){n&&n.disconnect(),"resize"===t&&function(e){Ci.delete(e),Ci.size||window.removeEventListener("resize",Ei)}(e)}function Hi(e,t,n){const i=e.canvas,r=s((t=>{null!==e.ctx&&n(function(e,t){const n=_i[e.type]||e.type,{x:i,y:s}=Gt(e,t);return{type:n,chart:t,native:e,x:void 0!==i?i:null,y:void 0!==s?s:null}}(t,e))}),e,(e=>{const t=e[0];return[t,t.offsetX,t.offsetY]}));return function(e,t,n){e.addEventListener(t,n,wi)}(i,t,r),r}class Di extends yi{acquireContext(e,t){const n=e&&e.getContext&&e.getContext("2d");return n&&n.canvas===e?(function(e,t){const n=e.style,i=e.getAttribute("height"),s=e.getAttribute("width");if(e.$chartjs={initial:{height:i,width:s,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",n.boxSizing=n.boxSizing||"border-box",Mi(s)){const t=Jt(e,"width");void 0!==t&&(e.width=t)}if(Mi(i))if(""===e.style.height)e.height=e.width/(t||2);else{const t=Jt(e,"height");void 0!==t&&(e.height=t)}}(e,t),n):null}releaseContext(e){const t=e.canvas;if(!t.$chartjs)return!1;const n=t.$chartjs.initial;["height","width"].forEach((e=>{const i=n[e];c(i)?t.removeAttribute(e):t.setAttribute(e,i)}));const i=n.style||{};return Object.keys(i).forEach((e=>{t.style[e]=i[e]})),t.width=t.width,delete t.$chartjs,!0}addEventListener(e,t,n){this.removeEventListener(e,t);const i=e.$proxies||(e.$proxies={}),s={attach:ki,detach:xi,resize:zi}[t]||Hi;i[t]=s(e,t,n)}removeEventListener(e,t){const n=e.$proxies||(e.$proxies={}),i=n[t];if(!i)return;({attach:Ai,detach:Ai,resize:Ai}[t]||Si)(e,t,i),n[t]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,t,n,i){return Kt(e,t,n,i)}isAttached(e){const t=It(e);return!(!t||!t.isConnected)}}class Pi{constructor(){this.x=void 0,this.y=void 0,this.active=!1,this.options=void 0,this.$animations=void 0}tooltipPosition(e){const{x:t,y:n}=this.getProps(["x","y"],e);return{x:t,y:n}}hasValue(){return F(this.x)&&F(this.y)}getProps(e,t){const n=this.$animations;if(!t||!n)return this;const i={};return e.forEach((e=>{i[e]=n[e]&&n[e].active()?n[e]._to:this[e]})),i}}Pi.defaults={},Pi.defaultRoutes=void 0;const Oi={values:e=>h(e)?e:""+e,numeric(e,t,n){if(0===e)return"0";const i=this.chart.options.locale;let s,r=e;if(n.length>1){const t=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(t<1e-4||t>1e15)&&(s="scientific"),r=function(e,t){let n=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;Math.abs(n)>=1&&e!==Math.floor(e)&&(n=e-Math.floor(e));return n}(e,n)}const a=N(Math.abs(r)),o=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:s,minimumFractionDigits:o,maximumFractionDigits:o};return Object.assign(l,this.options.ticks.format),nn(e,i,l)},logarithmic(e,t,n){if(0===e)return"0";const i=e/Math.pow(10,Math.floor(N(e)));return 1===i||2===i||5===i?Oi.numeric.call(this,e,t,n):""}};var Yi={formatters:Oi};function Ri(e,t){const n=e.options.ticks,i=n.maxTicksLimit||function(e){const t=e.options.offset,n=e._tickSize(),i=e._length/n+(t?0:1),s=e._maxLength/n;return Math.floor(Math.min(i,s))}(e),s=n.major.enabled?function(e){const t=[];let n,i;for(n=0,i=e.length;ni)return function(e,t,n,i){let s,r=0,a=n[0];for(i=Math.ceil(i),s=0;se-t)).pop(),t}(i);for(let e=0,t=r.length-1;es)return t}return Math.max(s,1)}(s,t,i);if(r>0){let e,n;const i=r>1?Math.round((o-a)/(r-1)):null;for(Vi(t,l,h,c(i)?0:a-i,a),e=0,n=r-1;et.lineWidth,tickColor:(e,t)=>t.color,offset:!1,borderDash:[],borderDashOffset:0,borderWidth:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Yi.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),Be.route("scale.ticks","color","","color"),Be.route("scale.grid","color","","borderColor"),Be.route("scale.grid","borderColor","","borderColor"),Be.route("scale.title","color","","color"),Be.describe("scale",{_fallback:!1,_scriptable:e=>!e.startsWith("before")&&!e.startsWith("after")&&"callback"!==e&&"parser"!==e,_indexable:e=>"borderDash"!==e&&"tickBorderDash"!==e}),Be.describe("scales",{_fallback:"scale"}),Be.describe("scale.ticks",{_scriptable:e=>"backdropPadding"!==e&&"callback"!==e,_indexable:e=>"backdropPadding"!==e});const Ni=(e,t,n)=>"top"===t||"left"===t?e[t]+n:e[t]-n;function $i(e,t){const n=[],i=e.length/t,s=e.length;let r=0;for(;ra+o)))return c}function Fi(e){return e.drawTicks?e.tickLength:0}function ji(e,t){if(!e.display)return 0;const n=dt(e.font,t),i=ht(e.padding);return(h(e.text)?e.text.length:1)*n.lineHeight+i.height}function Bi(e,t,n){let i=r(e);return(n&&"right"!==t||!n&&"right"===t)&&(i=(e=>"left"===e?"right":"right"===e?"left":e)(i)),i}class Wi extends Pi{constructor(e){super(),this.id=e.id,this.type=e.type,this.options=void 0,this.ctx=e.ctx,this.chart=e.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(e){this.options=e.setContext(this.getContext()),this.axis=e.axis,this._userMin=this.parse(e.min),this._userMax=this.parse(e.max),this._suggestedMin=this.parse(e.suggestedMin),this._suggestedMax=this.parse(e.suggestedMax)}parse(e,t){return e}getUserBounds(){let{_userMin:e,_userMax:t,_suggestedMin:n,_suggestedMax:i}=this;return e=p(e,Number.POSITIVE_INFINITY),t=p(t,Number.NEGATIVE_INFINITY),n=p(n,Number.POSITIVE_INFINITY),i=p(i,Number.NEGATIVE_INFINITY),{min:p(e,n),max:p(t,i),minDefined:u(e),maxDefined:u(t)}}getMinMax(e){let t,{min:n,max:i,minDefined:s,maxDefined:r}=this.getUserBounds();if(s&&r)return{min:n,max:i};const a=this.getMatchingVisibleMetas();for(let o=0,l=a.length;oi?i:n,i=s&&n>i?n:i,{min:p(n,p(i,n)),max:p(i,p(n,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){g(this.options.beforeUpdate,[this])}update(e,t,n){const{beginAtZero:i,grace:s,ticks:r}=this.options,a=r.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=t,this._margins=n=Object.assign({left:0,right:0,top:0,bottom:0},n),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+n.left+n.right:this.height+n.top+n.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=function(e,t,n){const{min:i,max:s}=e,r=f(t,(s-i)/2),a=(e,t)=>n&&0===e?0:e+t;return{min:a(i,-Math.abs(r)),max:a(s,r)}}(this,s,i),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const o=a=s||n<=1||!this.isHorizontal())return void(this.labelRotation=i);const c=this._getLabelSizes(),h=c.widest.width,d=c.highest.height,u=Z(this.chart.width-h,0,this.maxWidth);r=e.offset?this.maxWidth/n:u/(n-1),h+6>r&&(r=u/(n-(e.offset?.5:1)),a=this.maxHeight-Fi(e.grid)-t.padding-ji(e.title,this.chart.options.font),o=Math.sqrt(h*h+d*d),l=G(Math.min(Math.asin(Z((c.highest.height+6)/r,-1,1)),Math.asin(Z(a/o,-1,1))-Math.asin(Z(d/o,-1,1)))),l=Math.max(i,Math.min(s,l))),this.labelRotation=l}afterCalculateLabelRotation(){g(this.options.afterCalculateLabelRotation,[this])}beforeFit(){g(this.options.beforeFit,[this])}fit(){const e={width:0,height:0},{chart:t,options:{ticks:n,title:i,grid:s}}=this,r=this._isVisible(),a=this.isHorizontal();if(r){const r=ji(i,t.options.font);if(a?(e.width=this.maxWidth,e.height=Fi(s)+r):(e.height=this.maxHeight,e.width=Fi(s)+r),n.display&&this.ticks.length){const{first:t,last:i,widest:s,highest:r}=this._getLabelSizes(),o=2*n.padding,l=W(this.labelRotation),c=Math.cos(l),h=Math.sin(l);if(a){const t=n.mirror?0:h*s.width+c*r.height;e.height=Math.min(this.maxHeight,e.height+t+o)}else{const t=n.mirror?0:c*s.width+h*r.height;e.width=Math.min(this.maxWidth,e.width+t+o)}this._calculatePadding(t,i,h,c)}}this._handleMargins(),a?(this.width=this._length=t.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=t.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,t,n,i){const{ticks:{align:s,padding:r},position:a}=this.options,o=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,c=this.right-this.getPixelForTick(this.ticks.length-1);let h=0,d=0;o?l?(h=i*e.width,d=n*t.height):(h=n*e.height,d=i*t.width):"start"===s?d=t.width:"end"===s?h=e.width:(h=e.width/2,d=t.width/2),this.paddingLeft=Math.max((h-a+r)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-c+r)*this.width/(this.width-c),0)}else{let n=t.height/2,i=e.height/2;"start"===s?(n=0,i=e.height):"end"===s&&(n=t.height,i=0),this.paddingTop=n+r,this.paddingBottom=i+r}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){g(this.options.afterFit,[this])}isHorizontal(){const{axis:e,position:t}=this.options;return"top"===t||"bottom"===t||"x"===e}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){let t,n;for(this.beforeTickToLabelConversion(),this.generateTickLabels(e),t=0,n=e.length;t{const n=e.gc,i=n.length/2;let s;if(i>t){for(s=0;s({width:s[e]||0,height:r[e]||0});return{first:L(0),last:L(t-1),widest:L(w),highest:L(S),widths:s,heights:r}}getLabelForValue(e){return e}getPixelForValue(e,t){return NaN}getValueForPixel(e){}getPixelForTick(e){const t=this.ticks;return e<0||e>t.length-1?null:this.getPixelForValue(t[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);const t=this._startPixel+e*this._length;return Z(this._alignToPixels?Ue(this.chart,t,0):t,-32768,32767)}getDecimalForPixel(e){const t=(e-this._startPixel)/this._length;return this._reversePixels?1-t:t}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:e,max:t}=this;return e<0&&t<0?t:e>0&&t>0?e:0}getContext(e){const t=this.ticks||[];if(e>=0&&ea*i?a/n:o/i:o*i0}_computeGridLineItems(e){const t=this.axis,n=this.chart,i=this.options,{grid:s,position:r}=i,a=s.offset,o=this.isHorizontal(),l=this.ticks.length+(a?1:0),c=Fi(s),h=[],u=s.setContext(this.getContext()),p=u.drawBorder?u.borderWidth:0,f=p/2,g=function(e){return Ue(n,e,p)};let v,y,b,_,M,w,S,L,k,x,C,T;if("top"===r)v=g(this.bottom),w=this.bottom-c,L=v-f,x=g(e.top)+f,T=e.bottom;else if("bottom"===r)v=g(this.top),x=e.top,T=g(e.bottom)-f,w=v+f,L=this.top+c;else if("left"===r)v=g(this.right),M=this.right-c,S=v-f,k=g(e.left)+f,C=e.right;else if("right"===r)v=g(this.left),k=e.left,C=g(e.right)-f,M=v+f,S=this.left+c;else if("x"===t){if("center"===r)v=g((e.top+e.bottom)/2+.5);else if(d(r)){const e=Object.keys(r)[0],t=r[e];v=g(this.chart.scales[e].getPixelForValue(t))}x=e.top,T=e.bottom,w=v+f,L=w+c}else if("y"===t){if("center"===r)v=g((e.left+e.right)/2);else if(d(r)){const e=Object.keys(r)[0],t=r[e];v=g(this.chart.scales[e].getPixelForValue(t))}M=v-f,S=M-c,k=e.left,C=e.right}const E=m(i.ticks.maxTicksLimit,l),z=Math.max(1,Math.ceil(l/E));for(y=0;yt.value===e));if(n>=0){return t.setContext(this.getContext(n)).lineWidth}return 0}drawGrid(e){const t=this.options.grid,n=this.ctx,i=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(e));let s,r;const a=(e,t,i)=>{i.width&&i.color&&(n.save(),n.lineWidth=i.width,n.strokeStyle=i.color,n.setLineDash(i.borderDash||[]),n.lineDashOffset=i.borderDashOffset,n.beginPath(),n.moveTo(e.x,e.y),n.lineTo(t.x,t.y),n.stroke(),n.restore())};if(t.display)for(s=0,r=i.length;s{this.drawBackground(),this.drawGrid(e),this.drawTitle()}},{z:n+1,draw:()=>{this.drawBorder()}},{z:t,draw:e=>{this.drawLabels(e)}}]:[{z:t,draw:e=>{this.draw(e)}}]}getMatchingVisibleMetas(e){const t=this.chart.getSortedVisibleDatasetMetas(),n=this.axis+"AxisID",i=[];let s,r;for(s=0,r=t.length;s{const i=n.split("."),s=i.pop(),r=[e].concat(i).join("."),a=t[n].split("."),o=a.pop(),l=a.join(".");Be.route(r,s,l,o)}))}(t,e.defaultRoutes);e.descriptors&&Be.describe(t,e.descriptors)}(e,r,n),this.override&&Be.override(e.id,e.overrides)),r}get(e){return this.items[e]}unregister(e){const t=this.items,n=e.id,i=this.scope;n in t&&delete t[n],i&&n in Be[i]&&(delete Be[i][n],this.override&&delete $e[n])}}var Ui=new class{constructor(){this.controllers=new Gi(An,"datasets",!0),this.elements=new Gi(Pi,"elements"),this.plugins=new Gi(Object,"plugins"),this.scales=new Gi(Wi,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each("register",e)}remove(...e){this._each("unregister",e)}addControllers(...e){this._each("register",e,this.controllers)}addElements(...e){this._each("register",e,this.elements)}addPlugins(...e){this._each("register",e,this.plugins)}addScales(...e){this._each("register",e,this.scales)}getController(e){return this._get(e,this.controllers,"controller")}getElement(e){return this._get(e,this.elements,"element")}getPlugin(e){return this._get(e,this.plugins,"plugin")}getScale(e){return this._get(e,this.scales,"scale")}removeControllers(...e){this._each("unregister",e,this.controllers)}removeElements(...e){this._each("unregister",e,this.elements)}removePlugins(...e){this._each("unregister",e,this.plugins)}removeScales(...e){this._each("unregister",e,this.scales)}_each(e,t,n){[...t].forEach((t=>{const i=n||this._getRegistryForType(t);n||i.isForType(t)||i===this.plugins&&t.id?this._exec(e,i,t):v(t,(t=>{const i=n||this._getRegistryForType(t);this._exec(e,i,t)}))}))}_exec(e,t,n){const i=C(e);g(n["before"+i],[],n),t[e](n),g(n["after"+i],[],n)}_getRegistryForType(e){for(let t=0;te.filter((e=>!t.some((t=>e.plugin.id===t.plugin.id))));this._notify(i(t,n),e,"stop"),this._notify(i(n,t),e,"start")}}function Xi(e,t){return t||!1!==e?!0===e?{}:e:null}function qi(e,t,n,i){const s=e.pluginScopeKeys(t),r=e.getOptionScopes(n,s);return e.createResolver(r,i,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function Ji(e,t){const n=Be.datasets[e]||{};return((t.datasets||{})[e]||{}).indexAxis||t.indexAxis||n.indexAxis||"x"}function Qi(e,t){return"x"===e||"y"===e?e:t.axis||("top"===(n=t.position)||"bottom"===n?"x":"left"===n||"right"===n?"y":void 0)||e.charAt(0).toLowerCase();var n}function Zi(e){const t=e.options||(e.options={});t.plugins=m(t.plugins,{}),t.scales=function(e,t){const n=$e[e.type]||{scales:{}},i=t.scales||{},s=Ji(e.type,t),r=Object.create(null),a=Object.create(null);return Object.keys(i).forEach((e=>{const t=i[e];if(!d(t))return console.error(`Invalid scale configuration for scale: ${e}`);if(t._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const o=Qi(e,t),l=function(e,t){return e===t?"_index_":"_value_"}(o,s),c=n.scales||{};r[o]=r[o]||e,a[e]=S(Object.create(null),[{axis:o},t,c[o],c[l]])})),e.data.datasets.forEach((n=>{const s=n.type||e.type,o=n.indexAxis||Ji(s,t),l=($e[s]||{}).scales||{};Object.keys(l).forEach((e=>{const t=function(e,t){let n=e;return"_index_"===e?n=t:"_value_"===e&&(n="x"===t?"y":"x"),n}(e,o),s=n[t+"AxisID"]||r[t]||t;a[s]=a[s]||Object.create(null),S(a[s],[{axis:t},i[s],l[e]])}))})),Object.keys(a).forEach((e=>{const t=a[e];S(t,[Be.scales[t.type],Be.scale])})),a}(e,t)}function es(e){return(e=e||{}).datasets=e.datasets||[],e.labels=e.labels||[],e}const ts=new Map,ns=new Set;function is(e,t){let n=ts.get(e);return n||(n=t(),ts.set(e,n),ns.add(n)),n}const ss=(e,t,n)=>{const i=x(t,n);void 0!==i&&e.add(i)};class rs{constructor(e){this._config=function(e){return(e=e||{}).data=es(e.data),Zi(e),e}(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=es(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){const e=this._config;this.clearCache(),Zi(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return is(e,(()=>[[`datasets.${e}`,""]]))}datasetAnimationScopeKeys(e,t){return is(`${e}.transition.${t}`,(()=>[[`datasets.${e}.transitions.${t}`,`transitions.${t}`],[`datasets.${e}`,""]]))}datasetElementScopeKeys(e,t){return is(`${e}-${t}`,(()=>[[`datasets.${e}.elements.${t}`,`datasets.${e}`,`elements.${t}`,""]]))}pluginScopeKeys(e){const t=e.id;return is(`${this.type}-plugin-${t}`,(()=>[[`plugins.${t}`,...e.additionalOptionScopes||[]]]))}_cachedScopes(e,t){const n=this._scopeCache;let i=n.get(e);return i&&!t||(i=new Map,n.set(e,i)),i}getOptionScopes(e,t,n){const{options:i,type:s}=this,r=this._cachedScopes(e,n),a=r.get(t);if(a)return a;const o=new Set;t.forEach((t=>{e&&(o.add(e),t.forEach((t=>ss(o,e,t)))),t.forEach((e=>ss(o,i,e))),t.forEach((e=>ss(o,$e[s]||{},e))),t.forEach((e=>ss(o,Be,e))),t.forEach((e=>ss(o,Ie,e)))}));const l=Array.from(o);return 0===l.length&&l.push(Object.create(null)),ns.has(t)&&r.set(t,l),l}chartOptionScopes(){const{options:e,type:t}=this;return[e,$e[t]||{},Be.datasets[t]||{},{type:t},Be,Ie]}resolveNamedOptions(e,t,n,i=[""]){const s={$shared:!0},{resolver:r,subPrefixes:a}=as(this._resolverCache,e,i);let o=r;if(function(e,t){const{isScriptable:n,isIndexable:i}=wt(e);for(const s of t){const t=n(s),r=i(s),a=(r||t)&&e[s];if(t&&(E(a)||os(a))||r&&h(a))return!0}return!1}(r,t)){s.$shared=!1;o=Mt(r,n=E(n)?n():n,this.createResolver(e,n,a))}for(const e of t)s[e]=o[e];return s}createResolver(e,t,n=[""],i){const{resolver:s}=as(this._resolverCache,e,n);return d(t)?Mt(s,t,void 0,i):s}}function as(e,t,n){let i=e.get(t);i||(i=new Map,e.set(t,i));const s=n.join();let r=i.get(s);if(!r){r={resolver:_t(t,n),subPrefixes:n.filter((e=>!e.toLowerCase().includes("hover")))},i.set(s,r)}return r}const os=e=>d(e)&&Object.getOwnPropertyNames(e).reduce(((t,n)=>t||E(e[n])),!1);const ls=["top","bottom","left","right","chartArea"];function cs(e,t){return"top"===e||"bottom"===e||-1===ls.indexOf(e)&&"x"===t}function hs(e,t){return function(n,i){return n[e]===i[e]?n[t]-i[t]:n[e]-i[e]}}function ds(e){const t=e.chart,n=t.options.animation;t.notifyPlugins("afterRender"),g(n&&n.onComplete,[e],t)}function us(e){const t=e.chart,n=t.options.animation;g(n&&n.onProgress,[e],t)}function ps(e){return $t()&&"string"==typeof e?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}const ms={},fs=e=>{const t=ps(e);return Object.values(ms).filter((e=>e.canvas===t)).pop()};function gs(e,t,n){const i=Object.keys(e);for(const s of i){const i=+s;if(i>=t){const r=e[s];delete e[s],(n>0||i>t)&&(e[i+n]=r)}}}class vs{constructor(e,t){const n=this.config=new rs(t),i=ps(e),s=fs(i);if(s)throw new Error("Canvas is already in use. Chart with ID '"+s.id+"' must be destroyed before the canvas can be reused.");const r=n.createResolver(n.chartOptionScopes(),this.getContext());this.platform=new(n.platform||function(e){return!$t()||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas?bi:Di}(i)),this.platform.updateConfig(n);const a=this.platform.acquireContext(i,r.aspectRatio),o=a&&a.canvas,c=o&&o.height,h=o&&o.width;this.id=l(),this.ctx=a,this.canvas=o,this.width=h,this.height=c,this._options=r,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Ki,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=function(e,t){let n;return function(...i){return t?(clearTimeout(n),n=setTimeout(e,t,i)):e.apply(this,i),t}}((e=>this.update(e)),r.resizeDelay||0),this._dataChanges=[],ms[this.id]=this,a&&o?(mn.listen(this,"complete",ds),mn.listen(this,"progress",us),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:t},width:n,height:i,_aspectRatio:s}=this;return c(e)?t&&s?s:i?n/i:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Xt(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Ke(this.canvas,this.ctx),this}stop(){return mn.stop(this),this}resize(e,t){mn.running(this)?this._resizeBeforeDraw={width:e,height:t}:this._resize(e,t)}_resize(e,t){const n=this.options,i=this.canvas,s=n.maintainAspectRatio&&this.aspectRatio,r=this.platform.getMaximumSize(i,e,t,s),a=n.devicePixelRatio||this.platform.getDevicePixelRatio(),o=this.width?"resize":"attach";this.width=r.width,this.height=r.height,this._aspectRatio=this.aspectRatio,Xt(this,a,!0)&&(this.notifyPlugins("resize",{size:r}),g(n.onResize,[this,r],this),this.attached&&this._doResize(o)&&this.render())}ensureScalesHaveIDs(){v(this.options.scales||{},((e,t)=>{e.id=t}))}buildOrUpdateScales(){const e=this.options,t=e.scales,n=this.scales,i=Object.keys(n).reduce(((e,t)=>(e[t]=!1,e)),{});let s=[];t&&(s=s.concat(Object.keys(t).map((e=>{const n=t[e],i=Qi(e,n),s="r"===i,r="x"===i;return{options:n,dposition:s?"chartArea":r?"bottom":"left",dtype:s?"radialLinear":r?"category":"linear"}})))),v(s,(t=>{const s=t.options,r=s.id,a=Qi(r,s),o=m(s.type,t.dtype);void 0!==s.position&&cs(s.position,a)===cs(t.dposition)||(s.position=t.dposition),i[r]=!0;let l=null;if(r in n&&n[r].type===o)l=n[r];else{l=new(Ui.getScale(o))({id:r,type:o,ctx:this.ctx,chart:this}),n[l.id]=l}l.init(s,e)})),v(i,((e,t)=>{e||delete n[t]})),v(n,(e=>{vi.configure(this,e,e.options),vi.addBox(this,e)}))}_updateMetasets(){const e=this._metasets,t=this.data.datasets.length,n=e.length;if(e.sort(((e,t)=>e.index-t.index)),n>t){for(let e=t;et.length&&delete this._stacks,e.forEach(((e,n)=>{0===t.filter((t=>t===e._dataset)).length&&this._destroyDatasetMeta(n)}))}buildOrUpdateControllers(){const e=[],t=this.data.datasets;let n,i;for(this._removeUnreferencedMetasets(),n=0,i=t.length;n{this.getDatasetMeta(t).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const t=this.config;t.update();const n=this._options=t.createResolver(t.chartOptionScopes(),this.getContext()),i=this._animationsDisabled=!n.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0}))return;const s=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let r=0;for(let e=0,t=this.data.datasets.length;e{e.reset()})),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(hs("z","_idx"));const{_active:a,_lastEvent:o}=this;o?this._eventHandler(o,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){v(this.scales,(e=>{vi.removeBox(this,e)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,t=new Set(Object.keys(this._listeners)),n=new Set(e.events);z(t,n)&&!!this._responsiveListeners===e.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,t=this._getUniformDataChanges()||[];for(const{method:n,start:i,count:s}of t){gs(e,i,"_removeElements"===n?-s:s)}}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const t=this.data.datasets.length,n=t=>new Set(e.filter((e=>e[0]===t)).map(((e,t)=>t+","+e.splice(1).join(",")))),i=n(0);for(let e=1;ee.split(","))).map((e=>({method:e[1],start:+e[2],count:+e[3]})))}_updateLayout(e){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;vi.update(this,this.width,this.height,e);const t=this.chartArea,n=t.width<=0||t.height<=0;this._layers=[],v(this.boxes,(e=>{n&&"chartArea"===e.position||(e.configure&&e.configure(),this._layers.push(...e._layers()))}),this),this._layers.forEach(((e,t)=>{e._idx=t})),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})){for(let e=0,t=this.data.datasets.length;e=0;--t)this._drawDataset(e[t]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const t=this.ctx,n=e._clip,i=!n.disabled,s=this.chartArea,r={meta:e,index:e.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",r)&&(i&&Je(t,{left:!1===n.left?0:s.left-n.left,right:!1===n.right?this.width:s.right+n.right,top:!1===n.top?0:s.top-n.top,bottom:!1===n.bottom?this.height:s.bottom+n.bottom}),e.controller.draw(),i&&Qe(t),r.cancelable=!1,this.notifyPlugins("afterDatasetDraw",r))}getElementsAtEventForMode(e,t,n,i){const s=si.modes[t];return"function"==typeof s?s(this,e,n,i):[]}getDatasetMeta(e){const t=this.data.datasets[e],n=this._metasets;let i=n.filter((e=>e&&e._dataset===t)).pop();return i||(i={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:t&&t.order||0,index:e,_dataset:t,_parsed:[],_sorted:!1},n.push(i)),i}getContext(){return this.$context||(this.$context=pt(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const t=this.data.datasets[e];if(!t)return!1;const n=this.getDatasetMeta(e);return"boolean"==typeof n.hidden?!n.hidden:!t.hidden}setDatasetVisibility(e,t){this.getDatasetMeta(e).hidden=!t}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,t,n){const i=n?"show":"hide",s=this.getDatasetMeta(e),r=s.controller._resolveAnimations(void 0,i);T(t)?(s.data[t].hidden=!n,this.update()):(this.setDatasetVisibility(e,n),r.update(s,{visible:n}),this.update((t=>t.datasetIndex===e?i:void 0)))}hide(e,t){this._updateVisibility(e,t,!1)}show(e,t){this._updateVisibility(e,t,!0)}_destroyDatasetMeta(e){const t=this._metasets[e];t&&t.controller&&t.controller._destroy(),delete this._metasets[e]}_stop(){let e,t;for(this.stop(),mn.remove(this),e=0,t=this.data.datasets.length;e{t.addEventListener(this,n,i),e[n]=i},i=(e,t,n)=>{e.offsetX=t,e.offsetY=n,this._eventHandler(e)};v(this.options.events,(e=>n(e,i)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,t=this.platform,n=(n,i)=>{t.addEventListener(this,n,i),e[n]=i},i=(n,i)=>{e[n]&&(t.removeEventListener(this,n,i),delete e[n])},s=(e,t)=>{this.canvas&&this.resize(e,t)};let r;const a=()=>{i("attach",a),this.attached=!0,this.resize(),n("resize",s),n("detach",r)};r=()=>{this.attached=!1,i("resize",s),this._stop(),this._resize(0,0),n("attach",a)},t.isAttached(this.canvas)?a():r()}unbindEvents(){v(this._listeners,((e,t)=>{this.platform.removeEventListener(this,t,e)})),this._listeners={},v(this._responsiveListeners,((e,t)=>{this.platform.removeEventListener(this,t,e)})),this._responsiveListeners=void 0}updateHoverStyle(e,t,n){const i=n?"set":"remove";let s,r,a,o;for("dataset"===t&&(s=this.getDatasetMeta(e[0].datasetIndex),s.controller["_"+i+"DatasetHoverStyle"]()),a=0,o=e.length;a{const n=this.getDatasetMeta(e);if(!n)throw new Error("No dataset found at index "+e);return{datasetIndex:e,element:n.data[t],index:t}}));!y(n,t)&&(this._active=n,this._lastEvent=null,this._updateHoverStyles(n,t))}notifyPlugins(e,t,n){return this._plugins.notify(this,e,t,n)}_updateHoverStyles(e,t,n){const i=this.options.hover,s=(e,t)=>e.filter((e=>!t.some((t=>e.datasetIndex===t.datasetIndex&&e.index===t.index)))),r=s(t,e),a=n?e:s(e,t);r.length&&this.updateHoverStyle(r,i.mode,!1),a.length&&i.mode&&this.updateHoverStyle(a,i.mode,!0)}_eventHandler(e,t){const n={event:e,replay:t,cancelable:!0,inChartArea:qe(e,this.chartArea,this._minPadding)},i=t=>(t.options.events||this.options.events).includes(e.native.type);if(!1===this.notifyPlugins("beforeEvent",n,i))return;const s=this._handleEvent(e,t,n.inChartArea);return n.cancelable=!1,this.notifyPlugins("afterEvent",n,i),(s||n.changed)&&this.render(),this}_handleEvent(e,t,n){const{_active:i=[],options:s}=this,r=t,a=this._getActiveElements(e,i,n,r),o=function(e){return"mouseup"===e.type||"click"===e.type||"contextmenu"===e.type}(e),l=function(e,t,n,i){return n&&"mouseout"!==e.type?i?t:e:null}(e,this._lastEvent,n,o);n&&(this._lastEvent=null,g(s.onHover,[e,a,this],this),o&&g(s.onClick,[e,a,this],this));const c=!y(a,i);return(c||t)&&(this._active=a,this._updateHoverStyles(a,i,t)),this._lastEvent=l,c}_getActiveElements(e,t,n,i){if("mouseout"===e.type)return[];if(!n)return t;const s=this.options.hover;return this.getElementsAtEventForMode(e,s.mode,s,i)}}const ys=()=>v(vs.instances,(e=>e._plugins.invalidate())),bs=!0;function _s(e,t,n){const{startAngle:i,pixelMargin:s,x:r,y:a,outerRadius:o,innerRadius:l}=t;let c=s/o;e.beginPath(),e.arc(r,a,o,i-c,n+c),l>s?(c=s/l,e.arc(r,a,l,n+c,i-c,!0)):e.arc(r,a,s,n+Y,i-Y),e.closePath(),e.clip()}function Ms(e,t,n,i){const s=ot(e.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const r=(n-t)/2,a=Math.min(r,i*t/2),o=e=>{const t=(n-Math.min(r,e))*i/2;return Z(e,0,Math.min(r,t))};return{outerStart:o(s.outerStart),outerEnd:o(s.outerEnd),innerStart:Z(s.innerStart,0,a),innerEnd:Z(s.innerEnd,0,a)}}function ws(e,t,n,i){return{x:n+e*Math.cos(t),y:i+e*Math.sin(t)}}function Ss(e,t,n,i,s){const{x:r,y:a,startAngle:o,pixelMargin:l,innerRadius:c}=t,h=Math.max(t.outerRadius+i+n-l,0),d=c>0?c+i+n+l:0;let u=0;const p=s-o;if(i){const e=((c>0?c-i:0)+(h>0?h-i:0))/2;u=(p-(0!==e?p*e/(e+i):p))/2}const m=(p-Math.max(.001,p*h-n/A)/h)/2,f=o+m+u,g=s-m-u,{outerStart:v,outerEnd:y,innerStart:b,innerEnd:_}=Ms(t,d,h,g-f),M=h-v,w=h-y,S=f+v/M,L=g-y/w,k=d+b,x=d+_,C=f+b/k,T=g-_/x;if(e.beginPath(),e.arc(r,a,h,S,L),y>0){const t=ws(w,L,r,a);e.arc(t.x,t.y,y,L,g+Y)}const E=ws(x,g,r,a);if(e.lineTo(E.x,E.y),_>0){const t=ws(x,T,r,a);e.arc(t.x,t.y,_,g+Y,T+Math.PI)}if(e.arc(r,a,d,g-_/d,f+b/d,!0),b>0){const t=ws(k,C,r,a);e.arc(t.x,t.y,b,C+Math.PI,f-Y)}const z=ws(M,f,r,a);if(e.lineTo(z.x,z.y),v>0){const t=ws(M,S,r,a);e.arc(t.x,t.y,v,f-Y,S)}e.closePath()}function Ls(e,t,n,i,s){const{options:r}=t,{borderWidth:a,borderJoinStyle:o}=r,l="inner"===r.borderAlign;a&&(l?(e.lineWidth=2*a,e.lineJoin=o||"round"):(e.lineWidth=a,e.lineJoin=o||"bevel"),t.fullCircles&&function(e,t,n){const{x:i,y:s,startAngle:r,pixelMargin:a,fullCircles:o}=t,l=Math.max(t.outerRadius-a,0),c=t.innerRadius+a;let h;for(n&&_s(e,t,r+H),e.beginPath(),e.arc(i,s,c,r+H,r,!0),h=0;h{Ui.add(...e),ys()}},unregister:{enumerable:bs,value:(...e)=>{Ui.remove(...e),ys()}}});class ks extends Pi{constructor(e){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,t,n){const i=this.getProps(["x","y"],n),{angle:s,distance:r}=K(i,{x:e,y:t}),{startAngle:a,endAngle:o,innerRadius:l,outerRadius:c,circumference:h}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],n),d=this.options.spacing/2,u=m(h,o-a)>=H||Q(s,a,o),p=ee(r,l+d,c+d);return u&&p}getCenterPoint(e){const{x:t,y:n,startAngle:i,endAngle:s,innerRadius:r,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius","circumference"],e),{offset:o,spacing:l}=this.options,c=(i+s)/2,h=(r+a+l+o)/2;return{x:t+Math.cos(c)*h,y:n+Math.sin(c)*h}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){const{options:t,circumference:n}=this,i=(t.offset||0)/2,s=(t.spacing||0)/2;if(this.pixelMargin="inner"===t.borderAlign?.33:0,this.fullCircles=n>H?Math.floor(n/H):0,0===n||this.innerRadius<0||this.outerRadius<0)return;e.save();let r=0;if(i){r=i/2;const t=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(t)*r,Math.sin(t)*r),this.circumference>=A&&(r=i)}e.fillStyle=t.backgroundColor,e.strokeStyle=t.borderColor;const a=function(e,t,n,i){const{fullCircles:s,startAngle:r,circumference:a}=t;let o=t.endAngle;if(s){Ss(e,t,n,i,r+H);for(let t=0;to&&r>o;return{count:i,start:l,loop:t.loop,ilen:c(a+(c?o-e:e))%r,b=()=>{p!==m&&(e.lineTo(g,m),e.lineTo(g,p),e.lineTo(g,f))};for(l&&(d=s[y(0)],e.moveTo(d.x,d.y)),h=0;h<=o;++h){if(d=s[y(h)],d.skip)continue;const t=d.x,n=d.y,i=0|t;i===u?(nm&&(m=n),g=(v*g+t)/++v):(b(),e.lineTo(t,n),u=i,v=0,p=m=n),f=n}b()}function As(e){const t=e.options,n=t.borderDash&&t.borderDash.length;return!(e._decimated||e._loop||t.tension||"monotone"===t.cubicInterpolationMode||t.stepped||n)?zs:Es}ks.id="arc",ks.defaults={borderAlign:"center",borderColor:"#fff",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0},ks.defaultRoutes={backgroundColor:"backgroundColor"};const Hs="function"==typeof Path2D;function Ds(e,t,n,i){Hs&&!t.options.segment?function(e,t,n,i){let s=t._path;s||(s=t._path=new Path2D,t.path(s,n,i)&&s.closePath()),xs(e,t.options),e.stroke(s)}(e,t,n,i):function(e,t,n,i){const{segments:s,options:r}=t,a=As(t);for(const o of s)xs(e,r,o.style),e.beginPath(),a(e,t,o,{start:n,end:n+i-1})&&e.closePath(),e.stroke()}(e,t,n,i)}class Ps extends Pi{constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,t){const n=this.options;if((n.tension||"monotone"===n.cubicInterpolationMode)&&!n.stepped&&!this._pointsUpdated){const i=n.spanGaps?this._loop:this._fullLoop;Nt(this._points,n,e,i,t),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=function(e,t){const n=e.points,i=e.options.spanGaps,s=n.length;if(!s)return[];const r=!!e._loop,{start:a,end:o}=function(e,t,n,i){let s=0,r=t-1;if(n&&!i)for(;ss&&e[r%t].skip;)r--;return r%=t,{start:s,end:r}}(n,s,r,i);return dn(e,!0===i?[{start:a,end:o,loop:r}]:function(e,t,n,i){const s=e.length,r=[];let a,o=t,l=e[t];for(a=t+1;a<=n;++a){const n=e[a%s];n.skip||n.stop?l.skip||(i=!1,r.push({start:t%s,end:(a-1)%s,loop:i}),t=o=n.stop?a:null):(o=a,l.skip&&(t=a)),l=n}return null!==o&&r.push({start:t%s,end:o%s,loop:i}),r}(n,a,o"borderDash"!==e&&"fill"!==e};class Ys extends Pi{constructor(e){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,e&&Object.assign(this,e)}inRange(e,t,n){const i=this.options,{x:s,y:r}=this.getProps(["x","y"],n);return Math.pow(e-s,2)+Math.pow(t-r,2)=n)&&s):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}class Ws{constructor(e){this.x=e.x,this.y=e.y,this.radius=e.radius}pathSegment(e,t,n){const{x:i,y:s,radius:r}=this;return t=t||{start:0,end:H},e.arc(i,s,r,t.end,t.start,!0),!n.bounds}interpolate(e){const{x:t,y:n,radius:i}=this,s=e.angle;return{x:t+Math.cos(s)*i,y:n+Math.sin(s)*i,angle:s}}}function Gs(e){return(e.scale||{}).getPointPositionForValue?function(e){const{scale:t,fill:n}=e,i=t.options,s=t.getLabels().length,r=[],a=i.reverse?t.max:t.min,o=i.reverse?t.min:t.max;let l,c,h;if(h="start"===n?a:"end"===n?o:d(n)?n.value:t.getBaseValue(),i.grid.circular)return c=t.getPointPositionForValue(0,a),new Ws({x:c.x,y:c.y,radius:t.getDistanceFromCenterForValue(h)});for(l=0;le;t--){const e=n[t];if(!isNaN(e.x)&&!isNaN(e.y))break}return t}function Ks(e,t,n){const i=[];for(let s=0;s{t=Us(e,t,s);const a=s[e],o=s[t];null!==i?(r.push({x:a.x,y:i}),r.push({x:o.x,y:i})):null!==n&&(r.push({x:n,y:a.y}),r.push({x:n,y:o.y}))})),r}(e,t),n.length?new Ps({points:n,options:{tension:0},_loop:i,_fullLoop:i}):null}function Qs(e,t,n){let i=e[t].fill;const s=[t];let r;if(!n)return i;for(;!1!==i&&-1===s.indexOf(i);){if(!u(i))return i;if(r=e[i],!r)return!1;if(r.visible)return i;s.push(i),i=r.fill}return!1}function Zs(e,t,n){e.beginPath(),t.path(e),e.lineTo(t.last().x,n),e.lineTo(t.first().x,n),e.closePath(),e.clip()}function er(e,t,n,i){if(i)return;let s=t[e],r=n[e];return"angle"===e&&(s=J(s),r=J(r)),{property:e,start:s,end:r}}function tr(e,t,n,i){return e&&t?i(e[n],t[n]):e?e[n]:t?t[n]:0}function nr(e,t,n){const{top:i,bottom:s}=t.chart.chartArea,{property:r,start:a,end:o}=n||{};"x"===r&&(e.beginPath(),e.rect(a,i,o-a,s-i),e.clip())}function ir(e,t,n,i){const s=t.interpolate(n,i);s&&e.lineTo(s.x,s.y)}function sr(e,t){const{line:n,target:i,property:s,color:r,scale:a}=t,o=function(e,t,n){const i=e.segments,s=e.points,r=t.points,a=[];for(const e of i){let{start:i,end:o}=e;o=Us(i,o,s);const l=er(n,s[i],s[o],e.loop);if(!t.segments){a.push({source:e,target:l,start:s[i],end:s[o]});continue}const c=hn(t,l);for(const t of c){const i=er(n,r[t.start],r[t.end],t.loop),o=cn(e,s,i);for(const e of o)a.push({source:e,target:t,start:{[n]:tr(l,i,"start",Math.max)},end:{[n]:tr(l,i,"end",Math.min)}})}}return a}(n,i,s);for(const{source:t,target:l,start:c,end:h}of o){const{style:{backgroundColor:o=r}={}}=t,d=!0!==i;e.save(),e.fillStyle=o,nr(e,a,d&&er(s,c,h)),e.beginPath();const u=!!n.pathSegment(e,t);let p;if(d){u?e.closePath():ir(e,i,h,s);const t=!!i.pathSegment(e,l,{move:u,reverse:!0});p=u&&t,p||ir(e,i,c,s)}e.closePath(),e.fill(p?"evenodd":"nonzero"),e.restore()}}function rr(e,t,n){const i=qs(t),{line:s,scale:r,axis:a}=t,o=s.options,l=o.fill,c=o.backgroundColor,{above:h=c,below:d=c}=l||{};i&&s.points.length&&(Je(e,n),function(e,t){const{line:n,target:i,above:s,below:r,area:a,scale:o}=t,l=n._loop?"angle":t.axis;e.save(),"x"===l&&r!==s&&(Zs(e,i,a.top),sr(e,{line:n,target:i,color:s,scale:o,property:l}),e.restore(),e.save(),Zs(e,i,a.bottom)),sr(e,{line:n,target:i,color:r,scale:o,property:l}),e.restore()}(e,{line:s,target:i,above:h,below:d,area:n,scale:r,axis:a}),Qe(e))}var ar={id:"filler",afterDatasetsUpdate(e,t,n){const i=(e.data.datasets||[]).length,s=[];let r,a,o,l;for(a=0;a=0;--t){const n=s[t].$filler;n&&(n.line.updateControlPoints(r,n.axis),i&&rr(e.ctx,n,r))}},beforeDatasetsDraw(e,t,n){if("beforeDatasetsDraw"!==n.drawTime)return;const i=e.getSortedVisibleDatasetMetas();for(let t=i.length-1;t>=0;--t){const n=i[t].$filler;n&&rr(e.ctx,n,e.chartArea)}},beforeDatasetDraw(e,t,n){const i=t.meta.$filler;i&&!1!==i.fill&&"beforeDatasetDraw"===n.drawTime&&rr(e.ctx,i,e.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};class or extends Pi{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t){const n=this.options;if(this.left=0,this.top=0,!n.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=e,this.height=this.bottom=t;const i=h(n.text)?n.text.length:1;this._padding=ht(n.padding);const s=i*dt(n.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=s:this.width=s}isHorizontal(){const e=this.options.position;return"top"===e||"bottom"===e}_drawArgs(e){const{top:t,left:n,bottom:i,right:s,options:r}=this,o=r.align;let l,c,h,d=0;return this.isHorizontal()?(c=a(o,n,s),h=t+e,l=s-n):("left"===r.position?(c=n+e,h=a(o,i,t),d=-.5*A):(c=s-e,h=a(o,t,i),d=.5*A),l=i-t),{titleX:c,titleY:h,maxWidth:l,rotation:d}}draw(){const e=this.ctx,t=this.options;if(!t.display)return;const n=dt(t.font),i=n.lineHeight/2+this._padding.top,{titleX:s,titleY:a,maxWidth:o,rotation:l}=this._drawArgs(i);tt(e,t.text,0,0,n,{color:t.color,maxWidth:o,rotation:l,textAlign:r(t.align),textBaseline:"middle",translation:[s,a]})}}var lr={id:"title",_element:or,start(e,t,n){!function(e,t){const n=new or({ctx:e.ctx,options:t,chart:e});vi.configure(e,n,t),vi.addBox(e,n),e.titleBlock=n}(e,n)},stop(e){const t=e.titleBlock;vi.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){const i=e.titleBlock;vi.configure(e,i,n),i.options=n},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};new WeakMap;const cr={average(e){if(!e.length)return!1;let t,n,i=0,s=0,r=0;for(t=0,n=e.length;t-1?e.split("\n"):e}function ur(e,t){const{element:n,datasetIndex:i,index:s}=t,r=e.getDatasetMeta(i).controller,{label:a,value:o}=r.getLabelAndValue(s);return{chart:e,label:a,parsed:r.getParsed(s),raw:e.data.datasets[i].data[s],formattedValue:o,dataset:r.getDataset(),dataIndex:s,datasetIndex:i,element:n}}function pr(e,t){const n=e.chart.ctx,{body:i,footer:s,title:r}=e,{boxWidth:a,boxHeight:o}=t,l=dt(t.bodyFont),c=dt(t.titleFont),h=dt(t.footerFont),d=r.length,u=s.length,p=i.length,m=ht(t.padding);let f=m.height,g=0,y=i.reduce(((e,t)=>e+t.before.length+t.lines.length+t.after.length),0);if(y+=e.beforeBody.length+e.afterBody.length,d&&(f+=d*c.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),y){f+=p*(t.displayColors?Math.max(o,l.lineHeight):l.lineHeight)+(y-p)*l.lineHeight+(y-1)*t.bodySpacing}u&&(f+=t.footerMarginTop+u*h.lineHeight+(u-1)*t.footerSpacing);let b=0;const _=function(e){g=Math.max(g,n.measureText(e).width+b)};return n.save(),n.font=c.string,v(e.title,_),n.font=l.string,v(e.beforeBody.concat(e.afterBody),_),b=t.displayColors?a+2+t.boxPadding:0,v(i,(e=>{v(e.before,_),v(e.lines,_),v(e.after,_)})),b=0,n.font=h.string,v(e.footer,_),n.restore(),g+=m.width,{width:g,height:f}}function mr(e,t,n,i){const{x:s,width:r}=n,{width:a,chartArea:{left:o,right:l}}=e;let c="center";return"center"===i?c=s<=(o+l)/2?"left":"right":s<=r/2?c="left":s>=a-r/2&&(c="right"),function(e,t,n,i){const{x:s,width:r}=i,a=n.caretSize+n.caretPadding;return"left"===e&&s+r+a>t.width||"right"===e&&s-r-a<0||void 0}(c,e,t,n)&&(c="center"),c}function fr(e,t,n){const i=n.yAlign||t.yAlign||function(e,t){const{y:n,height:i}=t;return ne.height-i/2?"bottom":"center"}(e,n);return{xAlign:n.xAlign||t.xAlign||mr(e,t,n,i),yAlign:i}}function gr(e,t,n,i){const{caretSize:s,caretPadding:r,cornerRadius:a}=e,{xAlign:o,yAlign:l}=n,c=s+r,{topLeft:h,topRight:d,bottomLeft:u,bottomRight:p}=ct(a);let m=function(e,t){let{x:n,width:i}=e;return"right"===t?n-=i:"center"===t&&(n-=i/2),n}(t,o);const f=function(e,t,n){let{y:i,height:s}=e;return"top"===t?i+=n:i-="bottom"===t?s+n:s/2,i}(t,l,c);return"center"===l?"left"===o?m+=c:"right"===o&&(m-=c):"left"===o?m-=Math.max(h,u)+s:"right"===o&&(m+=Math.max(d,p)+s),{x:Z(m,0,i.width-t.width),y:Z(f,0,i.height-t.height)}}function vr(e,t,n){const i=ht(n.padding);return"center"===t?e.x+e.width/2:"right"===t?e.x+e.width-i.right:e.x+i.left}function yr(e){return hr([],dr(e))}function br(e,t){const n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}class _r extends Pi{constructor(e){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=e.chart||e._chart,this._chart=this.chart,this.options=e.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(e){this.options=e,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const e=this._cachedAnimations;if(e)return e;const t=this.chart,n=this.options.setContext(this.getContext()),i=n.enabled&&t.options.animation&&n.animations,s=new bn(this.chart,i);return i._cacheable&&(this._cachedAnimations=Object.freeze(s)),s}getContext(){return this.$context||(this.$context=(e=this.chart.getContext(),t=this,n=this._tooltipItems,pt(e,{tooltip:t,tooltipItems:n,type:"tooltip"})));var e,t,n}getTitle(e,t){const{callbacks:n}=t,i=n.beforeTitle.apply(this,[e]),s=n.title.apply(this,[e]),r=n.afterTitle.apply(this,[e]);let a=[];return a=hr(a,dr(i)),a=hr(a,dr(s)),a=hr(a,dr(r)),a}getBeforeBody(e,t){return yr(t.callbacks.beforeBody.apply(this,[e]))}getBody(e,t){const{callbacks:n}=t,i=[];return v(e,(e=>{const t={before:[],lines:[],after:[]},s=br(n,e);hr(t.before,dr(s.beforeLabel.call(this,e))),hr(t.lines,s.label.call(this,e)),hr(t.after,dr(s.afterLabel.call(this,e))),i.push(t)})),i}getAfterBody(e,t){return yr(t.callbacks.afterBody.apply(this,[e]))}getFooter(e,t){const{callbacks:n}=t,i=n.beforeFooter.apply(this,[e]),s=n.footer.apply(this,[e]),r=n.afterFooter.apply(this,[e]);let a=[];return a=hr(a,dr(i)),a=hr(a,dr(s)),a=hr(a,dr(r)),a}_createItems(e){const t=this._active,n=this.chart.data,i=[],s=[],r=[];let a,o,l=[];for(a=0,o=t.length;ae.filter(t,i,s,n)))),e.itemSort&&(l=l.sort(((t,i)=>e.itemSort(t,i,n)))),v(l,(t=>{const n=br(e.callbacks,t);i.push(n.labelColor.call(this,t)),s.push(n.labelPointStyle.call(this,t)),r.push(n.labelTextColor.call(this,t))})),this.labelColors=i,this.labelPointStyles=s,this.labelTextColors=r,this.dataPoints=l,l}update(e,t){const n=this.options.setContext(this.getContext()),i=this._active;let s,r=[];if(i.length){const e=cr[n.position].call(this,i,this._eventPosition);r=this._createItems(n),this.title=this.getTitle(r,n),this.beforeBody=this.getBeforeBody(r,n),this.body=this.getBody(r,n),this.afterBody=this.getAfterBody(r,n),this.footer=this.getFooter(r,n);const t=this._size=pr(this,n),a=Object.assign({},e,t),o=fr(this.chart,n,a),l=gr(n,a,o,this.chart);this.xAlign=o.xAlign,this.yAlign=o.yAlign,s={opacity:1,x:l.x,y:l.y,width:t.width,height:t.height,caretX:e.x,caretY:e.y}}else 0!==this.opacity&&(s={opacity:0});this._tooltipItems=r,this.$context=void 0,s&&this._resolveAnimations().update(this,s),e&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:t})}drawCaret(e,t,n,i){const s=this.getCaretPosition(e,n,i);t.lineTo(s.x1,s.y1),t.lineTo(s.x2,s.y2),t.lineTo(s.x3,s.y3)}getCaretPosition(e,t,n){const{xAlign:i,yAlign:s}=this,{caretSize:r,cornerRadius:a}=n,{topLeft:o,topRight:l,bottomLeft:c,bottomRight:h}=ct(a),{x:d,y:u}=e,{width:p,height:m}=t;let f,g,v,y,b,_;return"center"===s?(b=u+m/2,"left"===i?(f=d,g=f-r,y=b+r,_=b-r):(f=d+p,g=f+r,y=b-r,_=b+r),v=f):(g="left"===i?d+Math.max(o,c)+r:"right"===i?d+p-Math.max(l,h)-r:this.caretX,"top"===s?(y=u,b=y-r,f=g-r,v=g+r):(y=u+m,b=y+r,f=g+r,v=g-r),_=y),{x1:f,x2:g,x3:v,y1:y,y2:b,y3:_}}drawTitle(e,t,n){const i=this.title,s=i.length;let r,a,o;if(s){const l=sn(n.rtl,this.x,this.width);for(e.x=vr(this,n.titleAlign,n),t.textAlign=l.textAlign(n.titleAlign),t.textBaseline="middle",r=dt(n.titleFont),a=n.titleSpacing,t.fillStyle=n.titleColor,t.font=r.string,o=0;o0!==e))?(e.beginPath(),e.fillStyle=s.multiKeyBackground,it(e,{x:t,y:m,w:l,h:o,radius:a}),e.fill(),e.stroke(),e.fillStyle=r.backgroundColor,e.beginPath(),it(e,{x:n,y:m+1,w:l-2,h:o-2,radius:a}),e.fill()):(e.fillStyle=s.multiKeyBackground,e.fillRect(t,m,l,o),e.strokeRect(t,m,l,o),e.fillStyle=r.backgroundColor,e.fillRect(n,m+1,l-2,o-2))}e.fillStyle=this.labelTextColors[n]}drawBody(e,t,n){const{body:i}=this,{bodySpacing:s,bodyAlign:r,displayColors:a,boxHeight:o,boxWidth:l,boxPadding:c}=n,h=dt(n.bodyFont);let d=h.lineHeight,u=0;const p=sn(n.rtl,this.x,this.width),m=function(n){t.fillText(n,p.x(e.x+u),e.y+d/2),e.y+=d+s},f=p.textAlign(r);let g,y,b,_,M,w,S;for(t.textAlign=r,t.textBaseline="middle",t.font=h.string,e.x=vr(this,f,n),t.fillStyle=n.bodyColor,v(this.beforeBody,m),u=a&&"right"!==f?"center"===r?l/2+c:l+2+c:0,_=0,w=i.length;_0&&t.stroke()}_updateAnimationTarget(e){const t=this.chart,n=this.$animations,i=n&&n.x,s=n&&n.y;if(i||s){const n=cr[e.position].call(this,this._active,this._eventPosition);if(!n)return;const r=this._size=pr(this,e),a=Object.assign({},n,this._size),o=fr(t,e,a),l=gr(e,a,o,t);i._to===l.x&&s._to===l.y||(this.xAlign=o.xAlign,this.yAlign=o.yAlign,this.width=r.width,this.height=r.height,this.caretX=n.x,this.caretY=n.y,this._resolveAnimations().update(this,l))}}draw(e){const t=this.options.setContext(this.getContext());let n=this.opacity;if(!n)return;this._updateAnimationTarget(t);const i={width:this.width,height:this.height},s={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;const r=ht(t.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;t.enabled&&a&&(e.save(),e.globalAlpha=n,this.drawBackground(s,e,i,t),rn(e,t.textDirection),s.y+=r.top,this.drawTitle(s,e,t),this.drawBody(s,e,t),this.drawFooter(s,e,t),an(e,t.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,t){const n=this._active,i=e.map((({datasetIndex:e,index:t})=>{const n=this.chart.getDatasetMeta(e);if(!n)throw new Error("Cannot find a dataset at index "+e);return{datasetIndex:e,element:n.data[t],index:t}})),s=!y(n,i),r=this._positionChanged(i,t);(s||r)&&(this._active=i,this._eventPosition=t,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,t,n=!0){if(t&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const i=this.options,s=this._active||[],r=this._getActiveElements(e,s,t,n),a=this._positionChanged(r,e),o=t||!y(r,s)||a;return o&&(this._active=r,(i.enabled||i.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,t))),o}_getActiveElements(e,t,n,i){const s=this.options;if("mouseout"===e.type)return[];if(!i)return t;const r=this.chart.getElementsAtEventForMode(e,s.mode,s,n);return s.reverse&&r.reverse(),r}_positionChanged(e,t){const{caretX:n,caretY:i,options:s}=this,r=cr[s.position].call(this,e,t);return!1!==r&&(n!==r.x||i!==r.y)}}_r.positioners=cr;var Mr={id:"tooltip",_element:_r,positioners:cr,afterInit(e,t,n){n&&(e.tooltip=new _r({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){const t=e.tooltip,n={tooltip:t};!1!==e.notifyPlugins("beforeTooltipDraw",n)&&(t&&t.draw(e.ctx),e.notifyPlugins("afterTooltipDraw",n))},afterEvent(e,t){if(e.tooltip){const n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:{beforeTitle:o,title(e){if(e.length>0){const t=e[0],n=t.chart.data.labels,i=n?n.length:0;if(this&&this.options&&"dataset"===this.options.mode)return t.dataset.label||"";if(t.label)return t.label;if(i>0&&t.dataIndex"filter"!==e&&"itemSort"!==e&&"external"!==e,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};function wr(e,t,n,i){const s=e.indexOf(t);if(-1===s)return((e,t,n,i)=>("string"==typeof t?(n=e.push(t)-1,i.unshift({index:n,label:t})):isNaN(t)&&(n=null),n))(e,t,n,i);return s!==e.lastIndexOf(t)?n:s}class Sr extends Wi{constructor(e){super(e),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(e){const t=this._addedLabels;if(t.length){const e=this.getLabels();for(const{index:n,label:i}of t)e[n]===i&&e.splice(n,1);this._addedLabels=[]}super.init(e)}parse(e,t){if(c(e))return null;const n=this.getLabels();return((e,t)=>null===e?null:Z(Math.round(e),0,t))(t=isFinite(t)&&n[t]===e?t:wr(n,e,m(t,e),this._addedLabels),n.length-1)}determineDataLimits(){const{minDefined:e,maxDefined:t}=this.getUserBounds();let{min:n,max:i}=this.getMinMax(!0);"ticks"===this.options.bounds&&(e||(n=0),t||(i=this.getLabels().length-1)),this.min=n,this.max=i}buildTicks(){const e=this.min,t=this.max,n=this.options.offset,i=[];let s=this.getLabels();s=0===e&&t===s.length-1?s:s.slice(e,t+1),this._valueRange=Math.max(s.length-(n?0:1),1),this._startValue=this.min-(n?.5:0);for(let n=e;n<=t;n++)i.push({value:n});return i}getLabelForValue(e){const t=this.getLabels();return e>=0&&et.length-1?null:this.getPixelForValue(t[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}}function Lr(e,t){const n=[],{bounds:i,step:s,min:r,max:a,precision:o,count:l,maxTicks:h,maxDigits:d,includeBounds:u}=e,p=s||1,m=h-1,{min:f,max:g}=t,v=!c(r),y=!c(a),b=!c(l),_=(g-f)/(d+1);let M,w,S,L,k=I((g-f)/m/p)*p;if(k<1e-14&&!v&&!y)return[{value:f},{value:g}];L=Math.ceil(g/k)-Math.floor(f/k),L>m&&(k=I(L*k/m/p)*p),c(o)||(M=Math.pow(10,o),k=Math.ceil(k*M)/M),"ticks"===i?(w=Math.floor(f/k)*k,S=Math.ceil(g/k)*k):(w=f,S=g),v&&y&&s&&function(e,t){const n=Math.round(e);return n-t<=e&&n+t>=e}((a-r)/s,k/1e3)?(L=Math.round(Math.min((a-r)/k,h)),k=(a-r)/L,w=r,S=a):b?(w=v?r:w,S=y?a:S,L=l-1,k=(S-w)/L):(L=(S-w)/k,L=j(L,Math.round(L),k/1e3)?Math.round(L):Math.ceil(L));const x=Math.max(U(k),U(w));M=Math.pow(10,c(o)?x:o),w=Math.round(w*M)/M,S=Math.round(S*M)/M;let C=0;for(v&&(u&&w!==r?(n.push({value:r}),wi=t?i:e,a=e=>s=n?s:e;if(e){const e=$(i),t=$(s);e<0&&t<0?a(0):e>0&&t>0&&r(0)}if(i===s){let t=1;(s>=Number.MAX_SAFE_INTEGER||i<=Number.MIN_SAFE_INTEGER)&&(t=Math.abs(.05*s)),a(s+t),e||r(i-t)}this.min=i,this.max=s}getTickLimit(){const e=this.options.ticks;let t,{maxTicksLimit:n,stepSize:i}=e;return i?(t=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,t>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${t} ticks. Limiting to 1000.`),t=1e3)):(t=this.computeTickLimit(),n=n||11),n&&(t=Math.min(n,t)),t}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const e=this.options,t=e.ticks;let n=this.getTickLimit();n=Math.max(2,n);const i=Lr({maxTicks:n,bounds:e.bounds,min:e.min,max:e.max,precision:t.precision,step:t.stepSize,count:t.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:t.minRotation||0,includeBounds:!1!==t.includeBounds},this._range||this);return"ticks"===e.bounds&&B(i,this,"value"),e.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}configure(){const e=this.ticks;let t=this.min,n=this.max;if(super.configure(),this.options.offset&&e.length){const i=(n-t)/Math.max(e.length-1,1)/2;t-=i,n+=i}this._startValue=t,this._endValue=n,this._valueRange=n-t}getLabelForValue(e){return nn(e,this.chart.options.locale,this.options.ticks.format)}}class Cr extends xr{determineDataLimits(){const{min:e,max:t}=this.getMinMax(!0);this.min=u(e)?e:0,this.max=u(t)?t:1,this.handleTickRangeOptions()}computeTickLimit(){const e=this.isHorizontal(),t=e?this.width:this.height,n=W(this.options.ticks.minRotation),i=(e?Math.sin(n):Math.cos(n))||.001,s=this._resolveTickFontOptions(0);return Math.ceil(t/Math.min(40,s.lineHeight/i))}getPixelForValue(e){return null===e?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}}function Tr(e){return 1===e/Math.pow(10,Math.floor(N(e)))}Cr.id="linear",Cr.defaults={ticks:{callback:Yi.formatters.numeric}};class Er extends Wi{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,t){const n=xr.prototype.parse.apply(this,[e,t]);if(0!==n)return u(n)&&n>0?n:null;this._zero=!0}determineDataLimits(){const{min:e,max:t}=this.getMinMax(!0);this.min=u(e)?Math.max(0,e):null,this.max=u(t)?Math.max(0,t):null,this.options.beginAtZero&&(this._zero=!0),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:e,maxDefined:t}=this.getUserBounds();let n=this.min,i=this.max;const s=t=>n=e?n:t,r=e=>i=t?i:e,a=(e,t)=>Math.pow(10,Math.floor(N(e))+t);n===i&&(n<=0?(s(1),r(10)):(s(a(n,-1)),r(a(i,1)))),n<=0&&s(a(i,-1)),i<=0&&r(a(n,1)),this._zero&&this.min!==this._suggestedMin&&n===a(this.min,0)&&s(a(n,-1)),this.min=n,this.max=i}buildTicks(){const e=this.options,t=function(e,t){const n=Math.floor(N(t.max)),i=Math.ceil(t.max/Math.pow(10,n)),s=[];let r=p(e.min,Math.pow(10,Math.floor(N(t.min)))),a=Math.floor(N(r)),o=Math.floor(r/Math.pow(10,a)),l=a<0?Math.pow(10,Math.abs(a)):1;do{s.push({value:r,major:Tr(r)}),++o,10===o&&(o=1,++a,l=a>=0?1:l),r=Math.round(o*Math.pow(10,a)*l)/l}while(as?{start:t-n,end:t}:{start:t,end:t+n}}function Hr(e){const t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},n=Object.assign({},t),i=[],s=[],r=e._pointLabels.length,a=e.options.pointLabels,o=a.centerPointLabels?A/r:0;for(let u=0;ut.r&&(o=(i.end-t.r)/r,e.r=Math.max(e.r,t.r+o)),s.startt.b&&(l=(s.end-t.b)/a,e.b=Math.max(e.b,t.b+l))}function Pr(e){return 0===e||180===e?"center":e<180?"left":"right"}function Or(e,t,n){return"right"===n?e-=t:"center"===n&&(e-=t/2),e}function Yr(e,t,n){return 90===n||270===n?e-=t/2:(n>270||n<90)&&(e-=t),e}function Rr(e,t,n,i){const{ctx:s}=e;if(n)s.arc(e.xCenter,e.yCenter,t,0,H);else{let n=e.getPointPosition(0,t);s.moveTo(n.x,n.y);for(let r=1;r{const n=g(this.options.pointLabels.callback,[e,t],this);return n||0===n?n:""})).filter(((e,t)=>this.chart.getDataVisibility(t)))}fit(){const e=this.options;e.display&&e.pointLabels.display?Hr(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,t,n,i){this.xCenter+=Math.floor((e-t)/2),this.yCenter+=Math.floor((n-i)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,t,n,i))}getIndexAngle(e){return J(e*(H/(this._pointLabels.length||1))+W(this.options.startAngle||0))}getDistanceFromCenterForValue(e){if(c(e))return NaN;const t=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*t:(e-this.min)*t}getValueForDistanceFromCenter(e){if(c(e))return NaN;const t=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-t:this.min+t}getPointLabelContext(e){const t=this._pointLabels||[];if(e>=0&&e=0;s--){const t=i.setContext(e.getPointLabelContext(s)),r=dt(t.font),{x:a,y:o,textAlign:l,left:h,top:d,right:u,bottom:p}=e._pointLabelItems[s],{backdropColor:m}=t;if(!c(m)){const e=ht(t.backdropPadding);n.fillStyle=m,n.fillRect(h-e.left,d-e.top,u-h+e.width,p-d+e.height)}tt(n,e._pointLabels[s],a,o+r.lineHeight/2,r,{color:t.color,textAlign:l,textBaseline:"middle"})}}(this,s),i.display&&this.ticks.forEach(((e,t)=>{if(0!==t){a=this.getDistanceFromCenterForValue(e.value);!function(e,t,n,i){const s=e.ctx,r=t.circular,{color:a,lineWidth:o}=t;!r&&!i||!a||!o||n<0||(s.save(),s.strokeStyle=a,s.lineWidth=o,s.setLineDash(t.borderDash),s.lineDashOffset=t.borderDashOffset,s.beginPath(),Rr(e,n,r,i),s.closePath(),s.stroke(),s.restore())}(this,i.setContext(this.getContext(t-1)),a,s)}})),n.display){for(e.save(),r=s-1;r>=0;r--){const i=n.setContext(this.getPointLabelContext(r)),{color:s,lineWidth:l}=i;l&&s&&(e.lineWidth=l,e.strokeStyle=s,e.setLineDash(i.borderDash),e.lineDashOffset=i.borderDashOffset,a=this.getDistanceFromCenterForValue(t.ticks.reverse?this.min:this.max),o=this.getPointPosition(r,a),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(o.x,o.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){const e=this.ctx,t=this.options,n=t.ticks;if(!n.display)return;const i=this.getIndexAngle(0);let s,r;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(i),e.textAlign="center",e.textBaseline="middle",this.ticks.forEach(((i,a)=>{if(0===a&&!t.reverse)return;const o=n.setContext(this.getContext(a)),l=dt(o.font);if(s=this.getDistanceFromCenterForValue(this.ticks[a].value),o.showLabelBackdrop){e.font=l.string,r=e.measureText(i.label).width,e.fillStyle=o.backdropColor;const t=ht(o.backdropPadding);e.fillRect(-r/2-t.left,-s-l.size/2-t.top,r+t.width,l.size+t.height)}tt(e,i.label,0,-s,l,{color:o.color})})),e.restore()}drawTitle(){}}Vr.id="radialLinear",Vr.defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Yi.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:e=>e,padding:5,centerPointLabels:!1}},Vr.defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"},Vr.descriptors={angleLines:{_fallback:"grid"}};const Nr={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},$r=Object.keys(Nr);function Ir(e,t){return e-t}function Fr(e,t){if(c(t))return null;const n=e._adapter,{parser:i,round:s,isoWeekday:r}=e._parseOpts;let a=t;return"function"==typeof i&&(a=i(a)),u(a)||(a="string"==typeof i?n.parse(a,i):n.parse(a)),null===a?null:(s&&(a="week"!==s||!F(r)&&!0!==r?n.startOf(a,s):n.startOf(a,"isoWeek",r)),+a)}function jr(e,t,n,i){const s=$r.length;for(let r=$r.indexOf(e);r=t?n[i]:n[s]]=!0}}else e[t]=!0}function Wr(e,t,n){const i=[],s={},r=t.length;let a,o;for(a=0;a=0&&(t[l].major=!0);return t}(e,i,s,n):i}class Gr extends Wi{constructor(e){super(e),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(e,t){const n=e.time||(e.time={}),i=this._adapter=new qn._date(e.adapters.date);S(n.displayFormats,i.formats()),this._parseOpts={parser:n.parser,round:n.round,isoWeekday:n.isoWeekday},super.init(e),this._normalized=t.normalized}parse(e,t){return void 0===e?null:Fr(this,e)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const e=this.options,t=this._adapter,n=e.time.unit||"day";let{min:i,max:s,minDefined:r,maxDefined:a}=this.getUserBounds();function o(e){r||isNaN(e.min)||(i=Math.min(i,e.min)),a||isNaN(e.max)||(s=Math.max(s,e.max))}r&&a||(o(this._getLabelBounds()),"ticks"===e.bounds&&"labels"===e.ticks.source||o(this.getMinMax(!1))),i=u(i)&&!isNaN(i)?i:+t.startOf(Date.now(),n),s=u(s)&&!isNaN(s)?s:+t.endOf(Date.now(),n)+1,this.min=Math.min(i,s-1),this.max=Math.max(i+1,s)}_getLabelBounds(){const e=this.getLabelTimestamps();let t=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;return e.length&&(t=e[0],n=e[e.length-1]),{min:t,max:n}}buildTicks(){const e=this.options,t=e.time,n=e.ticks,i="labels"===n.source?this.getLabelTimestamps():this._generate();"ticks"===e.bounds&&i.length&&(this.min=this._userMin||i[0],this.max=this._userMax||i[i.length-1]);const s=this.min,r=function(e,t,n){let i=0,s=e.length;for(;ii&&e[s-1]>n;)s--;return i>0||s=$r.indexOf(n);r--){const n=$r[r];if(Nr[n].common&&e._adapter.diff(s,i,n)>=t-1)return n}return $r[n?$r.indexOf(n):0]}(this,r.length,t.minUnit,this.min,this.max)),this._majorUnit=n.major.enabled&&"year"!==this._unit?function(e){for(let t=$r.indexOf(e)+1,n=$r.length;t1e5*a)throw new Error(t+" and "+n+" are too far apart with stepSize of "+a+" "+r);const p="data"===i.ticks.source&&this.getDataTimestamps();for(h=u,d=0;he-t)).map((e=>+e))}getLabelForValue(e){const t=this._adapter,n=this.options.time;return n.tooltipFormat?t.format(e,n.tooltipFormat):t.format(e,n.displayFormats.datetime)}_tickFormatFunction(e,t,n,i){const s=this.options,r=s.time.displayFormats,a=this._unit,o=this._majorUnit,l=a&&r[a],c=o&&r[o],h=n[t],d=o&&c&&h&&h.major,u=this._adapter.format(e,i||(d?c:l)),p=s.ticks.callback;return p?g(p,[u,t,n],this):u}generateTickLabels(e){let t,n,i;for(t=0,n=e.length;t0?a:1}getDataTimestamps(){let e,t,n=this._cache.data||[];if(n.length)return n;const i=this.getMatchingVisibleMetas();if(this._normalized&&i.length)return this._cache.data=i[0].controller.getAllParsedValues(this);for(e=0,t=i.length;e=e[o].pos&&t<=e[l].pos&&({lo:o,hi:l}=ft(e,"pos",t)),({pos:i,time:r}=e[o]),({pos:s,time:a}=e[l])):(t>=e[o].time&&t<=e[l].time&&({lo:o,hi:l}=ft(e,"time",t)),({time:i,pos:r}=e[o]),({time:s,pos:a}=e[l]));const c=s-i;return c?r+(a-r)*(t-i)/c:r}Gr.id="time",Gr.defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",major:{enabled:!1}}};class Kr extends Gr{constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const e=this._getTimestampsForTable(),t=this._table=this.buildLookupTable(e);this._minPos=Ur(t,this.min),this._tableRange=Ur(t,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){const{min:t,max:n}=this,i=[],s=[];let r,a,o,l,c;for(r=0,a=e.length;r=t&&l<=n&&i.push(l);if(i.length<2)return[{time:t,pos:0},{time:n,pos:1}];for(r=0,a=i.length;r=0;h--){var d=s[h];"."===d?Go(s,h):".."===d?(Go(s,h),c++):c&&(Go(s,h),c--)}if(!o)for(;c--;c)s.unshift("..");!o||""===s[0]||s[0]&&Wo(s[0])||s.unshift("");var u=s.join("/");return n&&"/"!==u.substr(-1)&&(u+="/"),u};var Ko="Invariant failed";function Xo(e,t){if(!e)throw new Error(Ko)}function qo(e){return"/"===e.charAt(0)?e:"/"+e}function Jo(e){return"/"===e.charAt(0)?e.substr(1):e}function Qo(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function Zo(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function el(e){var t=e.pathname,n=e.search,i=e.hash,s=t||"/";return n&&"?"!==n&&(s+="?"===n.charAt(0)?n:"?"+n),i&&"#"!==i&&(s+="#"===i.charAt(0)?i:"#"+i),s}function tl(e,t,n,i){var s;"string"==typeof e?(s=function(e){var t=e||"/",n="",i="",s=t.indexOf("#");-1!==s&&(i=t.substr(s),t=t.substr(0,s));var r=t.indexOf("?");return-1!==r&&(n=t.substr(r),t=t.substr(0,r)),{pathname:t,search:"?"===n?"":n,hash:"#"===i?"":i}}(e),s.state=t):(void 0===(s=Bo({},e)).pathname&&(s.pathname=""),s.search?"?"!==s.search.charAt(0)&&(s.search="?"+s.search):s.search="",s.hash?"#"!==s.hash.charAt(0)&&(s.hash="#"+s.hash):s.hash="",void 0!==t&&void 0===s.state&&(s.state=t));try{s.pathname=decodeURI(s.pathname)}catch(e){throw e instanceof URIError?new URIError('Pathname "'+s.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):e}return n&&(s.key=n),i?s.pathname?"/"!==s.pathname.charAt(0)&&(s.pathname=Uo(s.pathname,i.pathname)):s.pathname=i.pathname:s.pathname||(s.pathname="/"),s}function nl(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,i,s){if(null!=e){var r="function"==typeof e?e(t,n):e;"string"==typeof r?"function"==typeof i?i(r,s):s(!0):s(!1!==r)}else s(!0)},appendListener:function(e){var n=!0;function i(){n&&e.apply(void 0,arguments)}return t.push(i),function(){n=!1,t=t.filter((function(e){return e!==i}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),i=0;it?n.splice(t,n.length-t,s):n.push(s),h({action:i,location:s,index:t,entries:n})}}))},replace:function(e,t){var i="REPLACE",s=tl(e,t,d(),g.location);c.confirmTransitionTo(s,i,n,(function(e){e&&(g.entries[g.index]=s,h({action:i,location:s}))}))},go:f,goBack:function(){f(-1)},goForward:function(){f(1)},canGo:function(e){var t=g.index+e;return t>=0&&t=0||(s[n]=e[n]);return s}n(1281);var Cl=function(e){var t=Sl();return t.displayName=e,t},Tl=Cl("Router-History"),El=function(e){var t=Sl();return t.displayName=e,t},zl=El("Router"),Al=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._isMounted?n.setState({location:e}):n._pendingLocation=e}))),n}jo(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&this.unlisten()},n.render=function(){return qr.createElement(zl.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},qr.createElement(Tl.Provider,{children:this.props.children||null,value:this.props.history}))},t}(qr.Component);qr.Component;qr.Component;var Hl={},Dl=0;function Pl(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,i=n.path,s=n.exact,r=void 0!==s&&s,a=n.strict,o=void 0!==a&&a,l=n.sensitive,c=void 0!==l&&l;return[].concat(i).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var i=function(e,t){var n=""+t.end+t.strict+t.sensitive,i=Hl[n]||(Hl[n]={});if(i[e])return i[e];var s=[],r={regexp:kl()(e,s,t),keys:s};return Dl<1e4&&(i[e]=r,Dl++),r}(n,{end:r,strict:o,sensitive:c}),s=i.regexp,a=i.keys,l=s.exec(e);if(!l)return null;var h=l[0],d=l.slice(1),u=e===h;return r&&!u?null:{path:n,url:"/"===n&&""===h?"/":h,isExact:u,params:a.reduce((function(e,t,n){return e[t.name]=d[n],e}),{})}}),null)}var Ol=function(e){function t(){return e.apply(this,arguments)||this}return jo(t,e),t.prototype.render=function(){var e=this;return qr.createElement(zl.Consumer,null,(function(t){t||Xo(!1);var n=e.props.location||t.location,i=Bo({},t,{location:n,match:e.props.computedMatch?e.props.computedMatch:e.props.path?Pl(n.pathname,e.props):t.match}),s=e.props,r=s.children,a=s.component,o=s.render;return Array.isArray(r)&&0===r.length&&(r=null),qr.createElement(zl.Provider,{value:i},i.match?r?"function"==typeof r?r(i):r:a?qr.createElement(a,i):o?o(i):null:"function"==typeof r?r(i):null)}))},t}(qr.Component);function Yl(e){return"/"===e.charAt(0)?e:"/"+e}function Rl(e,t){if(!e)return t;var n=Yl(e);return 0!==t.pathname.indexOf(n)?t:Bo({},t,{pathname:t.pathname.substr(n.length)})}function Vl(e){return"string"==typeof e?e:el(e)}function Nl(e){return function(){Xo(!1)}}function $l(){}qr.Component;qr.Component;qr.useContext;qr.Component;var Il=function(e){function t(){for(var t,n=arguments.length,i=new Array(n),s=0;s=0;o--)(s=e[o])&&(a=(r<3?s(a):r>3?s(t,n,a):s(t,n))||a);return r>3&&a&&Object.defineProperty(t,n,a),a}function nc(){for(var e=0,t=0,n=arguments.length;t0){for(var e=0,t=i.timeoutIds;e0){for(var e=0,t=i.requestIds;e0?qr.createElement(t,{},e):void 0:"number"==typeof e||"symbol"==typeof e.type||Array.isArray(e)?qr.createElement(t,{},e):function(e){return"object"==typeof e&&void 0!==e.type&&void 0!==e.props}(e)?e:void 0}function mc(e,t){return null!=e&&null!=e.type&&null!=e.type.displayName&&e.type.displayName===t.displayName}function fc(){return void 0!==qr.createRef?qr.createRef():{current:null}}var gc=n(9018),vc={add:["M10.99 6.99h-2v-2c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1v-2h2c.55 0 1-.45 1-1s-.45-1-1-1zm-3-7c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.68 6-6 6z"],"add-column-left":["M15 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-5 14H2V2h8v12zm4 0h-3V2h3v12zM4 9h1v1c0 .55.45 1 1 1s1-.45 1-1V9h1c.55 0 1-.45 1-1s-.45-1-1-1H7V6c0-.55-.45-1-1-1s-1 .45-1 1v1H4c-.55 0-1 .45-1 1s.45 1 1 1z"],"add-column-right":["M8 9h1v1c0 .55.45 1 1 1s1-.45 1-1V9h1c.55 0 1-.45 1-1s-.45-1-1-1h-1V6c0-.55-.45-1-1-1s-1 .45-1 1v1H8c-.55 0-1 .45-1 1s.45 1 1 1zm7-9H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM5 14H2V2h3v12zm9 0H6V2h8v12z"],"add-location":["M8 0a1 1 0 110 2 6 6 0 106 6 1 1 0 012 0 8 8 0 11-8-8zm0 5a3 3 0 110 6 3 3 0 010-6zm5-5a1 1 0 011 1v.999L15 2a1 1 0 010 2h-1v1a1 1 0 01-2 0V4h-1a1 1 0 010-2h1V1a1 1 0 011-1z"],"add-row-bottom":["M6 11h1v1c0 .55.45 1 1 1s1-.45 1-1v-1h1c.55 0 1-.45 1-1s-.45-1-1-1H9V8c0-.55-.45-1-1-1s-1 .45-1 1v1H6c-.55 0-1 .45-1 1s.45 1 1 1zm9-11H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H2V6h12v8zm0-9H2V2h12v3z"],"add-row-top":["M15 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H2v-3h12v3zm0-4H2V2h12v8zM6 7h1v1c0 .55.45 1 1 1s1-.45 1-1V7h1c.55 0 1-.45 1-1s-.45-1-1-1H9V4c0-.55-.45-1-1-1s-1 .45-1 1v1H6c-.55 0-1 .45-1 1s.45 1 1 1z"],"add-to-artifact":["M14 4.01h-1v-1c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1v-1h1c.55 0 1-.45 1-1 0-.56-.45-1-1-1zm-13 2h6c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm8 6H1c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1 0-.56-.45-1-1-1zm0-4H1c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1 0-.56-.45-1-1-1z"],"add-to-folder":["M.01 7V5H16v7c0 .55-.45 1-1 1H9.005v-2.99C8.974 8.332 7.644 7 5.996 7H.01zM15 2H7.416L5.706.29a.996.996 0 00-.71-.29H1C.45 0 0 .45 0 1v3h15.99V3c.01-.55-.44-1-.99-1zM5.997 9H2c-.55 0-1 .45-1 1s.45 1 1 1h1.589L.3 14.29a1.003 1.003 0 001.42 1.42l3.287-3.29v1.59c0 .55.45 1 1 1 .549 0 .999-.45.999-1v-4A1.02 1.02 0 005.996 9z"],airplane:["M16 1.5A1.498 1.498 0 0013.44.44L9.91 3.97 2 1 1 3l5.93 3.95L3.88 10H1l-1 1 3 2 2 3 1-1v-2.88l3.05-3.05L13 15l2-1-2.97-7.91 3.53-3.53c.27-.27.44-.65.44-1.06z"],"align-center":["M4 4c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1H4zM1 3h14c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm13 10H2c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1zm1-6H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm-5 5c.55 0 1-.45 1-1s-.45-1-1-1H6c-.55 0-1 .45-1 1s.45 1 1 1h4z"],"align-justify":["M15 12.98H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm-14-10h14c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1 0 .56.45 1 1 1zm14 4H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm0-3H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm0 6H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],"align-left":["M13 13H1c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1zM1 3h14c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm0 3h8c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm14 1H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM1 12h4c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1z"],"align-right":["M15 12.98H3c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1zm-14-10h14c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1 0 .56.45 1 1 1zm14 1H7c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1zm0 6h-4c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1zm0-3H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],"alignment-bottom":["M10 12h3c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1h-3c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1zm5 2H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM3 12h3c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1z"],"alignment-horizontal-center":["M15 7h-1V6c0-.55-.45-1-1-1h-3c-.55 0-1 .45-1 1v1H7V3c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v4H1c-.55 0-1 .45-1 1s.45 1 1 1h1v4c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V9h2v1c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V9h1c.55 0 1-.45 1-1s-.45-1-1-1z"],"alignment-left":["M9 9H5c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1zM1 0C.45 0 0 .45 0 1v14c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm13 2H5c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1z"],"alignment-right":["M11 9H7c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1zm4-9c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm-4 2H2c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1z"],"alignment-top":["M15 0H1C.45 0 0 .45 0 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM6 4H3c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm7 0h-3c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1z"],"alignment-vertical-center":["M13 2H9V1c0-.55-.45-1-1-1S7 .45 7 1v1H3c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h4v2H6c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1v-1h1c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1H9V7h4c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1z"],annotation:["M15.52 2.77c.3-.29.48-.7.48-1.15C16 .73 15.27 0 14.38 0c-.45 0-.85.18-1.15.48l-1.34 1.34 2.3 2.3 1.33-1.35zM7.4 10.9l6.21-6.21-2.3-2.3L5.1 8.6l2.3 2.3zM14 14H2V2h6.34l2-2H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V5.66l-2 2V14zM3 13l3.58-1.29-2.29-2.27L3 13z"],"app-header":["M15 0a1 1 0 011 1v14a1 1 0 01-1 1H1a1 1 0 01-1-1V1a1 1 0 011-1h14zM6 4a1 1 0 00-1.993-.117L4 4v8a1 1 0 001.993.117L6 12V9h4v3a1 1 0 001.993.117L12 12V4a1 1 0 00-1.993-.117L10 4v3H6V4z"],application:["M3.5 7h7c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-7c-.28 0-.5.22-.5.5s.22.5.5.5zM15 1H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zm-1 12H2V5h12v8zM3.5 9h4c.28 0 .5-.22.5-.5S7.78 8 7.5 8h-4c-.28 0-.5.22-.5.5s.22.5.5.5zm0 2h5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-5c-.28 0-.5.22-.5.5s.22.5.5.5z"],applications:["M3.5 11h2c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-2c-.28 0-.5.22-.5.5s.22.5.5.5zm0-2h5c.28 0 .5-.22.5-.5S8.78 8 8.5 8h-5c-.28 0-.5.22-.5.5s.22.5.5.5zM11 4H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm-1 10H2V7h8v7zm5-14H5c-.55 0-1 .45-1 1v2h2V2h8v7h-1v2h2c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM3.5 13h3c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-3c-.28 0-.5.22-.5.5s.22.5.5.5z"],archive:["M13.382 0a1 1 0 01.894.553L16 4v11a1 1 0 01-1 1H1a1 1 0 01-1-1V4L1.724.553A1 1 0 012.618 0h10.764zM8 6c-.55 0-1 .45-1 1v2.59l-.29-.29-.081-.076A.97.97 0 006 9a1.003 1.003 0 00-.71 1.71l2 2 .096.084c.168.13.38.206.614.206.28 0 .53-.11.71-.29l2-2 .084-.096A1.003 1.003 0 009.29 9.29l-.29.3V7l-.007-.116A1.004 1.004 0 008 6zm5-4H3L2 4h12l-1-2z"],array:["M15 0a1 1 0 01.993.883L16 1v14a1 1 0 01-.883.993L15 16h-3a1 1 0 01-.117-1.993L12 14h2V2h-2a1 1 0 01-.993-.883L11 1a1 1 0 01.883-.993L12 0h3zM4 0a1 1 0 01.117 1.993L4 2H2v12h2a1 1 0 01.993.883L5 15a1 1 0 01-.883.993L4 16H1a1 1 0 01-.993-.883L0 15V1A1 1 0 01.883.007L1 0h3zm4 7a1 1 0 110 2 1 1 0 010-2zM5 7a1 1 0 110 2 1 1 0 010-2zm6 0a1 1 0 110 2 1 1 0 010-2z"],"array-boolean":["M15 0a1 1 0 01.993.883L16 1v14a1 1 0 01-.883.993L15 16h-3a1 1 0 01-.117-1.993L12 14h2V2h-2a1 1 0 01-.993-.883L11 1a1 1 0 01.883-.993L12 0h3zM4 0a1 1 0 01.117 1.993L4 2H2v12h2a1 1 0 01.993.883L5 15a1 1 0 01-.883.993L4 16H1a1 1 0 01-.993-.883L0 15V1A1 1 0 01.883.007L1 0h3zm7 6a1 1 0 01.993.883L12 7v2a1 1 0 01-.883.993L11 10H5a1 1 0 01-.993-.883L4 9V7a1 1 0 01.883-.993L5 6h6zm0 1H8v2h3V7z"],"array-date":["M15 0a1 1 0 01.993.883L16 1v14a1 1 0 01-.883.993L15 16h-3a1 1 0 01-.117-1.993L12 14h2V2h-2a1 1 0 01-.993-.883L11 1a1 1 0 01.883-.993L12 0h3zM4 0a1 1 0 01.117 1.993L4 2H2v12h2a1 1 0 01.993.883L5 15a1 1 0 01-.883.993L4 16H1a1 1 0 01-.993-.883L0 15V1A1 1 0 01.883.007L1 0h3zm6.5 4a.5.5 0 01.5.5V5a1 1 0 01.993.883L12 6v5a1 1 0 01-.883.993L11 12H5a1 1 0 01-.993-.883L4 11V6a1 1 0 01.883-.993L5 5v-.5a.5.5 0 011 0V5h4v-.5a.5.5 0 01.5-.5zm.5 3H5v4h6V7z"],"array-numeric":["M15 0a1 1 0 01.993.883L16 1v14a1 1 0 01-.883.993L15 16h-3a1 1 0 01-.117-1.993L12 14h2V2h-2a1 1 0 01-.993-.883L11 1a1 1 0 01.883-.993L12 0h3zM4 0a1 1 0 01.117 1.993L4 2H2v12h2a1 1 0 01.993.883L5 15a1 1 0 01-.883.993L4 16H1a1 1 0 01-.993-.883L0 15V1A1 1 0 01.883.007L1 0h3zm6.904 5c.256 0 .483.037.68.112a1.343 1.343 0 01.812.788c.072.184.108.385.108.604 0 .23-.05.441-.152.636a1.314 1.314 0 01-.456.492v.016l.08.04c.055.031.111.072.168.124.085.077.163.172.232.284a1.673 1.673 0 01.24.872c0 .25-.043.477-.128.68a1.518 1.518 0 01-.896.852 1.937 1.937 0 01-.68.116c-.427 0-.792-.101-1.096-.304a1.362 1.362 0 01-.584-.864c-.01-.053.01-.088.064-.104l.696-.16.033-.002c.03.002.051.022.063.058.059.16.155.296.288.408.133.112.312.168.536.168.256 0 .453-.076.592-.228a.827.827 0 00.208-.58c0-.277-.08-.495-.24-.652-.16-.157-.376-.236-.648-.236h-.232l-.035-.005c-.03-.01-.045-.035-.045-.075v-.632l.005-.035c.01-.03.035-.045.075-.045h.216l.138-.009a.734.734 0 00.438-.207c.144-.144.216-.336.216-.576a.745.745 0 00-.192-.532c-.128-.136-.307-.204-.536-.204-.203 0-.363.05-.48.152a.815.815 0 00-.248.408c-.016.048-.048.067-.096.056l-.68-.16-.034-.012c-.028-.016-.038-.044-.03-.084a1.347 1.347 0 01.516-.828c.136-.104.296-.185.48-.244A1.98 1.98 0 0110.904 5zm-6.152.088l.035.005c.03.01.045.035.045.075v5.28l-.005.035c-.01.03-.035.045-.075.045h-.736l-.035-.005c-.03-.01-.045-.035-.045-.075V6.16H3.92l-.832.584-.032.016C3.02 6.773 3 6.751 3 6.696V5.88l.006-.04a.157.157 0 01.05-.072l.872-.632.04-.027a.236.236 0 01.104-.021h.68zM7.344 5c.256 0 .483.04.68.12.197.08.364.188.5.324s.24.296.312.48c.072.184.108.383.108.596 0 .245-.045.47-.136.676-.09.205-.216.404-.376.596l-1.584 1.92v.016h2.016l.035.005c.03.01.045.035.045.075v.64l-.005.035c-.01.03-.035.045-.075.045H5.808l-.035-.005c-.03-.01-.045-.035-.045-.075v-.6l.004-.04a.132.132 0 01.036-.064l1.92-2.392.1-.133a1.95 1.95 0 00.156-.267.985.985 0 00.096-.432.736.736 0 00-.188-.512c-.125-.139-.303-.208-.532-.208-.219 0-.39.061-.512.184a.826.826 0 00-.224.496c-.01.053-.04.075-.088.064L5.792 6.4l-.034-.012c-.028-.016-.038-.044-.03-.084a1.425 1.425 0 01.94-1.192A1.88 1.88 0 017.344 5z"],"array-string":["M15 0a1 1 0 01.993.883L16 1v14a1 1 0 01-.883.993L15 16h-3a1 1 0 01-.117-1.993L12 14h2V2h-2a1 1 0 01-.993-.883L11 1a1 1 0 01.883-.993L12 0h3zM4 0a1 1 0 01.117 1.993L4 2H2v12h2a1 1 0 01.993.883L5 15a1 1 0 01-.883.993L4 16H1a1 1 0 01-.993-.883L0 15V1A1 1 0 01.883.007L1 0h3zm1.61 5c.514 0 .962.212 1.343.637.382.425.573.997.573 1.716 0 .838-.258 1.588-.773 2.252-.514.663-1.327 1.2-2.437 1.609v-.465l.233-.095a3.09 3.09 0 001.274-1.017c.366-.505.55-1.03.55-1.577a.478.478 0 00-.057-.26c-.018-.037-.043-.056-.074-.056s-.08.025-.149.075c-.198.142-.446.214-.744.214-.36 0-.675-.145-.944-.433A1.453 1.453 0 014 6.572c0-.422.155-.79.465-1.102.31-.313.692-.47 1.144-.47zm4.474 0c.514 0 .963.212 1.344.637.381.425.572.997.572 1.716 0 .838-.257 1.588-.772 2.252-.515.663-1.327 1.2-2.437 1.609v-.465l.233-.095a3.09 3.09 0 001.274-1.017c.366-.505.549-1.03.549-1.577a.478.478 0 00-.056-.26c-.019-.037-.044-.056-.075-.056-.03 0-.08.025-.149.075-.198.142-.446.214-.744.214-.36 0-.674-.145-.944-.433a1.453 1.453 0 01-.405-1.028c0-.422.155-.79.466-1.102.31-.313.691-.47 1.144-.47z"],"array-timestamp":["M15 0a1 1 0 01.993.883L16 1v14a1 1 0 01-.883.993L15 16h-3a1 1 0 01-.117-1.993L12 14h2V2h-2a1 1 0 01-.993-.883L11 1a1 1 0 01.883-.993L12 0h3zM4 0a1 1 0 01.117 1.993L4 2H2v12h2a1 1 0 01.993.883L5 15a1 1 0 01-.883.993L4 16H1a1 1 0 01-.993-.883L0 15V1A1 1 0 01.883.007L1 0h3zm4 3a5 5 0 110 10A5 5 0 018 3zm0 1a4 4 0 100 8 4 4 0 000-8zm2.354 1.646a.5.5 0 01.057.638l-.057.07-2 2a.5.5 0 01-.638.057l-.07-.057-1-1a.5.5 0 01.638-.765l.07.057.646.647 1.646-1.647a.5.5 0 01.708 0z"],"arrow-bottom-left":["M14 3a1.003 1.003 0 00-1.71-.71L4 10.59V6c0-.55-.45-1-1-1s-1 .45-1 1v7c0 .55.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1H5.41l8.29-8.29c.19-.18.3-.43.3-.71z"],"arrow-bottom-right":["M13 5c-.55 0-1 .45-1 1v4.59l-8.29-8.3a1.003 1.003 0 00-1.42 1.42l8.3 8.29H6c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z"],"arrow-down":["M13 8c-.3 0-.5.1-.7.3L9 11.6V2c0-.5-.4-1-1-1s-1 .5-1 1v9.6L3.7 8.3C3.5 8.1 3.3 8 3 8c-.5 0-1 .5-1 1 0 .3.1.5.3.7l5 5c.2.2.4.3.7.3s.5-.1.7-.3l5-5c.2-.2.3-.4.3-.7 0-.6-.4-1-1-1z"],"arrow-left":["M13.99 6.99H4.41L7.7 3.7a1.003 1.003 0 00-1.42-1.42l-5 5a1.014 1.014 0 000 1.42l5 5a1.003 1.003 0 001.42-1.42L4.41 8.99H14c.55 0 1-.45 1-1s-.46-1-1.01-1z"],"arrow-right":["M14.7 7.29l-5-5a.965.965 0 00-.71-.3 1.003 1.003 0 00-.71 1.71l3.29 3.29H1.99c-.55 0-1 .45-1 1s.45 1 1 1h9.59l-3.29 3.29a1.003 1.003 0 001.42 1.42l5-5c.18-.18.29-.43.29-.71s-.12-.52-.3-.7z"],"arrow-top-left":["M13.71 12.29L5.41 4H10c.55 0 1-.45 1-1s-.45-1-1-1H3c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1s1-.45 1-1V5.41l8.29 8.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],"arrow-top-right":["M13 2H6c-.55 0-1 .45-1 1s.45 1 1 1h4.59L2.3 12.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L12 5.41V10c0 .55.45 1 1 1s1-.45 1-1V3c0-.55-.45-1-1-1z"],"arrow-up":["M13.7 6.3l-5-5C8.5 1.1 8.3 1 8 1s-.5.1-.7.3l-5 5c-.2.2-.3.4-.3.7 0 .6.5 1 1 1 .3 0 .5-.1.7-.3L7 4.4V14c0 .6.4 1 1 1s1-.4 1-1V4.4l3.3 3.3c.2.2.4.3.7.3.6 0 1-.4 1-1 0-.3-.1-.5-.3-.7z"],"arrows-horizontal":["M15.7 7.3l-4-4c-.2-.2-.4-.3-.7-.3-.6 0-1 .5-1 1 0 .3.1.5.3.7L12.6 7H3.4l2.3-2.3c.2-.2.3-.4.3-.7 0-.5-.4-1-1-1-.3 0-.5.1-.7.3l-4 4c-.2.2-.3.4-.3.7s.1.5.3.7l4 4c.2.2.4.3.7.3.6 0 1-.4 1-1 0-.3-.1-.5-.3-.7L3.4 9h9.2l-2.3 2.3c-.2.2-.3.4-.3.7 0 .6.4 1 1 1 .3 0 .5-.1.7-.3l4-4c.2-.2.3-.4.3-.7s-.1-.5-.3-.7z"],"arrows-vertical":["M12 10c-.3 0-.5.1-.7.3L9 12.6V3.4l2.3 2.3c.2.2.4.3.7.3.6 0 1-.4 1-1 0-.3-.1-.5-.3-.7l-4-4C8.5.1 8.3 0 8 0s-.5.1-.7.3l-4 4c-.2.2-.3.4-.3.7 0 .6.5 1 1 1 .3 0 .5-.1.7-.3L7 3.4v9.2l-2.3-2.3c-.2-.2-.4-.3-.7-.3-.5 0-1 .4-1 1 0 .3.1.5.3.7l4 4c.2.2.4.3.7.3s.5-.1.7-.3l4-4c.2-.2.3-.4.3-.7 0-.6-.4-1-1-1z"],asterisk:["M14.54 11.18l.01-.02L9.8 8l4.75-3.17-.01-.02c.27-.17.46-.46.46-.81 0-.55-.45-1-1-1-.21 0-.39.08-.54.18l-.01-.02L9 6.13V1c0-.55-.45-1-1-1S7 .45 7 1v5.13L2.55 3.17l-.01.01A.969.969 0 002 3c-.55 0-1 .45-1 1 0 .35.19.64.46.82l-.01.01L6.2 8l-4.75 3.17.01.02c-.27.17-.46.46-.46.81 0 .55.45 1 1 1 .21 0 .39-.08.54-.18l.01.02L7 9.87V15c0 .55.45 1 1 1s1-.45 1-1V9.87l4.45 2.96.01-.02c.15.11.33.19.54.19.55 0 1-.45 1-1 0-.35-.19-.64-.46-.82z"],"automatic-updates":["M8 14c-3.31 0-6-2.69-6-6 0-1.77.78-3.36 2-4.46V5c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1H1C.45 0 0 .45 0 1s.45 1 1 1h1.74A7.95 7.95 0 000 8c0 4.42 3.58 8 8 8 .55 0 1-.45 1-1s-.45-1-1-1zM8 2a5.9 5.9 0 012.95.81l1.47-1.47A7.893 7.893 0 008 0c-.55 0-1 .45-1 1s.45 1 1 1zm2.71 6.71l5-5a1.003 1.003 0 00-1.42-1.42L10 6.59l-1.29-1.3a1.003 1.003 0 00-1.42 1.42l2 2c.18.18.43.29.71.29s.53-.11.71-.29zM16 8c0-.55-.06-1.08-.16-1.6l-1.87 1.87A5.966 5.966 0 0112 12.45V11c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1h-1.74A7.95 7.95 0 0016 8z"],backlink:["M14 10a1 1 0 110 2h-.585l2.292 2.293a1 1 0 01-1.32 1.497l-.094-.083L12 13.415V14a1 1 0 11-2 0l.003-3.075.012-.1.012-.059.033-.108.034-.081.052-.098.067-.096.08-.09a1.01 1.01 0 01.112-.097l.11-.071.143-.065.076-.024.091-.02.116-.014L14 10zM6.036 6.136l-3.45 3.45-.117.127a2 2 0 002.818 2.818l.127-.117 3.45-3.449a4 4 0 01-.885 3.704l-.15.16-1 1A4 4 0 011.02 8.33l.15-.16 1-1a3.998 3.998 0 013.865-1.035zm4.671-1.843a1 1 0 01.083 1.32l-.083.094-5 5a1 1 0 01-1.497-1.32l.083-.094 5-5a1 1 0 011.414 0zm3.121-3.121a4 4 0 01.151 5.497l-.15.16-1 1a3.998 3.998 0 01-3.864 1.036l3.45-3.45.116-.128a2 2 0 00-2.818-2.818l-.127.117-3.45 3.45A4 4 0 017.02 2.33l.15-.16 1-1a4 4 0 015.657 0z"],badge:["M13.36 4.59c-.15-1.13.5-2.01 1.1-2.87L13.43.53c-1.72.88-4.12.65-5.63-.53-1.51 1.18-3.91 1.41-5.63.52l-1.03 1.2c.61.86 1.25 1.74 1.1 2.87-.3 2.29-2.45 4.17-1.32 6.68.45 1.14 1.44 1.9 2.72 2.2 1.56.36 3.52.72 4.16 2.53.64-1.81 2.6-2.16 4.16-2.54 1.28-.3 2.27-1.06 2.72-2.2 1.12-2.5-1.03-4.38-1.32-6.67z"],"ban-circle":["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm3 9H5c-.55 0-1-.45-1-1s.45-1 1-1h6c.55 0 1 .45 1 1s-.45 1-1 1z"],"bank-account":["M15.36 6.46l-.62-.14c-.31-1.12-.98-2.15-1.87-2.99l.4-1.77a.438.438 0 00-.49-.56c-.85.09-1.6.42-2.14.98-.84-.32-1.87-.51-2.85-.51-2.49 0-4.63 1.17-5.92 2.89-.18-.04-.36-.09-.53-.09-.76 0-1.34.61-1.34 1.4 0 .56.31 1.03.76 1.26-.05.33-.09.7-.09 1.07 0 1.68.71 3.17 1.83 4.34l-.27 1.59c-.09.56.35 1.07.89 1.07h.58c.45 0 .8-.33.89-.79l.04-.37c.94.42 2 .7 3.16.7 1.11 0 2.23-.23 3.16-.7l.05.37c.09.47.45.79.89.79h.58c.53 0 .98-.51.89-1.07l-.27-1.54c.62-.61 1.07-1.35 1.38-2.15l.8-.19c.4-.09.71-.47.71-.93V7.4c.09-.47-.22-.84-.62-.94zM12 8c-.6 0-1-.7-1-1.5S11.4 5 12 5s1 .7 1 1.5S12.6 8 12 8zM6.21 4.92c-.41.2-.91.04-1.12-.36-.21-.4-.04-.88.37-1.07 1.35-.65 2.73-.65 4.08 0 .41.2.58.68.37 1.07-.21.4-.71.56-1.12.36-.87-.43-1.71-.43-2.58 0z"],barcode:["M0 14h2V2H0v12zm6 0h1V2H6v12zm2 0h1V2H8v12zm-5 0h2V2H3v12zM15 2v12h1V2h-1zm-5 12h1V2h-1v12zm2 0h2V2h-2v12z"],blank:[],"blocked-person":["M9.39 12.69c-1.2-.53-1.04-.85-1.08-1.29-.01-.07-.01-.13-.02-.2.41-.37.75-.87.97-1.44 0 0 .01-.03.01-.04.05-.13.09-.26.13-.39.27-.06.43-.36.5-.63.01-.03.03-.08.05-.12C8.18 7.8 6.94 6.04 6.94 4c0-.32.04-.62.09-.92-.17-.03-.35-.08-.51-.08-.65 0-1.37.2-1.88.59-.5.38-.87.92-1.05 1.51-.04.14-.07.27-.09.41-.09.48-.14 1.23-.14 1.74v.06c-.19.08-.36.27-.4.68-.03.31.1.59.16.7.06.28.23.59.51.64.04.14.08.27.13.39 0 .01.01.02.01.02v.01c.22.59.57 1.1.99 1.46 0 .06-.01.12-.01.17-.04.44.08.76-1.12 1.29-1.2.53-3.01 1.1-3.38 1.95C-.12 15.5.03 16 .03 16h12.96s.15-.5-.22-1.36c-.37-.85-2.18-1.42-3.38-1.95zM11.97 0C9.75 0 7.94 1.79 7.94 4s1.8 4 4.03 4S16 6.21 16 4s-1.8-4-4.03-4zM9.96 4c0-1.1.9-2 2.01-2 .37 0 .72.11 1.02.28l-2.75 2.73c-.17-.3-.28-.64-.28-1.01zm2.01 2c-.37 0-.72-.11-1.02-.28l2.75-2.73c.18.3.28.64.28 1.01.01 1.1-.9 2-2.01 2z"],bold:["M11.7 7c.2-.4.3-1 .3-1.5v-.4V5c0-.1 0-.2-.1-.3v-.1C11.4 3.1 10.1 2 8.5 2H4c-.5 0-1 .4-1 1v10c0 .5.4 1 1 1h5c2.2 0 4-1.8 4-4 0-1.2-.5-2.3-1.3-3zM6 5h2c.6 0 1 .4 1 1s-.4 1-1 1H6V5zm3 6H6V9h3c.6 0 1 .4 1 1s-.4 1-1 1z"],book:["M2 1v14c0 .55.45 1 1 1h1V0H3c-.55 0-1 .45-1 1zm11-1h-1v7l-2-2-2 2V0H5v16h8c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],bookmark:["M11.2.01h-.15C11.03.01 11.02 0 11 0H5c-.02 0-.03.01-.05.01H4.8c-.44 0-.8.37-.8.82v14.75c0 .45.25.56.57.24l2.87-2.94c.31-.32.82-.32 1.13 0l2.87 2.94c.31.32.57.21.57-.24V.83C12 .38 11.64.01 11.2.01z"],box:["M6 10h4c.55 0 1-.45 1-1s-.45-1-1-1H6c-.55 0-1 .45-1 1s.45 1 1 1zm9.93-4.37v-.02L13.94.63C13.78.26 13.42 0 13 0H3c-.42 0-.78.26-.93.63L.08 5.61l-.01.02C.03 5.74 0 5.87 0 6v9c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V6c0-.13-.03-.26-.07-.37zM9 2h3.32l1.2 3H9V2zM3.68 2H7v3H2.48l1.2-3zM14 14H2V7h12v7z"],briefcase:["M15 3.98h-3v-2c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v2H1c-.55 0-1 .45-1 1v4h3v-1h2v1h6v-1h2v1h3v-4c0-.55-.45-1-1-1zm-5 0H6v-1h4v1zm3 7h-2v-1H5v1H3v-1H0v4c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-4h-3v1z"],"bring-data":["M14 14a1 1 0 010 2H2a1 1 0 010-2h12zM7.995 3.005c.55 0 1 .45 1 .999v5.584l1.29-1.288a1.002 1.002 0 011.42 1.419l-3 2.996a1.015 1.015 0 01-1.42 0l-3-2.997A1.002 1.002 0 015.705 8.3l1.29 1.29V4.013c0-.55.45-1.009 1-1.009zM14 0a1 1 0 110 2 1 1 0 010-2zm-3 0a1 1 0 110 2 1 1 0 010-2zM8 0a1 1 0 110 2 1 1 0 010-2zM5 0a1 1 0 110 2 1 1 0 010-2zM2 0a1 1 0 110 2 1 1 0 010-2z"],build:["M15.39 12.41L7.7 6l1.07-1.1c.34-.34-.12-.63.12-1.26.88-2.17 3.41-2.35 3.41-2.35s.36-.37.71-.72C9.74-.81 7.53.53 6.54 1.4L3.12 4.9l-.71.72c-.39.4-.39 1.05 0 1.45l-.7.72c-.39-.4-1.02-.4-1.41 0s-.39 1.05 0 1.45l1.41 1.45c.39.4 1.02.4 1.41 0s.39-1.05 0-1.45l.71-.72c.39.4 1.02.4 1.41 0l.8-.82 6.39 7.67c.82.82 2.14.82 2.96 0 .81-.82.81-2.15 0-2.96z"],calculator:["M13 0H3c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM6 14H4v-2h2v2zm0-3H4V9h2v2zm0-3H4V6h2v2zm3 6H7v-2h2v2zm0-3H7V9h2v2zm0-3H7V6h2v2zm3 6h-2V9h2v5zm0-6h-2V6h2v2zm0-3H4V2h8v3z"],calendar:["M11 3c.6 0 1-.5 1-1V1c0-.6-.4-1-1-1s-1 .4-1 1v1c0 .5.4 1 1 1zm3-2h-1v1c0 1.1-.9 2-2 2s-2-.9-2-2V1H6v1c0 1.1-.9 2-2 2s-2-.9-2-2V1H1c-.6 0-1 .5-1 1v12c0 .6.4 1 1 1h13c.6 0 1-.4 1-1V2c0-.6-.5-1-1-1zM5 13H2v-3h3v3zm0-4H2V6h3v3zm4 4H6v-3h3v3zm0-4H6V6h3v3zm4 4h-3v-3h3v3zm0-4h-3V6h3v3zM4 3c.6 0 1-.5 1-1V1c0-.6-.4-1-1-1S3 .4 3 1v1c0 .5.4 1 1 1z"],camera:["M15 3h-2.59L10.7 1.29A.956.956 0 0010 1H6c-.28 0-.53.11-.71.29L3.59 3H1c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h2.56c1.1 1.22 2.67 2 4.44 2s3.34-.78 4.44-2H15c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zM3 6H1V5h2v1zm5 6c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],"caret-down":["M12 6.5c0-.28-.22-.5-.5-.5h-7a.495.495 0 00-.37.83l3.5 4c.09.1.22.17.37.17s.28-.07.37-.17l3.5-4c.08-.09.13-.2.13-.33z"],"caret-left":["M9.5 4c-.13 0-.24.05-.33.13l-4 3.5c-.1.09-.17.22-.17.37s.07.28.17.37l4 3.5a.495.495 0 00.83-.37v-7c0-.28-.22-.5-.5-.5z"],"caret-right":["M11 8c0-.15-.07-.28-.17-.37l-4-3.5A.495.495 0 006 4.5v7a.495.495 0 00.83.37l4-3.5c.1-.09.17-.22.17-.37z"],"caret-up":["M11.87 9.17s.01 0 0 0l-3.5-4C8.28 5.07 8.15 5 8 5s-.28.07-.37.17l-3.5 4a.495.495 0 00.37.83h7a.495.495 0 00.37-.83z"],"cell-tower":["M8.97 6.76c-.01-.05-.04-.08-.06-.13-.02-.05-.03-.1-.05-.15.08-.14.14-.3.14-.48 0-.55-.45-1-1-1s-1 .45-1 1c0 .18.06.34.14.48-.03.05-.03.1-.05.15-.02.05-.05.08-.06.13l-2 8c-.13.54.19 1.08.73 1.21a.995.995 0 001.21-.73L7.53 13h.94l.56 2.24a1 1 0 001.94-.48l-2-8zM3.72 1.7C4.1 1.3 4.09.67 3.7.28S2.67-.09 2.28.3c-3.05 3.12-3.05 8.28 0 11.4a.996.996 0 101.43-1.39c-2.28-2.35-2.28-6.27.01-8.61zM11.6 3.2c-.44-.33-1.07-.24-1.4.2-.33.44-.24 1.07.2 1.4.43.32.53 1.96-.04 2.43-.42.35-.48.98-.13 1.41.35.42.98.48 1.41.13 1.59-1.33 1.39-4.5-.04-5.57z","M13.72.3c-.39-.4-1.02-.4-1.41-.02s-.41 1.02-.03 1.42c2.29 2.34 2.29 6.26 0 8.6-.39.39-.38 1.03.02 1.41s1.03.38 1.41-.02c3.05-3.11 3.05-8.27.01-11.39zM5.4 7.23c-.57-.47-.47-2.11-.04-2.43.44-.33.53-.96.2-1.4s-.96-.53-1.4-.2c-1.44 1.07-1.63 4.24-.04 5.57.42.35 1.05.3 1.41-.13.35-.42.29-1.06-.13-1.41z"],changes:["M8.29 7.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3a1.003 1.003 0 00-1.42-1.42L13 7.59V1c0-.55-.45-1-1-1s-1 .45-1 1v6.59l-1.29-1.3a1.003 1.003 0 00-1.42 1.42zM14.5 13h-13c-.83 0-1.5.67-1.5 1.5S.67 16 1.5 16h13c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5zM1 5c.28 0 .53-.11.71-.29L3 3.41V10c0 .55.45 1 1 1s1-.45 1-1V3.41L6.29 4.7c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3C4.53.11 4.28 0 4 0s-.53.11-.71.29l-3 3A1.003 1.003 0 001 5z"],chart:["M0 15c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V9.4L0 11v4zm6-5.5V15c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-5l-1 1-3-1.5zM13 7l-1 1v7c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V7.88c-.26.07-.58.12-1 .12-1.96 0-2-1-2-1zm2-6h-3c-.55 0-1 .45-1 1s.45 1 1 1h.59L8.8 6.78 5.45 5.11v.01C5.31 5.05 5.16 5 5 5s-.31.05-.44.11V5.1l-4 2v.01C.23 7.28 0 7.61 0 8c0 .55.45 1 1 1 .16 0 .31-.05.44-.11v.01L5 7.12 8.55 8.9v-.01c.14.06.29.11.45.11.28 0 .53-.11.71-.29L14 4.41V5c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1z"],chat:["M6 10c-1.1 0-2-.9-2-2V3H1c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1v2a1.003 1.003 0 001.71.71L5.41 13H10c.55 0 1-.45 1-1v-1.17l-.83-.83H6zm9-10H6c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h4.59l2.71 2.71c.17.18.42.29.7.29.55 0 1-.45 1-1V9c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],"chevron-backward":["M7.41 8l3.29-3.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L6 6.59V4c0-.55-.45-1-1-1s-1 .45-1 1v8c0 .55.45 1 1 1s1-.45 1-1V9.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L7.41 8z"],"chevron-down":["M12 5c-.28 0-.53.11-.71.29L8 8.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42l4 4c.18.18.43.29.71.29s.53-.11.71-.29l4-4A1.003 1.003 0 0012 5z"],"chevron-forward":["M10 3c-.55 0-1 .45-1 1v2.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42L7.59 8 4.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L9 9.41V12c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1z"],"chevron-left":["M7.41 8l3.29-3.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4C5.11 7.47 5 7.72 5 8c0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L7.41 8z"],"chevron-right":["M10.71 7.29l-4-4a1.003 1.003 0 00-1.42 1.42L8.59 8 5.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],"chevron-up":["M12.71 9.29l-4-4C8.53 5.11 8.28 5 8 5s-.53.11-.71.29l-4 4a1.003 1.003 0 001.42 1.42L8 7.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],circle:["M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6z"],"circle-arrow-down":["M11 7c-.28 0-.53.11-.71.29L9 8.59V5c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-1.29-1.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 0011 7zM8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z"],"circle-arrow-left":["M11 7H7.41L8.7 5.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3C4.11 7.47 4 7.72 4 8c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L7.41 9H11c.55 0 1-.45 1-1s-.45-1-1-1zM8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z"],"circle-arrow-right":["M8.71 4.29a1.003 1.003 0 00-1.42 1.42L8.59 7H5c-.55 0-1 .45-1 1s.45 1 1 1h3.59L7.3 10.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-3-3zM8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z"],"circle-arrow-up":["M8.71 4.29C8.53 4.11 8.28 4 8 4s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42L7 7.41V11c0 .55.45 1 1 1s1-.45 1-1V7.41l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3zM8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z"],citation:["M15.02 5c0-1.66-1.34-3-3-3s-3 1.34-3 3a2.996 2.996 0 003.6 2.94C12.1 9.76 11.14 11 10.02 11c-.55 0-1 .45-1 1s.45 1 1 1c2.76 0 5-3.13 5-7 0-.2-.02-.39-.04-.58.01-.14.04-.28.04-.42zm-11-3c-1.66 0-3 1.34-3 3a2.996 2.996 0 003.6 2.94C4.1 9.76 3.14 11 2.02 11c-.55 0-1 .45-1 1s.45 1 1 1c2.76 0 5-3.13 5-7 0-.2-.02-.39-.04-.58.01-.14.04-.28.04-.42 0-1.66-1.35-3-3-3z"],clean:["M12 8l-1.2 2.796-2.8 1.2 2.8 1.197L12 16l1.2-2.807L16 12l-2.8-1.204zM5 0L3.5 3.5 0 4.995 3.5 6.5 5 10l1.5-3.5L10 5 6.5 3.5z"],clipboard:["M11 2c0-.55-.45-1-1-1h.22C9.88.4 9.24 0 8.5 0S7.12.4 6.78 1H7c-.55 0-1 .45-1 1v1h5V2zm2 0h-1v2H5V2H4c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1z"],cloud:["M12 6c-.03 0-.07 0-.1.01A5 5 0 002 7c0 .11.01.22.02.33A3.51 3.51 0 000 10.5C0 12.43 1.57 14 3.5 14H12c2.21 0 4-1.79 4-4s-1.79-4-4-4z"],"cloud-download":["M11 11c-.28 0-.53.11-.71.29L9 12.59V8c0-.55-.45-1-1-1s-1 .45-1 1v4.59L5.71 11.3A.965.965 0 005 11a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 0011 11zm1-7c-.03 0-.07 0-.1.01A5 5 0 002 5c0 .11.01.22.02.33A3.51 3.51 0 000 8.5c0 1.41.84 2.61 2.03 3.17C2.2 10.17 3.46 9 5 9c.06 0 .13.02.19.02C5.07 8.7 5 8.36 5 8c0-1.66 1.34-3 3-3s3 1.34 3 3c0 .36-.07.7-.19 1.02.06 0 .13-.02.19-.02 1.48 0 2.7 1.07 2.95 2.47A3.964 3.964 0 0016 8c0-2.21-1.79-4-4-4z"],"cloud-upload":["M8.71 7.29C8.53 7.11 8.28 7 8 7s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42L7 10.41V15c0 .55.45 1 1 1s1-.45 1-1v-4.59l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3zM12 4c-.03 0-.07 0-.1.01A5 5 0 002 5c0 .11.01.22.02.33a3.495 3.495 0 00.07 6.37c-.05-.23-.09-.46-.09-.7 0-.83.34-1.58.88-2.12l3-3a2.993 2.993 0 014.24 0l3 3c.54.54.88 1.29.88 2.12 0 .16-.02.32-.05.47C15.17 10.78 16 9.5 16 8c0-2.21-1.79-4-4-4z"],code:["M15.71 7.29l-3-3a1.003 1.003 0 00-1.42 1.42L13.59 8l-2.29 2.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zM5 5a1.003 1.003 0 00-1.71-.71l-3 3C.11 7.47 0 7.72 0 8c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L2.41 8 4.7 5.71c.19-.18.3-.43.3-.71zm4-3c-.48 0-.87.35-.96.81l-2 10c-.01.06-.04.12-.04.19 0 .55.45 1 1 1 .48 0 .87-.35.96-.81l2-10c.01-.06.04-.12.04-.19 0-.55-.45-1-1-1z"],"code-block":["M15 3h-2V2c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v1H7V2c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zm-8.29 8.29a1.003 1.003 0 01-1.42 1.42l-3-3C2.11 9.53 2 9.28 2 9s.11-.53.29-.71l3-3a1.003 1.003 0 011.42 1.42L4.41 9l2.3 2.29zm7-1.58l-3 3a1.003 1.003 0 01-1.42-1.42L11.59 9l-2.3-2.29a1.003 1.003 0 011.42-1.42l3 3c.18.18.29.43.29.71s-.11.53-.29.71z"],cog:["M15.19 6.39h-1.85c-.11-.37-.27-.71-.45-1.04l1.36-1.36c.31-.31.31-.82 0-1.13l-1.13-1.13a.803.803 0 00-1.13 0l-1.36 1.36c-.33-.17-.67-.33-1.04-.44V.79c0-.44-.36-.8-.8-.8h-1.6c-.44 0-.8.36-.8.8v1.86c-.39.12-.75.28-1.1.47l-1.3-1.3c-.3-.3-.79-.3-1.09 0L1.82 2.91c-.3.3-.3.79 0 1.09l1.3 1.3c-.2.34-.36.7-.48 1.09H.79c-.44 0-.8.36-.8.8v1.6c0 .44.36.8.8.8h1.85c.11.37.27.71.45 1.04l-1.36 1.36c-.31.31-.31.82 0 1.13l1.13 1.13c.31.31.82.31 1.13 0l1.36-1.36c.33.18.67.33 1.04.44v1.86c0 .44.36.8.8.8h1.6c.44 0 .8-.36.8-.8v-1.86c.39-.12.75-.28 1.1-.47l1.3 1.3c.3.3.79.3 1.09 0l1.09-1.09c.3-.3.3-.79 0-1.09l-1.3-1.3c.19-.35.36-.71.48-1.1h1.85c.44 0 .8-.36.8-.8v-1.6a.816.816 0 00-.81-.79zm-7.2 4.6c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z"],"collapse-all":["M7.29 6.71c.18.18.43.29.71.29s.53-.11.71-.29l4-4a1.003 1.003 0 00-1.42-1.42L8 4.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42l4 4zm1.42 2.58C8.53 9.11 8.28 9 8 9s-.53.11-.71.29l-4 4a1.003 1.003 0 001.42 1.42L8 11.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-4-4z"],"column-layout":["M15 1H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zM4 13H2V3h2v10zm3 0H5V3h2v10zm7 0H8V3h6v10z"],comment:["M14 1H1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h2v3a1.003 1.003 0 001.71.71L8.41 12H14c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zM3.5 8C2.67 8 2 7.33 2 6.5S2.67 5 3.5 5 5 5.67 5 6.5 4.33 8 3.5 8zm4 0C6.67 8 6 7.33 6 6.5S6.67 5 7.5 5 9 5.67 9 6.5 8.33 8 7.5 8zm4 0c-.83 0-1.5-.67-1.5-1.5S10.67 5 11.5 5s1.5.67 1.5 1.5S12.33 8 11.5 8z"],comparison:["M7.99-.01c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1s1-.45 1-1v-14c0-.55-.45-1-1-1zm-3 3h-4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1zm10 0h-4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1zm0 3h-4v-2h4v2zm0 3h-4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1zm0 3h-4v-2h4v2zm-10-3h-4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1z"],compass:["M12 8c0 .14-.03.27-.08.39l-3 6.99c-.15.37-.51.62-.92.62s-.77-.25-.92-.61l-3-6.99a1.006 1.006 0 010-.79l3-6.99C7.23.25 7.59 0 8 0s.77.25.92.61l3 6.99c.05.13.08.26.08.4zM8 3.54L6.09 8h3.82L8 3.54z"],compressed:["M15.93 5.63v-.02L13.94.63C13.78.26 13.42 0 13 0H3c-.42 0-.78.26-.93.63L.08 5.61l-.01.02C.03 5.74 0 5.87 0 6v9c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V6c0-.13-.03-.26-.07-.37zM9 2h3.32l1.2 3H9V2zM3.68 2H7v3H2.48l1.2-3zM14 14H2V7h5v2.59l-1.29-1.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3a1.003 1.003 0 00-1.42-1.42L9 9.59V7h5v7z"],confirm:["M8.7 4.29a.965.965 0 00-.71-.3 1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l5-5a1.003 1.003 0 00-1.42-1.42l-4.29 4.3L8.7 4.29zm5.22 3.01c.03.23.07.45.07.69 0 3.31-2.69 6-6 6s-6-2.69-6-6 2.69-6 6-6c.81 0 1.59.17 2.3.46l1.5-1.5A7.998 7.998 0 00-.01 7.99c0 4.42 3.58 8 8 8s8-3.58 8-8c0-.83-.13-1.64-.36-2.39l-1.71 1.7z"],console:["M15 15H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h14c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zM14 5H2v8h12V5zM4 6c.28 0 .53.11.71.29l2 2c.18.18.29.43.29.71s-.11.53-.29.71l-2 2a1.003 1.003 0 01-1.42-1.42L4.59 9l-1.3-1.29A1.003 1.003 0 014 6zm5 4h3c.55 0 1 .45 1 1s-.45 1-1 1H9c-.55 0-1-.45-1-1s.45-1 1-1z"],contrast:["M15.2 6.4h-1.44c-.13-.47-.32-.92-.56-1.34L14.26 4c.31-.31.31-.82 0-1.13l-1.13-1.13a.803.803 0 00-1.13 0L10.94 2.8c-.42-.24-.86-.42-1.34-.56V.8c0-.44-.36-.8-.8-.8H7.2c-.44 0-.8.36-.8.8v1.44c-.5.14-.96.34-1.4.59l-1-1c-.3-.3-.79-.3-1.09 0L1.83 2.91c-.3.3-.3.79 0 1.09l1 1c-.25.44-.45.9-.59 1.4H.8c-.44 0-.8.36-.8.8v1.6c0 .44.36.8.8.8h1.44c.13.47.32.92.56 1.34L1.74 12c-.31.31-.31.82 0 1.13l1.13 1.13c.31.31.82.31 1.13 0l1.06-1.06c.42.24.86.42 1.34.56v1.44c0 .44.36.8.8.8h1.6c.44 0 .8-.36.8-.8v-1.44c.5-.14.96-.33 1.4-.59l1 1c.3.3.79.3 1.09 0l1.09-1.09c.3-.3.3-.79 0-1.09l-1-1c.25-.43.45-.9.59-1.4h1.44c.44 0 .8-.36.8-.8V7.2a.818.818 0 00-.81-.8zM8 12c-2.21 0-4-1.79-4-4s1.79-4 4-4v8z"],control:["M13 8H8v5h5V8zm0-5H8v4h5V3zm2-3H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H2V2h12v12zM7 3H3v10h4V3z"],"credit-card":["M14.99 2.95h-14c-.55 0-1 .45-1 1v1h16v-1c0-.55-.45-1-1-1zm-15 10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-6h-16v6zm5.5-2h5c.28 0 .5.22.5.5s-.22.5-.5.5h-5c-.28 0-.5-.22-.5-.5s.23-.5.5-.5zm-3 0h1c.28 0 .5.22.5.5s-.22.5-.5.5h-1c-.28 0-.5-.22-.5-.5s.23-.5.5-.5z"],cross:["M9.41 8l3.29-3.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L8 6.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42L6.59 8 3.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L8 9.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L9.41 8z"],crown:["M2 6l3 2 3-4 3 4 3-2-1 6H3L2 6zm6-5a1 1 0 110 2 1 1 0 010-2zM1 3a1 1 0 110 2 1 1 0 010-2zm14 0a1 1 0 110 2 1 1 0 010-2zM3 13h10v2H3v-2z"],cube:["M14.194 3.54L8 7.41 1.806 3.54 7.504.283a1 1 0 01.992 0l5.698 3.255zm.75.71a1 1 0 01.056.33v6.84a1 1 0 01-.504.868L8.5 15.714V8.277l6.444-4.027zm-13.888 0L7.5 8.277v7.437l-5.996-3.426A1 1 0 011 11.42V4.58a1 1 0 01.056-.33z"],"cube-add":["M14 2h1a1 1 0 010 2h-1v1a1 1 0 01-2 0V4h-1a1 1 0 010-2h1V1a1 1 0 012 0v1zM9.136.65a3.001 3.001 0 00.992 5.222c.018.058.038.115.059.172L8 7.41 1.806 3.54 7.504.283a1 1 0 01.992 0l.64.365zM15 7.235v4.184a1 1 0 01-.504.868L8.5 15.714V8.277l2.187-1.367A2.994 2.994 0 0013 8c.768 0 1.47-.289 2-.764zM1.056 4.25L7.5 8.277v7.437l-5.996-3.426A1 1 0 011 11.42V4.58a1 1 0 01.056-.33z"],"cube-remove":["M10.365 5.933L8 7.41 1.806 3.54 7.504.283a1 1 0 01.992 0l.64.365a3.001 3.001 0 001.228 5.283zM15 6v5.42a1 1 0 01-.504.868L8.5 15.714V8.277L12.143 6H15zM1.056 4.25L7.5 8.277v7.437l-5.996-3.426A1 1 0 011 11.42V4.58a1 1 0 01.056-.33zM11 2h4a1 1 0 010 2h-4a1 1 0 010-2z"],"curved-range-chart":["M15 12H3.12l1.81-1.39c1.73 1.01 5.53-.03 9.08-2.61l-1.22-1.5C10.3 8.3 7.86 9.37 6.65 9.29L14.3 3.4l-.6-.8-7.83 6.03c-.01-1.07 1.8-3.19 4.47-5.13L9.12 2C5.38 4.7 3.34 8.1 4.25 9.87L2 11.6V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],cut:["M13 2s.71-1.29 0-2L8.66 5.07l1.05 1.32L13 2zm.07 8c-.42 0-.82.09-1.18.26L3.31 0c-.69.71 0 2 0 2l3.68 5.02-2.77 3.24A2.996 2.996 0 000 13c0 1.66 1.34 3 3 3s3-1.34 3-3c0-.46-.11-.89-.29-1.27L8.1 8.54l2.33 3.19c-.18.39-.29.82-.29 1.27 0 1.66 1.31 3 2.93 3S16 14.66 16 13s-1.31-3-2.93-3zM3 14c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm10.07 0c-.54 0-.98-.45-.98-1s.44-1 .98-1 .98.45.98 1-.44 1-.98 1z"],cycle:["M13 9a3 3 0 110 6 3 3 0 010-6zM3 9a3 3 0 110 6 3 3 0 010-6zm6.169-5.27l.087.09 1.51 1.746 1.589.549a1 1 0 01.65 1.16l-.032.112a1 1 0 01-1.159.65l-.112-.032-1.843-.636a1 1 0 01-.337-.198l-.092-.093-.959-1.109L7.041 7.5l1.691 1.819a1 1 0 01.26.556L9 10v3a1 1 0 01-1.993.117L7 13l-.001-2.608-2.056-2.211a1 1 0 01-.081-1.264l.082-.1 2.825-3.026a1 1 0 011.4-.061zM13 10.5a1.5 1.5 0 100 3 1.5 1.5 0 000-3zm-10 0a1.5 1.5 0 100 3 1.5 1.5 0 000-3zM11 1a1.5 1.5 0 110 3 1.5 1.5 0 010-3z"],dashboard:["M5 4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zM4 7c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm4-2c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm-2 6c0 1.1.9 2 2 2s2-.9 2-2c0-.53-2-5-2-5s-2 4.47-2 5zM8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zm4-9c0-.55-.45-1-1-1s-1 .45-1 1 .45 1 1 1 1-.45 1-1zm0 2c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z"],"data-connection":["M1 9.52c.889.641 2.308 1.133 4.003 1.354L5 11a5.994 5.994 0 002.664 4.988c-.217.008-.44.012-.664.012-3.215 0-5.846-.85-5.993-1.906L1 14V9.52zM11 6c2.762 0 5 2.238 5 5s-2.238 5-5 5-5-2.238-5-5 2.238-5 5-5zm1 1l-4 5h2.5l-.5 3 4-5h-2.5l.5-3zm1-3.48v1.822a6.002 6.002 0 00-7.9 4.556l-.248-.03c-2.168-.28-3.733-.966-3.845-1.774L1 8V3.52C2.22 4.4 4.44 5 7 5s4.78-.6 6-1.48zM7 0c3.31 0 6 .9 6 2s-2.69 2-6 2c-3.32 0-6-.9-6-2s2.68-2 6-2z"],"data-lineage":["M1.067 0C.477 0 0 .478 0 1.067V3.2c0 .59.478 1.067 1.067 1.067h2.24a5.342 5.342 0 002.9 3.734 5.337 5.337 0 00-2.9 3.733h-2.24C.477 11.733 0 12.21 0 12.8v2.133C0 15.523.478 16 1.067 16H6.4c.59 0 1.067-.478 1.067-1.067V12.8c0-.59-.478-1.067-1.067-1.067H4.401a4.27 4.27 0 013.92-3.194l.212-.006V9.6c0 .59.478 1.067 1.067 1.067h5.333c.59 0 1.067-.478 1.067-1.067V6.4c0-.59-.478-1.067-1.067-1.067H9.6c-.59 0-1.067.478-1.067 1.067v1.067a4.268 4.268 0 01-4.132-3.2H6.4c.59 0 1.067-.478 1.067-1.067V1.067C7.467.477 6.989 0 6.4 0H1.067z"],database:["M8 4c3.31 0 6-.9 6-2s-2.69-2-6-2C4.68 0 2 .9 2 2s2.68 2 6 2zm-6-.48V8c0 1.1 2.69 2 6 2s6-.9 6-2V3.52C12.78 4.4 10.56 5 8 5s-4.78-.6-6-1.48zm0 6V14c0 1.1 2.69 2 6 2s6-.9 6-2V9.52C12.78 10.4 10.56 11 8 11s-4.78-.6-6-1.48z"],delete:["M11.99 4.99a1.003 1.003 0 00-1.71-.71l-2.29 2.3L5.7 4.29a.965.965 0 00-.71-.3 1.003 1.003 0 00-.71 1.71l2.29 2.29-2.29 2.29A1.003 1.003 0 005.7 11.7l2.29-2.29 2.29 2.29a1.003 1.003 0 001.42-1.42L9.41 7.99 11.7 5.7c.18-.18.29-.43.29-.71zm-4-5c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.68 6-6 6z"],delta:["M8 0L0 16h16L8 0zM7 5l5 10H2L7 5z"],"derive-column":["M6.08 6.67h-.84c.24-.92.56-1.6.96-2.03.24-.27.48-.4.71-.4.05 0 .08.01.11.04s.04.06.04.1c0 .04-.03.11-.1.21-.06.1-.1.2-.1.29 0 .13.05.24.15.33.1.09.23.14.39.14.17 0 .31-.06.42-.17A.58.58 0 008 4.73c0-.22-.09-.39-.26-.53-.17-.13-.44-.2-.81-.2-.59 0-1.12.16-1.59.48-.48.32-.93.85-1.36 1.59-.15.26-.29.42-.42.49s-.35.11-.64.1l-.19.65h.81l-1.19 4.37c-.2.72-.33 1.16-.4 1.33-.1.24-.26.45-.46.62-.08.07-.18.1-.3.1-.03 0-.06-.01-.08-.03l-.03-.04c0-.02.03-.06.09-.11.06-.06.09-.14.09-.26 0-.13-.05-.23-.14-.32a.6.6 0 00-.4-.13c-.21 0-.38.05-.51.16s-.21.25-.21.4c0 .16.08.3.23.42.16.12.4.18.74.18.53 0 .99-.13 1.4-.39.41-.26.76-.65 1.07-1.19.3-.54.62-1.4.94-2.59l.68-2.53h.82l.2-.63zM15 0H8c-.55 0-1 .45-1 1v2h2V2h5v12H9v-1H7v2c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM8.3 9.94c.18.52.33.89.46 1.13.13.24.28.4.44.51.17.1.37.16.62.16.24 0 .49-.08.74-.25.33-.21.66-.58 1.01-1.09l-.21-.11c-.23.31-.41.5-.52.57a.44.44 0 01-.26.07c-.12 0-.24-.07-.36-.21-.2-.24-.46-.91-.8-2 .3-.49.55-.81.75-.96.15-.11.3-.16.47-.16.06 0 .17.02.34.06.16.04.31.06.43.06.17 0 .31-.06.43-.17.1-.11.16-.25.16-.43 0-.19-.06-.33-.17-.44-.12-.11-.28-.16-.49-.16-.19 0-.37.04-.54.13-.17.09-.39.27-.65.56-.2.21-.48.58-.87 1.11-.15-.66-.41-1.26-.78-1.81l-2.05.33-.04.21c.15-.03.28-.04.39-.04.2 0 .37.08.5.25.21.26.5 1.03.88 2.33-.29.37-.49.61-.6.72-.18.18-.33.3-.44.36-.09.04-.19.07-.3.07-.09 0-.23-.04-.42-.13a.866.866 0 00-.36-.09c-.2 0-.36.06-.49.18a.59.59 0 00-.19.46c0 .17.06.32.18.43.12.11.28.16.48.16.2 0 .38-.04.55-.11.17-.08.39-.24.65-.49.24-.27.6-.66 1.06-1.21z"],desktop:["M15 0H1C.45 0 0 .45 0 1v10c0 .55.45 1 1 1h4.75l-.5 2H4c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1h-1.25l-.5-2H15c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 10H2V2h12v8z"],diagnosis:["M3.2 1a1 1 0 01.117 1.993L3.2 3H3v3a2 2 0 001.85 1.995L5 8a2 2 0 001.995-1.85L7 6V3h-.2a1 1 0 01-.993-.883L5.8 2a1 1 0 01.883-.993L6.8 1H8a1 1 0 01.993.883L9 2v4a4.002 4.002 0 01-3.007 3.876v.007L6 10a3 3 0 005.995.176L12 10V7.792a2.5 2.5 0 112 0V10a5 5 0 01-10 0c0-.042.003-.084.008-.125A4 4 0 011.005 6.2L1 6V2a1 1 0 01.883-.993L2 1h1.2z"],"diagram-tree":["M15 8v3h-2V9H9v2H7V9H3v2H1V8a1 1 0 011-1h5V5h2v2h5a1 1 0 011 1zM1 12h2a1 1 0 011 1v2a1 1 0 01-1 1H1a1 1 0 01-1-1v-2a1 1 0 011-1zm12 0h2a1 1 0 011 1v2a1 1 0 01-1 1h-2a1 1 0 01-1-1v-2a1 1 0 011-1zm-6 0h2a1 1 0 011 1v2a1 1 0 01-1 1H7a1 1 0 01-1-1v-2a1 1 0 011-1zM7 0h2a1 1 0 011 1v2a1 1 0 01-1 1H7a1 1 0 01-1-1V1a1 1 0 011-1z"],"direction-left":["M16 1.99l-16 6 16 6-4-6z"],"direction-right":["M16 7.99l-16-6 4 6-4 6z"],disable:["M7.99-.01c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm-6 8c0-3.31 2.69-6 6-6 1.3 0 2.49.42 3.47 1.12l-8.35 8.35c-.7-.98-1.12-2.17-1.12-3.47zm6 6c-1.3 0-2.49-.42-3.47-1.12l8.35-8.35c.7.98 1.12 2.17 1.12 3.47 0 3.32-2.68 6-6 6z"],document:["M9 0H3c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V5L9 0zm3 14H4V2h4v4h4v8z"],"document-open":["M6 12c0 .55.45 1 1 1s1-.45 1-1V8c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1s.45 1 1 1h1.59L1.3 12.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L6 10.41V12zm4-12H4c-.55 0-1 .45-1 1v4h2V2h4v4h4v8H5.24l-1.8 1.8c.16.12.35.2.56.2h10c.55 0 1-.45 1-1V5l-5-5z"],"document-share":["M10 14H2V2h4v4h1c0-.83.36-1.55.91-2.09l-.03-.03.9-.9C8.3 2.45 8 1.77 8 1L7 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V8.22c-.53.48-1.23.78-2 .78v5zm5-14h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.59l-3.3 3.29a1.003 1.003 0 001.42 1.42L14 3.41V5c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1z"],dollar:["M12.83 9.51c-.1-.3-.25-.58-.45-.84s-.45-.49-.75-.7c-.3-.2-.65-.36-1.05-.48-.16-.04-.43-.11-.8-.2-.35-.09-.73-.18-1.12-.28-.39-.1-.74-.19-1.06-.27-.31-.08-.49-.12-.54-.13-.43-.12-.78-.29-1.05-.52-.27-.23-.4-.55-.4-.95 0-.29.07-.53.21-.72.14-.19.32-.34.54-.46.22-.11.46-.19.72-.24.26-.05.52-.08.77-.08.74 0 1.35.15 1.83.46.48.3.75.83.81 1.56h2.14c0-.6-.13-1.13-.38-1.58-.25-.45-.59-.84-1.02-1.15-.43-.31-.93-.54-1.49-.7-.24-.06-.49-.1-.75-.14V1c0-.55-.45-1-1-1s-1 .45-1 1v1.08c-.23.03-.46.07-.68.13-.54.13-1.02.34-1.44.61-.42.28-.76.63-1.02 1.05-.26.43-.39.93-.39 1.5 0 .3.04.59.13.88.09.29.23.56.44.82.21.26.48.49.83.7.35.21.79.38 1.31.51.85.21 1.56.38 2.14.52.58.13 1.08.28 1.52.42.25.09.48.23.69.44.21.21.32.53.32.97 0 .21-.05.42-.14.63-.09.21-.24.39-.45.55-.21.16-.47.29-.81.39-.33.1-.73.15-1.2.15-.43 0-.84-.05-1.21-.14-.37-.09-.7-.24-.99-.43-.29-.2-.51-.45-.67-.76-.16-.31-.24-.68-.24-1.12H3c.01.71.15 1.32.43 1.84.27.52.64.94 1.1 1.27.46.33.99.58 1.61.74.27.07.56.12.85.16V15c0 .55.45 1 1 1s1-.45 1-1v-1.05c.3-.03.61-.08.9-.15.58-.13 1.1-.34 1.56-.63.46-.29.83-.66 1.11-1.11.28-.45.42-1 .42-1.64 0-.31-.05-.61-.15-.91z"],dot:["M8 5a3 3 0 100 6 3 3 0 100-6z"],"double-caret-horizontal":["M13.71 7.29l-3-3A1.003 1.003 0 009 5v6a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zM6 4c-.28 0-.53.11-.71.29l-3 3C2.11 7.47 2 7.72 2 8c0 .28.11.53.29.71l3 3A1.003 1.003 0 007 11V5c0-.55-.45-1-1-1z"],"double-caret-vertical":["M5 7h6a1.003 1.003 0 00.71-1.71l-3-3C8.53 2.11 8.28 2 8 2s-.53.11-.71.29l-3 3A1.003 1.003 0 005 7zm6 2H5a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 0011 9z"],"double-chevron-down":["M7.29 8.71c.18.18.43.29.71.29s.53-.11.71-.29l4-4a1.003 1.003 0 00-1.42-1.42L8 6.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42l4 4zM12 8c-.28 0-.53.11-.71.29L8 11.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42l4 4c.18.18.43.29.71.29s.53-.11.71-.29l4-4A1.003 1.003 0 0012 8z"],"double-chevron-left":["M4.41 8L7.7 4.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4C2.11 7.47 2 7.72 2 8c0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L4.41 8zm5 0l3.29-3.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4C7.11 7.47 7 7.72 7 8c0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L9.41 8z"],"double-chevron-right":["M9 8c0-.28-.11-.53-.29-.71l-4-4a1.003 1.003 0 00-1.42 1.42L6.59 8 3.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4C8.89 8.53 9 8.28 9 8zm4.71-.71l-4-4a1.003 1.003 0 00-1.42 1.42L11.59 8 8.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],"double-chevron-up":["M4 8c.28 0 .53-.11.71-.29L8 4.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-4-4C8.53 2.11 8.28 2 8 2s-.53.11-.71.29l-4 4A1.003 1.003 0 004 8zm4.71-.71C8.53 7.11 8.28 7 8 7s-.53.11-.71.29l-4 4a1.003 1.003 0 001.42 1.42L8 9.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-4-4z"],"doughnut-chart":["M11.86 7h4.05C15.45 3.39 12.61.52 9 .07v4.07A4 4 0 0111.86 7zM12 8c0 2.21-1.79 4-4 4s-4-1.79-4-4 1.79-4 4-4V0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8h-4z"],download:["M7.99-.01c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zM11.7 9.7l-3 3c-.18.18-.43.29-.71.29s-.53-.11-.71-.29l-3-3A1.003 1.003 0 015.7 8.28l1.29 1.29V3.99c0-.55.45-1 1-1s1 .45 1 1v5.59l1.29-1.29a1.003 1.003 0 011.71.71c0 .27-.11.52-.29.7z"],"drag-handle-horizontal":["M2 9c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm4 4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm8-2c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0 2c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm-4-4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zM6 5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z"],"drag-handle-vertical":["M6 9c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm4-6c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zM6 13c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-8c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm4 8c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 8c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z"],draw:["M14.9 11c-.3 0-.5.1-.7.3l-3 3c-.2.2-.3.4-.3.7 0 .6.5 1 1 1 .3 0 .5-.1.7-.3l3-3c.2-.2.3-.4.3-.7 0-.5-.4-1-1-1zm-1-1v-.2l-1-5c-.1-.3-.3-.6-.6-.7l-11-4-.3.3 5.8 5.8c.2-.1.4-.2.6-.2.8 0 1.5.7 1.5 1.5S8.3 9 7.4 9s-1.5-.7-1.5-1.5c0-.2.1-.4.2-.6L.3 1.1l-.3.3 4 11c.1.3.4.6.7.6l5 1h.2c.3 0 .5-.1.7-.3l3-3c.2-.2.3-.4.3-.7z"],"drawer-left":["M7 0a1 1 0 011 1v14a1 1 0 01-1 1H1a1 1 0 01-1-1V1a1 1 0 011-1h6zM6 2H2v12h4V2zm2 5h4.59L11.3 5.71A.965.965 0 0111 5a1.003 1.003 0 011.71-.71l3 3c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-3 3a1.003 1.003 0 01-1.42-1.42L12.59 9H8V7z"],"drawer-left-filled":["M1 0h6a1 1 0 011 1v14a1 1 0 01-1 1H1a1 1 0 01-1-1V1a1 1 0 011-1zm7 7h4.59L11.3 5.71A.965.965 0 0111 5a1.003 1.003 0 011.71-.71l3 3c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-3 3a1.003 1.003 0 01-1.42-1.42L12.59 9H8V7z"],"drawer-right":["M15 0a1 1 0 011 1v14a1 1 0 01-1 1H9a1 1 0 01-1-1V1a1 1 0 011-1h6zm-1 2h-4v12h4V2zM8 7H3.41L4.7 5.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3C.11 7.47 0 7.72 0 8c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L3.41 9H8V7z"],"drawer-right-filled":["M9 0h6a1 1 0 011 1v14a1 1 0 01-1 1H9a1 1 0 01-1-1V1a1 1 0 011-1zM8 7H3.41L4.7 5.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3C.11 7.47 0 7.72 0 8c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L3.41 9H8V7z"],"drive-time":["M15.12 4.76h-1.05l-.76-2.12c-.19-.53-.76-1.08-1.27-1.24 0 0-1.32-.4-4.04-.4-2.72 0-4.04.4-4.04.4-.5.16-1.07.71-1.26 1.24l-.77 2.12H.88c-.48 0-.88.42-.88.94s.4.94.88.94h.38L1 7c-.03.69 0 1.44 0 2v5c0 .66.38 1 1 1s1-.34 1-1v-1h10v1c0 .66.38 1 1 1s1-.34 1-1V9c0-.56-.01-1.37 0-2l-.26-.37h.38c.48 0 .88-.42.88-.93 0-.52-.4-.94-.88-.94zM5 10H3V8h2v2zm8 0h-2V8h2v2zm0-4H3c-.18 0-.06-.82 0-1l.73-1.63C3.79 3.19 3.82 3 4 3h8c.18 0 .21.19.27.37L13 5c.06.18.18 1 0 1z"],duplicate:["M15 0H5c-.55 0-1 .45-1 1v2h2V2h8v7h-1v2h2c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-4 4H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm-1 10H2V6h8v8z"],edit:["M3.25 10.26l2.47 2.47 6.69-6.69-2.46-2.48-6.7 6.7zM.99 14.99l3.86-1.39-2.46-2.44-1.4 3.83zm12.25-14c-.48 0-.92.2-1.24.51l-1.44 1.44 2.47 2.47 1.44-1.44c.32-.32.51-.75.51-1.24.01-.95-.77-1.74-1.74-1.74z"],eject:["M4 9h8a1.003 1.003 0 00.71-1.71l-4-4C8.53 3.11 8.28 3 8 3s-.53.11-.71.29l-4 4A1.003 1.003 0 004 9zm8 1H4c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h8c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1z"],emoji:["M8 0a8 8 0 110 16A8 8 0 018 0zm0 1a7 7 0 100 14A7 7 0 008 1zM4 8c.228 2.262 2 4 4 4 1.938 0 3.77-1.738 3.984-3.8L12 8h1c-.128 2.888-2.317 5-5 5a5 5 0 01-4.995-4.783L3 8h1zm2-3a1 1 0 110 2 1 1 0 010-2zm4 0a1 1 0 110 2 1 1 0 010-2z"],endorsed:["M15.86 7.5l-.81-1.42V4.5c0-.36-.19-.68-.49-.87l-1.37-.8-.81-1.41c-.19-.31-.51-.49-.86-.49H9.89L8.5.14a.948.948 0 00-1 0l-1.39.8H4.52a1 1 0 00-.86.49l-.8 1.37-1.44.83c-.3.19-.49.51-.49.87v1.65l-.8 1.37c-.08.15-.13.32-.13.49s.05.34.14.49l.8 1.37v1.65c0 .36.19.68.49.87l1.42.81.8 1.37c.19.31.51.49.86.49H6.1l1.39.8c.15.09.32.14.48.14s.34-.05.49-.14l1.39-.8h1.63a1 1 0 00.86-.49l.81-1.41 1.37-.8c.3-.19.49-.51.49-.87V9.93l.81-1.42a.89.89 0 00.04-1.01zm-4.12-.82l-4.01 4.01c-.18.18-.43.29-.71.29s-.53-.11-.71-.29l-2-2c-.18-.19-.3-.44-.3-.71a1.003 1.003 0 011.71-.71l1.3 1.3 3.3-3.3a1.003 1.003 0 011.71.71.95.95 0 01-.29.7z"],envelope:["M0 3.06v9.88L4.94 8 0 3.06zM14.94 2H1.06L8 8.94 14.94 2zm-6.41 8.53c-.14.14-.32.22-.53.22s-.39-.08-.53-.22L6 9.06 1.06 14h13.88L10 9.06l-1.47 1.47zM11.06 8L16 12.94V3.06L11.06 8z"],equals:["M3 5h10a1 1 0 010 2H3a1 1 0 110-2zm0 4h10a1 1 0 010 2H3a1 1 0 010-2z"],eraser:["M8.06 13.91l7.63-7.44c.41-.4.41-1.05 0-1.45L10.86.3c-.41-.4-1.08-.4-1.49 0L.31 9.13c-.41.4-.41 1.05 0 1.45l5.58 5.44h8.12v-.01c.55 0 1-.45 1-1s-.45-1-1-1H7.96l.1-.1zm-2.17.06L1.67 9.85l4.22-4.11 4.22 4.11-4.22 4.12z"],error:["M7.99-.01c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm1 13h-2v-2h2v2zm0-3h-2v-7h2v7z"],euro:["M6.52 3.18c.51-.27 1.12-.4 1.83-.4.48 0 .91.06 1.27.18.37.12.68.29.96.51.18.14.3.33.44.51l1.53-1.53c-.12-.11-.23-.22-.36-.32a5.61 5.61 0 00-1.74-.83c-.66-.2-1.36-.3-2.1-.3-.99 0-1.88.18-2.66.53-.79.35-1.45.82-2 1.41-.55.58-.96 1.27-1.26 2.06H2c-.55 0-1 .45-1 1s.45 1 1 1h.04c-.01.17-.04.33-.04.5 0 .17.03.33.04.5H2c-.55 0-1 .45-1 1s.45 1 1 1h.43c0 .01 0 .02.01.02a6.2 6.2 0 001.25 2.07 5.77 5.77 0 002 1.4c.78.34 1.67.51 2.66.51.81 0 1.54-.12 2.21-.36.67-.24 1.25-.59 1.75-1.03l.03-.03-1.55-1.33c-.01.01-.02.03-.03.04-.29.3-.63.53-1.02.69-.4.17-.85.25-1.37.25-.71 0-1.32-.13-1.83-.4s-.93-.62-1.25-1.07c-.19-.24-.34-.49-.46-.76H9c.55 0 1-.45 1-1s-.45-1-1-1H4.35c-.01-.17-.03-.33-.03-.5 0-.17.02-.34.03-.5H10c.55 0 1-.45 1-1s-.45-1-1-1H4.83c.13-.27.27-.52.44-.76.32-.44.74-.8 1.25-1.06zM14 8.98v0z"],exchange:["M1.99 5.99c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.89-2-2-2zm4.15 1.86a.495.495 0 10.7-.7L5.7 5.99h5.79c.28 0 .5-.22.5-.5s-.22-.5-.5-.5H5.7l1.15-1.15a.495.495 0 10-.7-.7l-2 2c-.1.09-.16.21-.16.35s.06.26.15.35l2 2.01zm7.85-1.86c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.89-2-2-2zM9.85 8.14a.533.533 0 00-.36-.15.495.495 0 00-.35.85l1.15 1.15h-5.8c-.28 0-.5.22-.5.5s.22.5.5.5h5.79l-1.15 1.15a.495.495 0 10.7.7l2-2c.09-.09.15-.22.15-.35s-.06-.26-.15-.35l-1.98-2z"],"exclude-row":["M0 10a1.003 1.003 0 001.71.71L3 9.41l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L4.41 8 5.7 6.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L3 6.59l-1.29-1.3A1.003 1.003 0 00.29 6.71L1.59 8 .29 9.29C.11 9.47 0 9.72 0 10zm1-7h14c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm14 10H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm-1-7H9c-1.1 0-2 .9-2 2s.9 2 2 2h5c1.1 0 2-.9 2-2s-.9-2-2-2z"],"expand-all":["M4 7c.28 0 .53-.11.71-.29L8 3.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-4-4C8.53 1.11 8.28 1 8 1s-.53.11-.71.29l-4 4A1.003 1.003 0 004 7zm8 2c-.28 0-.53.11-.71.29L8 12.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42l4 4c.18.18.43.29.71.29s.53-.11.71-.29l4-4A1.003 1.003 0 0012 9z"],export:["M4 6c.28 0 .53-.11.71-.29L7 3.41V11c0 .55.45 1 1 1s1-.45 1-1V3.41l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-4-4C8.53.11 8.28 0 8 0s-.53.11-.71.29l-4 4A1.003 1.003 0 004 6zm11 5c-.55 0-1 .45-1 1v2H2v-2c0-.55-.45-1-1-1s-1 .45-1 1v3c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1z"],"eye-off":["M16 7.97v-.02-.01-.02-.02a.672.672 0 00-.17-.36c-.49-.63-1.07-1.2-1.65-1.72l-3.16 2.26a2.978 2.978 0 01-2.98 2.9c-.31 0-.6-.06-.88-.15L5.09 12.3c.44.19.9.36 1.37.47.97.23 1.94.24 2.92.05.88-.17 1.74-.54 2.53-.98 1.25-.7 2.39-1.67 3.38-2.75.18-.2.37-.41.53-.62.09-.1.15-.22.17-.36v-.02-.02-.01-.02-.03c.01-.02.01-.03.01-.04zm-.43-4.17c.25-.18.43-.46.43-.8 0-.55-.45-1-1-1-.22 0-.41.08-.57.2l-.01-.01-2.67 1.91c-.69-.38-1.41-.69-2.17-.87a6.8 6.8 0 00-2.91-.05c-.88.18-1.74.54-2.53.99-1.25.7-2.39 1.67-3.38 2.75-.18.2-.37.41-.53.62-.23.29-.23.63-.01.92.51.66 1.11 1.25 1.73 1.79.18.16.38.29.56.44l-2.09 1.5.01.01c-.25.18-.43.46-.43.8 0 .55.45 1 1 1 .22 0 .41-.08.57-.2l.01.01 14-10-.01-.01zm-10.41 5a3.03 3.03 0 01-.11-.8 2.99 2.99 0 012.99-2.98c.62 0 1.19.21 1.66.53L5.16 8.8z"],"eye-on":["M10.29 6.7c.18.18.43.29.71.29s.53-.11.71-.29l4-4c.17-.18.29-.43.29-.7a1.003 1.003 0 00-1.71-.71L11 4.58 9.71 3.29A.997.997 0 009 3c-.55 0-1 .44-1 1a1 1 0 00.3.7l1.99 2zM16 7.96v-.02-.01-.02-.02a.64.64 0 00-.17-.36c-.3-.4-.65-.76-1-1.12l-1.7 1.7c-.55.55-1.3.88-2.13.88-.06 0-.11-.01-.17-.02C10.42 10.15 9.32 11 8.01 11A3.005 3.005 0 016.4 5.46c-.24-.43-.39-.93-.39-1.46 0-.26.04-.5.1-.74-.7.2-1.37.5-2.01.86-1.26.7-2.4 1.68-3.4 2.77-.18.21-.36.41-.53.63-.22.29-.22.64 0 .93.51.67 1.12 1.27 1.73 1.81 1.33 1.17 2.85 2.15 4.53 2.55.97.23 1.95.24 2.92.05.89-.18 1.74-.54 2.54-.99 1.25-.71 2.4-1.69 3.39-2.78.18-.2.37-.41.54-.63.09-.1.15-.23.17-.37v-.02-.02-.01-.02-.03c.01-.01.01-.02.01-.03zM8.01 9c.48 0 .87-.35.96-.81a.55.55 0 01-.07-.09l-.02.01L7.8 7.03c-.45.1-.79.48-.79.96 0 .56.45 1.01 1 1.01z"],"eye-open":["M8.002 7.003a1.003 1.003 0 000 2.005 1.003 1.003 0 000-2.005zm7.988.972v-.02-.01-.02-.02a.675.675 0 00-.17-.36c-.509-.673-1.118-1.264-1.737-1.806-1.328-1.173-2.846-2.155-4.523-2.546a6.702 6.702 0 00-2.925-.06c-.889.18-1.738.541-2.546.992C2.84 4.837 1.692 5.81.694 6.902c-.18.211-.36.411-.53.632a.742.742 0 000 .932c.51.672 1.119 1.264 1.738 1.805 1.328 1.173 2.846 2.156 4.523 2.547.968.23 1.947.24 2.925.04.889-.18 1.738-.542 2.546-.993 1.248-.712 2.397-1.684 3.395-2.777.18-.2.37-.411.54-.632.09-.1.149-.23.169-.36v-.02-.02-.01-.02-.03c0-.01-.01-.01-.01-.02zm-7.988 3.038a2.998 2.998 0 01-2.995-3.008 2.998 2.998 0 012.995-3.008 2.998 2.998 0 012.996 3.008 2.998 2.998 0 01-2.996 3.008z"],"fast-backward":["M14 3c-.24 0-.44.09-.62.23l-.01-.01L9 6.72V4c0-.55-.45-1-1-1-.24 0-.44.09-.62.23v-.01l-5 4 .01.01C2.16 7.41 2 7.68 2 8s.16.59.38.77v.01l5 4 .01-.01c.17.14.37.23.61.23.55 0 1-.45 1-1V9.28l4.38 3.5.01-.01c.17.14.37.23.61.23.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"fast-forward":["M15 8c0-.32-.16-.59-.38-.77l.01-.01-5-4-.01.01A.987.987 0 009 3c-.55 0-1 .45-1 1v2.72l-4.38-3.5v.01A.987.987 0 003 3c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1 .24 0 .44-.09.62-.23l.01.01L8 9.28V12c0 .55.45 1 1 1 .24 0 .44-.09.62-.23l.01.01 5-4-.01-.01c.22-.18.38-.45.38-.77z"],feed:["M1.99 11.99c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.89-2-2-2zm1-4c-.55 0-1 .45-1 1s.45 1 1 1c1.66 0 3 1.34 3 3 0 .55.45 1 1 1s1-.45 1-1c0-2.76-2.24-5-5-5zm0-4c-.55 0-1 .45-1 1s.45 1 1 1c3.87 0 7 3.13 7 7 0 .55.45 1 1 1s1-.45 1-1a9 9 0 00-9-9zm0-4c-.55 0-1 .45-1 1s.45 1 1 1c6.08 0 11 4.92 11 11 0 .55.45 1 1 1s1-.45 1-1c0-7.18-5.82-13-13-13z"],"feed-subscribed":["M3 2c1.06 0 2.08.16 3.06.45.13-.71.52-1.32 1.05-1.76C5.82.25 4.44 0 3 0c-.55 0-1 .45-1 1s.45 1 1 1zM2 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm8.32-6.33a.99.99 0 001.4 0l3.98-3.98c.19-.18.3-.42.3-.7 0-.55-.45-.99-1-.99-.28 0-.52.11-.7.29l-3.28 3.28-1.29-1.29a.99.99 0 00-.7-.29 1 1 0 00-1 .99c0 .27.11.52.29.7l2 1.99zm3.73.53l-.93.93-.02-.02c-.17.17-.35.33-.56.45C13.47 9.16 14 11.02 14 13c0 .55.45 1 1 1s1-.45 1-1c0-2.5-.73-4.82-1.95-6.8zM3 8c-.55 0-1 .45-1 1s.45 1 1 1c1.66 0 3 1.34 3 3 0 .55.45 1 1 1s1-.45 1-1c0-2.76-2.24-5-5-5zm5.91-.91l-.03.03-2-2 .03-.03c-.11-.11-.23-.2-.33-.33A8.9 8.9 0 003 4c-.55 0-1 .45-1 1s.45 1 1 1c3.87 0 7 3.13 7 7 0 .55.45 1 1 1s1-.45 1-1c0-1.87-.57-3.61-1.55-5.06-.61-.11-1.13-.42-1.54-.85z"],film:["M15 1h-5v2H6V1H1c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h5v-2h4v2h5c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zM4 13H2v-2h2v2zm0-3H2V8h2v2zm0-3H2V5h2v2zm0-3H2V2h2v2zm6 6H6V5h4v5zm4 3h-2v-2h2v2zm0-3h-2V8h2v2zm0-3h-2V5h2v2zm0-3h-2V2h2v2z"],filter:["M13.99.99h-12a1.003 1.003 0 00-.71 1.71l4.71 4.71V14a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71V7.41L14.7 2.7a1.003 1.003 0 00-.71-1.71z"],"filter-keep":["M15 10c-.28 0-.53.11-.71.29L12 12.59l-1.29-1.29A.965.965 0 0010 11a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 0015 10zm-3-8c0-.55-.45-1-1-1H1a1.003 1.003 0 00-.71 1.71L4 6.41V12a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71V6.41l3.71-3.71c.18-.17.29-.42.29-.7z"],"filter-list":["M9 8c0 .55.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1h-5c-.55 0-1 .45-1 1zm3-6c0-.55-.45-1-1-1H1a1.003 1.003 0 00-.71 1.71L4 6.41V12a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71V6.41l3.71-3.71c.18-.17.29-.42.29-.7zm3 8h-5c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1zm0 3h-5c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1z"],"filter-open":["M15.707 10.293a1 1 0 010 1.414l-3 3c-.63.63-1.707.184-1.707-.707V8c0-.89 1.077-1.337 1.707-.707l3 3zM12 2c0 .28-.11.53-.29.7L8 6.41V10c0 .28-.11.53-.29.71l-2 2A1.003 1.003 0 014 12V6.41L.29 2.71A1.003 1.003 0 011 1h10c.55 0 1 .45 1 1z"],"filter-remove":["M12 2c0-.55-.45-1-1-1H1a1.003 1.003 0 00-.71 1.71L4 6.41V12a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71V6.41l3.71-3.71c.18-.17.29-.42.29-.7zm2.41 10l1.29-1.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L13 10.59 11.71 9.3A.965.965 0 0011 9a1.003 1.003 0 00-.71 1.71l1.3 1.29-1.29 1.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l1.29-1.3 1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L14.41 12z"],flag:["M2.99 2.99c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1s1-.45 1-1v-11c0-.55-.45-1-1-1zm0-3c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm2 3.03v7.23c2.07-2.11 5.92 1.75 9 0V3.02c-3 2.07-6.94-2.03-9 0z"],flame:["M9.217 0c0 1.368.368 2.462 1.104 3.282C12.774 5.197 14 7.385 14 9.846c0 2.735-1.472 4.786-4.415 6.154 2.165-2.4 1.84-3.385-.368-6.4-2.342 1.2-1.967 2-1.592 3.6-.786 0-1.5 0-1.875-.4 0 .547.898 2 1.464 3.2-2.943-.82-6.092-5.744-4.988-6.154.736-.273 1.594-.137 2.575.41C3.575 5.333 5.047 1.915 9.217 0z"],flash:["M4 8c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1h2c.55 0 1-.45 1-1zm4-4c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1S7 .45 7 1v2c0 .55.45 1 1 1zM3.79 5.21a1.003 1.003 0 001.42-1.42l-1.5-1.5a1.003 1.003 0 00-1.42 1.42l1.5 1.5zm.71 5.29c-.28 0-.53.11-.71.29l-1.5 1.5a1.003 1.003 0 001.42 1.42l1.5-1.5a1.003 1.003 0 00-.71-1.71zm7-5c.28 0 .53-.11.71-.29l1.5-1.5a1.003 1.003 0 00-1.42-1.42l-1.5 1.5a1.003 1.003 0 00.71 1.71zm.71 5.29a1.003 1.003 0 00-1.42 1.42l1.5 1.5a1.003 1.003 0 001.42-1.42l-1.5-1.5zM15 7h-2c-.55 0-1 .45-1 1s.45 1 1 1h2c.55 0 1-.45 1-1s-.45-1-1-1zM8 5C6.34 5 5 6.34 5 8s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm0 4c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm0 3c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1z"],"floppy-disk":["M15.71 2.29l-2-2A.997.997 0 0013 0h-1v6H4V0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V3c0-.28-.11-.53-.29-.71zM14 15H2V9c0-.55.45-1 1-1h10c.55 0 1 .45 1 1v6zM11 1H9v4h2V1z"],"flow-branch":["M10.643 6.595c.22.418.344.894.344 1.399 0 .439-.094.855-.263 1.231l3.265 3.462-.002-1.75a.973.973 0 01.314-.68.99.99 0 011.388.048c.186.2.316.46.3.715l-.009 4.03a.959.959 0 01-.3.68.972.972 0 01-.698.266l-4.053.002a.97.97 0 01-.679-.314 1.031 1.031 0 01.05-1.42.972.972 0 01.698-.266l1.7-.001-3.305-3.35a2.998 2.998 0 01-4.228-1.653H.999a1 1 0 010-2h4.166a2.998 2.998 0 014.06-1.735l3.449-3.268-1.745.002a.979.979 0 01-.631-1.692c.199-.186.459-.316.713-.3l4.025.009c.247.008.493.1.679.3.186.2.274.451.265.7l.002 4.046a.972.972 0 01-.313.68 1.03 1.03 0 01-1.42-.05.973.973 0 01-.266-.7V3.295l-3.34 3.301z"],"flow-end":["M9.702 7.31c.176.176.293.41.293.684a.976.976 0 01-.283.695c-1.888 1.91-2.892 2.918-3.011 3.027-.179.164-.42.284-.693.284a.995.995 0 01-.997-.985c0-.274.112-.541.292-.72.12-.12.624-.551 1.514-1.293H.98c-.536 0-.975-.47-.975-1.008 0-.537.439-.996.975-.996h5.837c-.895-.752-1.4-1.187-1.514-1.304a1.03 1.03 0 01-.292-.705C5.01 4.45 5.464 4 6 4c.272 0 .52.108.695.294A535.7 535.7 0 009.702 7.31zM13 11.002c-1.657 0-3-1.347-3-3.008a3.004 3.004 0 013-3.007c1.657 0 3 1.346 3 3.007a3.004 3.004 0 01-3 3.008z"],"flow-linear":["M4.16 9.002H.977C.44 9.002 0 8.532 0 7.994c0-.537.44-.99.978-.99h3.18A3.01 3.01 0 016.995 5a3.01 3.01 0 012.839 2.004h2.98c-.898-.756-1.404-1.193-1.518-1.31a1.03 1.03 0 01-.293-.705c0-.538.454-.989.992-.989.274 0 .521.108.697.294.118.124 1.122 1.13 3.014 3.016a.96.96 0 01.293.684.975.975 0 01-.284.695l-3.018 3.027a.974.974 0 01-.694.284c-.553 0-1-.447-1-.985 0-.274.117-.545.293-.72l1.518-1.293H9.833A3.01 3.01 0 016.996 11 3.01 3.01 0 014.16 9.002z"],"flow-review":["M5.175 7.004a3.003 3.003 0 012.83-2.001c1.305 0 2.416.835 2.83 2.001h1.985c-.896-.756-1.401-1.193-1.515-1.31a1.03 1.03 0 01-.292-.705c0-.538.453-.989.99-.989a.95.95 0 01.696.294c.117.124 1.12 1.13 3.008 3.016.176.176.293.41.293.684a.976.976 0 01-.283.695l-3.013 3.027a.995.995 0 01-1.691-.702c0-.273.116-.544.292-.72l1.515-1.292h-1.98a3.003 3.003 0 01-2.835 2.016A3.003 3.003 0 015.17 9.002H3.18l1.515 1.292c.176.176.292.447.292.72a.995.995 0 01-1.69.702L.282 8.69A.976.976 0 010 7.994c0-.273.117-.508.293-.684A535.858 535.858 0 003.3 4.294.95.95 0 013.997 4c.537 0 .99.45.99.989 0 .273-.12.528-.292.705-.114.117-.62.554-1.515 1.31h1.995z"],"flow-review-branch":["M10.392 10.647A3.002 3.002 0 016.16 8.995H3.37l1.338 1.318c.172.178.287.41.282.683-.01.536-.524.995-.99.995-.465 0-.63-.187-.747-.294L.281 8.682A.956.956 0 010 7.994a.971.971 0 01.294-.687l3.01-3.028a.973.973 0 01.697-.27c.536.01.998.485.989 1.021a.971.971 0 01-.295.687L3.37 6.997h2.79a3.002 3.002 0 014.106-1.716l2.416-2.277-1.732.004a.99.99 0 01-.679-.329.978.978 0 01.05-1.378c.199-.186.459-.315.714-.3l4.012.005c.248.009.493.1.68.3.185.2.273.45.264.699L15.99 6.05a.973.973 0 01-.314.679 1.03 1.03 0 01-1.421-.048.971.971 0 01-.265-.699V4.29L11.65 6.602c.219.416.343.89.343 1.394 0 .451-.1.88-.279 1.263L14 11.68l-.004-1.73a.982.982 0 01.323-.68.978.978 0 011.378.049c.187.2.316.46.3.714l-.004 4.011a.983.983 0 01-.3.691.972.972 0 01-.7.265l-4.046-.001a.987.987 0 01-.679-.326 1.017 1.017 0 01.048-1.41.972.972 0 01.699-.265h1.693l-2.315-2.35z"],flows:["M13.5 6a2.5 2.5 0 00-2.45 2h-1.3L5.74 4l-.75.75L8.25 8h-3.3a2.5 2.5 0 100 1h3.3l-3.26 3.25.75.75 4.01-4h1.3a2.5 2.5 0 102.45-3z"],"folder-close":["M-.01 14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V7h-16v7zm15-10H7.41L5.7 2.3a.965.965 0 00-.71-.3h-4c-.55 0-1 .45-1 1v3h16V5c0-.55-.45-1-1-1z"],"folder-new":["M10.165 7a3.003 3.003 0 002.827 2 3.003 3.003 0 002.827-2H16v7c0 .55-.45 1-1 1H1.01c-.55 0-1-.45-1-1V7h10.155zM8.76 6H0V3c0-.55.45-1 1-1h1.998c.28 0 .53.11.71.29L5.417 4h2.578c0 .768.29 1.469.765 2zm6.23-3c.55 0 1 .45 1 1s-.45 1-1 1h-.999v1c0 .55-.45 1-1 1-.549 0-.998-.45-.998-1V5h-1c-.55 0-1-.45-1-1s.45-1 1-1h1V2c0-.55.45-1 .999-1 .55 0 1 .45 1 1v1h.999z"],"folder-open":["M2.06 6.69c.14-.4.5-.69.94-.69h11V5c0-.55-.45-1-1-1H6.41l-1.7-1.71A.997.997 0 004 2H1c-.55 0-1 .45-1 1v9.84l2.05-6.15h.01zM16 8c0-.55-.45-1-1-1H4a.99.99 0 00-.94.69l-2 6c-.04.09-.06.2-.06.31 0 .55.45 1 1 1h11c.44 0 .81-.29.94-.69l2-6c.04-.09.06-.2.06-.31z"],"folder-shared":["M8.76 5.98c-.47-.53-.77-1.22-.77-1.99h-.58L5.7 2.29a.965.965 0 00-.71-.3h-4c-.55 0-1 .45-1 1v3h8.76l.01-.01zm6.23-2.99h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.59l-3.3 3.3a.99.99 0 00-.29.7 1.003 1.003 0 001.71.71l3.29-3.29V8c0 .55.45 1 1 1s1-.45 1-1V4c0-.56-.45-1.01-1-1.01zm-1.98 7.23l-.9.9-.01-.01c-.54.55-1.28.89-2.11.89-1.66 0-3-1.34-3-3 0-.77.3-1.47.78-2H-.01v7c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-3.18c-.31.11-.65.18-1 .18-.76-.01-1.45-.31-1.98-.78z"],"folder-shared-open":["M13.02 10.22l-.9.9-.01-.01c-.54.55-1.28.89-2.11.89-1.66 0-3-1.34-3-3 0-.77.3-1.47.78-2H4a.99.99 0 00-.94.69l-2 6c-.04.09-.06.2-.06.31 0 .55.45 1 1 1h11c.44 0 .81-.29.94-.69l1.11-3.32c-.01 0-.03.01-.05.01-.77 0-1.45-.3-1.98-.78zM2.06 6.69c.14-.4.5-.69.94-.69h5.76l.01-.01C8.3 5.46 8 4.77 8 4H6.41l-1.7-1.71A.997.997 0 004 2H1c-.55 0-1 .45-1 1v9.84l2.05-6.15h.01zM15 3h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.59l-3.3 3.29a1.003 1.003 0 001.42 1.42L14 6.41V8c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1z"],follower:["M9.37 12.69c-1.2-.53-1.04-.85-1.08-1.29-.01-.06-.01-.12-.01-.19.41-.37.75-.87.97-1.44 0 0 .01-.03.01-.04.05-.13.09-.26.12-.39.28-.06.44-.36.5-.63.06-.11.19-.39.16-.7-.04-.4-.2-.59-.38-.67v-.07c0-.52-.05-1.26-.14-1.74a2.72 2.72 0 00-.09-.43 3.02 3.02 0 00-1.04-1.51C7.87 3.2 7.15 3 6.5 3c-.64 0-1.36.2-1.87.59-.5.38-.87.92-1.05 1.51-.04.13-.07.27-.09.4-.09.49-.14 1.24-.14 1.75v.06c-.19.07-.36.26-.4.68-.03.31.1.59.16.7.06.28.23.59.51.64.04.14.08.27.13.39 0 .01.01.02.01.02v.01c.22.59.57 1.1.99 1.46 0 .06-.01.12-.01.17-.04.44.08.76-1.12 1.29-1.2.53-3.01 1.1-3.38 1.95C-.13 15.5.02 16 .02 16h12.96s.15-.5-.22-1.36c-.38-.85-2.19-1.42-3.39-1.95zm6.33-10.4l-2-2a1.003 1.003 0 00-1.42 1.42l.3.29H9.99c-.55 0-1 .45-1 1s.45 1 1 1h2.58l-.29.29a1.003 1.003 0 001.42 1.42l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],following:["M9.37 12.69c-1.2-.53-1.04-.85-1.08-1.29-.01-.06-.01-.12-.01-.19.41-.37.75-.87.97-1.44 0 0 .01-.03.01-.04.05-.13.09-.26.12-.39.28-.06.44-.36.5-.63.06-.11.19-.39.16-.7-.04-.4-.2-.59-.38-.67v-.07c0-.52-.05-1.26-.14-1.74a2.72 2.72 0 00-.09-.43 3.02 3.02 0 00-1.04-1.51C7.87 3.2 7.15 3 6.5 3c-.64 0-1.36.2-1.87.59-.5.38-.87.92-1.05 1.51-.04.13-.07.27-.09.4-.09.49-.14 1.24-.14 1.75v.06c-.19.07-.36.26-.4.68-.03.31.1.59.16.7.06.28.23.59.51.64.04.14.08.27.13.39 0 .01.01.02.01.02v.01c.22.59.57 1.1.99 1.46 0 .06-.01.12-.01.17-.04.44.08.76-1.12 1.29-1.2.53-3.01 1.1-3.38 1.95C-.13 15.5.02 16 .02 16h12.96s.15-.5-.22-1.36c-.38-.85-2.19-1.42-3.39-1.95zM14.99 2h-2.58l.29-.29A1.003 1.003 0 0011.28.29l-2 2c-.17.18-.29.43-.29.71 0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42L12.41 4h2.58c.55 0 1-.45 1-1s-.45-1-1-1z"],font:["M13.93 14.67L8.94.67h-.01C8.79.28 8.43 0 8 0s-.79.28-.93.67h-.01l-5 14h.01c-.04.1-.07.21-.07.33 0 .55.45 1 1 1 .43 0 .79-.28.93-.67h.01L5.49 11h5.02l1.55 4.34h.01c.14.38.5.66.93.66.55 0 1-.45 1-1 0-.12-.03-.23-.07-.33zM6.2 9L8 3.97 9.8 9H6.2z"],fork:["M13.7 9.29a1.003 1.003 0 00-1.42 1.42l.29.29H11.4l-5-5h6.17l-.29.29a1.003 1.003 0 001.42 1.42l2-2c.18-.18.29-.43.29-.71s-.11-.53-.29-.71l-2-2a1.003 1.003 0 00-1.42 1.42l.29.29H.99c-.55 0-1 .45-1 1s.45 1 1 1h2.59l6.71 6.71c.18.18.43.29.71.29h1.59l-.29.29a1.003 1.003 0 001.42 1.42l2-2c.18-.18.29-.43.29-.71s-.11-.53-.29-.71l-2.02-2z"],form:["M2 11v2h2v-2H2zM1 9h4c.55 0 1 .45 1 1v4c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1zm9-6h5c.55 0 1 .45 1 1s-.45 1-1 1h-5c-.55 0-1-.45-1-1s.45-1 1-1zM6 1a1.003 1.003 0 01.71 1.71l-3 4C3.53 6.89 3.28 7 3 7s-.53-.11-.71-.29l-2-2a1.003 1.003 0 011.42-1.42L3 4.59l2.29-3.3C5.47 1.11 5.72 1 6 1zm4 10h5c.55 0 1 .45 1 1s-.45 1-1 1h-5c-.55 0-1-.45-1-1s.45-1 1-1z"],"full-circle":["M8 0a8 8 0 100 16A8 8 0 108 0z"],"full-stacked-chart":["M13 12h1c.55 0 1-.45 1-1V8h-3v3c0 .55.45 1 1 1zM10 2c0-.55-.45-1-1-1H8c-.55 0-1 .45-1 1v3h3V2zm0 4H7v3h3V6zm5-4c0-.55-.45-1-1-1h-1c-.55 0-1 .45-1 1v2h3V2zm0 3h-3v2h3V5zM5 5H2v3h3V5zm-2 7h1c.55 0 1-.45 1-1V9H2v2c0 .55.45 1 1 1zm12 1H2c-.55 0-1 .45-1 1s.45 1 1 1h13c.55 0 1-.45 1-1s-.45-1-1-1zM5 2c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v2h3V2zm3 10h1c.55 0 1-.45 1-1v-1H7v1c0 .55.45 1 1 1z"],fullscreen:["M3.41 2H5c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1v4c0 .55.45 1 1 1s1-.45 1-1V3.41L5.29 6.7c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L3.41 2zM6 9c-.28 0-.53.11-.71.29L2 12.59V11c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H3.41l3.29-3.29c.19-.18.3-.43.3-.71 0-.55-.45-1-1-1zm9 1c-.55 0-1 .45-1 1v1.59L10.71 9.3A.965.965 0 0010 9a1.003 1.003 0 00-.71 1.71l3.3 3.29H11c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1zm0-10h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.59l-3.3 3.29a1.003 1.003 0 001.42 1.42L14 3.41V5c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1z"],function:["M8.12 4.74H6.98c.33-1.29.75-2.24 1.28-2.84.33-.37.64-.56.95-.56.06 0 .11.02.15.05.04.04.06.09.06.15 0 .05-.04.15-.13.29-.09.14-.13.28-.13.4 0 .18.07.33.2.46.14.13.31.19.52.19.22 0 .41-.08.56-.23.15-.16.23-.37.23-.63 0-.3-.11-.55-.34-.74C10.1 1.09 9.74 1 9.24 1c-.78 0-1.49.22-2.12.67-.64.45-1.24 1.2-1.81 2.23-.2.36-.38.59-.56.69-.18.1-.46.15-.85.15l-.26.9h1.08l-1.59 6.12c-.27 1.01-.44 1.63-.54 1.86-.14.34-.34.63-.62.87-.11.1-.24.15-.4.15a.15.15 0 01-.11-.04l-.04-.05c0-.03.04-.08.12-.16.08-.08.12-.2.12-.36 0-.18-.06-.33-.19-.44-.12-.12-.3-.18-.54-.18-.28 0-.51.08-.68.23-.16.14-.25.32-.25.53 0 .22.1.42.31.59.21.17.53.25.97.25.7 0 1.32-.18 1.87-.54.54-.36 1.02-.92 1.42-1.67.41-.75.82-1.96 1.25-3.63l.91-3.54h1.1l.29-.89zm5.43 1.52c.2-.15.41-.23.62-.23.08 0 .23.03.45.09s.41.09.57.09c.23 0 .42-.08.57-.23.16-.16.24-.36.24-.61 0-.26-.08-.47-.23-.62-.15-.15-.37-.23-.66-.23-.25 0-.5.06-.72.18-.23.12-.51.38-.86.78-.26.3-.64.81-1.15 1.55-.2-.91-.55-1.75-1.05-2.51l-2.72.46-.06.29c.2-.04.37-.06.51-.06.27 0 .49.11.67.34.28.36.67 1.45 1.17 3.26-.39.52-.66.85-.8 1.01-.24.26-.44.42-.59.5-.12.06-.25.09-.41.09-.11 0-.3-.06-.56-.18-.18-.08-.34-.12-.48-.12-.27 0-.48.08-.66.25-.17.17-.26.38-.26.64 0 .25.08.44.24.6.16.15.37.23.64.23.26 0 .5-.05.73-.16.23-.11.52-.34.86-.69.35-.35.82-.9 1.43-1.67.23.73.44 1.25.61 1.58s.37.57.59.71c.22.15.5.22.83.22.32 0 .65-.11.98-.34.44-.3.88-.81 1.34-1.53l-.26-.15c-.31.43-.54.7-.69.8-.1.07-.22.1-.35.1-.16 0-.32-.1-.48-.3-.27-.34-.62-1.27-1.06-2.8.4-.68.73-1.13 1-1.34z"],"gantt-chart":["M10 10c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1h-4c-.55 0-1 .45-1 1zM6 7c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H7c-.55 0-1 .45-1 1zm9 5H2V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM4 5h3c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1z"],geofence:["M6 9c.55 0 1 .45 1 1v4c0 .55-.45 1-1 1s-1-.45-1-1v-1.59l-3.29 3.3A1.003 1.003 0 010 15c0-.28.11-.53.3-.71L3.59 11H2c-.55 0-1-.45-1-1s.45-1 1-1zM9.088.004l.097.013.097.024.057.018.1.042.054.029.095.061.052.04 6 5 .05.046.076.08.053.07.06.095.051.11c.056.141.079.294.067.446l-.014.105-.037.143-.035.087-.043.083-4 7-.034.056-.059.08-.038.044-.096.092-.114.082-.116.062-.086.034-.109.03-.1.017-.069.006H8.83c.088-.25.144-.515.163-.79L9 13v-3a3 3 0 00-2.824-2.995L6 7H3c-.351 0-.689.06-1.002.171L2 5l.002-.07.013-.1.015-.073.025-.085.043-.104.056-.101.045-.066.079-.093.084-.078.083-.062 6-4 .07-.043.12-.056.111-.036.108-.022.083-.01h.031c.046-.002.083 0 .12.003z"],geolocation:["M-.01 6.66l7.34 2 2 7.33 6.66-16z"],geosearch:["M8.82 12.4h.66c.23 0 .36-.17.36-.4v-1.48l.19-.18c-.27.03-.55.06-.83.06-.28 0-.56-.03-.84-.07.02.04.05.08.07.13V12c0 .23.15.4.39.4zM6.4 15.1A5.51 5.51 0 01.9 9.6c0-.49.06-.98.18-1.43.03 0 .05-.01.08-.01h.08v.44c0 .19.17.34.36.34.03 0 .07-.01.1-.01l.71.7c.07.07.19.07.26 0s.07-.19 0-.26l-.7-.72c0-.02.03-.03.03-.05v-.11c0-.15.08-.2.23-.33h.42c.08 0 .15-.01.22-.04h.02c.02-.02.03-.02.04-.04.01-.01.01-.01.02-.01l.02-.01.9-.9c-.13-.26-.24-.52-.34-.8h-.5v-.43c0-.01.05.05.04-.08h.31c-.03-.13-.06-.26-.08-.39h-.57c.16-.12.34-.24.51-.36-.02-.23-.04-.46-.04-.7 0-.12.01-.23.02-.34A6.385 6.385 0 000 9.6C0 13.13 2.87 16 6.4 16c3.1 0 5.67-2.22 6.26-5.15l-.78-.88c-.21 2.85-2.58 5.13-5.48 5.13zm-1.7-2.93v-.28h.12c.23 0 .39-.19.39-.42v-.54s.01-.01 0-.01L3.77 9.45h-.62c-.23 0-.38.19-.38.42v1.6c0 .23.14.42.38.42h.26v1.61c0 .23.22.41.45.41s.45-.18.45-.41v-.97H4.3c.24 0 .4-.13.4-.36zm11.07-2.34l-2.94-2.94c.11-.17.21-.34.3-.52.01-.03.03-.06.04-.09.08-.18.16-.36.22-.55v-.01c.06-.19.1-.38.14-.58.01-.05.01-.09.02-.14.03-.2.05-.4.05-.61a4.4 4.4 0 00-4.4-4.4C6.77 0 4.8 1.97 4.8 4.4s1.97 4.4 4.4 4.4c.21 0 .41-.02.61-.05.04 0 .09-.01.14-.02.2-.03.39-.08.58-.14h.01c.19-.06.37-.14.55-.22.03-.01.06-.03.09-.04.18-.09.35-.19.52-.3l2.94 2.94a.8.8 0 00.57.23c.44 0 .8-.36.8-.8a.895.895 0 00-.24-.57zM9.2 7.6C7.43 7.6 6 6.17 6 4.4c0-1.77 1.43-3.2 3.2-3.2s3.2 1.43 3.2 3.2c0 1.77-1.43 3.2-3.2 3.2zm1.54 4.26v-.52c0-.09-.1-.17-.19-.17s-.19.07-.19.17v.52c0 .09.1.17.19.17s.19-.07.19-.17z"],"git-branch":["M12 1c-1.66 0-3 1.34-3 3 0 1.25.76 2.32 1.85 2.77A2.02 2.02 0 019 8H7c-.73 0-1.41.2-2 .55V5.82C6.16 5.4 7 4.3 7 3c0-1.66-1.34-3-3-3S1 1.34 1 3c0 1.3.84 2.4 2 2.82v4.37c-1.16.4-2 1.51-2 2.81 0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.04-.53-1.95-1.32-2.49.35-.31.81-.51 1.32-.51h2c1.92 0 3.52-1.35 3.91-3.15A2.996 2.996 0 0012 1zM4 2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 12c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm8-9c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-commit":["M15 7h-3.14c-.45-1.72-2-3-3.86-3S4.59 5.28 4.14 7H1c-.55 0-1 .45-1 1s.45 1 1 1h3.14c.45 1.72 2 3 3.86 3s3.41-1.28 3.86-3H15c.55 0 1-.45 1-1s-.45-1-1-1zm-7 3c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"],"git-merge":["M12 6c-1.3 0-2.4.84-2.82 2H9c-1.62 0-3-.96-3.63-2.34C6.33 5.16 7 4.16 7 3c0-1.66-1.34-3-3-3S1 1.34 1 3c0 1.3.84 2.4 2 2.81v4.37C1.84 10.6 1 11.7 1 13c0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.3-.84-2.4-2-2.82V8.43A5.89 5.89 0 009 10h.18A2.996 2.996 0 0015 9c0-1.66-1.34-3-3-3zm-8 8c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zM4 4c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm8 6c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-new-branch":["M14 2h-1V1c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1V4h1c.55 0 1-.45 1-1s-.45-1-1-1zm-3.18 4.8C10.51 7.51 9.82 8 9 8H7c-.73 0-1.41.2-2 .55V5.82C6.16 5.4 7 4.3 7 3c0-1.66-1.34-3-3-3S1 1.34 1 3c0 1.3.84 2.4 2 2.82v4.37c-1.16.4-2 1.51-2 2.81 0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.04-.53-1.95-1.32-2.49.35-.31.81-.51 1.32-.51h2c1.9 0 3.49-1.33 3.89-3.11-.29.07-.58.11-.89.11-.41 0-.8-.08-1.18-.2zM4 2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 12c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-pull":["M3 1C1.34 1 0 2.34 0 4c0 1.3.84 2.4 2 2.82v3.37C.84 10.6 0 11.7 0 13c0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.3-.84-2.4-2-2.82V6.82C5.16 6.4 6 5.3 6 4c0-1.66-1.34-3-3-3zm0 13c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm0-9c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm11 5.18V6c0-1.66-1.34-3-3-3H9.41l1.29-1.29c.19-.18.3-.43.3-.71A1.003 1.003 0 009.29.29l-3 3C6.11 3.47 6 3.72 6 4c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L9.41 5H11c.55 0 1 .45 1 1v4.18A2.996 2.996 0 0013 16c1.66 0 3-1.34 3-3 0-1.3-.84-2.4-2-2.82zM13 14c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-push":["M4 6h1V5H4v1zm9 3c0-.28-.11-.53-.29-.71l-3-3C9.53 5.11 9.28 5 9 5s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42L8 8.41V15c0 .55.45 1 1 1s1-.45 1-1V8.41l1.29 1.29c.18.19.43.3.71.3.55 0 1-.45 1-1zM5 3H4v1h1V3zm10-3H1C.45 0 0 .45 0 1v13c0 .55.45 1 1 1h5v-2H2v-1h4v-1H3V2h11v9h-2v1h2v1h-2v2h3c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],"git-repo":["M5 9H4v1h1V9zm10-9H1C.45 0 0 .45 0 1v13c0 .55.45 1 1 1h3v1l2-1 2 1v-1h7c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM4 13H2v-1h2v1zm10 0H8v-1h6v1zm0-2H3V2h11v9zM5 3H4v1h1V3zm0 4H4v1h1V7zm0-2H4v1h1V5z"],glass:["M2 0v4c0 2.97 2.16 5.43 5 5.91V14H5c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1H9V9.91c2.84-.48 5-2.94 5-5.91V0H2z"],globe:["M4.45 7.83c-.26 0-.41.21-.41.46v1.75c0 .26.16.46.41.46h.29v1.77c0 .25.24.45.49.45s.49-.2.49-.45V11.2h-.01c.26 0 .44-.14.44-.4v-.3h.14c.26 0 .43-.2.43-.46v-.59s.01-.01 0-.01l-1.58-1.6h-.69zM8.51 3.9h.22c.06 0 .12-.01.12-.07 0-.06-.05-.07-.12-.07h-.22c-.06 0-.12.01-.12.07.01.06.06.07.12.07zm-2.33-.05c.07-.07.07-.19 0-.26l-.5-.5a.187.187 0 00-.26 0c-.07.07-.07.19 0 .26l.5.5c.07.07.19.07.26 0zm3.06.89c.07 0 .14-.06.14-.12v-.31c0-.07-.07-.12-.14-.12s-.14.06-.14.12v.31c0 .07.07.12.14.12zM8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-.55.1-1.07.23-1.57h.11v.47c0 .2.18.37.39.37.03 0 .08-.01.11-.02l.78.77c.08.08.2.08.28 0 .08-.08.08-.2 0-.28l-.75-.78c0-.02.04-.04.04-.06v-.12c0-.16.09-.22.25-.36h.46c.09 0 .17-.01.24-.05h.02c.02-.01.03-.02.05-.03.01-.01.01-.01.02-.01l.02-.02 1.59-1.58c.18-.18.18-.46 0-.64s-.47-.15-.65.03l-.3.34h-.57v-.48c0-.01.05.05.05-.09h.64c.12 0 .22-.09.22-.21s-.1-.21-.22-.21H4.1c.18-.15.34-.31.54-.44l.01-.01c.21-.14.45-.25.68-.37.15-.07.29-.15.44-.21.17-.07.35-.11.53-.17.18-.05.35-.12.53-.16a6.05 6.05 0 013.47.35c.05.02.1.05.16.08.25.11.48.24.71.39.25.16.49.34.71.55H10.6s0-.03-.01-.03c-.04 0-.09 0-.13.03l-.51.51a.17.17 0 000 .23c.06.06.17.06.23 0l.42-.44.01-.02h.25c0 .14-.07.09-.07.12v.07c0 .22-.15.37-.36.37h-.38c-.19 0-.38.21-.38.4v.17h-.1c-.12 0-.2.06-.2.18v.25h-.23c-.17 0-.3.11-.3.28 0 .17.13.26.3.26.07 0 .14.03.19-.11l.04.01.49-.46h.17l.39.37c.03.03.08.02.12-.01.03-.03.03-.12 0-.15l-.32-.35h.23l.09.12c.18.18.48.17.66-.01l.09-.1h.4c.02 0 .08.05.08.05v.24l-.05-.01h-.36c-.11 0-.21.1-.21.21 0 .11.09.21.21.21h.41v.15c-.14.21-.24.42-.45.42h-.94v-.01l-.44-.44a.47.47 0 00-.66 0l-.42.43v.01H8.6c-.26 0-.49.21-.49.46v.92c0 .26.23.45.49.45h.9c.34.14.57.35.72.69v1.68c0 .26.17.44.42.44h.72c.26 0 .4-.18.4-.44V9l.89-.86.03-.02.02-.01h.03c.07-.08.15-.19.15-.31v-.91c0-.18-.16-.32-.31-.46H13c.01.28.21.42.46.42h.42c.08.37.12.76.12 1.15 0 3.31-2.69 6-6 6zm4.54-4.27c-.1 0-.21.08-.21.18v.57c0 .1.11.18.21.18.1 0 .21-.08.21-.18v-.57c0-.1-.11-.18-.21-.18zM8.37 3.19c0-.25-.2-.42-.46-.42h-.54c-.25 0-.42.18-.42.43 0 .03-.1.04.05.08v.47c0 .15.06.27.21.27s.21-.12.21-.27v-.14h.5c.24 0 .45-.16.45-.42z"],"globe-network":["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm5.17 5h-2.44c-.21-1.11-.51-2.03-.91-2.69 1.43.46 2.61 1.43 3.35 2.69zM10 8c0 .73-.05 1.39-.12 2H6.12C6.05 9.39 6 8.73 6 8s.05-1.39.12-2h3.76c.07.61.12 1.27.12 2zM8 2c.67 0 1.36 1.1 1.73 3H6.27C6.64 3.1 7.33 2 8 2zm-1.82.31c-.4.66-.71 1.58-.91 2.69H2.83a6.025 6.025 0 013.35-2.69zM2 8c0-.7.13-1.37.35-2h2.76C5.04 6.62 5 7.28 5 8s.04 1.38.11 2H2.35C2.13 9.37 2 8.7 2 8zm.83 3h2.44c.21 1.11.51 2.03.91 2.69A6.025 6.025 0 012.83 11zM8 14c-.67 0-1.36-1.1-1.73-3h3.46c-.37 1.9-1.06 3-1.73 3zm1.82-.31c.4-.66.7-1.58.91-2.69h2.44a6.025 6.025 0 01-3.35 2.69zM13.65 10h-2.76c.07-.62.11-1.28.11-2s-.04-1.38-.11-2h2.76c.22.63.35 1.3.35 2s-.13 1.37-.35 2z"],graph:["M14 3c-1.06 0-1.92.83-1.99 1.88l-1.93.97A2.95 2.95 0 008 5c-.56 0-1.08.16-1.52.43L3.97 3.34C3.98 3.23 4 3.12 4 3c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2c.24 0 .47-.05.68-.13l2.51 2.09C5.08 7.29 5 7.63 5 8c0 .96.46 1.81 1.16 2.35l-.56 1.69c-.91.19-1.6.99-1.6 1.96 0 1.1.9 2 2 2s2-.9 2-2c0-.51-.2-.97-.51-1.32l.56-1.69A2.99 2.99 0 0011 8c0-.12-.02-.24-.04-.36l1.94-.97c.32.21.69.33 1.1.33 1.1 0 2-.9 2-2s-.9-2-2-2z"],"graph-remove":["M12.89 8.11l-.01.01-.38-.38-.38.38-.02-.02c-.54.55-1.27.9-2.1.9-1.66 0-3-1.34-3-3 0-.83.35-1.56.9-2.1l-.02-.02.38-.38-.38-.38.01-.01C7.35 2.57 7 1.83 7 1c0-.34.07-.65.17-.96A8.004 8.004 0 000 8c0 4.42 3.58 8 8 8 4.14 0 7.54-3.14 7.96-7.17-.31.1-.62.17-.96.17-.83 0-1.57-.35-2.11-.89zm1.02-4.61l1.79-1.79c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-1.79 1.8L10.71.3A.965.965 0 0010 0a1.003 1.003 0 00-.71 1.71l1.79 1.79-1.79 1.79a1.003 1.003 0 001.42 1.42l1.79-1.79 1.79 1.79a1.003 1.003 0 001.42-1.42l-1.8-1.79z"],"greater-than":["M2.713 5.958a1 1 0 01.574-1.916l10 3c.95.285.95 1.63 0 1.916l-10 3a1 1 0 01-.574-1.916L9.52 8 2.713 5.958z"],"greater-than-or-equal-to":["M2.713 3.958a1 1 0 01.574-1.916l10 3c.95.285.95 1.63 0 1.916l-10 3a1 1 0 01-.574-1.916L9.52 6 2.713 3.958zM3 12h10a1 1 0 010 2H3a1 1 0 010-2z"],grid:["M15 9c.55 0 1-.45 1-1s-.45-1-1-1h-1V4h1c.55 0 1-.45 1-1s-.45-1-1-1h-1V1c0-.55-.45-1-1-1s-1 .45-1 1v1H9V1c0-.55-.45-1-1-1S7 .45 7 1v1H4V1c0-.55-.45-1-1-1S2 .45 2 1v1H1c-.55 0-1 .45-1 1s.45 1 1 1h1v3H1c-.55 0-1 .45-1 1s.45 1 1 1h1v3H1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1v-1h3v1c0 .55.45 1 1 1s1-.45 1-1v-1h3v1c0 .55.45 1 1 1s1-.45 1-1v-1h1c.55 0 1-.45 1-1s-.45-1-1-1h-1V9h1zm-8 3H4V9h3v3zm0-5H4V4h3v3zm5 5H9V9h3v3zm0-5H9V4h3v3z"],"grid-view":["M0 1v6h7V0H1C.45 0 0 .45 0 1zm0 14c0 .55.45 1 1 1h6V9H0v6zM15 0H9v7h7V1c0-.55-.45-1-1-1zM9 16h6c.55 0 1-.45 1-1V9H9v7z"],"group-objects":["M5 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6-3H5C2.24 3 0 5.24 0 8s2.24 5 5 5h6c2.76 0 5-2.24 5-5s-2.24-5-5-5zm0 9H5c-2.21 0-4-1.79-4-4s1.79-4 4-4h6c2.21 0 4 1.79 4 4s-1.79 4-4 4zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],"grouped-bar-chart":["M10 12c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1s-1 .45-1 1v8c0 .55.45 1 1 1zm3 0c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1s-1 .45-1 1v5c0 .55.45 1 1 1zm2 1H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm-9-1c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1s-1 .45-1 1v3c0 .55.45 1 1 1zm-3 0c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1v9c0 .55.45 1 1 1z"],hand:["M15 5c0-.55-.45-1-1-1-.41 0-.76.24-.91.59v.01s0 .01-.01.01L11.57 8h-.36l.78-4.84C12 3.11 12 3.05 12 3a1 1 0 00-1.99-.16v.01L9.18 8H9V1c0-.55-.45-1-1-1S7 .45 7 1v7h-.09l-.93-5.18A1 1 0 005 2c-.55 0-1 .45-1 1 0 .05 0 .11.01.16L5.26 11h-.04L2.83 7.44C2.65 7.18 2.35 7 2 7c-.55 0-1 .45-1 1 0 .17.04.33.12.47l3 5.69h.01v.01A5.002 5.002 0 0013 11v-.59l1.93-5.05c.05-.11.07-.23.07-.36z"],"hand-down":["M14.72 7.87c-1.54-.67-2.99-2.68-3.7-3.95C10.11 1.95 9.93 0 6.14 0 4.05 0 2.71.61 1.92 2.12 1.27 3.36 1 5.21 1 7.83v.79c0 .65.6 1.18 1.35 1.18.34 0 .64-.11.88-.29.17.48.68.84 1.29.84.41 0 .78-.16 1.03-.42.23.37.67.63 1.19.63.57 0 1.05-.31 1.25-.74l.01.63v4.05c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5V7.9c.58.41 1.55 1.21 2.47 1.29 1.57.14 1.82-1.07 1.25-1.32z"],"hand-left":["M12.08 4.97c-1.26-.71-3.27-2.15-3.95-3.7C7.88.7 6.67.96 6.81 2.52c.09.93.89 1.9 1.3 2.48H1.5C.67 5 0 5.67 0 6.5S.67 8 1.5 8h4.05l.63.01c-.44.2-.75.69-.75 1.25 0 .52.26.96.63 1.19-.26.25-.42.61-.42 1.03 0 .61.35 1.12.84 1.29-.18.24-.29.54-.29.88 0 .75.54 1.35 1.19 1.35h.79c2.62 0 4.47-.28 5.71-.92 1.51-.79 2.12-2.14 2.12-4.22 0-3.79-1.95-3.97-3.92-4.89z"],"hand-right":["M14.5 5H7.89c.41-.58 1.21-1.55 1.3-2.47C9.34.97 8.12.71 7.87 1.28c-.67 1.54-2.68 2.99-3.95 3.7C1.95 5.89 0 6.07 0 9.86c0 2.09.61 3.43 2.12 4.22 1.24.65 3.09.92 5.71.92h.79c.65 0 1.18-.6 1.18-1.35 0-.34-.11-.64-.29-.88.48-.17.84-.68.84-1.29 0-.41-.16-.78-.42-1.03.37-.23.63-.67.63-1.19 0-.57-.31-1.05-.74-1.25l.63-.01h4.05c.83 0 1.5-.67 1.5-1.5S15.33 5 14.5 5z"],"hand-up":["M13.65 6.19c-.34 0-.64.11-.88.29-.17-.48-.68-.84-1.29-.84-.41 0-.78.16-1.03.42-.23-.37-.67-.63-1.19-.63-.57 0-1.05.31-1.25.74L8 5.55V1.5C8 .67 7.33 0 6.5 0S5 .67 5 1.5v6.61c-.58-.41-1.55-1.21-2.48-1.3C.96 6.67.7 7.88 1.28 8.13c1.54.67 2.99 2.68 3.7 3.95C5.89 14.05 6.07 16 9.86 16c2.09 0 3.43-.61 4.22-2.12.64-1.24.92-3.09.92-5.71v-.79c0-.65-.6-1.19-1.35-1.19z"],hat:["M15 10c.495 0 .933.379.993.882L16 11v.505c0 1.461-3.524 2.45-7.707 2.493L8 14c-4.31 0-8-1-8-2.495V11c0-.561.466-1 1-1 .895 0 3 1 7 1l.381-.003C12.135 10.937 14.134 10 15 10zm-4-8c1.13 0 2.02 2.153 2.671 6.46-1.063.266-2.644.652-4.887.727l-.403.01L8 9.2c-2.664 0-4.488-.444-5.673-.74C2.98 4.153 3.87 2 5 2c2 0 1.329 2 3 2s1-2 3-2z"],header:["M13 1c-.55 0-1 .45-1 1v5H4V2c0-.55-.45-1-1-1s-1 .45-1 1v12c0 .55.45 1 1 1s1-.45 1-1V9h8v5c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1z"],"header-one":["M14.06 8c-.04.23-.12.44-.25.61-.13.17-.29.3-.48.41-.18.11-.39.18-.62.23-.23.04-.46.07-.71.07v1.03h1.74V16H15V8h-.94zM7 0c-.56 0-1 .45-1 1v4H2V1c0-.55-.45-1-1-1-.56 0-1 .45-1 1v10c0 .55.45 1 1 1 .56 0 1-.45 1-1V7h4v4c0 .55.45 1 1 1 .56 0 1-.45 1-1V1c0-.54-.45-1-1-1z"],"header-two":["M13.17 13.93c-.17.15-.33.29-.46.44-.13.16-.22.32-.27.49h3.55V16H11c.01-.65.16-1.22.44-1.71s.67-.91 1.17-1.27c.24-.18.49-.36.75-.54.25-.18.49-.36.71-.57.21-.2.39-.42.53-.65.14-.24.21-.51.22-.82 0-.14-.02-.29-.05-.45-.03-.16-.09-.31-.18-.45a1.13 1.13 0 00-.37-.35c-.16-.09-.37-.14-.63-.14-.24 0-.43.05-.59.15-.16.1-.29.24-.38.42-.1.17-.17.38-.21.62-.05.24-.07.5-.08.77h-1.19c0-.43.05-.83.16-1.2s.27-.69.49-.96c.21-.25.48-.46.79-.62.31-.15.67-.23 1.07-.23.45 0 .82.08 1.11.23.3.16.55.36.73.6.19.24.32.5.39.79.08.28.12.54.12.79 0 .31-.04.6-.13.85s-.22.49-.37.7c-.15.21-.32.41-.52.59s-.4.35-.61.51l-.63.45c-.21.14-.39.28-.57.42zM0 1c0-.55.44-1 1-1 .55 0 1 .46 1 1v10c0 .55-.44 1-1 1-.55 0-1-.46-1-1V1zm6 0c0-.55.44-1 1-1 .55 0 1 .46 1 1v10c0 .55-.44 1-1 1-.55 0-1-.46-1-1V1zM2 5h4v2H2V5z"],headset:["M14.85 6.34C14.18 2.72 11.37 0 8 0S1.82 2.72 1.15 6.34C.47 6.9 0 8.1 0 9.5 0 11.43.9 13 2 13c0 1.1.9 2 2 2h2c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1H7c-.55 0-1 .45-1 1H4c-.55 0-1-.45-1-1 .55 0 1-.45 1-1V7c0-.45-.3-.81-.71-.94C3.97 3.7 5.81 2 8 2s4.03 1.7 4.71 4.06c-.41.13-.71.49-.71.94v5c0 .55.45 1 1 1h1c1.1 0 2-1.57 2-3.5 0-1.4-.47-2.6-1.15-3.16z"],heart:["M16 5.095c0-2.255-1.88-4.083-4.2-4.083-1.682 0-3.13.964-3.8 2.352a4.206 4.206 0 00-3.8-2.352C1.88 1.012 0 2.84 0 5.095c0 .066.007.13.01.194H.004c.001.047.01.096.014.143l.013.142c.07.8.321 1.663.824 2.573C2.073 10.354 4.232 12.018 8 15c3.767-2.982 5.926-4.647 7.144-6.854.501-.905.752-1.766.823-2.562.007-.055.012-.11.016-.164.003-.043.012-.088.013-.13h-.006c.003-.066.01-.13.01-.195z"],"heart-broken":["M7.71 8.87L6.17 6.55l.02-.01A.906.906 0 016 6c0-.07.03-.13.04-.19h-.02l.78-3.92C6.09 1.34 5.19 1 4.2 1 1.88 1 0 2.83 0 5.09c0 .07.01.13.01.19H0c0 .05.01.1.01.14 0 .05.01.1.01.14.07.8.32 1.66.82 2.57 1.07 1.94 2.88 3.47 5.86 5.84l-.68-2.74h.02C6.03 11.16 6 11.08 6 11c0-.28.11-.53.29-.71l1.42-1.42zM16 5.09C16 2.83 14.12 1 11.8 1c-1.2 0-2.27.5-3.04 1.28l-.7 3.51 1.77 2.66-.01.01c.1.15.18.33.18.54 0 .28-.11.53-.29.71l-1.6 1.6.75 3.01c3.23-2.56 5.16-4.15 6.28-6.18.5-.91.75-1.77.82-2.56.01-.05.01-.11.02-.16 0-.04.01-.09.01-.13h-.01c.01-.07.02-.14.02-.2z"],"heat-grid":["M0 10h5V7H0v3zm1-2h3v1H1V8zm14-5h-4v3h5V4c0-.55-.45-1-1-1zm0 2h-3V4h3v1zM0 4v2h5V3H1c-.55 0-1 .45-1 1zm0 9c0 .55.45 1 1 1h4v-3H0v2zm6-7h4V3H6v3zm0 8h4v-3H6v3zm1-2h2v1H7v-1zm4 2h4c.55 0 1-.45 1-1v-2h-5v3zm0-4h5V7h-5v3zm-5 0h4V7H6v3z"],heatmap:["M2 11c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm11-7c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm3 4.5A2.5 2.5 0 0013.5 6c-.98 0-1.82.57-2.23 1.39-.6-.78-1.51-1.3-2.56-1.36.18-.49.29-.99.29-1.53C9 2.01 6.99 0 4.5 0S0 2.01 0 4.5 2.01 9 4.5 9c.19 0 .37-.03.56-.06-.03.19-.06.37-.06.56C5 11.43 6.57 13 8.5 13c1.63 0 2.98-1.11 3.37-2.62.44.38 1 .62 1.63.62A2.5 2.5 0 0016 8.5zM14.5 13c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z"],help:["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm1 13H7v-2h2v2zm1.93-6.52c-.14.32-.35.64-.62.97L9.25 8.83c-.12.15-.24.29-.28.42-.04.13-.09.3-.09.52V10H7.12V8.88s.05-.51.21-.71L8.4 6.73c.22-.26.35-.49.44-.68.09-.19.12-.38.12-.58 0-.3-.1-.55-.28-.75-.18-.19-.44-.28-.76-.28-.33 0-.59.1-.78.29-.19.19-.33.46-.4.81-.03.11-.1.15-.2.14l-1.7-.25c-.12-.01-.16-.08-.14-.19.12-.82.46-1.47 1.03-1.94.57-.48 1.32-.72 2.25-.72.47 0 .9.07 1.29.22s.72.34 1 .59c.28.25.49.55.65.89.15.35.22.72.22 1.12s-.07.75-.21 1.08z"],"helper-management":["M13 5h-2v2h2V5zm0 6h-2v2h2v-2zm0-3h-2v2h2V8zm2-8H1C.4 0 0 .4 0 1v14c0 .6.4 1 1 1h14c.6 0 1-.4 1-1V1c0-.6-.4-1-1-1zm-1 14H2V2h12v12zm-7-3H5v2h2v-2zm3 0H8v2h2v-2z"],"high-priority":["M9 14v2H7v-2h2zm1-14L9 12H7L6 0h4z"],highlight:["M9.12 11.07l2-2.02.71.71 4-4.04L10.17 0l-4 4.04.71.71-2 2.02 4.24 4.3zM2 12.97h4c.28 0 .53-.11.71-.3l1-1.01-3.42-3.45-3 3.03c-.18.18-.29.44-.29.72 0 .55.45 1.01 1 1.01zm13 1.01H1c-.55 0-1 .45-1 1.01S.45 16 1 16h14c.55 0 1-.45 1-1.01s-.45-1.01-1-1.01z"],history:["M8 3c-.55 0-1 .45-1 1v4c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42L9 7.59V4c0-.55-.45-1-1-1zm0-3a7.95 7.95 0 00-6 2.74V1c0-.55-.45-1-1-1S0 .45 0 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H3.54C4.64 2.78 6.23 2 8 2c3.31 0 6 2.69 6 6 0 2.61-1.67 4.81-4 5.63v-.01c-.63.23-1.29.38-2 .38-3.31 0-6-2.69-6-6 0-.55-.45-1-1-1s-1 .45-1 1c0 4.42 3.58 8 8 8 .34 0 .67-.03 1-.07.02 0 .04-.01.06-.01C12.98 15.4 16 12.06 16 8c0-4.42-3.58-8-8-8z"],home:["M2 10v5c0 .55.45 1 1 1h3v-5h4v5h3c.55 0 1-.45 1-1v-5L8 4l-6 6zm13.71-2.71L14 5.59V2c0-.55-.45-1-1-1s-1 .45-1 1v1.59L8.71.29C8.53.11 8.28 0 8 0s-.53.11-.71.29l-7 7a1.003 1.003 0 001.42 1.42L8 2.41l6.29 6.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],"horizontal-bar-chart":["M4 5h7c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zM1 1c-.55 0-1 .45-1 1v13c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1zm14 6H4c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h11c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm-6 5H4c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1z"],"horizontal-bar-chart-asc":["M1 3h5c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm0 4h7c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm14 6H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM1 11h10c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1z"],"horizontal-bar-chart-desc":["M15 1H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM8 9H1c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1zm-2 4H1c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1zm5-8H1c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1z"],"horizontal-distribution":["M2 0c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm13 0c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm-5 2H7c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1z"],"id-number":["M2 5v7h12V5H2zm0-2h12c1.1 0 2 .9 2 2v7c0 1.1-.9 2-2 2H2c-1.1 0-2-.9-2-2V5c0-1.1.9-2 2-2z","M7.9 10.48c-.14-.33-.84-.55-1.3-.75-.46-.2-.4-.33-.42-.5v-.07c.16-.14.29-.33.37-.56 0 0 0-.01.01-.02.02-.05.03-.1.05-.15.1-.01.16-.13.19-.23.03-.04.07-.15.06-.27-.02-.16-.08-.24-.15-.26v-.03c0-.2-.02-.48-.05-.67-.01-.05-.02-.1-.03-.16-.07-.23-.21-.44-.4-.58-.2-.15-.48-.23-.73-.23s-.53.08-.72.23c-.19.14-.33.35-.4.58-.02.05-.03.1-.03.16-.05.18-.06.47-.06.67v.03c-.07.03-.14.1-.15.26-.02.12.03.22.06.27.02.1.09.22.2.24.01.05.03.1.05.15v.01c.08.23.22.42.38.56v.07c-.02.17.03.29-.43.5-.46.2-1.16.42-1.3.75s-.09.52-.09.52H8c-.01 0 .05-.19-.1-.52zM10 6h2c.55 0 1 .45 1 1s-.45 1-1 1h-2c-.55 0-1-.45-1-1s.45-1 1-1zM10 9h2c.55 0 1 .45 1 1s-.45 1-1 1h-2c-.55 0-1-.45-1-1s.45-1 1-1z"],"image-rotate-left":["M13 2h-1.59l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2C8.11 2.47 8 2.72 8 3c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H13c.55 0 1 .45 1 1v3c0 .55.45 1 1 1s1-.45 1-1V5c0-1.66-1.34-3-3-3zm-5.5 9c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zM10 7H1c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm-1 6.33L7 12l-1 1-2-3-2 2.67V9h7v4.33z"],"image-rotate-right":["M5.71 5.71l2-2C7.89 3.53 8 3.28 8 3c0-.28-.11-.53-.29-.71l-2-2a1.003 1.003 0 00-1.42 1.42l.3.29H3C1.34 2 0 3.34 0 5v3c0 .55.45 1 1 1s1-.45 1-1V5c0-.55.45-1 1-1h1.59l-.3.29a1.003 1.003 0 001.42 1.42zM12.5 11c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zM15 7H6c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm-1 6.33L12 12l-1 1-2-3-2 2.67V9h7v4.33z"],import:["M7.29 11.71c.18.18.43.29.71.29s.53-.11.71-.29l4-4a1.003 1.003 0 00-1.42-1.42L9 8.59V1c0-.55-.45-1-1-1S7 .45 7 1v7.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l4 4zM15 11c-.55 0-1 .45-1 1v2H2v-2c0-.55-.45-1-1-1s-1 .45-1 1v3c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1z"],inbox:["M13.91 2.6c-.16-.36-.51-.61-.92-.61h-10c-.41 0-.77.25-.92.61L-.01 7.45v5.54c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V7.45L13.91 2.6zm-1.92 5.39c-.55 0-1 .45-1 1v1h-6v-1c0-.55-.45-1-1-1H1.94l1.71-4h8.68l1.71 4h-2.05z"],"inbox-filtered":["M6.432 2c.094.14.202.273.324.394L8.42 4H3.66L1.95 8H4c.55 0 1 .45 1 1v1h6.557c.693 0 1.363-.262 1.837-.736l.103-.102.85-1.14a2.564 2.564 0 00.623-1.682V5.058L16 7.46V13c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V7.46l2.08-4.85C2.23 2.25 2.59 2 3 2h3.432zm9.048-2c.31 0 .52.26.52.57 0 .16-.06.3-.17.41l-2.86 2.73v2.63c0 .16-.06.3-.17.41l-.82 1.1c-.1.1-.25.17-.41.17-.31 0-.57-.26-.57-.57V3.71L8.17.98A.566.566 0 018 .57c0-.31.26-.57.57-.57h6.91z"],"inbox-geo":["M6.341 2A5.99 5.99 0 006 4H3.66L1.95 8H4c.55 0 1 .45 1 1v1h7a5.978 5.978 0 004-1.528V13c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V7.46l2.08-4.85C2.23 2.25 2.59 2 3 2h3.341zm3.679 2.145c0-.125.075-.23.205-.225h.345l.79.8c.005 0 0 .005 0 .005v.295c0 .13-.085.23-.215.23h-.07v.15c0 .13-.09.2-.215.2v.535c0 .125-.12.225-.245.225s-.245-.1-.245-.225V5.25h-.145c-.125 0-.205-.1-.205-.23v-.875zm2.235-2.195c-.03 0-.055-.005-.06-.035 0-.03.03-.035.06-.035h.11c.035 0 .06.005.06.035 0 .03-.03.035-.06.035h-.11zm-1.165-.025a.094.094 0 01-.13 0l-.25-.25a.094.094 0 010-.13.094.094 0 01.13 0l.25.25a.094.094 0 010 .13zm1.53.445c-.035 0-.07-.025-.07-.06v-.155c0-.03.035-.06.07-.06s.07.025.07.06v.155c0 .03-.035.06-.07.06zM12 0c2.21 0 4 1.79 4 4s-1.79 4-4 4-4-1.79-4-4 1.79-4 4-4zm0 7c1.655 0 3-1.345 3-3 0-.195-.02-.39-.06-.575h-.21c-.125 0-.225-.07-.23-.21h-.215c.075.07.155.14.155.23V3.9c0 .06-.04.115-.075.155h-.015l-.01.005-.015.01-.445.43v.815c0 .13-.07.22-.2.22h-.36c-.125 0-.21-.09-.21-.22v-.84a.627.627 0 00-.36-.345h-.45c-.13 0-.245-.095-.245-.225v-.46c0-.125.115-.23.245-.23l.13-.005.21-.215c.09-.09.24-.09.33 0l.22.225h.47c.105 0 .155-.105.225-.21v-.075h-.205a.106.106 0 01-.105-.105.11.11 0 01.105-.105h.18l.025.005v-.12s-.03-.025-.04-.025h-.2l-.045.05a.235.235 0 01-.33.005l-.045-.06h-.115l.16.175c.015.015.015.06 0 .075-.02.015-.045.02-.06.005l-.195-.185h-.085l-.245.23-.02-.005c-.025.07-.06.055-.095.055-.085 0-.15-.045-.15-.13s.065-.14.15-.14h.115v-.125c0-.06.04-.09.1-.09h.05V2.36c0-.095.095-.2.19-.2h.19c.105 0 .18-.075.18-.185V1.94c0-.015.035.01.035-.06h-.125l-.005.01-.21.22a.085.085 0 01-.115 0 .085.085 0 010-.115l.255-.255c.02-.015.045-.015.065-.015.005 0 .005.015.005.015h.64a2.327 2.327 0 00-.355-.275 2.452 2.452 0 00-.355-.195c-.03-.015-.055-.03-.08-.04a3.025 3.025 0 00-1.735-.175c-.09.02-.175.055-.265.08-.09.03-.18.05-.265.085-.075.03-.145.07-.22.105-.115.06-.235.115-.34.185l-.005.005c-.1.065-.18.145-.27.22h.455c.06 0 .11.045.11.105s-.05.105-.11.105h-.32c0 .07-.025.04-.025.045v.24h.285l.15-.17c.09-.09.235-.105.325-.015.09.09.09.23 0 .32l-.795.79-.01.01c-.005 0-.005 0-.01.005l-.025.015h-.01a.235.235 0 01-.12.025h-.23c-.08.07-.125.1-.125.18v.06c0 .01-.02.02-.02.03l.375.39c.04.04.04.1 0 .14-.04.04-.1.04-.14 0l-.39-.385a.213.213 0 01-.055.01c-.105 0-.195-.085-.195-.185v-.235h-.055A3.1 3.1 0 009 4c0 1.655 1.345 3 3 3zm2.27-2.135c.05 0 .105.04.105.09v.285c0 .05-.055.09-.105.09-.05 0-.105-.04-.105-.09v-.285c0-.05.055-.09.105-.09zm-2.085-3.27c0 .13-.105.21-.225.21h-.25v.07c0 .075-.03.135-.105.135s-.105-.06-.105-.135V1.64c-.075-.02-.025-.025-.025-.04 0-.125.085-.215.21-.215h.27c.13 0 .23.085.23.21z"],"inbox-search":["M5.639 2a5.391 5.391 0 00-.144 2H3.66L1.95 8H4c.55 0 1 .45 1 1v1h6V9c0-.088.012-.174.033-.255.12-.007.238-.019.39-.038.154-.008.252-.03.442-.077a5.34 5.34 0 00.24-.05h.05l.122-.04 1.266 1.271c.425.47 1.116.769 1.847.769.21 0 .414-.025.61-.071V13c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V7.46l2.08-4.85C2.23 2.25 2.59 2 3 2h2.639zM15.82 7.53c.1.12.17.27.18.44 0 .34-.27.61-.61.61a.57.57 0 01-.43-.18l-2.24-2.25c-.13.08-.26.16-.4.23-.02.01-.05.02-.07.03-.14.06-.27.12-.42.17h-.01c-.14.05-.29.08-.44.11-.04.01-.08.02-.11.02-.15.02-.3.04-.46.04-1.85 0-3.35-1.51-3.35-3.37S8.96.01 10.81 0c1.85 0 3.35 1.51 3.35 3.37 0 .16-.02.31-.04.47-.01.04-.01.07-.02.11-.02.15-.05.29-.1.44v.01c-.05.15-.11.28-.17.42-.01.02-.02.05-.03.07-.07.14-.14.27-.23.4l2.25 2.24zm-5.01-1.94c1.22 0 2.21-.99 2.21-2.22 0-1.23-.99-2.22-2.21-2.22S8.6 2.14 8.6 3.37c0 1.22.99 2.22 2.21 2.22z"],"inbox-update":["M8.1 2a5.023 5.023 0 000 2H3.66L1.95 8H4c.55 0 1 .45 1 1v1h6V9c0-.55.45-1 1-1h2.05c.708 0 1.352-.241 1.905-.645L16 7.46V13c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V7.46l2.08-4.85C2.23 2.25 2.59 2 3 2h5.1zM13 6a3 3 0 110-6 3 3 0 010 6z"],"info-sign":["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zM7 3h2v2H7V3zm3 10H6v-1h1V7H6V6h3v6h1v1z"],inheritance:["M5 8c0 1.66 1.34 3 3 3h4.59L11.3 9.71A.965.965 0 0111 9a1.003 1.003 0 011.71-.71l3 3c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-3 3a1.003 1.003 0 01-1.42-1.42l1.3-1.29H8c-2.76 0-5-2.24-5-5H1a1 1 0 01-1-1V1a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5zM2 2v4h4V2H2z"],"inherited-group":["M1 7c.51 0 .935.388.993.884L2 8v3c0 .51.388.935.884.993L3 12h1.59l-.3-.29a1.003 1.003 0 011.324-1.504l.096.084 2 2c.18.18.29.43.29.71 0 .233-.076.446-.206.614l-.084.096-2 2A1.003 1.003 0 014 15c0-.24.08-.458.224-.629l.076-.081.29-.29H3a2.996 2.996 0 01-2.995-2.823L0 11V8c0-.55.45-1 1-1zm5.388-7c.629 0 1.338.21 1.838.6.48.38.85.91 1.019 1.52.04.13.07.27.09.4.09.48.14 1.22.14 1.73v.07c.18.08.34.27.37.67.03.32-.09.59-.16.71-.06.28-.21.58-.48.63-.03.13-.07.26-.12.39 0 .01-.01.04-.01.04-.22.58-.55 1.08-.949 1.45v.18c.04.45-.12.77 1.059 1.3 1.179.53 2.947 1.09 3.307 1.95.37.86.22 1.36.22 1.36H9c0-.539-.21-1.045-.583-1.417l-2-2A1.997 1.997 0 005 9c-.149 0-.296-.015-.442-.045.099-.19.082-.37.101-.575 0-.05.01-.11.01-.17-.41-.35-.75-.86-.969-1.45v-.01s-.01-.01-.01-.02c-.04-.12-.09-.26-.12-.39-.28-.05-.44-.36-.5-.64-.06-.12-.19-.39-.16-.71.04-.41.21-.6.39-.68v-.06c0-.51.05-1.26.14-1.74.02-.13.05-.27.09-.4.17-.6.54-1.13 1.02-1.51C5.048.21 5.757 0 6.387 0zm4.625 2.04c.49 0 1.05.16 1.439.46.38.29.67.7.8 1.17.03.1.05.21.07.31.07.37.11.94.11 1.33v.05c.139.06.269.21.289.51.02.25-.07.45-.13.54-.05.21-.16.44-.38.48a1.711 1.711 0 01-.1.33c-.17.44-.43.83-.749 1.11v.14c.03.35-.09.59.83 1 .929.41 2.317.84 2.597 1.5.29.66.17 1.04.17 1.04H13.66v.01c-.05-.24-.14-.5-.25-.76-.36-.86-1.119-1.33-2.687-2-.14-.06-.59-.25-.6-.25-.21-.09-.36-.15-.5-.22.02-.1.02-.2.03-.31 0-.04.01-.08.01-.13-.07-.06-.13-.12-.19-.19.22-.32.4-.67.54-1.05.02-.06.02-.06.03-.1.29-.23.48-.57.59-.96.16-.33.25-.73.21-1.16-.03-.4-.16-.76-.37-1.03-.02-.53-.07-1.13-.15-1.54-.01-.06-.02-.12-.03-.19.23-.06.48-.09.72-.09z"],"inner-join":["M6.6 3.3C5.3 4.4 4.5 6.1 4.5 8s.8 3.6 2.1 4.7c-.5.2-1 .3-1.6.3-2.8 0-5-2.2-5-5s2.2-5 5-5c.6 0 1.1.1 1.6.3zm-1.96 8.68C3.92 10.83 3.5 9.46 3.5 8s.42-2.83 1.14-3.98C2.6 4.2 1 5.91 1 8s1.6 3.8 3.64 3.98zM8 4c-1.2.9-2 2.4-2 4s.8 3.1 2 4c1.2-.9 2-2.3 2-4s-.8-3.1-2-4zm3-1c2.8 0 5 2.2 5 5s-2.2 5-5 5c-.6 0-1.1-.1-1.6-.3 1.3-1.1 2.1-2.9 2.1-4.7s-.8-3.5-2.1-4.7c.5-.2 1-.3 1.6-.3zm.35 1.02c.73 1.15 1.14 2.52 1.14 3.98s-.42 2.83-1.14 3.98c2.04-.18 3.64-1.9 3.64-3.98s-1.6-3.8-3.64-3.98z"],insert:["M5 9h2v2c0 .6.4 1 1 1s1-.4 1-1V9h2c.6 0 1-.4 1-1s-.4-1-1-1H9V5c0-.6-.4-1-1-1s-1 .4-1 1v2H5c-.6 0-1 .4-1 1s.4 1 1 1zm10-9H1C.4 0 0 .4 0 1v14c0 .6.4 1 1 1h14c.6 0 1-.4 1-1V1c0-.6-.4-1-1-1zm-1 14H2V2h12v12z"],intersection:["M10 3c-.92 0-1.76.26-2.5.69C6.76 3.26 5.92 3 5 3 2.24 3 0 5.24 0 8s2.24 5 5 5c.92 0 1.76-.26 2.5-.69.74.43 1.58.69 2.5.69 2.76 0 5-2.24 5-5s-2.24-5-5-5zm-4.1 7.85c-.29.09-.59.15-.9.15-1.66 0-3-1.34-3-3s1.34-3 3-3c.31 0 .61.06.9.15C5.33 5.96 5 6.94 5 8s.33 2.04.9 2.85zM10 11c-.31 0-.61-.06-.9-.15.57-.81.9-1.79.9-2.85s-.33-2.04-.9-2.85c.29-.09.59-.15.9-.15 1.66 0 3 1.34 3 3s-1.34 3-3 3z"],"ip-address":["M5 2.66C5 4.14 8 8 8 8s3-3.86 3-5.34C10.99 1.2 9.66 0 8 0S5 1.2 5 2.66zM7 3c0-.55.45-1 1-1s1 .45 1 1-.45 1-1 1-1-.45-1-1zM10.5 10H8v5h1v-4h1v1H9v1h2v-3h-.5zM2 9h12c.55 0 1 .45 1 1v5c0 .55-.45 1-1 1H2c-.55 0-1-.45-1-1v-5c0-.55.45-1 1-1zm4 1v5h1v-5H6z"],issue:["M8 16A8 8 0 118 0a8 8 0 010 16zm0-2A6 6 0 108 2a6 6 0 000 12zm1-2H7v-2h2v2zm0-3H7V4h2v5z"],"issue-closed":["M9.296.104a2.99 2.99 0 00-1.003.664 2.987 2.987 0 00-.75 1.25 6 6 0 106.28 4.527c.043-.039.085-.079.127-.12l1.456-1.456A8 8 0 119.296.105zm2.532 5.2a.997.997 0 01-.707-.294L9.707 3.596a1 1 0 011.414-1.414l.707.707 1.768-1.768a1 1 0 111.414 1.415L12.536 5.01a.997.997 0 01-.708.293zM9 12H7v-2h2v2zm0-3H7V4h2v5z"],"issue-new":["M10.568.421c-.01.04-.018.08-.026.121-.837.156-1.53.73-1.85 1.497a6 6 0 105.27 5.273 2.51 2.51 0 001.496-1.854c.04-.008.081-.016.121-.026A8 8 0 1110.568.421zM9 12H7v-2h2v2zm0-3H7V4h2v5zm1-6c0-.55.45-1 1-1h1V1c0-.55.45-1 1-1s1 .45 1 1v1h1c.55 0 1 .45 1 1s-.45 1-1 1h-1v1.005c0 .55-.45 1-1 1s-1-.45-1-1V4h-1c-.55 0-1-.45-1-1z"],italic:["M9.8 4H11c.5 0 1-.4 1-1s-.4-1-1-1H7c-.5 0-1 .4-1 1s.4 1 1 1h.8l-1.6 8H5c-.5 0-1 .4-1 1s.4 1 1 1h4c.5 0 1-.4 1-1s-.4-1-1-1h-.8l1.6-8z"],"join-table":["M15 5h-3V2c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h3v3c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-5-1v2H6V4h4zm0 6H6V7h4v3zM2 4h3v2H2V4zm0 5V7h3v2H2zm4 4v-2h4v2H6zm8 0h-3v-2h3v2zm0-3h-3V8h3v2z"],key:["M11 0C8.24 0 6 2.24 6 5c0 1.02.31 1.96.83 2.75L.29 14.29a1.003 1.003 0 001.42 1.42L3 14.41l1.29 1.29c.18.19.43.3.71.3s.53-.11.71-.29l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71L6.41 11l1.83-1.83c.8.52 1.74.83 2.76.83 2.76 0 5-2.24 5-5s-2.24-5-5-5zm0 8c-.23 0-.45-.03-.66-.08-.01 0-.02-.01-.03-.01-.21-.05-.41-.12-.6-.21a3.014 3.014 0 01-1.62-2c0-.01-.01-.02-.01-.03C8.03 5.45 8 5.23 8 5c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3z"],"key-backspace":["M15 2H6c-.28 0-.53.11-.71.29l-5 5C.11 7.47 0 7.72 0 8c0 .28.11.53.29.71l5 5c.18.18.43.29.71.29h9c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-2.29 7.29a1.003 1.003 0 01-1.42 1.42L10 9.41 8.71 10.7c-.18.19-.43.3-.71.3a1.003 1.003 0 01-.71-1.71L8.59 8l-1.3-1.29a1.003 1.003 0 011.42-1.42L10 6.59l1.29-1.29c.18-.19.43-.3.71-.3a1.003 1.003 0 01.71 1.71L11.41 8l1.3 1.29z"],"key-command":["M12 9h-1V7h1c1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3v1H7V4c0-1.66-1.34-3-3-3S1 2.34 1 4s1.34 3 3 3h1v2H4c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3v-1h2v1c0 1.66 1.34 3 3 3s3-1.34 3-3-1.34-3-3-3zm0-6c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM4 13c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm0-8c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm5 4H7V7h2v2zm3 4c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"key-control":["M12.71 5.29l-4-4C8.53 1.11 8.28 1 8 1s-.53.11-.71.29l-4 4a1.003 1.003 0 001.42 1.42L8 3.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],"key-delete":["M15.71 7.29l-5-5A.997.997 0 0010 2H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h9c.28 0 .53-.11.71-.29l5-5c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zm-7 2a1.003 1.003 0 01-1.42 1.42L6 9.41 4.71 10.7c-.18.19-.43.3-.71.3a1.003 1.003 0 01-.71-1.71L4.59 8l-1.3-1.29a1.003 1.003 0 011.42-1.42L6 6.59 7.29 5.3c.18-.19.43-.3.71-.3a1.003 1.003 0 01.71 1.71L7.41 8l1.3 1.29z"],"key-enter":["M14 2c-.55 0-1 .45-1 1v3c0 1.66-1.34 3-3 3H4.41L5.7 7.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L4.41 11H10c2.76 0 5-2.24 5-5V3c0-.55-.45-1-1-1z"],"key-escape":["M2 7c.55 0 1-.45 1-1V4.41L7.29 8.7c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L4.41 3H6c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1zm7-5.9v2A5 5 0 113.1 9h-2c.49 3.39 3.38 6 6.9 6 3.87 0 7-3.13 7-7 0-3.52-2.61-6.41-6-6.9z"],"key-option":["M11 4h4c.55 0 1-.45 1-1s-.45-1-1-1h-4c-.55 0-1 .45-1 1s.45 1 1 1zm4 8h-3.43L5.86 2.49h-.02A.975.975 0 005 2H1c-.55 0-1 .45-1 1s.45 1 1 1h3.43l5.71 9.51.01-.01c.18.3.49.5.85.5h4c.55 0 1-.45 1-1s-.45-1-1-1z"],"key-shift":["M13.71 7.29l-5-5C8.53 2.11 8.28 2 8 2s-.53.11-.71.29l-5 5A1.003 1.003 0 003 9h2v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V9h2a1.003 1.003 0 00.71-1.71z"],"key-tab":["M15 10H4.41L5.7 8.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L2 9.59V8c0-.55-.45-1-1-1s-1 .45-1 1v6c0 .55.45 1 1 1s1-.45 1-1v-1.59l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L4.41 12H15c.55 0 1-.45 1-1s-.45-1-1-1zm0-9c-.55 0-1 .45-1 1v1.59L11.71 1.3A.965.965 0 0011 1a1.003 1.003 0 00-.71 1.71L11.59 4H1c-.55 0-1 .45-1 1s.45 1 1 1h10.59L10.3 7.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L14 6.41V8c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1z"],"known-vehicle":["M15 3a.997.997 0 00-.707.293L12 5.586l-1.293-1.293a1 1 0 10-1.414 1.414l2 2a.997.997 0 001.414 0l3-3A1 1 0 0015 3zm-.879 6.121l-.007-.007c-.313.309-.69.552-1.114.702V10h-.998H12h-1v-.184c-.424-.15-.8-.395-1.112-.704l-.01.01-2-2 .012-.012A2.978 2.978 0 017.184 6H3c-.176 0-.06-.824 0-1l.73-1.63C3.79 3.192 3.823 3 4 3H7.78C8.328 2.39 9.115 2 10 2c.768 0 1.461.293 1.987.77l.844-.844c-.238-.244-.524-.442-.794-.524C12.037 1.402 10.72 1 8 1c-2.72 0-4.037.402-4.037.402-.508.155-1.078.711-1.268 1.237l-.763 2.117H.88c-.484 0-.88.423-.88.939s.396.939.88.939h.375L1 7c-.034.685 0 1.436 0 2v5c0 .657.384 1 1 1s1-.343 1-1v-1h10v1c0 .657.384 1 1 1s1-.343 1-1V9l-.003-.754-.876.875zM5.001 10H3V8h2v2z"],"lab-test":["M11 1a1 1 0 010 2v3l3 7v1.25a.75.75 0 01-.75.75H2.75a.75.75 0 01-.75-.75V13l3-7V3a1 1 0 110-2h6zM9 3H7v3l-1.714 4h5.428L9 6V3z"],label:["M11 2H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V7l-5-5zm3 10H2V4h8v2H3v1h7v1h4v4zm-3-5V4l3 3h-3zm-8 3h10V9H3v1z"],layer:["M16 8c0-.37-.21-.68-.51-.85l.01-.01-7-4-.01.01C8.34 3.06 8.18 3 8 3s-.34.06-.49.15l-.01-.02-7 4 .01.01C.21 7.32 0 7.63 0 8s.21.68.51.85l-.01.01 7 4 .01-.01c.15.09.31.15.49.15s.34-.06.49-.15l.01.01 7-4-.01-.01c.3-.17.51-.48.51-.85z"],"layer-outline":["M7.504 3.132l-7 4a1 1 0 000 1.736l7 4a1 1 0 00.992 0l7-4a1 1 0 000-1.736l-7-4a1 1 0 00-.992 0zM8 5.152L12.983 8 8 10.847 3.016 8 8 5.152z"],layers:["M.55 4.89l7 3.5c.14.07.29.11.45.11s.31-.04.45-.11l7-3.5a.998.998 0 00-.06-1.81L8.4.08a1.006 1.006 0 00-.79 0l-6.99 3a.992.992 0 00-.07 1.81zM15 10c-.16 0-.31.04-.45.11L8 13.38 1.45 10.1c-.14-.06-.29-.1-.45-.1-.55 0-1 .45-1 1 0 .39.23.73.55.89l7 3.5c.14.07.29.11.45.11s.31-.04.45-.11l7-3.5c.32-.16.55-.5.55-.89 0-.55-.45-1-1-1zm0-3.5c-.16 0-.31.04-.45.11L8 9.88 1.45 6.61A.997.997 0 001 6.5c-.55 0-1 .45-1 1 0 .39.23.73.55.89l7 3.5c.14.07.29.11.45.11s.31-.04.45-.11l7-3.5c.32-.16.55-.5.55-.89 0-.55-.45-1-1-1z"],layout:["M14 4c-1.1 0-2 .9-2 2 0 .47.17.9.44 1.24l-.68.91A1.996 1.996 0 009.07 9.5H7.93C7.71 8.64 6.93 8 6 8c-.47 0-.9.17-1.24.44l-.91-.68c.1-.23.15-.49.15-.76 0-.37-.11-.71-.28-1.01l2.27-2.27c.3.17.64.28 1.01.28 1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2c0 .37.11.71.28 1.01L3.01 5.28C2.71 5.11 2.37 5 2 5 .9 5 0 5.9 0 7s.9 2 2 2c.47 0 .9-.17 1.24-.44l.91.68c-.1.23-.15.49-.15.76 0 .37.11.71.28 1.01l-1.27 1.27C2.71 12.11 2.37 12 2 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2c0-.37-.11-.71-.28-1.01l1.27-1.27c.3.17.64.28 1.01.28.93 0 1.71-.64 1.93-1.5h1.14c.22.86 1 1.5 1.93 1.5 1.1 0 2-.9 2-2 0-.47-.17-.9-.44-1.24l.68-.91c.23.1.49.15.76.15 1.1 0 2-.9 2-2s-.9-2-2-2z"],"layout-auto":["M14 9.5c-.56 0-1.06.23-1.42.59L8.99 8l3.59-2.09A2.002 2.002 0 0016 4.5c0-1.1-.9-2-2-2s-2 .9-2 2c0 .19.03.37.08.54L8.5 7.13v-3.2c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2S6 .9 6 2c0 .93.64 1.71 1.5 1.93v3.2L3.92 5.04c.05-.17.08-.35.08-.54 0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2c.56 0 1.06-.23 1.42-.59L7.01 8l-3.59 2.09A2.002 2.002 0 000 11.5c0 1.1.9 2 2 2s2-.9 2-2c0-.19-.03-.37-.08-.54L7.5 8.87v3.2c-.86.22-1.5 1-1.5 1.93 0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93v-3.2l3.58 2.09c-.05.17-.08.35-.08.54 0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2z"],"layout-balloon":["M14 11c-.2 0-.38.04-.56.09L12.42 9.4c.36-.36.58-.85.58-1.4 0-.55-.22-1.04-.58-1.4l1.01-1.69c.19.05.37.09.57.09 1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2c0 .55.22 1.04.58 1.4l-1.01 1.69C11.38 6.04 11.2 6 11 6c-.93 0-1.71.64-1.93 1.5H6.93C6.71 6.64 5.93 6 5 6c-.2 0-.38.04-.56.09L3.42 4.4C3.78 4.04 4 3.55 4 3c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2c.2 0 .38-.04.56-.09L3.58 6.6C3.22 6.96 3 7.45 3 8c0 .55.22 1.04.58 1.4l-1.01 1.69C2.38 11.04 2.2 11 2 11c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2c0-.55-.22-1.04-.58-1.4l1.01-1.69c.19.05.37.09.57.09.93 0 1.71-.64 1.93-1.5h2.14c.22.86 1 1.5 1.93 1.5.2 0 .38-.04.56-.09l1.01 1.69c-.35.36-.57.85-.57 1.4 0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2z"],"layout-circle":["M14.16 6.02c-.12-.36-.26-.7-.43-1.03.17-.29.27-.63.27-.99 0-1.1-.9-2-2-2-.36 0-.7.1-.99.27-.33-.17-.67-.31-1.03-.43A1.987 1.987 0 008 0C6.95 0 6.1.81 6.02 1.84c-.36.12-.7.26-1.03.43C4.7 2.1 4.36 2 4 2c-1.1 0-2 .9-2 2 0 .36.1.7.27.99-.17.33-.31.67-.43 1.03C.81 6.1 0 6.95 0 8c0 1.05.81 1.9 1.84 1.98.12.36.26.7.43 1.03-.17.29-.27.63-.27.99 0 1.1.9 2 2 2 .36 0 .7-.1.99-.27.33.17.67.32 1.03.43C6.1 15.19 6.95 16 8 16c1.05 0 1.9-.81 1.98-1.84.36-.12.7-.26 1.03-.43.29.17.63.27.99.27 1.1 0 2-.9 2-2 0-.36-.1-.7-.27-.99.17-.33.31-.67.43-1.03C15.19 9.9 16 9.05 16 8c0-1.05-.81-1.9-1.84-1.98zm-.99 3.79c-.05.16-.11.31-.17.46-.3-.17-.64-.27-1-.27-1.1 0-2 .9-2 2 0 .36.1.7.27 1-.15.07-.3.12-.46.17C9.5 12.48 8.81 12 8 12s-1.5.48-1.81 1.17c-.16-.06-.32-.11-.46-.17.17-.3.27-.64.27-1 0-1.1-.9-2-2-2-.36 0-.7.1-1 .27-.07-.15-.12-.3-.17-.46C3.52 9.5 4 8.81 4 8s-.48-1.5-1.17-1.81c.06-.16.11-.32.17-.46.3.17.64.27 1 .27 1.1 0 2-.9 2-2 0-.36-.1-.7-.27-1 .15-.07.3-.12.46-.17C6.5 3.52 7.19 4 8 4s1.5-.48 1.81-1.17c.16.06.32.11.46.17-.17.3-.27.64-.27 1 0 1.1.9 2 2 2 .36 0 .7-.1 1-.27.07.15.12.3.17.46C12.48 6.5 12 7.19 12 8s.48 1.5 1.17 1.81z"],"layout-grid":["M2 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6C.9 6 0 6.9 0 8s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6C.9 0 0 .9 0 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM8 0C6.9 0 6 .9 6 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM8 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],"layout-group-by":["M2 6C.9 6 0 6.9 0 8s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 5c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12-7c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM2 1C.9 1 0 1.9 0 3s.9 2 2 2 2-.9 2-2-.9-2-2-2zm7 8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm5 3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],"layout-hierarchy":["M14.5 12.07V9.93c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2-.93 0-1.71.64-1.93 1.5H9.93c-.18-.7-.73-1.25-1.43-1.43V3.93c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2S6 .9 6 2c0 .93.64 1.71 1.5 1.93v2.14c-.7.18-1.25.73-1.43 1.43H3.93C3.71 6.64 2.93 6 2 6 .9 6 0 6.9 0 8c0 .93.64 1.71 1.5 1.93v2.14c-.86.22-1.5 1-1.5 1.93 0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93V9.93c.7-.18 1.25-.73 1.43-1.43h2.14c.18.7.73 1.25 1.43 1.43v2.14c-.86.22-1.5 1-1.5 1.93 0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93V9.93c.7-.18 1.25-.73 1.43-1.43h2.14c.18.7.73 1.25 1.43 1.43v2.14c-.86.22-1.5 1-1.5 1.93 0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93z"],"layout-linear":["M14 6c-.93 0-1.71.64-1.93 1.5H9.93C9.71 6.64 8.93 6 8 6s-1.71.64-1.93 1.5H3.93C3.71 6.64 2.93 6 2 6 .9 6 0 6.9 0 8s.9 2 2 2c.93 0 1.71-.64 1.93-1.5h2.13C6.29 9.36 7.07 10 8 10s1.71-.64 1.93-1.5h2.13c.22.86 1 1.5 1.93 1.5 1.1 0 2-.9 2-2C16 6.9 15.1 6 14 6z"],"layout-skew-grid":["M2 6C.9 6 0 6.9 0 8s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12-2c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM2 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM2 0C.9 0 0 .9 0 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 9c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6-3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM8 3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 9c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],"layout-sorted-clusters":["M2 6C.9 6 0 6.9 0 8s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM2 0C.9 0 0 .9 0 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM8 9c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],learning:["M8.441 1.104a.985.985 0 00-.882 0L.365 5c-.487.253-.487.747 0 1L7.56 9.896a.985.985 0 00.882 0L15.635 6c.487-.253.487-.747 0-1L8.44 1.104z","M14 5.5l.016 4.514c.002.548.447.99.994.99a.99.99 0 00.99-.99V5.5h-2zM3.371 9.047l4.387 2.432a.5.5 0 00.485 0l4.39-2.432a.25.25 0 01.371.218v2.955a.25.25 0 01-.134.222l-4.635 2.436a.5.5 0 01-.466 0l-4.635-2.436A.25.25 0 013 12.22V9.265a.25.25 0 01.371-.218z"],"left-join":["M6.6 3.3C6.1 3.1 5.6 3 5 3 2.2 3 0 5.2 0 8s2.2 5 5 5c.6 0 1.1-.1 1.6-.3C5.3 11.6 4.5 9.9 4.5 8s.8-3.6 2.1-4.7zM8 4c-1.2.9-2 2.4-2 4s.8 3.1 2 4c1.2-.9 2-2.3 2-4s-.8-3.1-2-4zm3-1c2.8 0 5 2.2 5 5s-2.2 5-5 5c-.6 0-1.1-.1-1.6-.3 1.3-1.1 2.1-2.9 2.1-4.7s-.8-3.5-2.1-4.7c.5-.2 1-.3 1.6-.3zm.35 1.02c.73 1.15 1.14 2.52 1.14 3.98s-.42 2.83-1.14 3.98c2.04-.18 3.64-1.9 3.64-3.98s-1.6-3.8-3.64-3.98z"],"less-than":["M13.287 5.958a1 1 0 00-.574-1.916l-10 3c-.95.285-.95 1.631 0 1.916l10 3a1 1 0 00.574-1.916L6.48 8l6.807-2.042z"],"less-than-or-equal-to":["M13.287 3.958a1 1 0 00-.575-1.916l-10 3c-.95.285-.95 1.63 0 1.916l10 3a1 1 0 00.575-1.916L6.48 6l6.807-2.042zM13 12H3a1 1 0 000 2h10a1 1 0 000-2z"],lifesaver:["M9.405 11.746C8.968 11.91 8.495 12 8 12c-.494 0-.968-.09-1.405-.254l-.702 1.873C6.548 13.865 7.258 14 8 14c.742 0 1.452-.135 2.107-.38l-.702-1.874zm2.341-2.341l1.873.702C13.865 9.452 14 8.742 14 8c0-.742-.135-1.452-.38-2.107l-1.874.702c.164.437.254.91.254 1.405 0 .494-.09.968-.254 1.405zM9.405 4.254l.702-1.873A5.987 5.987 0 008 2c-.742 0-1.452.135-2.107.38l.702 1.874C7.032 4.09 7.505 4 8 4c.494 0 .968.09 1.405.254zM4.254 6.595L2.38 5.893A5.987 5.987 0 002 8c0 .742.135 1.452.38 2.107l1.874-.702A3.991 3.991 0 014 8c0-.494.09-.968.254-1.405zM8 16A8 8 0 118 0a8 8 0 010 16zm0-6a2 2 0 100-4 2 2 0 000 4z"],lightbulb:["M9.01 14h-2c-.55 0-1 .45-1 1s.45 1 1 1h2c.55 0 1-.45 1-1s-.44-1-1-1zm1-3h-4c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1s-.44-1-1-1zm-2-11C5.26 0 3.03 1.95 3.03 4.35c0 2.37 1.63 2.64 1.94 5.22 0 .24.22.44.5.44h5.09c.28 0 .5-.19.5-.44C11.37 6.99 13 6.72 13 4.35 13 1.95 10.77 0 8.01 0z"],link:["M4.99 11.99c.28 0 .53-.11.71-.29l6-6a1.003 1.003 0 00-1.42-1.42l-6 6a1.003 1.003 0 00.71 1.71zm3.85-2.02L6.4 12.41l-1 1-.01-.01c-.36.36-.85.6-1.4.6-1.1 0-2-.9-2-2 0-.55.24-1.04.6-1.4l-.01-.01 1-1 2.44-2.44c-.33-.1-.67-.16-1.03-.16-1.1 0-2.09.46-2.81 1.19l-.02-.02-1 1 .02.02c-.73.72-1.19 1.71-1.19 2.81 0 2.21 1.79 4 4 4 1.1 0 2.09-.46 2.81-1.19l.02.02 1-1-.02-.02c.73-.72 1.19-1.71 1.19-2.81 0-.35-.06-.69-.15-1.02zm7.15-5.98c0-2.21-1.79-4-4-4-1.1 0-2.09.46-2.81 1.19l-.02-.02-1 1 .02.02c-.72.72-1.19 1.71-1.19 2.81 0 .36.06.69.15 1.02l2.44-2.44 1-1 .01.01c.36-.36.85-.6 1.4-.6 1.1 0 2 .9 2 2 0 .55-.24 1.04-.6 1.4l.01.01-1 1-2.43 2.45c.33.09.67.15 1.02.15 1.1 0 2.09-.46 2.81-1.19l.02.02 1-1-.02-.02a3.92 3.92 0 001.19-2.81z"],list:["M1 3h14c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm14 10H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm0-4H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm0-4H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],"list-columns":["M6 1c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1s.45-1 1-1h5zm0 4c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1s.45-1 1-1h5zm0 4c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1s.45-1 1-1h5zm0 4c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1s.45-1 1-1h5zm9-12c.55 0 1 .45 1 1s-.45 1-1 1h-5c-.55 0-1-.45-1-1s.45-1 1-1h5zm0 4c.55 0 1 .45 1 1s-.45 1-1 1h-5c-.55 0-1-.45-1-1s.45-1 1-1h5zm0 4c.55 0 1 .45 1 1s-.45 1-1 1h-5c-.55 0-1-.45-1-1s.45-1 1-1h5zm0 4c.55 0 1 .45 1 1s-.45 1-1 1h-5c-.55 0-1-.45-1-1s.45-1 1-1h5z"],"list-detail-view":["M6 9H1c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1zm0 4H1c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1zm9-12h-5c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zM6 5H1c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1zm0-4H1c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1z"],locate:["M15 7h-.09A6.98 6.98 0 009 1.1V1c0-.55-.45-1-1-1S7 .45 7 1v.09A6.98 6.98 0 001.1 7H1c-.55 0-1 .45-1 1s.45 1 1 1h.1A6.969 6.969 0 007 14.91V15c0 .55.45 1 1 1s1-.45 1-1v-.09A6.98 6.98 0 0014.9 9h.1c.55 0 1-.45 1-1s-.45-1-1-1zm-6.02 5.9c-.05-.5-.46-.9-.98-.9s-.93.4-.98.9A5.017 5.017 0 013.1 8.98c.5-.05.9-.46.9-.98s-.4-.93-.9-.98A5.017 5.017 0 017.02 3.1c.05.5.46.9.98.9s.93-.4.98-.9c1.97.39 3.52 1.95 3.92 3.92-.5.05-.9.46-.9.98s.4.93.9.98a5.017 5.017 0 01-3.92 3.92zM8 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],lock:["M13.96 7H12V3.95C12 1.77 10.21 0 8 0S4 1.77 4 3.95V7H1.96c-.55 0-.96.35-.96.9v6.91c0 .54.41 1.19.96 1.19h12c.55 0 1.04-.65 1.04-1.19V7.9c0-.55-.49-.9-1.04-.9zM6 7V3.95c0-1.09.9-1.97 2-1.97s2 .88 2 1.97V7H6z"],"log-in":["M11 8c0-.28-.11-.53-.29-.71l-3-3a1.003 1.003 0 00-1.42 1.42L7.59 7H1c-.55 0-1 .45-1 1s.45 1 1 1h6.59L6.3 10.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71zm4-8H9c-.55 0-1 .45-1 1s.45 1 1 1h5v12H9c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],"log-out":["M7 14H2V2h5c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1zm8.71-6.71l-3-3a1.003 1.003 0 00-1.42 1.42L12.59 7H6c-.55 0-1 .45-1 1s.45 1 1 1h6.59l-1.29 1.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],manual:["M15.99 1.13c-.02-.41-.33-.77-.78-.87C12.26-.36 9.84.13 8 1.7 6.16.13 3.74-.36.78.26.33.35.03.72.01 1.13H0v12c0 .08 0 .17.02.26.12.51.65.82 1.19.71 2.63-.55 4.59-.04 6.01 1.57.02.03.06.04.08.06.02.02.03.04.05.06.04.03.09.04.13.07.05.03.09.05.14.07.11.04.23.07.35.07h.04c.12 0 .24-.03.35-.07.05-.02.09-.05.14-.07.04-.02.09-.04.13-.07.02-.02.03-.04.05-.06.03-.02.06-.03.08-.06 1.42-1.6 3.39-2.12 6.01-1.57.54.11 1.07-.21 1.19-.71.04-.09.04-.18.04-.26l-.01-12zM7 12.99c-1.4-.83-3.07-1.14-5-.93V1.96c2.11-.28 3.75.2 5 1.46v9.57zm7-.92c-1.93-.21-3.6.1-5 .93V3.42c1.25-1.26 2.89-1.74 5-1.46v10.11z"],"manually-entered-data":["M1 8h3.76l2-2H1c-.55 0-1 .45-1 1s.45 1 1 1zm14.49-4.01c.31-.32.51-.76.51-1.24C16 1.78 15.22 1 14.25 1c-.48 0-.92.2-1.24.51l-1.44 1.44 2.47 2.47 1.45-1.43zM1 4h7.76l2-2H1c-.55 0-1 .45-1 1s.45 1 1 1zm0 6c-.55 0-1 .45-1 1 0 .48.35.86.8.96L2.76 10H1zm9.95-6.43l-6.69 6.69 2.47 2.47 6.69-6.69-2.47-2.47zm4.25 2.47L13.24 8H15c.55 0 1-.45 1-1 0-.48-.35-.86-.8-.96zM2 15l3.86-1.39-2.46-2.44L2 15zm13-5h-3.76l-2 2H15c.55 0 1-.45 1-1s-.45-1-1-1z"],map:["M15.55 3.17l-4.49-3A.975.975 0 009.99.15L5.53 2.82 1.56.17A1.003 1.003 0 000 1v11c0 .35.18.65.45.83l4.49 3a.975.975 0 001.07.02l4.46-2.67 3.97 2.65A1.003 1.003 0 0016 15V4c0-.35-.18-.65-.45-.83zM5 13.46l-3-2v-8.6l2.94 1.96c.02.02.04.03.06.04v8.6zm5-2.32s-.01 0-.01.01L6 13.53V4.86s.01 0 .01-.01L10 2.47v8.67zm4 1.99l-2.94-1.96c-.02-.01-.04-.02-.05-.03v-8.6l3 2v8.59z"],"map-create":["M14 6.82v6.32l-2.94-1.96c-.02-.01-.04-.02-.05-.03V6.22c-.08-.07-.15-.16-.22-.24-.28-.02-.54-.08-.79-.16v5.32s-.01 0-.01.01L6 13.53V4.86s.01 0 .01-.01l2.05-1.23C8.02 3.42 8 3.21 8 3c0-.98.47-1.84 1.2-2.39l-3.67 2.2L1.56.17A1.003 1.003 0 000 1v11c0 .35.18.65.45.83l4.49 3a.975.975 0 001.07.02l4.46-2.67 3.97 2.65A1.003 1.003 0 0016 15V5.82c-.25.09-.52.14-.8.16-.33.36-.73.67-1.2.84zm-9 6.64l-3-2v-8.6l2.94 1.96c.02.02.04.03.06.04v8.6zM11 4h1v1c0 .55.45 1 1 1s1-.45 1-1V4h1c.55 0 1-.45 1-1s-.45-1-1-1h-1V1c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1z"],"map-marker":["M8.46 0C5.42 0 2.95 2.39 2.95 5.33 2.95 8.28 8.46 16 8.46 16s5.51-7.72 5.51-10.67C13.96 2.39 11.5 0 8.46 0zm0 8a2.5 2.5 0 010-5 2.5 2.5 0 010 5z"],maximize:["M5.99 8.99c-.28 0-.53.11-.71.29l-3.29 3.29v-1.59c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H3.41L6.7 10.7a1.003 1.003 0 00-.71-1.71zm9-9h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.59l-3.3 3.3a.99.99 0 00-.29.7 1.003 1.003 0 001.71.71l3.29-3.29V5c0 .55.45 1 1 1s1-.45 1-1V1c0-.56-.45-1.01-1-1.01z"],media:["M11.99 6.99c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm3-5h-14c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-10c0-.55-.45-1-1-1zm-1 9l-5-3-1 2-3-4-3 5v-7h12v7z"],menu:["M1 4h14c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm14 8H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm0-5H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],"menu-closed":["M14.99 6.99h-9c-.55 0-1 .45-1 1s.45 1 1 1h9c.55 0 1-.45 1-1s-.45-1-1-1zm-12-2c-.28 0-.53.11-.71.29l-2 2a1.014 1.014 0 000 1.42l2 2a1.003 1.003 0 001.71-.71v-4c0-.55-.45-1-1-1zm3-1h9c.55 0 1-.45 1-1s-.45-1-1-1h-9c-.55 0-1 .45-1 1s.45 1 1 1zm9 8h-9c-.55 0-1 .45-1 1s.45 1 1 1h9c.55 0 1-.45 1-1s-.45-1-1-1z"],"menu-open":["M9.99 11.99h-9c-.55 0-1 .45-1 1s.45 1 1 1h9c.55 0 1-.45 1-1s-.45-1-1-1zm0-5h-9c-.55 0-1 .45-1 1s.45 1 1 1h9c.55 0 1-.45 1-1s-.45-1-1-1zm0-5h-9c-.55 0-1 .45-1 1s.45 1 1 1h9c.55 0 1-.45 1-1s-.45-1-1-1zm5.71 5.3l-2-2a1.003 1.003 0 00-1.71.71v4a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71s-.11-.53-.29-.71z"],"merge-columns":["M5.71 5.29a1.003 1.003 0 00-1.42 1.42l.3.29H2V2h3v1.51c.52.06.99.29 1.34.65l.66.66V1c0-.55-.45-1-1-1H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-3.82l-.66.66c-.35.35-.82.59-1.34.65V14H2V9h2.59l-.3.29a1.003 1.003 0 001.42 1.42l2-2C7.89 8.53 8 8.28 8 8c0-.28-.11-.53-.29-.71l-2-2zM15 0h-5c-.55 0-1 .45-1 1v3.82l.66-.66c.35-.35.82-.59 1.34-.65V2h3v5h-2.59l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2C8.11 7.47 8 7.72 8 8c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H14v5h-3v-1.51c-.52-.06-.99-.29-1.34-.65L9 11.18V15c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],"merge-links":["M8 7c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-8c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm6 3c-.93 0-1.71.64-1.93 1.5H11V3c0-1.66-1.34-3-3-3S5 1.34 5 3v4.5H3.93C3.71 6.64 2.93 6 2 6 .9 6 0 6.9 0 8s.9 2 2 2c.93 0 1.71-.64 1.93-1.5H5V13c0 1.66 1.34 3 3 3s3-1.34 3-3V8.5h1.07c.22.86 1 1.5 1.93 1.5 1.1 0 2-.9 2-2s-.9-2-2-2zm-4 7c0 1.1-.9 2-2 2s-2-.9-2-2V3c0-1.1.9-2 2-2s2 .9 2 2v10z"],minimize:["M15.99.99a1.003 1.003 0 00-1.71-.71l-3.29 3.29V1.99c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H12.4l3.3-3.29c.18-.18.29-.43.29-.71zm-10 8h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.59L.29 14.28a1.003 1.003 0 001.42 1.42L5 12.41V14c0 .55.45 1 1 1s1-.45 1-1v-4a1.02 1.02 0 00-1.01-1.01z"],minus:["M13 7H3c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1z"],"mobile-phone":["M12 0H4c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h8c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM8 15c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm3-3H5V3h6v9z"],"mobile-video":["M15 4c-.28 0-.53.11-.71.29L12 6.59V4c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V9.41l2.29 2.29c.18.19.43.3.71.3.55 0 1-.45 1-1V5c0-.55-.45-1-1-1z"],modal:["M15 1a1 1 0 011 1v12a1 1 0 01-1 1H1a1 1 0 01-1-1V2a1 1 0 011-1h14zm-1 4H2v8h12V5zm-3-3H9v2h2V2zm3 0h-2v2h2V2z"],"modal-filled":["M15 1H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zm1 4H0V3h16v2zm-3-2h-2V1h2v2z"],moon:["M15 11.38A7.835 7.835 0 017.85 16C3.51 16 0 12.49 0 8.15 0 4.97 1.89 2.23 4.62 1c-.45.99-.7 2.08-.7 3.23a7.85 7.85 0 007.85 7.85c1.15 0 2.24-.25 3.23-.7z"],more:["M2 6.03a2 2 0 100 4 2 2 0 100-4zM14 6.03a2 2 0 100 4 2 2 0 100-4zM8 6.03a2 2 0 100 4 2 2 0 100-4z"],mountain:["M16 13H3l6-9h1l2 2h1l3 7zm-2.5-3.5l-1-2.5h-1l-2-2-3 4.5L9 8l1 1 1-1 2.5 1.5zM5.94 7l-4.122 6H0l5-6h.94z"],move:["M15.71 7.29l-2-2a1.003 1.003 0 00-1.42 1.42l.3.29H9V3.41l.29.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-2-2C8.53.11 8.28 0 8 0s-.53.11-.71.29l-2 2a1.003 1.003 0 001.42 1.42l.29-.3V7H3.41l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2C.11 7.47 0 7.72 0 8c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42L3.41 9H7v3.59l-.29-.29A.965.965 0 006 12a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l2-2a1.003 1.003 0 00-1.42-1.42l-.29.3V9h3.59l-.29.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],mugshot:["M15 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14h-.15c-.03-.09-.04-.16-.08-.25-.34-.79-2.01-1.31-3.12-1.8-1.11-.49-.96-.79-1-1.2-.01-.06-.01-.12-.01-.18.38-.34.69-.8.89-1.33 0 0 .01-.03.01-.04.04-.12.08-.24.11-.36.25-.05.4-.33.46-.59.06-.1.18-.36.15-.65-.04-.37-.19-.55-.35-.62v-.06c0-.48-.04-1.16-.13-1.61-.02-.12-.05-.25-.08-.37-.16-.55-.51-1.05-.96-1.39C9.26 3.19 8.6 3 8 3c-.59 0-1.26.19-1.73.55-.45.35-.8.84-.96 1.39-.04.13-.06.25-.08.38-.09.45-.13 1.13-.13 1.61v.06c-.18.06-.33.24-.37.62-.03.29.09.54.15.65.06.26.21.54.47.59.03.12.07.25.11.36 0 .01.01.02.01.02v.01c.21.54.53 1.01.92 1.35 0 .05-.01.11-.01.16-.04.41.08.7-1.03 1.2-1.11.49-2.77 1.01-3.12 1.8-.04.09-.05.16-.08.25H2V2h12v12z"],"multi-select":["M12 3.98H4c-.55 0-1 .45-1 1v1h8v5h1c.55 0 1-.45 1-1v-5c0-.55-.45-1-1-1zm3-3H7c-.55 0-1 .45-1 1v1h8v5h1c.55 0 1-.45 1-1v-5c0-.55-.45-1-1-1zm-6 6H1c-.55 0-1 .45-1 1v5c0 .55.45 1 1 1h8c.55 0 1-.45 1-1v-5c0-.55-.45-1-1-1zm-1 5H2v-3h6v3z"],music:["M15 0c-.07 0-.13.03-.19.04V.02l-10 2v.02C4.35 2.13 4 2.52 4 3v9.12c-.31-.07-.65-.12-1-.12-1.66 0-3 .9-3 2s1.34 2 3 2 3-.9 3-2V6.32l8-1.6v5.4c-.31-.07-.65-.12-1-.12-1.66 0-3 .9-3 2s1.34 2 3 2 3-.9 3-2V1c0-.55-.45-1-1-1z"],"new-drawing":["M14.9 11c.6 0 1 .5 1 1 0 .257-.073.44-.22.614l-.08.086-3 3c-.2.2-.4.3-.7.3-.5 0-1-.4-1-1 0-.257.073-.44.22-.614l.08-.086 3-3c.2-.2.4-.3.7-.3zM1.3.1l6.734 2.45a3.005 3.005 0 002.095 3.322 3.005 3.005 0 003.401 2.081L13.9 9.8v.2c0 .257-.073.44-.22.614l-.08.086-3 3c-.171.171-.343.27-.577.294L9.9 14h-.2l-5-1-.1-.01c-.231-.05-.45-.26-.56-.49L4 12.4l-4-11 .3-.3 5.8 5.8c-.1.2-.2.4-.2.6 0 .8.6 1.5 1.5 1.5s1.5-.7 1.5-1.5S8.2 6 7.4 6c-.16 0-.32.064-.48.14l-.12.06L1 .4l.3-.3zM13 0c.55 0 1 .45 1 1v1h1c.55 0 1 .45 1 1s-.45 1-1 1h-1v1c0 .503-.376.922-.861.99l-.013.002A.999.999 0 0113 6l.097-.006-.027.004a1 1 0 01-.037.001L13 6c-.55 0-1-.45-1-1V4h-1a.993.993 0 01-.855-.482A1 1 0 0110 3c0-.55.45-1 1-1h1V1c0-.55.45-1 1-1z"],"new-grid-item":["M6 0H1C.45 0 0 .45 0 1v5c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm5 14c0-.55-.45-1-1-1s-1 .45-1 1v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1s-.45-1-1-1zM6 9H1c-.55 0-1 .45-1 1v5c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-5c0-.55-.45-1-1-1zm9 4c-.55 0-1 .45-1 1-.55 0-1 .45-1 1s.45 1 1 1h1c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm-4-4h-1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1s1-.45 1-1c.55 0 1-.45 1-1s-.45-1-1-1zm4-9h-5c-.55 0-1 .45-1 1v5c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm0 9h-1c-.55 0-1 .45-1 1s.45 1 1 1c0 .55.45 1 1 1s1-.45 1-1v-1c0-.55-.45-1-1-1z"],"new-layer":["M13.982 6.272l1.518.868-.01.01c.3.17.51.48.51.85s-.21.68-.51.85l.01.01-7 4-.01-.01A.94.94 0 018 13a.94.94 0 01-.49-.15l-.01.01-7-4 .01-.01A.977.977 0 010 8c0-.37.21-.68.51-.86L.5 7.13l7-4 .01.02A.94.94 0 018 3c.086 0 .168.014.246.038a2 2 0 105.736 3.234zM14 3c.55 0 1 .45 1 1s-.45 1-1 1h-1v1c0 .55-.45 1-1 1s-1-.45-1-1V5h-1c-.55 0-1-.45-1-1s.45-1 1-1h1V2c0-.55.45-1 1-1s1 .45 1 1v1h1z"],"new-layers":["M13 3h2a1 1 0 010 2h-2v2a1 1 0 01-2 0V5H9a1 1 0 110-2h2V1a1 1 0 012 0v2zm-3-1.983V2H9a2 2 0 100 4h1v1c0 .279.057.544.16.785l-1.71.855c-.14.07-.29.11-.45.11-.16 0-.31-.04-.45-.11l-7-3.5a.992.992 0 01.07-1.81l6.99-3a1.006 1.006 0 01.79 0l1.6.687zm.91 7.66a2 2 0 003.085-1.54l.555-.277c.14-.07.29-.11.45-.11.55 0 1 .45 1 1 0 .39-.23.73-.55.89l-7 3.5c-.14.07-.29.11-.45.11-.16 0-.31-.04-.45-.11l-7-3.5C.23 8.48 0 8.14 0 7.75c0-.55.45-1 1-1 .16 0 .31.04.45.11L8 10.13l2.91-1.453zM15 10.25c.55 0 1 .45 1 1 0 .39-.23.73-.55.89l-7 3.5c-.14.07-.29.11-.45.11-.16 0-.31-.04-.45-.11l-7-3.5c-.32-.16-.55-.5-.55-.89 0-.55.45-1 1-1 .16 0 .31.04.45.1L8 13.63l6.55-3.27c.14-.07.29-.11.45-.11z"],"new-link":["M15 3h-1V2c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1V5h1c.55 0 1-.45 1-1s-.45-1-1-1zm-3.5 6a2.5 2.5 0 00-2.45 2h-4.1a2.5 2.5 0 100 1h4.1a2.5 2.5 0 102.45-3z"],"new-object":["M8 4c0 .6.4 1 1 1h2v2c0 .6.4 1 1 1s1-.4 1-1V5h2c.6 0 1-.4 1-1s-.4-1-1-1h-2V1c0-.6-.4-1-1-1s-1 .4-1 1v2H9c-.6 0-1 .5-1 1zm6.5 2.5V7c0 1.4-1.1 2.5-2.5 2.5S9.5 8.4 9.5 7v-.5H9C7.6 6.5 6.5 5.4 6.5 4S7.6 1.5 9 1.5h.5V1c0-.3.1-.6.1-.8C9.1.1 8.6 0 8 0 3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8c0-.6-.1-1.3-.2-1.9-.4.3-.8.4-1.3.4z"],"new-person":["M9.12 12.69c-1.17-.53-1.01-.85-1.05-1.29-.01-.06-.01-.12-.01-.19.4-.37.73-.87.94-1.44 0 0 .01-.03.01-.04.05-.14.09-.27.12-.4.27-.06.43-.36.49-.63.06-.11.19-.39.16-.7-.04-.41-.2-.6-.38-.68v-.07c0-.51-.05-1.25-.14-1.74-.02-.13-.05-.27-.09-.4-.17-.6-.53-1.14-1.01-1.52C7.66 3.2 6.96 3 6.33 3c-.62 0-1.33.2-1.82.59-.49.38-.85.92-1.02 1.52-.04.13-.07.26-.09.4-.09.49-.13 1.23-.13 1.74v.06c-.19.08-.35.27-.39.68-.03.31.1.59.16.7.06.28.22.59.5.64.03.14.07.27.11.4 0 .01.01.02.01.02v.01c.22.59.55 1.1.96 1.46 0 .06-.01.12-.01.17-.04.44.08.76-1.09 1.29-1.17.53-2.93 1.1-3.29 1.95-.35.87-.2 1.37-.2 1.37h12.6s.15-.5-.22-1.36c-.36-.85-2.12-1.42-3.29-1.95zM14.89 2h-1V1c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1V4h1c.55 0 1-.45 1-1s-.45-1-1-1z"],"new-prescription":["M9.82 11.66l2.48-2.87c.12-.2.13-.37.04-.53-.11-.19-.3-.26-.52-.26h-1.29c-.27 0-.49.13-.63.34L8.44 9.9 6.95 8a.482.482 0 00-.08-.1L5.82 6.55c.57-.24 1.04-.57 1.42-1.01.49-.57.74-1.27.74-2.08 0-.51-.1-.99-.32-1.42-.21-.43-.51-.8-.89-1.11A4.1 4.1 0 005.42.24C4.91.08 4.34 0 3.72 0H.61C.26 0 0 .23 0 .56v9.89c0 .33.26.55.61.55h.8c.36 0 .61-.23.61-.56V6.99H3.3l3.73 4.74-2.71 3.48c-.12.2-.13.37-.04.53.11.19.3.26.52.26h1.27c.27 0 .51-.12.64-.34l1.69-2.15 1.66 2.14c.12.21.34.35.62.35h1.43c.2 0 .39-.08.5-.25.12-.18.09-.38-.02-.55l-2.77-3.54zM4.18 5H1.99V2.02h2.19c.62 0 1.08.13 1.38.37.29.22.44.62.44 1.08 0 .45-.15.94-.44 1.17-.31.23-.76.36-1.38.36zM15 2h-1V1c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1V4h1c.55 0 1-.45 1-1s-.45-1-1-1zM9.99 3.01c0 .02.01.04.01.06V2.95c0 .02-.01.04-.01.06z"],"new-text-box":["M5 6.5c0 .28.22.5.5.5H7v3.5c0 .28.22.5.5.5s.5-.22.5-.5V7h1.5c.28 0 .5-.22.5-.5S9.78 6 9.5 6h-4c-.28 0-.5.22-.5.5zM15 2h-1V1c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1V4h1c.55 0 1-.45 1-1s-.45-1-1-1zm-2 5c-.55 0-1 .45-1 1v5H3V4h5c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h11c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1z"],ninja:["M16 5s-2.52 2.11-4.96 1.99C11.03 4.89 10.39.23 5 0c0 0 2.11 2.54 1.96 4.99C4.86 5.01.23 5.65 0 11c0 0 2.56-2.12 5.02-1.95.02 2.11.67 6.72 5.98 6.95 0 0-2.09-2.54-1.94-4.99 2.11-.02 6.71-.68 6.94-6.01zM8 9.5c-.83 0-1.5-.67-1.5-1.5S7.17 6.5 8 6.5s1.5.67 1.5 1.5S8.83 9.5 8 9.5z"],"not-equal-to":["M7.58 5l.44-2.196a1 1 0 011.96.392L9.62 5H13a1 1 0 010 2H9.22l-.4 2H13a1 1 0 010 2H8.42l-.44 2.196a1 1 0 01-1.96-.392L6.38 11H3a1 1 0 010-2h3.78l.4-2H3a1 1 0 110-2h4.58z"],notifications:["M8 16c1.1 0 2-.9 2-2H6c0 1.1.9 2 2 2zm6-5c-.55 0-1-.45-1-1V6c0-2.43-1.73-4.45-4.02-4.9 0-.04.02-.06.02-.1 0-.55-.45-1-1-1S7 .45 7 1c0 .04.02.06.02.1A4.992 4.992 0 003 6v4c0 .55-.45 1-1 1s-1 .45-1 1 .45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1z"],"notifications-snooze":["M9 14c0 1.1-.9 2-2 2s-2-.9-2-2zM7 0c.404 0 .755.243.912.59L7.9.6c-.7.6-.9 1.36-.9 1.9 0 .8.267 1.433.8 1.9-.533.6-.795 1.222-.784 1.867l.004.358A2.8 2.8 0 009.82 9.4L12 9.399V10c0 .51.388.935.884.993L13 11c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1s.45-1 1-1 1-.45 1-1V6c0-2.43 1.73-4.45 4.02-4.9L6 1c0-.55.45-1 1-1z","M13 6.702a.632.632 0 00-.632-.632h-1.743l2.208-2.734A.75.75 0 0013 2.864v-.3A.565.565 0 0012.435 2H9.561a.561.561 0 100 1.123h1.814L9.221 5.795A1 1 0 009 6.423v.279c0 .349.283.631.632.631h2.736A.632.632 0 0013 6.702z"],"notifications-updated":["M8 16c1.1 0 2-.9 2-2H6c0 1.1.9 2 2 2zm3.399-13.667l-.413.412A2.99 2.99 0 009 1.99a3 3 0 00-3 2.99c0 .8.32 1.558.876 2.114l2.002 1.992A2.99 2.99 0 0013 9.184V10c0 .55.45 1 1 1s1 .45 1 1-.45 1-1 1H2c-.55 0-1-.45-1-1s.45-1 1-1 1-.45 1-1V6c0-2.43 1.73-4.45 4.02-4.9 0-.04-.02-.06-.02-.1 0-.55.45-1 1-1s1 .45 1 1c0 .04-.02.06-.02.1a4.97 4.97 0 012.419 1.233zM10.29 7.67l-2-1.99a.99.99 0 01-.29-.7 1 1 0 011-.99c.27 0 .52.11.7.29l1.29 1.29 3.28-3.28c.18-.18.42-.29.7-.29.55 0 1 .44 1 .99 0 .28-.11.52-.3.7l-3.98 3.98a.99.99 0 01-1.4 0z"],"numbered-list":["M2.76 7h1.26V0h-.94c-.04.21-.12.39-.25.54-.13.15-.29.27-.48.36-.18.09-.39.16-.62.2-.23.04-.46.06-.71.06v.9h1.74V7zm-.59 7.17c.18-.12.37-.25.58-.37a10.763 10.763 0 001.24-.83c.2-.16.37-.33.52-.51.15-.19.28-.39.37-.61.09-.22.14-.47.14-.74 0-.22-.04-.45-.12-.7-.08-.26-.21-.49-.4-.69-.18-.21-.43-.39-.72-.52-.3-.14-.68-.21-1.12-.21-.41 0-.77.07-1.08.2-.32.14-.58.32-.8.56-.22.23-.38.51-.49.84-.11.32-.16.67-.16 1.05h1.19c.01-.24.03-.47.08-.67.05-.21.11-.39.21-.54.09-.15.22-.27.38-.36.16-.09.35-.13.59-.13.26 0 .47.04.63.12.16.08.29.18.38.3.09.12.15.25.18.39s.05.27.05.4c-.01.27-.08.5-.22.71-.14.21-.32.4-.53.57-.22.18-.45.34-.71.49-.26.15-.51.31-.74.47-.5.31-.89.68-1.17 1.11-.3.41-.44.91-.45 1.48h5v-1H1.43c.05-.15.14-.29.27-.43.14-.13.29-.26.47-.38zM15.01 1.99h-7c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-1c0-.55-.44-1-1-1zm0 9h-7c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-1c0-.55-.44-1-1-1z"],numerical:["M2.79 4.61c-.13.17-.29.3-.48.41-.18.11-.39.18-.62.23-.23.04-.46.07-.71.07v1.03h1.74V12h1.26V4h-.94c-.04.23-.12.44-.25.61zm4.37 5.31c.18-.14.37-.28.58-.42l.63-.45c.21-.16.41-.33.61-.51s.37-.38.52-.59c.15-.21.28-.45.37-.7.09-.25.13-.54.13-.85 0-.25-.04-.52-.12-.8-.07-.29-.2-.55-.39-.79a2.18 2.18 0 00-.73-.6c-.29-.15-.66-.23-1.11-.23-.41 0-.77.08-1.08.23-.31.16-.58.37-.79.64-.22.27-.38.59-.49.96-.11.37-.16.77-.16 1.2h1.19c.01-.27.03-.53.08-.77.04-.24.11-.45.21-.62.09-.18.22-.32.38-.42.16-.1.35-.15.59-.15.26 0 .47.05.63.14.15.09.28.21.37.35.09.14.15.29.18.45.03.16.05.31.05.45-.01.31-.08.58-.22.82-.14.23-.32.45-.53.65-.22.21-.46.39-.71.57-.26.18-.51.36-.75.54-.5.36-.89.78-1.17 1.27-.28.49-.43 1.06-.44 1.71h5v-1.15H6.43c.05-.17.14-.33.27-.49.13-.15.29-.29.46-.44zm8.5-1.56c-.23-.35-.54-.57-.95-.65v-.02c.34-.13.6-.34.76-.63.16-.29.24-.63.24-1.02 0-.34-.06-.64-.19-.9s-.3-.47-.51-.64c-.21-.17-.45-.3-.72-.38-.27-.09-.54-.13-.82-.13-.36 0-.68.07-.96.2-.28.13-.53.32-.72.55-.2.23-.36.51-.47.83-.11.32-.18.66-.19 1.04h1.15c-.01-.2.01-.39.06-.58.05-.19.12-.36.22-.51.1-.15.22-.27.37-.36.15-.09.32-.13.53-.13.32 0 .59.1.79.3.21.2.31.46.31.79 0 .23-.05.43-.14.59-.09.16-.21.29-.35.38-.15.09-.32.16-.51.19-.19.04-.38.05-.57.04v.93c.23-.01.45 0 .67.02.22.02.42.08.59.17.18.09.32.23.43.4.11.18.16.41.16.71 0 .44-.13.78-.39 1.02s-.58.36-.97.36c-.45 0-.79-.16-1.02-.47-.23-.31-.33-.7-.32-1.17H11c.01.4.06.77.17 1.1.11.33.26.61.47.85.21.23.46.42.77.54.31.13.67.19 1.08.19.34 0 .66-.05.96-.16.3-.11.57-.27.8-.47.23-.2.41-.45.55-.74.13-.27.2-.6.2-.97 0-.5-.11-.92-.34-1.27z"],office:["M15 5h-3V1c0-.55-.45-1-1-1H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h3v-4h4v4h7c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zM5 10H2V7h3v3zm0-5H2V2h3v3zm5 5H7V7h3v3zm0-5H7V2h3v3zm4 9h-2v-2h2v2zm0-4h-2V7h2v3z"],offline:["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zM6 14l1-5H4l6-7-1 5h3l-6 7z"],"oil-field":["M15 14h-1.35l-3.34-7.51 2.46-.95 1.45 3.21c.09.2.36.3.6.23.1-.03.18-.08.24-.15.05-.08 1.23-1.56.87-4.2-.11-.79-.52-4.62-3.26-4.62-.93 0-1.68.62-1.67 1.37 0 .14.03.28.09.42l.87 1.92L.64 8.07v.01A.98.98 0 000 9c0 .55.45 1 1 1 .13 0 .25-.03.36-.07v.01l1.04-.4L3.67 14H2c-.55 0-1 .45-1 1s.45 1 1 1h13c.55 0 1-.45 1-1s-.45-1-1-1zM4.27 8.81L7.14 7.7 5.2 12.08l-.93-3.27zM6.54 14L9 8.46 11.46 14H6.54z"],"one-column":["M11.99-.01h-3c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-14c0-.55-.45-1-1-1zm-6 5c-.28 0-.53.11-.71.29l-2 2a1.014 1.014 0 000 1.42l2 2a1.003 1.003 0 001.71-.71v-4c0-.55-.45-1-1-1z"],outdated:["M8 0c4.42 0 8 3.58 8 8 0 4.06-3.02 7.4-6.94 7.92-.02 0-.04.01-.06.01-.33.04-.66.07-1 .07-4.42 0-8-3.58-8-8 0-.55.45-1 1-1s1 .45 1 1c0 3.31 2.69 6 6 6 .71 0 1.37-.15 2-.38v.01c2.33-.82 4-3.02 4-5.63 0-3.31-2.69-6-6-6-1.78 0-3.36.78-4.46 2H5c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1s1 .45 1 1v1.74A7.95 7.95 0 018 0zm1 12H7v-2h2v2zm0-3H7V4h2v5z"],"page-layout":["M15 .95H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-12c0-.55-.45-1-1-1zm-9 12H2v-6h4v6zm8 0H7v-6h7v6zm0-7H2v-3h12v3z"],"panel-stats":["M10 4h3v1h-3zM10 6h3v1h-3zM10 8h3v1h-3zM10 10h3v1h-3z","M15 1H1c-.6 0-1 .4-1 1v11c0 .6.4 1 1 1h14c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1zM8 12H2V3h6v9zm6 0H9V3h5v9z"],"panel-table":["M15 1H1c-.6 0-1 .4-1 1v11c0 .6.4 1 1 1h14c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1zM8 9H6V7h2v2zm0-3H6V4h2v2zm-6 6V3h3v9H2zm4 0v-2h2v2H6zm8 0H9v-2h5v2zm0-3H9V7h5v2zm0-3H9V4h5v2z"],paperclip:["M14.68 2.31A4.54 4.54 0 0011.46.99c-1.15 0-2.31.44-3.19 1.32L.95 9.63c-.63.63-.95 1.46-.95 2.28a3.21 3.21 0 003.23 3.22c.83 0 1.66-.31 2.3-.95l7.31-7.32c.76-.77.76-1.98.01-2.73s-1.99-.76-2.75 0l-6.07 6.08c-.24.25-.24.65.01.9s.65.25.91.01l6.07-6.08c.25-.25.67-.25.91-.01.25.25.25.67 0 .92l-7.31 7.32c-.75.75-2.04.74-2.76.01-.75-.75-.73-2.02.01-2.76L9.2 3.21c1.24-1.24 3.35-1.26 4.58-.03 1.24 1.24 1.24 3.36 0 4.6l-7.12 7.13c-.24.25-.24.64.01.88.24.24.63.24.88.01v.01l7.13-7.13A4.41 4.41 0 0016 5.51c0-1.16-.44-2.32-1.32-3.2z"],paragraph:["M13 1H6C3.8 1 2 2.8 2 5s1.8 4 4 4v5c0 .6.4 1 1 1s1-.5 1-1V3h2v11c0 .6.4 1 1 1s1-.5 1-1V3h1c.5 0 1-.4 1-1s-.4-1-1-1z"],path:["M14.5 0h-13C.67 0 0 .67 0 1.5S.67 3 1.5 3H7v3H3.5C2.67 6 2 6.67 2 7.5S2.67 9 3.5 9H7v3H5.5c-.83 0-1.5.67-1.5 1.5S4.67 15 5.5 15h5c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5H9V9h3.5c.83 0 1.5-.67 1.5-1.5S13.33 6 12.5 6H9V3h5.5c.83 0 1.5-.67 1.5-1.5S15.33 0 14.5 0z"],"path-search":["M15 14.62l-4-2.4V9.77c-.32.09-.66.15-1 .18v2.27l-4 2.4V8.71c-.38-.31-.72-.66-1-1.06v6.97l-4-2.4V8c.55 0 1-.45 1-1s-.45-1-1-1V1.38l3.15 1.89c.08-.34.18-.66.32-.97L.76.07v.01A.496.496 0 00.5 0C.22 0 0 .22 0 .5v12c0 .18.1.33.25.42v.01l5 3v-.01c.07.05.16.08.25.08s.18-.03.25-.08v.01l4.74-2.85 4.74 2.85v-.01c.09.05.18.08.27.08.28 0 .5-.22.5-.5v-3.78c-.3.17-.63.28-1 .28v2.62zM2 5c0 .55.45 1 1 1s1-.45 1-1-.45-1-1-1-1 .45-1 1zm6-1c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm7.75-.92l-1.19-.72c.18.43.29.9.36 1.38l.08.04v3.39l1 1V3.5c0-.18-.1-.33-.25-.42zM10 2c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm3.3 4.89c.44-.7.7-1.51.7-2.39C14 2.01 11.99 0 9.5 0S5 2.01 5 4.5 7.01 9 9.5 9c.88 0 1.69-.26 2.39-.7l2.41 2.41c.17.18.42.29.7.29a1.003 1.003 0 00.71-1.71l-2.41-2.4zM9.5 8C7.57 8 6 6.43 6 4.5S7.57 1 9.5 1 13 2.57 13 4.5 11.43 8 9.5 8z"],pause:["M6 3H4c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zm6 0h-2c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],people:["M13.69 13.98c-.05-.24-.14-.5-.25-.76-.36-.86-1.12-1.33-2.69-2-.14-.06-.59-.25-.6-.25-.21-.09-.36-.15-.5-.22.02-.1.02-.2.03-.31 0-.04.01-.08.01-.13-.07-.06-.13-.12-.19-.19.22-.32.4-.67.54-1.05.02-.06.02-.06.03-.1.29-.23.48-.57.59-.96.16-.33.25-.73.21-1.16-.03-.4-.16-.76-.37-1.03-.02-.53-.07-1.13-.15-1.54-.01-.06-.02-.12-.03-.19.23-.06.48-.09.72-.09.49 0 1.05.16 1.44.46.38.29.67.7.8 1.17.03.1.05.21.07.31.07.37.11.94.11 1.33v.05c.14.06.27.21.29.51.02.25-.07.45-.13.54-.05.21-.16.44-.38.48-.02.1-.05.2-.09.3 0 .01-.01.03-.01.03-.17.44-.43.83-.75 1.11v.14c.03.35-.09.59.83 1 .93.41 2.32.84 2.6 1.5.29.66.17 1.04.17 1.04h-2.3zm-1.17-.38c.37.86.22 1.36.22 1.36H.06s-.14-.5.22-1.36 2.13-1.43 3.31-1.96c1.17-.54 1.05-.86 1.09-1.3 0-.05.01-.11.01-.17-.41-.35-.75-.86-.97-1.45v-.01s-.01-.01-.01-.02c-.04-.12-.09-.26-.12-.39-.28-.05-.44-.36-.5-.64-.06-.12-.19-.39-.16-.71.04-.41.21-.6.39-.68v-.06c0-.51.05-1.26.14-1.74.02-.13.05-.27.09-.4.17-.6.54-1.13 1.02-1.51.5-.39 1.21-.6 1.84-.6s1.34.21 1.84.6c.48.38.85.91 1.02 1.52.04.13.07.27.09.4.09.48.14 1.22.14 1.73v.07c.18.08.34.27.37.67.03.32-.09.59-.16.71-.06.28-.21.58-.48.63-.03.13-.07.26-.12.39 0 .01-.01.04-.01.04-.22.58-.55 1.08-.95 1.45v.18c.04.45-.12.77 1.06 1.3 1.18.53 2.95 1.09 3.31 1.95z"],percentage:["M6 6V4c0-1.1-.9-2-2-2H3c-1.1 0-2 .9-2 2v2c0 1.1.9 2 2 2h1c1.1 0 2-.9 2-2zM3.5 6c-.28 0-.5-.22-.5-.5v-1c0-.28.22-.5.5-.5s.5.22.5.5v1c0 .28-.22.5-.5.5zM13 8h-1c-1.1 0-2 .9-2 2v2c0 1.1.9 2 2 2h1c1.1 0 2-.9 2-2v-2c0-1.1-.9-2-2-2zm0 3.5c0 .28-.22.5-.5.5s-.5-.22-.5-.5v-1c0-.28.22-.5.5-.5s.5.22.5.5v1zM12 3a1.003 1.003 0 00-1.87-.5l-5.99 9.98c-.09.15-.14.33-.14.52a1.003 1.003 0 001.87.5l5.99-9.98c.09-.15.14-.33.14-.52z"],person:["M15.68 14.32c-.46-1.05-2.68-1.75-4.16-2.4-1.48-.65-1.28-1.05-1.33-1.59-.01-.07-.01-.15-.01-.23.51-.45.92-1.07 1.19-1.78 0 0 .01-.04.02-.05.06-.15.11-.32.15-.48.34-.07.54-.44.61-.78.08-.14.23-.48.2-.87-.05-.5-.25-.73-.47-.82v-.09c0-.63-.06-1.55-.17-2.15A3.671 3.671 0 0010.32.72C9.68.25 8.79-.01 8-.01c-.79 0-1.68.25-2.31.73-.61.47-1.06 1.13-1.28 1.86-.05.17-.09.33-.11.5-.12.6-.17 1.51-.17 2.15v.08c-.24.09-.45.32-.5.83-.03.38.13.72.2.86.08.35.28.72.63.78.04.17.09.33.15.49 0 .01.01.02.01.03l.01.01c.27.72.7 1.35 1.22 1.8 0 .07-.01.14-.01.21-.05.54.1.94-1.37 1.59-1.48.65-3.7 1.35-4.16 2.4-.46 1.05-.27 1.67-.27 1.67h15.92c-.01.01.18-.61-.28-1.66z"],phone:["M15.9 12.41c-.06-.06-3.37-2-3.48-2.05a.794.794 0 00-.32-.08c-.15 0-.34.11-.57.32-.23.22-.94 1.19-1.15 1.4-.21.22-.38.32-.52.32-.07 0-.15-.02-.25-.06-.1-.04-1.16-.58-3.36-2.52-2.2-1.93-2.49-3.2-2.5-3.55 0-.14.11-.31.32-.52.22-.21.45-.41.7-.6.25-.19.49-.4.7-.62.22-.23.32-.42.32-.57 0-.11-.03-.21-.08-.32C5.66 3.46 3.66.15 3.59.08 3.44-.07 2.85 0 2.55.16.16 1.46-.03 3.2 0 3.89c.04.71.49 4.46 4.16 7.95C8.72 16.17 11.89 16 12.1 16c.69 0 2.82-.38 3.72-2.55.13-.32.25-.87.08-1.04z"],"pie-chart":["M7 1.08c-3.37.5-5.97 3.4-5.97 6.92 0 3.87 3.13 7 6.98 7 3.52 0 6.42-2.61 6.91-6H7V1.08z","M8 0v8h8c0-4.42-3.58-8-8-8z"],pin:["M9.41.92c-.51.51-.41 1.5.15 2.56L4.34 7.54C2.8 6.48 1.45 6.05.92 6.58l3.54 3.54-3.54 4.95 4.95-3.54 3.54 3.54c.53-.53.1-1.88-.96-3.42l4.06-5.22c1.06.56 2.04.66 2.55.15L9.41.92z"],pivot:["M4.57 7.02L.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4.27-4.27c-.58-.35-1.07-.84-1.41-1.42zM15 8c-.55 0-1 .45-1 1v.59l-2.57-2.57c-.34.58-.83 1.07-1.41 1.41L12.59 11H12c-.55 0-1 .45-1 1s.45 1 1 1h3c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zm-4-3c0-1.66-1.34-3-3-3S5 3.34 5 5s1.34 3 3 3 3-1.34 3-3zM8 6c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"pivot-table":["M2 4H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm0-4H1C.45 0 0 .45 0 1v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm11.71 4.29C13.53 4.11 13.28 4 13 4s-.53.11-.71.29l-2 2a1.003 1.003 0 001.42 1.42l.29-.3V9c0 1.66-1.34 3-3 3H7.41l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H9c2.76 0 5-2.24 5-5V7.41l.29.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-2-2zM15 0H5c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],play:["M12 8c0-.35-.19-.64-.46-.82l.01-.02-6-4-.01.02A.969.969 0 005 3c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1 .21 0 .39-.08.54-.18l.01.02 6-4-.01-.02c.27-.18.46-.47.46-.82z"],plus:["M13 7H9V3c0-.55-.45-1-1-1s-1 .45-1 1v4H3c-.55 0-1 .45-1 1s.45 1 1 1h4v4c0 .55.45 1 1 1s1-.45 1-1V9h4c.55 0 1-.45 1-1s-.45-1-1-1z"],"polygon-filter":["M14 5c-.24 0-.47.05-.68.13L9.97 2.34c.01-.11.03-.22.03-.34 0-1.1-.9-2-2-2S6 .9 6 2c0 .04.01.08.01.12L2.88 4.21C2.61 4.08 2.32 4 2 4 .9 4 0 4.9 0 6c0 .74.4 1.38 1 1.72v4.55c-.6.35-1 .99-1 1.73 0 1.1.9 2 2 2 .74 0 1.38-.4 1.72-1h4.55c.35.6.98 1 1.72 1 1.1 0 2-.9 2-2 0-.37-.11-.7-.28-1L14 9c1.11-.01 2-.9 2-2s-.9-2-2-2zm-4.01 7c-.73 0-1.37.41-1.71 1H3.73c-.18-.3-.43-.55-.73-.72V7.72c.6-.34 1-.98 1-1.72 0-.04-.01-.08-.01-.12l3.13-2.09c.27.13.56.21.88.21.24 0 .47-.05.68-.13l3.35 2.79c-.01.11-.03.22-.03.34 0 .37.11.7.28 1l-2.29 4z"],power:["M8 8c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1S7 .45 7 1v6c0 .55.45 1 1 1zm3-5.32v2.34c1.21.91 2 2.35 2 3.98 0 2.76-2.24 5-5 5s-5-2.24-5-5c0-1.63.79-3.06 2-3.98V2.68C2.64 3.81 1 6.21 1 9c0 3.87 3.13 7 7 7s7-3.13 7-7c0-2.79-1.64-5.19-4-6.32z"],"predictive-analysis":["M16 6.41c0-1.01-.49-1.94-1.29-2.49-.43-1.92-2.07-3.28-4-3.28-.46 0-.92.08-1.35.24C8.83.31 8.11 0 7.34 0c-.9 0-1.74.44-2.28 1.16-.12-.01-.24-.02-.36-.02-1.31 0-2.42.89-2.77 2.17C.78 3.72 0 4.84 0 6.13c0 .38.07.76.21 1.12C.07 7.6 0 7.98 0 8.36c0 1.11.58 2.11 1.51 2.63.54.56 1.27.87 2.03.87.49 0 .95-.12 1.37-.36a2.85 2.85 0 002.18 1.04c.52 0 1.03-.14 1.47-.42.49.39 1.07.65 1.69.73 1.04 1.15 1.84 2.63 1.84 2.64 0 0 .28.49.26.49.77 0 1.41-.16 1.32-1.04 0 .02-.73-2.31-.73-2.31.41-.21.75-.55.97-.98.9-.52 1.47-1.53 1.47-2.61 0-.24-.03-.48-.08-.71.45-.52.7-1.21.7-1.92zm-1.23 1.02l-.15-.16-.61-.67c-.27-.29-.54-.94-.58-1.39l-.1-1.01c-.05-.59-.94-.58-.91.11 0 .02.1 1.01.1 1.01.03.29.12.62.24.93-.06-.01-.12-.02-.18-.02 0 0-2.06-.1-2.05-.11-.58-.02-.71.97-.04 1l2.05.11c.42.02 1.04.3 1.29.58l.49.54.02.05c.08.21.12.44.12.66 0 .74-.41 1.41-1.07 1.75l-.16.08-.07.18c-.15.38-.48.66-.88.74l-.54.11.7 2.2c-.38-.61-.95-1.43-1.62-2.14l-.12-.13-.17-.01c-.41-.03-.8-.17-1.14-.38l1.36-1.18c.35-.31.83-.44.99-.39 0 0 .63.17.62.18.63.16.83-.74.23-.97l-.62-.18c-.55-.16-1.33.18-1.79.58l-1.53 1.33-.31.26c-.35.29-.75.44-1.2.44-.64 0-1.23-.33-1.58-.86V9.15c0-.4.17-.79.27-.85 0 0 .52-.34.51-.35.71-.53.18-1.23-.49-.89 0-.01-.52.35-.52.35-.26.15-.45.44-.58.77-.11-.11-.22-.2-.34-.28 0 0-1.53-1.01-1.53-1.02-.65-.45-1.2.51-.49.89 0-.01 1.51 1.02 1.51 1.02.37.24.62.78.62 1.09v.67c-.34.19-.63.29-.99.29-.54 0-1.05-.23-1.41-.63l-.05-.06-.07-.04c-.65-.34-1.05-1-1.05-1.73 0-.3.07-.6.2-.87l.12-.25L1.15 7c-.13-.27-.2-.56-.2-.87 0-.9.61-1.68 1.48-1.89l.31-.08.05-.34a1.926 1.926 0 012.38-1.58l.32.08.18-.31c.35-.6.99-.97 1.67-.97.44 0 .86.15 1.2.42l-.36.36v-.01l-.25.26c-.33.27-.74.42-.89.4 0 0-.67-.1-.67-.11-.67-.13-.87.86-.14 1.02.01 0 .67.11.67.11.02 0 .05 0 .07.01-.11.37-.15.77-.1 1.12 0 0 .17.99.15.99.11.52 1.06.36.93-.18 0-.01-.15-.99-.15-.99-.05-.37.12-.94.36-1.19l.39-.4c.05-.05.1-.09.15-.14l.74-.76c.4-.18.83-.27 1.27-.27 1.55 0 2.86 1.12 3.11 2.67l.04.25.21.12c.61.35.98 1 .98 1.7 0 .36-.1.7-.28 1.01z"],prescription:["M10.91 8.34c.14-.21.36-.34.63-.34h1.29c.22 0 .41.07.52.26.09.16.08.33-.04.53l-2.49 2.87 2.77 3.54c.12.17.14.37.02.55-.11.17-.3.25-.5.25h-1.44a.69.69 0 01-.61-.35L9.4 13.51l-1.69 2.15c-.13.21-.36.34-.63.34H5.8c-.22 0-.41-.07-.52-.26-.09-.16-.08-.33.04-.53l2.71-3.48L4.3 6.99H3.03v3.47c0 .33-.26.56-.62.56h-.8c-.35-.01-.61-.23-.61-.56V.56c0-.33.26-.56.62-.56h3.11c.62 0 1.19.08 1.7.24.51.16.96.39 1.34.69a3.194 3.194 0 011.21 2.53c0 .81-.25 1.5-.74 2.08-.37.44-.84.77-1.42 1.01L7.88 7.9c.04.04.07.08.08.1l1.49 1.9 1.46-1.56zM5.18 5c.62 0 1.08-.13 1.39-.37.29-.23.44-.71.44-1.16s-.15-.87-.44-1.1C6.26 2.12 5.8 2 5.18 2H2.99v3h2.19z"],presentation:["M15 1H9c0-.55-.45-1-1-1S7 .45 7 1H1c-.55 0-1 .45-1 1s.45 1 1 1v8c0 .55.45 1 1 1h3.59L3.3 14.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L7 13.41V15c0 .55.45 1 1 1s1-.45 1-1v-1.59l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L10.41 12H14c.55 0 1-.45 1-1V3c.55 0 1-.45 1-1s-.45-1-1-1zm-2 9H3V3h10v7z"],print:["M12 2.02c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v1h8v-1zm3 2H1c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h1v-3h12v3h1c.55 0 1-.45 1-1v-6c0-.56-.45-1-1-1zm-1 3h-2v-1h2v1zm-3 6H5v-3H3v4c0 .55.45 1 1 1h8c.55 0 1-.45 1-1v-4h-2v3z"],projects:["M14 3c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v1h12V3zm-2-3H4c-.55 0-1 .45-1 1h10c0-.55-.45-1-1-1zm3 5H1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-3 6c0 .55-.45 1-1 1H5c-.55 0-1-.45-1-1V9h1v2h6V9h1v2z"],properties:["M2 6C.9 6 0 6.9 0 8s.9 2 2 2 2-.9 2-2-.9-2-2-2zm4-3h9c.55 0 1-.45 1-1s-.45-1-1-1H6c-.55 0-1 .45-1 1s.45 1 1 1zm-4 9c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm13-5H6c-.55 0-1 .45-1 1s.45 1 1 1h9c.55 0 1-.45 1-1s-.45-1-1-1zm0 6H6c-.55 0-1 .45-1 1s.45 1 1 1h9c.55 0 1-.45 1-1s-.45-1-1-1zM2 0C.9 0 0 .9 0 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],property:["M3 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-.5-6.5a2.5 2.5 0 000 5 2.5 2.5 0 000-5zM7 3h8c.55 0 1-.45 1-1s-.45-1-1-1H7c-.55 0-1 .45-1 1s.45 1 1 1zm8 10H7c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1zM3 0C1.9 0 1 .9 1 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 6H7c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h8c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1z"],"publish-function":["M12.16 3.76c.15-.11.3-.16.47-.16.06 0 .17.02.34.06.16.04.31.06.43.06a.58.58 0 00.6-.6c0-.19-.06-.33-.17-.44-.11-.11-.28-.16-.49-.16-.19 0-.37.04-.54.13-.17.09-.39.27-.65.55-.2.21-.48.58-.87 1.11a5.22 5.22 0 00-.78-1.79l-2.05.32-.04.21c.15-.03.28-.04.39-.04.2 0 .37.08.5.25.21.26.5 1.03.88 2.33-.29.36-.49.6-.6.71-.18.19-.33.31-.45.36-.09.04-.19.07-.3.07-.09 0-.23-.04-.42-.13a.904.904 0 00-.36-.09c-.2 0-.36.06-.49.18a.59.59 0 00-.19.46c0 .18.06.32.18.43.12.11.28.16.48.16.2 0 .38-.04.55-.12.17-.08.39-.24.65-.49s.62-.65 1.07-1.19c.18.52.33.89.46 1.13.13.24.28.4.44.51.17.1.37.16.62.16.24 0 .49-.08.74-.25.33-.21.66-.58 1.01-1.09l-.21-.11c-.23.31-.41.5-.52.57a.44.44 0 01-.26.07c-.12 0-.24-.07-.36-.21-.2-.24-.46-.91-.8-2 .29-.49.54-.81.74-.96zM6.37 5.83l.68-2.53h.83l.2-.64h-.84c.24-.91.56-1.59.96-2.01.24-.27.48-.4.71-.4.05 0 .08.01.11.04s.04.06.04.1c0 .04-.03.11-.1.21-.06.1-.1.2-.1.29 0 .13.05.24.15.33.1.09.23.14.39.14.17 0 .31-.06.42-.17.12-.12.18-.27.18-.46 0-.21-.08-.39-.25-.52C9.57.07 9.3 0 8.93 0c-.59 0-1.12.16-1.59.48-.48.32-.93.85-1.36 1.59-.15.26-.29.42-.42.49s-.35.11-.64.1l-.19.65h.81L4.35 7.68c-.2.72-.33 1.16-.4 1.33-.1.24-.26.45-.46.62a.48.48 0 01-.31.1c-.03 0-.06-.01-.08-.03l-.03-.03c0-.02.03-.06.09-.11.06-.06.09-.15.09-.26 0-.13-.05-.23-.14-.32-.1-.09-.23-.13-.41-.13-.21 0-.38.05-.51.16A.52.52 0 002 9.4c0 .16.08.3.23.42.16.12.4.18.74.18.53 0 .99-.13 1.4-.39.41-.26.76-.65 1.07-1.19.3-.53.61-1.39.93-2.59zm2.34 3.46A.997.997 0 008 9c-.28 0-.53.11-.71.29l-2 2a1.003 1.003 0 001.42 1.42l.29-.3V15c0 .55.45 1 1 1s1-.45 1-1v-2.59l.29.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-2-2z"],pulse:["M15 8h-1.46l-1.7-2.55-.02.01A.984.984 0 0011 5c-.43 0-.79.27-.93.65h-.01l-1.69 4.51-1.38-8.32h-.02A.989.989 0 006 1c-.41 0-.77.25-.92.61L2.34 8H1c-.55 0-1 .45-1 1s.45 1 1 1h2c.41 0 .77-.25.92-.61l1.65-3.86 1.44 8.63h.02c.08.47.47.84.97.84.43 0 .79-.27.93-.65h.01l2.31-6.17.92 1.38.02-.01c.17.26.46.45.81.45h2c.55 0 1-.45 1-1s-.45-1-1-1z"],random:["M11.48 4h1.11l-.29.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-2-2a1.003 1.003 0 00-1.42 1.42l.3.29H11c-.32 0-.59.16-.77.38l-.01-.01L8.28 4.8l1.28 1.6L11.48 4zm2.23 6.29a1.003 1.003 0 00-1.42 1.42l.3.29h-1.11l-7.7-9.62h-.01A.996.996 0 003 2H1c-.55 0-1 .45-1 1s.45 1 1 1h1.52l7.7 9.62.01-.01c.18.23.45.39.77.39h1.59l-.29.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-2-2zM2.52 12H1c-.55 0-1 .45-1 1s.45 1 1 1h2c.32 0 .59-.16.77-.38l.01.01 1.94-2.42L4.44 9.6 2.52 12z"],record:["M8 3a5 5 0 100 10A5 5 0 108 3z"],redo:["M12 11c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm3.71-6.71l-3-3a1.003 1.003 0 00-1.42 1.42L12.59 4H5C2.24 4 0 6.24 0 9s2.24 5 5 5h4v-2H5c-1.66 0-3-1.34-3-3s1.34-3 3-3h7.59L11.3 7.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],refresh:["M14.99 6.99c-.55 0-1 .45-1 1 0 3.31-2.69 6-6 6-1.77 0-3.36-.78-4.46-2h1.46c.55 0 1-.45 1-1s-.45-1-1-1h-4c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1s1-.45 1-1v-1.74a7.95 7.95 0 006 2.74c4.42 0 8-3.58 8-8 0-.55-.45-1-1-1zm0-7c-.55 0-1 .45-1 1v1.74a7.95 7.95 0 00-6-2.74c-4.42 0-8 3.58-8 8 0 .55.45 1 1 1s1-.45 1-1c0-3.31 2.69-6 6-6 1.77 0 3.36.78 4.46 2h-1.46c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1z"],"regression-chart":["M13 6.5c0 .83.67 1.5 1.5 1.5S16 7.33 16 6.5 15.33 5 14.5 5 13 5.67 13 6.5zM8.5 5c.83 0 1.5-.67 1.5-1.5S9.33 2 8.5 2 7 2.67 7 3.5 7.67 5 8.5 5zM9 9.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5S11.33 8 10.5 8 9 8.67 9 9.5zM4.5 8C5.33 8 6 7.33 6 6.5S5.33 5 4.5 5 3 5.67 3 6.5 3.67 8 4.5 8zM15 12H3.26l12.03-8.59-.58-.81L2 11.67V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],remove:["M10.99 6.99h-6c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1zm-3-7c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.68 6-6 6z"],"remove-column":["M14 0H4c-.55 0-1 .45-1 1v3h2V2h3v12H5v-2H3v3c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14h-3V2h3v12zm-8.71-3.29a1.003 1.003 0 001.42-1.42L4.41 8 5.7 6.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L3 6.59l-1.29-1.3A1.003 1.003 0 00.29 6.71L1.59 8 .29 9.29a1.003 1.003 0 001.42 1.42L3 9.41l1.29 1.3z"],"remove-column-left":["M4 9h4c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zm11-9H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-5 14H2V2h8v12zm4 0h-3V2h3v12z"],"remove-column-right":["M15 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM5 14H2V2h3v12zm9 0H6V2h8v12zM8 9h4c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1z"],"remove-row-bottom":["M15 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H2V6h12v8zm0-9H2V2h12v3zm-8 6h4c.55 0 1-.45 1-1s-.45-1-1-1H6c-.55 0-1 .45-1 1s.45 1 1 1z"],"remove-row-top":["M15 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H2v-3h12v3zm0-4H2V2h12v8zM6 7h4c.55 0 1-.45 1-1s-.45-1-1-1H6c-.55 0-1 .45-1 1s.45 1 1 1z"],repeat:["M10 5c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1s-1 .45-1 1v1.74A7.95 7.95 0 008 0C3.58 0 0 3.58 0 8c0 4.06 3.02 7.4 6.94 7.92.02 0 .04.01.06.01.33.04.66.07 1 .07 4.42 0 8-3.58 8-8 0-.55-.45-1-1-1s-1 .45-1 1c0 3.31-2.69 6-6 6-.71 0-1.37-.15-2-.38v.01C3.67 12.81 2 10.61 2 8c0-3.31 2.69-6 6-6 1.77 0 3.36.78 4.46 2H11c-.55 0-1 .45-1 1z"],reset:["M6 5c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1s1 .45 1 1v1.74A7.95 7.95 0 018 0c4.42 0 8 3.58 8 8 0 4.06-3.02 7.4-6.94 7.92-.02 0-.04.01-.06.01-.33.04-.66.07-1 .07-4.42 0-8-3.58-8-8 0-.55.45-1 1-1s1 .45 1 1c0 3.31 2.69 6 6 6 .71 0 1.37-.15 2-.38v.01c2.33-.82 4-3.02 4-5.63 0-3.31-2.69-6-6-6-1.77 0-3.36.78-4.46 2H5c.55 0 1 .45 1 1z"],resolve:["M6.6 3.3C6.1 3.1 5.6 3 5 3 2.2 3 0 5.2 0 8s2.2 5 5 5c.6 0 1.1-.1 1.6-.3C5.3 11.6 4.5 9.9 4.5 8s.8-3.6 2.1-4.7zM8 4c-1.2.9-2 2.4-2 4s.8 3.1 2 4c1.2-.9 2-2.3 2-4s-.8-3.1-2-4zm3-1c-.6 0-1.1.1-1.6.3 1.3 1.2 2.1 2.9 2.1 4.7s-.8 3.6-2.1 4.7c.5.2 1 .3 1.6.3 2.8 0 5-2.2 5-5s-2.2-5-5-5z"],rig:["M5.71 3c0 1.1.96 2 2.14 2C9.04 5 10 3.96 10 3c0-1.96-1.47-3-2.14-3H5c0 1.96 2.68 1.4.71 3zm2.5 3l.01.01s0-.01-.01-.01zm6.5 8.29L10 9.59V7c0-.55-.45-1-1-1H7c-.55 0-1 .45-1 1v2.58l-4.71 4.7c-.18.19-.29.44-.29.72a1.003 1.003 0 001.71.71L6 12.42V15c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-2.58l3.29 3.29a1.003 1.003 0 001.42-1.42z"],"right-join":["M6.6 3.3C5.3 4.4 4.5 6.1 4.5 8s.8 3.6 2.1 4.7c-.5.2-1 .3-1.6.3-2.8 0-5-2.2-5-5s2.2-5 5-5c.6 0 1.1.1 1.6.3zm-1.96 8.68C3.92 10.83 3.5 9.46 3.5 8s.42-2.83 1.14-3.98C2.6 4.2 1 5.91 1 8s1.6 3.8 3.64 3.98zM8 4c-1.2.9-2 2.4-2 4s.8 3.1 2 4c1.2-.9 2-2.3 2-4s-.8-3.1-2-4zm3-1c2.8 0 5 2.2 5 5s-2.2 5-5 5c-.6 0-1.1-.1-1.6-.3 1.3-1.1 2.1-2.9 2.1-4.7s-.8-3.5-2.1-4.7c.5-.2 1-.3 1.6-.3z"],ring:["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 12c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z"],"rotate-document":["M12 2h-1.59l.29-.29c.19-.18.3-.43.3-.71A1.003 1.003 0 009.29.29l-2 2C7.11 2.47 7 2.72 7 3c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H12c.55 0 1 .45 1 1v3c0 .55.45 1 1 1s1-.45 1-1V5c0-1.66-1.34-3-3-3zM5.71 5.29A.997.997 0 005 5H1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V9c0-.28-.11-.53-.29-.71l-3-3zM7 14H2V7h2v2c0 .55.45 1 1 1h2v4z"],"rotate-page":["M8 6H2c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h6c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1zm-1 8H3V8h4v6zm5-12h-1.59l.29-.29c.19-.18.3-.43.3-.71A1.003 1.003 0 009.29.29l-2 2C7.11 2.47 7 2.72 7 3c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H12c.55 0 1 .45 1 1v3c0 .55.45 1 1 1s1-.45 1-1V5c0-1.66-1.34-3-3-3z"],route:["M11.669 5.066l.099.189c.113.213.236.434.367.661.226.39.468.78.709 1.151l-.198-.004-.48-.004c-1.745.003-2.369.233-2.369.688 0 .053.226.19 1.038.436l.84.24C13.9 9.064 15 9.83 15 11.63c0 2.123-1.607 3.122-4.027 3.366-.651.065-1.266.075-2.043.05l-.958-.035H5.196l.268-.406c.336-.517.672-1.052.998-1.593h1.636l.572.023c.857.036 1.475.034 2.103-.03 1.526-.153 2.227-.59 2.227-1.375 0-.531-.402-.84-1.66-1.22l-.691-.198c-1.04-.293-1.764-.562-2.222-.946C8.8 8.366 9 7.612 9 6.997a5.03 5.03 0 00-.184-1.334c.645-.395 1.598-.562 2.853-.597zM4 3a4.007 4.007 0 014 3.997C8 9.21 4 15 4 15l-.416-.62C2.56 12.827 0 8.767 0 6.997A4.002 4.002 0 014 3zm0 2a2 2 0 10.001 4.001A2 2 0 004 5zm10-4c1.103 0 1.996.896 2 1.999C16 4.105 14 7 14 7l-.293-.44C13.15 5.707 12 3.838 12 2.999 12 1.896 12.897 1 14 1z"],satellite:["M3 9c0-.6.4-1 1-1s1 .4 1 1c0 1.1.9 2 2 2 .6 0 1 .4 1 1s-.4 1-1 1c-2.2 0-4-1.8-4-4zM0 9c0-.6.4-1 1-1s1 .4 1 1c0 2.8 2.2 5 5 5 .6 0 1 .4 1 1s-.4 1-1 1c-3.9 0-7-3.1-7-7zm7 1c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1zm1.3-2.8c-.4-.4-.4-1 0-1.4l4.5-4.5c.4-.4 1-.4 1.4 0l.5.5c.4.4.4 1 0 1.4l-4.5 4.5c-.4.4-1 .4-1.4 0l-.5-.5zM5.2.3c.4-.4 1-.4 1.4 0l2.1 2.1c.4.4.4 1 0 1.4l-.9.9c-.4.4-1 .4-1.4 0L4.3 2.6c-.4-.4-.4-1 0-1.4l.9-.9zm7 7c.4-.4 1-.4 1.4 0l2.1 2.1c.4.4.4 1 0 1.4l-.9.9c-.4.4-1 .4-1.4 0l-2.1-2.1c-.4-.4-.4-1 0-1.4l.9-.9z"],saved:["M6.71 9.29a1.003 1.003 0 00-1.42 1.42l2 2a.997.997 0 001.6-.27h.01l2-4h-.01c.06-.13.11-.28.11-.44 0-.55-.45-1-1-1-.39 0-.72.23-.89.56H9.1l-1.38 2.76-1.01-1.03zM9 0H3c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V5L9 0zm3 14H4V2h4v4h4v8z"],"scatter-plot":["M15 12H2V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm-.5-7c.83 0 1.5-.67 1.5-1.5S15.33 2 14.5 2 13 2.67 13 3.5 13.67 5 14.5 5zm-3 4c.83 0 1.5-.67 1.5-1.5S12.33 6 11.5 6 10 6.67 10 7.5 10.67 9 11.5 9zm-4-2C8.33 7 9 6.33 9 5.5S8.33 4 7.5 4 6 4.67 6 5.5 6.67 7 7.5 7zm-3 4c.83 0 1.5-.67 1.5-1.5S5.33 8 4.5 8 3 8.67 3 9.5 3.67 11 4.5 11z"],search:["M15.55 13.43l-2.67-2.68a6.94 6.94 0 001.11-3.76c0-3.87-3.13-7-7-7s-7 3.13-7 7 3.13 7 7 7c1.39 0 2.68-.42 3.76-1.11l2.68 2.67a1.498 1.498 0 102.12-2.12zm-8.56-1.44c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"],"search-around":["M13.5 11c-.51 0-.98.15-1.38.42l-2.4-2.41c.17-.3.28-.64.28-1.01s-.11-.71-.28-1.01l2.41-2.41c.39.27.86.42 1.37.42a2.5 2.5 0 000-5A2.5 2.5 0 0011 2.5c0 .51.15.98.42 1.38l-2.41 2.4C8.71 6.11 8.37 6 8 6s-.71.11-1.01.28l-2.41-2.4c.27-.4.42-.87.42-1.38a2.5 2.5 0 00-5 0A2.5 2.5 0 002.5 5c.51 0 .98-.15 1.38-.42l2.41 2.41C6.11 7.29 6 7.63 6 8s.11.71.28 1.01l-2.41 2.41c-.39-.27-.86-.42-1.37-.42a2.5 2.5 0 000 5A2.5 2.5 0 005 13.5c0-.51-.15-.98-.42-1.38l2.41-2.41c.3.18.64.29 1.01.29s.71-.11 1.01-.28l2.41 2.41c-.27.39-.42.86-.42 1.37a2.5 2.5 0 005 0 2.5 2.5 0 00-2.5-2.5zm0-10c.83 0 1.5.67 1.5 1.5S14.33 4 13.5 4 12 3.33 12 2.5 12.67 1 13.5 1zm-11 3C1.67 4 1 3.33 1 2.5S1.67 1 2.5 1 4 1.67 4 2.5 3.33 4 2.5 4zm0 11c-.83 0-1.5-.67-1.5-1.5S1.67 12 2.5 12s1.5.67 1.5 1.5S3.33 15 2.5 15zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"],"search-template":["M15.55 13.43l-2.67-2.67c.7-1.09 1.11-2.38 1.11-3.77 0-3.87-3.13-7-7-7s-7 3.13-7 7 3.13 7 7 7c1.39 0 2.68-.41 3.77-1.11l2.67 2.67a1.498 1.498 0 102.12-2.12zm-8.56-1.44c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm2.5-6h-5c-.28 0-.5.22-.5.5s.22.5.5.5h5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5zm0-2h-5c-.28 0-.5.22-.5.5s.22.5.5.5h5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5zm0 4h-5c-.28 0-.5.22-.5.5s.22.5.5.5h5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5z"],"search-text":["M9 4H5c-.55 0-1 .45-1 1s.45 1 1 1h1v3c0 .55.45 1 1 1s1-.45 1-1V6h1c.55 0 1-.45 1-1s-.45-1-1-1zm6.56 9.44l-2.67-2.67C13.59 9.68 14 8.39 14 7c0-3.87-3.13-7-7-7S0 3.13 0 7s3.13 7 7 7c1.39 0 2.68-.41 3.77-1.11l2.67 2.67a1.498 1.498 0 102.12-2.12zM7 12c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"],"segmented-control":["M15 4H1c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm-1 6H8V6h6v4z"],select:["M16 15c0-.28-.12-.52-.31-.69l.02-.02-3.12-3.12 3.41-.84-8.05-2.86c.03-.09.05-.17.05-.27V2c0-.55-.45-1-1-1H3c0-.55-.45-1-1-1S1 .45 1 1c-.55 0-1 .45-1 1s.45 1 1 1v4c0 .55.45 1 1 1h5.2c.1 0 .18-.02.27-.05L10.33 16l.85-3.41 3.12 3.12.02-.02c.16.19.4.31.68.31.04 0 .07-.02.1-.02s.06.02.1.02c.44 0 .8-.36.8-.8 0-.04-.02-.07-.02-.1s.02-.06.02-.1zM6 6H3V3h3v3z"],selection:["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zm0-9C6.34 5 5 6.34 5 8s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"],"send-message":["M15.398 9.01l-13.87 6.865c-.536.267-1.176.081-1.422-.427A.953.953 0 010 15v-4.838l8.67-2.168L0 5.923V1.001C0 .47.407 0 1.004 0c.169 0 .416.04.567.116L15.403 7.07a1.084 1.084 0 01-.005 1.939z"],"send-to":["M15 7.5c-.8 0-1.5-.4-2-1l-1.2 1.2c-.4.5-1.1.7-1.8.7-1.4.1-2.5-1-2.5-2.4 0-.7.3-1.3.7-1.8L9.5 3c-.6-.5-1-1.2-1-2 0-.3.1-.7.2-1H8C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8v-.7c-.3.1-.6.2-1 .2zM15 0h-4c-.6 0-1 .5-1 1s.4 1 1 1h1.6L9.3 5.3c-.2.2-.3.4-.3.7 0 .5.4 1 1 1 .3 0 .5-.1.7-.3L14 3.4V5c0 .6.4 1 1 1 .5 0 1-.4 1-1V1c0-.5-.4-1-1-1z"],"send-to-graph":["M6 9H2c-.55 0-1 .45-1 1s.45 1 1 1h1.59L.3 14.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L5 12.41V14c0 .55.45 1 1 1s1-.45 1-1v-4c0-.55-.45-1-1-1zm8 .5c-.56 0-1.06.23-1.42.59l-2.13-1.24L8.99 8l3.59-2.09A2.002 2.002 0 0016 4.5c0-1.1-.9-2-2-2s-2 .9-2 2c0 .19.03.37.08.54L8.5 7.13v-3.2c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2S6 .9 6 2c0 .93.64 1.71 1.5 1.93v3.2l-.88-.52-2.7-1.57c.05-.17.08-.35.08-.54 0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2c.56 0 1.06-.23 1.42-.59l2.13 1.24 3.84 2.24 2.7 1.57c-.06.17-.09.35-.09.54 0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2z"],"send-to-map":["M6 9H2c-.55 0-1 .45-1 1s.45 1 1 1h1.59L.3 14.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L5 12.41V14c0 .55.45 1 1 1s1-.45 1-1v-4c0-.55-.45-1-1-1zm9.55-5.83l-4.49-3A.975.975 0 009.99.15L5.53 2.82 1.56.17A1.003 1.003 0 000 1v6h2V2.87l2.94 1.96.06.03V7h1V4.86s.01 0 .01-.01L10 2.47v8.67s-.01 0-.01.01l-.99.58v2.33l1.47-.88 3.97 2.65A1.003 1.003 0 0016 15V4c0-.35-.18-.65-.45-.83zM14 13.13l-2.94-1.96c-.02-.01-.04-.02-.05-.03v-8.6l3 2v8.59z"],"series-add":["M10.68 7.9c.44.54 1.07.92 1.79 1.05l-2.76 2.76c-.18.18-.43.29-.71.29s-.53-.11-.71-.3L5 8.41l-3 3V13h13c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1s1 .45 1 1v4.59l2.29-2.3C4.47 6.11 4.72 6 5 6s.53.11.71.29L9 9.59l1.68-1.69zM15 3c.55 0 1 .45 1 1s-.45 1-1 1h-1v1c0 .55-.45 1-1 1s-1-.45-1-1V5h-1c-.55 0-1-.45-1-1s.45-1 1-1h1V2c0-.55.45-1 1-1s1 .45 1 1v1h1z"],"series-configuration":["M9.94 9.64c.65.23 1.34.36 2.06.36.14 0 .29-.01.43-.01L9.7 12.71c-.18.18-.43.29-.71.29-.28 0-.53-.11-.71-.3L5 9.41l-3 3V14h12.99c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1V5c0-.55.45-1 1-1s1 .45 1 1v4.59l2.29-2.3C4.47 7.11 4.72 7 5 7c.28 0 .53.11.71.29L9 10.59l.94-.95zm4.73-6.44h.92c.22 0 .4.18.4.4v.8c0 .22-.18.4-.4.4h-.93c-.06.2-.14.38-.24.55l.66.65c.15.15.15.4 0 .55l-.54.55c-.15.15-.4.15-.55 0l-.65-.65c-.17.1-.36.18-.55.24v.91c0 .22-.18.4-.4.4h-.8c-.22 0-.4-.18-.4-.4v-.93c-.18-.06-.36-.13-.52-.22l-.68.68c-.15.16-.41.16-.57 0l-.56-.56a.417.417 0 010-.57l.68-.68c-.08-.16-.16-.33-.22-.52h-.93c-.22 0-.4-.18-.4-.4v-.8c0-.22.18-.4.4-.4h.93c.06-.2.14-.38.24-.55l-.65-.64a.392.392 0 010-.55l.54-.55a.38.38 0 01.54 0l.65.65c.18-.1.36-.18.55-.24V.4c0-.22.18-.4.4-.4h.8c.22 0 .4.18.4.4v.93c.18.06.35.14.52.22l.68-.68c.15-.16.41-.16.57 0l.57.57c.15.16.15.41 0 .57l-.68.68c.09.16.16.33.22.51zm-4.18.8c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5c-.82 0-1.5.67-1.5 1.5z"],"series-derived":["M10.66 7.92c.44.54 1.07.91 1.8 1.03L9.71 11.7c-.18.19-.43.3-.71.3s-.53-.11-.71-.3L5 8.41l-3 3V13h13c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1s1 .45 1 1v4.59l2.29-2.3C4.47 6.11 4.72 6 5 6s.53.11.71.29L9 9.59l1.66-1.67zM12.3 5.3l.3-.3H8c-.6 0-1-.4-1-1s.4-1 1-1h4.6l-.3-.3c-.2-.2-.3-.4-.3-.7 0-.6.5-1 1-1 .3 0 .5.1.7.3l2 2c.2.2.3.4.3.7s-.1.5-.3.7l-2 2c-.2.2-.4.3-.7.3-.6 0-1-.4-1-1 0-.3.1-.5.3-.7z"],"series-filtered":["M9.29 9.3c.3.62.8 1.12 1.42 1.41l-1 1c-.18.18-.43.29-.71.29s-.53-.11-.71-.3L5 8.41l-3 3V13h13c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1s1 .45 1 1v4.59l2.29-2.3C4.47 6.11 4.72 6 5 6s.53.11.71.29L9 9.59l.29-.29zM15.48 1c.31 0 .52.26.52.57 0 .16-.06.3-.17.41l-2.86 2.73v2.63c0 .16-.06.3-.17.41l-.82 1.1c-.1.1-.25.17-.41.17-.31 0-.57-.26-.57-.57V4.71L8.17 1.98A.566.566 0 018 1.57c0-.31.26-.57.57-.57h6.91z"],"series-search":["M9.6 8.94a4.937 4.937 0 001.82.01c.1-.01.22-.04.39-.08l.23-.07c.04-.01.08-.02.11-.04l.22.22-2.7 2.72c-.18.19-.43.3-.71.3s-.53-.11-.71-.3L4.98 8.41l-2.99 3V13h12.94c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1V3.99c0-.55.45-1 1-1s1 .45 1 1v4.59l2.28-2.3c.17-.18.42-.29.7-.29s.53.11.7.29l3.28 3.3.64-.64zm6.22-.41c.1.12.17.27.18.44 0 .34-.27.61-.61.61a.57.57 0 01-.43-.18l-2.24-2.25c-.13.08-.26.16-.4.23-.02.01-.05.02-.07.03-.14.06-.27.12-.42.17h-.01c-.14.05-.29.08-.44.11-.04.01-.08.02-.11.02-.15.02-.3.04-.46.04-1.85 0-3.35-1.51-3.35-3.37S8.96 1.01 10.81 1c1.85 0 3.35 1.51 3.35 3.37 0 .16-.02.31-.04.47-.01.04-.01.07-.02.11-.02.15-.05.29-.1.44v.01c-.05.15-.11.28-.17.42-.01.02-.02.05-.03.07-.07.14-.14.27-.23.4l2.25 2.24zm-5.01-1.94c1.22 0 2.21-.99 2.21-2.22 0-1.23-.99-2.22-2.21-2.22S8.6 3.14 8.6 4.37c0 1.22.99 2.22 2.21 2.22z"],settings:["M3 1c0-.55-.45-1-1-1S1 .45 1 1v3h2V1zm0 4H1c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm12-4c0-.55-.45-1-1-1s-1 .45-1 1v2h2V1zM9 1c0-.55-.45-1-1-1S7 .45 7 1v6h2V1zM1 15c0 .55.45 1 1 1s1-.45 1-1v-5H1v5zM15 4h-2c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm-2 11c0 .55.45 1 1 1s1-.45 1-1V9h-2v6zM9 8H7c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zm-2 7c0 .55.45 1 1 1s1-.45 1-1v-2H7v2z"],shapes:["M5.92 8.139c.44-.282 1.006-.121 1.264.358l2.689 4.988c.083.155.127.33.127.51C10 14.55 9.587 15 9.077 15H3.924a.864.864 0 01-.438-.12c-.449-.263-.617-.873-.376-1.362l2.465-4.989c.08-.162.2-.297.346-.39zM12 4a3 3 0 110 6 3 3 0 010-6zM6 1a1 1 0 011 1v4a1 1 0 01-1 1H2a1 1 0 01-1-1V2a1 1 0 011-1h4z"],share:["M10.99 13.99h-9v-9h4.76l2-2H.99c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h11c.55 0 1-.45 1-1V7.24l-2 2v4.75zm4-14h-5c-.55 0-1 .45-1 1s.45 1 1 1h2.59L7.29 7.28a1 1 0 00-.3.71 1.003 1.003 0 001.71.71l5.29-5.29V6c0 .55.45 1 1 1s1-.45 1-1V1c0-.56-.45-1.01-1-1.01z"],"shared-filter":["M13.843 15.163c.232.53.138.837.138.837H6.017s-.088-.308.138-.837c.226-.53 1.338-.88 2.079-1.206.735-.332.66-.53.685-.8 0-.03.006-.068.006-.105a2.171 2.171 0 01-.61-.892v-.006s-.006-.006-.006-.012c-.025-.074-.056-.16-.075-.24-.176-.031-.276-.222-.314-.394a.8.8 0 01-.1-.437c.025-.253.131-.37.244-.419v-.037c0-.313.032-.775.088-1.07A1.835 1.835 0 018.85 8.37c.315-.24.76-.37 1.156-.37.396 0 .842.13 1.156.37.301.233.534.56.64.935.026.08.045.166.057.246.057.295.088.75.088 1.064v.043c.113.05.214.167.232.413a.75.75 0 01-.1.437c-.038.172-.132.357-.301.387a1.77 1.77 0 01-.076.24.136.136 0 01-.006.025 2.346 2.346 0 01-.597.892v.111c.025.277-.075.474.666.8.741.326 1.853.67 2.079 1.2z","M14.852 15h1.131s.083-.27-.12-.732c-.16-.373-.82-.641-1.411-.88a15.328 15.328 0 01-.409-.17c-.565-.25-.57-.412-.577-.61-.001-.03-.002-.06-.005-.09v-.097c.22-.2.401-.469.522-.781 0 0 .005-.016.005-.022.028-.07.05-.14.066-.21.149-.026.231-.188.264-.339a.655.655 0 00.088-.382c-.016-.215-.104-.318-.203-.36v-.039c0-.274-.028-.673-.077-.931a1.598 1.598 0 00-.61-1.034 1.736 1.736 0 00-1.285-.3c.236.285.42.622.529.996.038.124.065.248.083.36.048.257.079.578.093.867a1.736 1.736 0 01.08 1.624 1.65 1.65 0 01-.217.453 1.42 1.42 0 01-.176.209c-.08.204-.178.4-.292.585l.202.083c.285.117.64.261.9.387.226.11.475.245.698.414.213.161.476.408.63.764.034.08.065.159.091.235zM12.14 14.12l.09.037zM11 1c.55 0 1 .45 1 1 0 .28-.11.53-.29.7L8 6.41v1.374a2.813 2.813 0 00-.833 1.589 6.925 6.925 0 00-.092.86 1.64 1.64 0 00-.25.739l-.001.004c-.02.217.006.413.046.573L5.71 12.71A1.003 1.003 0 014 12V6.41L.29 2.71A1.003 1.003 0 011 1h10z"],shield:["M8 16c4.667-3.048 7-7.238 7-12.571-1.556 0-3.889-1.143-7-3.429-3.111 2.286-5.444 3.429-7 3.429C1 8.762 3.333 12.952 8 16zM8 2.121c2.005 1.388 3.715 2.304 5.186 2.735-.342 3.702-2.05 6.683-5.186 9.038V2.121z"],shop:["M3 2h10c.55 0 1-.45 1-1s-.45-1-1-1H3c-.55 0-1 .45-1 1s.45 1 1 1zm9 11H4v-3H2v5c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-5h-2v3zm4-6l-1.01-3.17C14.9 3.36 14.49 3 14 3H2c-.49 0-.9.36-.98.83L.01 7H0c0 1.1.9 2 2 2s2-.9 2-2c0 1.1.9 2 2 2s2-.9 2-2c0 1.1.9 2 2 2s2-.9 2-2c0 1.1.9 2 2 2s2-.9 2-2z"],"shopping-cart":["M14 10H7.72l-.33-1H13c.39 0 .72-.23.89-.56h.01l2-4h-.01c.06-.13.11-.28.11-.44 0-.55-.45-1-1-1H5.39l-.44-1.32h-.01C4.8 1.29 4.44 1 4 1H1c-.55 0-1 .45-1 1s.45 1 1 1h2.28l2.33 7H4c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2h6c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2zM6.05 5h7.33l-1 2H6.72l-.67-2z"],"signal-search":["M5.474 7.971A5.31 5.31 0 006.66 8.9l.007.019.018.056c.015.038.038.06.045.098l1.5 5.999a.75.75 0 01-1.455.36l-.42-1.68h-.704l-.42 1.68a.746.746 0 01-.907.547.746.746 0 01-.547-.907l1.5-6c.007-.037.03-.06.044-.097.015-.037.015-.075.038-.112a.722.722 0 01-.105-.36c0-.207.084-.394.22-.53zM2.795 5.277a.763.763 0 00-.015-1.065.756.756 0 00-1.065.015c-2.286 2.34-2.286 6.21 0 8.549a.747.747 0 101.072-1.042c-1.709-1.763-1.709-4.702.008-6.457zM7.808 9.388a5.318 5.318 0 001.58.211 2.236 2.236 0 01-.656.98.756.756 0 01-1.057-.098.756.756 0 01.097-1.057l.036-.036zM11.544 9.105l.378.378a6.02 6.02 0 01-1.638 3.285c-.285.3-.757.3-1.057.015a.74.74 0 01-.015-1.057 4.52 4.52 0 001.185-2.24c.4-.083.785-.212 1.147-.381z","M4.054 9.424c-.427-.352-.352-1.582-.03-1.822a.752.752 0 00.15-1.05.752.752 0 00-1.05-.15c-1.079.802-1.221 3.18-.03 4.177a.75.75 0 10.96-1.155zM9.318 0a4.318 4.318 0 014.317 4.318c0 .206-.02.402-.049.598-.01.05-.01.088-.02.138-.039.196-.078.382-.137.569v.01c-.059.186-.137.363-.216.54l-.039.087a5.285 5.285 0 01-.294.51l2.884 2.886a.878.878 0 01.236.559.787.787 0 01-.785.785.785.785 0 01-.56-.226L11.772 7.89a5.285 5.285 0 01-.51.295l-.089.039c-.176.079-.353.157-.54.216h-.01a3.701 3.701 0 01-.568.137c-.05.01-.099.02-.138.02-.196.03-.392.049-.598.049A4.318 4.318 0 015 4.327 4.332 4.332 0 019.318 0zm-.02 1.1A3.195 3.195 0 006.1 4.298a3.195 3.195 0 003.198 3.198 3.195 3.195 0 003.198-3.198A3.195 3.195 0 009.298 1.1z"],"sim-card":["M13.71 4.29l-4-4A.997.997 0 009 0H3c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V5c0-.28-.11-.53-.29-.71zM7 6h2v2H7V6zM4 6h2v2H4V6zm2 8H4v-2h2v2zm3 0H7v-2h2v2zm3 0h-2v-2h2v2zm0-3H4V9h8v2zm0-3h-2V6h2v2z"],slash:["M10 2a.99.99 0 00-.96.73l-2.99 9.96A1.003 1.003 0 007 14c.46 0 .85-.31.96-.73l2.99-9.96A1.003 1.003 0 0010 2z"],"small-cross":["M9.41 8l2.29-2.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L8 6.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42L6.59 8 4.3 10.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L8 9.41l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L9.41 8z"],"small-minus":["M11 7H5c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1z"],"small-plus":["M11 7H9V5c0-.55-.45-1-1-1s-1 .45-1 1v2H5c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V9h2c.55 0 1-.45 1-1s-.45-1-1-1z"],"small-tick":["M12 5c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z"],snowflake:["M13.364 9l.879.879a1 1 0 11-1.415 1.414l-2.12-2.121A1.003 1.003 0 0110.568 9H9v1.604c.042.03.083.065.121.103l2.122 2.121a1 1 0 01-1.415 1.415L9 13.414V15a1 1 0 01-2 0v-1.636l-.879.879a1 1 0 11-1.414-1.415l2.121-2.12c.054-.054.111-.1.172-.139V9H5.38c-.038.06-.084.118-.137.172l-2.122 2.12A1 1 0 111.707 9.88L2.586 9H1a1 1 0 110-2h1.536l-.829-.828a1 1 0 011.414-1.415L5.243 6.88c.038.038.072.079.103.121H7V5.38a1.003 1.003 0 01-.172-.137L4.708 3.12A1 1 0 016.12 1.707L7 2.586V1a1 1 0 112 0v1.536l.828-.829a1 1 0 011.415 1.414L9.12 5.243A1.007 1.007 0 019 5.346V7h1.604c.03-.042.065-.083.103-.121l2.121-2.122a1 1 0 011.415 1.415L13.414 7H15a1 1 0 010 2h-1.636z"],"social-media":["M9.5 4c.4 0 .8-.1 1.1-.3C12 4.5 12.9 6 13 7.6c0 .5.5.9 1 .9.6 0 1-.4 1-1v-.2c-.2-2.4-1.5-4.4-3.5-5.5-.1-1-.9-1.8-2-1.8s-2 .9-2 2 .9 2 2 2zM4 8.5c0-.7-.4-1.3-.9-1.7.3-1.4 1.2-2.6 2.5-3.3.3-.1.6-.4.6-.9s-.4-1-1-1c-.2 0-.3 0-.5.1-1.9 1-3.2 2.8-3.6 5C.4 7.1 0 7.8 0 8.5c0 1.1.9 2 2 2s2-.9 2-2zm8.8 1.2c-1.1 0-2 .9-2 2v.3c-.8.6-1.8.9-2.8.9-1.2 0-2.3-.4-3.2-1.1-.2-.2-.4-.3-.7-.3-.6 0-1 .4-1 1 0 .3.1.6.3.8C4.6 14.4 6.2 15 8 15c1.5 0 3-.5 4.1-1.3.2.1.5.1.7.1 1.1 0 2-.9 2-2s-.9-2.1-2-2.1z"],sort:["M5 12c-.28 0-.53.11-.71.29l-.29.3V9c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-.29-.29A.965.965 0 001 12a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l2-2A1.003 1.003 0 005 12zm3-9h7c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zm7 2H8c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1zm0 8H8c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1zm0-4H8c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1z"],"sort-alphabetical":["M6 12c-.28 0-.53.11-.71.29l-.29.3V9c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-.29-.29A.965.965 0 002 12a1.003 1.003 0 00-.71 1.71l2 2c.19.18.44.29.71.29.28 0 .53-.11.71-.29l2-2c.18-.18.29-.43.29-.71a.99.99 0 00-1-1zm7.93-.95v-1.04H9.25v1.11h2.94L9 14.96V16h5.02v-1.11h-3.27l3.18-3.84zm-1.42-4.84l.62 1.78H15L11.94.01H10.1L7 7.99h1.81l.64-1.78h3.06zm-1.52-4.24h.02l1.03 2.93H9.92l1.07-2.93z"],"sort-alphabetical-desc":["M5.99 11.99c-.28 0-.53.11-.71.29l-.29.29V8.99c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-.29-.29a1.003 1.003 0 00-1.42 1.42l2 2c.18.18.43.29.71.29.28 0 .53-.11.71-.29l2-2c.18-.18.29-.43.29-.71 0-.56-.45-1.01-1-1.01zM12.7 10h-1.38L9 15.99h1.36l.48-1.33h2.3l.46 1.33H15L12.7 10zm-1.51 3.67l.8-2.2h.02l.77 2.2h-1.59zm3.8-7.17h-4.57l4.45-5.12V0H8.34v1.48h4.1L7.99 6.59v1.39h7V6.5z"],"sort-asc":["M8 7h3c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zm0-4h1c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zm0 8h5c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zm-3 1c-.28 0-.53.11-.71.29l-.29.3V9c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-.29-.29A.965.965 0 001 12a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l2-2A1.003 1.003 0 005 12zm10 1H8c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1z"],"sort-desc":["M5 12c-.28 0-.53.11-.71.29l-.29.3V9c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-.29-.29A.965.965 0 001 12a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l2-2A1.003 1.003 0 005 12zm4 1H8c-.55 0-1 .45-1 1s.45 1 1 1h1c.55 0 1-.45 1-1s-.45-1-1-1zm4-8H8c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1zm-2 4H8c-.55 0-1 .45-1 1s.45 1 1 1h3c.55 0 1-.45 1-1s-.45-1-1-1zm4-8H8c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1z"],"sort-numerical":["M6 11.99c-.28 0-.53.11-.71.29l-.29.3V8.99c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-.29-.29c-.18-.18-.43-.3-.71-.3a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29.28 0 .53-.11.71-.29l2-2A1.003 1.003 0 006 11.99zm7.91-.08c-.06-.36-.17-.68-.33-.96-.16-.28-.37-.51-.64-.69-.27-.17-.61-.26-1.03-.26-.28 0-.54.06-.78.17-.23.11-.43.26-.6.45-.17.19-.3.41-.39.67a2.492 2.492 0 00-.04 1.52 1.623 1.623 0 00.89 1.03c.22.11.45.16.68.16.26 0 .5-.05.7-.15s.38-.26.53-.5l.02.02c-.01.16-.03.34-.07.54-.03.2-.09.4-.17.57-.08.18-.18.33-.31.45s-.29.19-.5.19a.63.63 0 01-.48-.21c-.13-.14-.21-.31-.25-.5H10.1c.03.25.1.48.19.68.1.2.22.37.38.5.16.14.33.24.54.31s.42.1.65.1c.39 0 .72-.09.99-.27.27-.18.49-.41.66-.7.17-.29.29-.61.37-.97.08-.36.12-.72.12-1.07 0-.36-.03-.72-.09-1.08zm-1.14.54c-.04.13-.09.24-.16.34a.78.78 0 01-.27.24c-.11.06-.24.09-.39.09a.75.75 0 01-.37-.09.777.777 0 01-.26-.25c-.07-.1-.12-.22-.15-.35-.03-.13-.05-.26-.05-.4 0-.13.02-.26.05-.39.04-.13.09-.24.16-.34.07-.1.16-.18.26-.24s.22-.09.35-.09c.14 0 .26.03.37.09.11.06.2.14.28.24a1.32 1.32 0 01.23.74c0 .15-.02.28-.05.41zm-1.56-4.47H13V0h-1.42c-.05.3-.16.56-.31.76-.16.21-.35.37-.58.5-.23.13-.49.21-.78.26-.3.05-.6.07-.91.06V2.8h2.21v5.18z"],"sort-numerical-desc":["M6 11.99c-.28 0-.53.11-.71.29l-.29.3V8.99c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-.29-.29a.982.982 0 00-.71-.3 1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l2-2A1.003 1.003 0 006 11.99zm7.86-9.45c-.09-.48-.26-.9-.5-1.28S12.8.58 12.4.35C12 .12 11.49 0 10.86 0c-.43 0-.82.07-1.17.22s-.65.35-.9.6-.44.55-.58.89c-.14.34-.2.71-.2 1.11 0 .31.05.61.15.91.1.3.26.57.48.8.23.24.52.43.85.58.33.14.68.21 1.03.21.4 0 .75-.07 1.05-.2.3-.13.57-.35.79-.66l.02.02c-.02.21-.05.45-.1.73-.05.27-.13.53-.25.76-.12.24-.27.44-.47.6-.19.16-.44.25-.75.25a.98.98 0 01-.72-.29c-.19-.18-.31-.4-.37-.66H8.15c.05.34.14.64.29.9.15.26.34.49.57.67.23.18.5.32.8.41.31.1.63.15.98.15.58 0 1.08-.12 1.48-.36.4-.24.73-.55.99-.93.26-.39.44-.82.56-1.29.12-.48.18-.96.18-1.44s-.05-.96-.14-1.44zm-1.71.72c-.05.17-.14.32-.24.46-.11.13-.24.24-.41.31-.16.08-.36.12-.58.12-.21 0-.39-.04-.55-.13-.16-.08-.29-.19-.39-.33-.12-.14-.19-.29-.24-.46-.05-.17-.08-.35-.08-.54 0-.18.03-.35.08-.52.06-.16.14-.31.25-.44.11-.13.24-.24.4-.32.16-.08.33-.12.52-.12.21 0 .4.04.56.12.16.08.3.19.41.32.11.14.2.29.26.46.06.17.09.35.09.52 0 .2-.03.38-.08.55zm-.46 7.31c-.12.15-.26.28-.44.37-.17.09-.37.16-.58.2-.22.04-.44.05-.67.05v.92h1.65v3.88h1.33V10h-1.06c-.03.23-.11.42-.23.57z"],"split-columns":["M12 10a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-2-2a1.003 1.003 0 00-1.42 1.42l.3.29H9V2h3v1.71c.31-.13.64-.21 1-.21s.69.08 1 .21V1c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v2.71c.31-.13.64-.21 1-.21s.69.08 1 .21V2h3v5H3.41l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2C.11 7.47 0 7.72 0 8c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42L3.41 9H7v5H4v-1.71c-.31.13-.64.21-1 .21s-.69-.08-1-.21V15c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-2.71c-.31.13-.64.21-1 .21s-.69-.08-1-.21V14H9V9h3.59l-.29.29c-.19.18-.3.43-.3.71z"],square:["M15 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H2V2h12v12z"],"stacked-chart":["M10 2c0-.55-.45-1-1-1H8c-.55 0-1 .45-1 1v3h3V2zm3 10h1c.55 0 1-.45 1-1V8h-3v3c0 .55.45 1 1 1zm2-7c0-.55-.45-1-1-1h-1c-.55 0-1 .45-1 1v2h3V5zm-5 1H7v3h3V6zM5 7c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v1h3V7zm3 5h1c.55 0 1-.45 1-1v-1H7v1c0 .55.45 1 1 1zm7 1H2c-.55 0-1 .45-1 1s.45 1 1 1h13c.55 0 1-.45 1-1s-.45-1-1-1zM3 12h1c.55 0 1-.45 1-1V9H2v2c0 .55.45 1 1 1z"],star:["M8 0l2.5 5.3 5.5.8-4 4.1.9 5.8L8 13.3 3.1 16l.9-5.8-4-4.1 5.5-.8z"],"star-empty":["M16 6.11l-5.53-.84L8 0 5.53 5.27 0 6.11l4 4.1L3.06 16 8 13.27 12.94 16 12 10.21l4-4.1zM4.91 13.2l.59-3.62L3 7.02l3.45-.53L8 3.2l1.55 3.29 3.45.53-2.5 2.56.59 3.62L8 11.49 4.91 13.2z"],"step-backward":["M12 3c-.24 0-.44.09-.62.23l-.01-.01L7 6.72V4c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V9.28l4.38 3.5.01-.01c.17.14.37.23.61.23.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"step-chart":["M15 12H2v-2h3c.55 0 1-.45 1-1V7h2v1c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V5h1c.55 0 1-.45 1-1s-.45-1-1-1h-2c-.55 0-1 .45-1 1v3h-2V6c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v2H2V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],"step-forward":["M12 3h-1c-.55 0-1 .45-1 1v2.72l-4.38-3.5v.01A.987.987 0 005 3c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1 .24 0 .44-.09.62-.23l.01.01L10 9.28V12c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],stop:["M12 3H4c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h8c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],stopwatch:["M9 2v1.083A6.002 6.002 0 018 15 6 6 0 017 3.083V2H6a1 1 0 110-2h4a1 1 0 010 2H9zM8 5a4 4 0 104 4H8V5z"],strikethrough:["M14 7H8.65c-.38-.09-.73-.18-1.04-.26-.31-.08-.49-.13-.54-.14-.43-.11-.79-.29-1.05-.52-.27-.23-.4-.55-.4-.95 0-.29.07-.53.21-.72s.32-.34.54-.46c.22-.11.46-.19.72-.24.26-.05.52-.07.77-.07.74 0 1.36.15 1.84.46.32.2.55.5.68.9h2.22c-.06-.33-.17-.64-.32-.92-.25-.45-.59-.84-1.02-1.15-.43-.31-.93-.54-1.49-.7S8.59 2 7.95 2c-.55 0-1.1.07-1.63.2-.54.13-1.02.34-1.45.62-.42.28-.76.63-1.02 1.05-.26.42-.39.92-.39 1.5 0 .3.04.59.13.88.08.26.21.51.39.75H2c-.55 0-1 .45-1 1s.45 1 1 1h7.13c.25.07.49.14.71.22.25.09.48.23.7.44.21.21.32.53.32.97 0 .21-.05.43-.14.63-.09.21-.24.39-.45.55-.21.16-.48.29-.81.39-.33.1-.73.15-1.2.15-.44 0-.84-.05-1.21-.14-.37-.09-.7-.24-.99-.43-.29-.2-.51-.45-.67-.76-.01 0-.01-.01-.02-.02H3.14a3.68 3.68 0 001.39 2.03c.46.34 1 .58 1.62.74.61.15 1.27.23 1.97.23.61 0 1.2-.07 1.79-.2.58-.13 1.11-.34 1.56-.63.46-.29.83-.66 1.11-1.11.28-.45.42-1 .42-1.64 0-.3-.05-.6-.15-.9-.05-.19-.13-.36-.22-.52H14c.55 0 1-.45 1-1s-.45-1-1-1z"],style:["M14 14H2V2h8.76l2-2H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V6.24l-2 2V14zm1.4-14L9.7 5.7l2.1 2.1L16 3.6V0h-.6zM4 11.92c2.33.15 4.42.15 6.15-1.5.82-.83.82-2.25 0-3.08-.45-.38-.98-.6-1.5-.6-.53 0-1.05.22-1.43.6-.82.91-1.27 3.38-3.22 4.58z"],"swap-horizontal":["M0 7.02L.05 7H0v.02zm2-2.03h9.57l-1.29 1.29A1.003 1.003 0 0011.7 7.7l2.99-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-2.99-3a1.07 1.07 0 00-.71-.28 1.003 1.003 0 00-.71 1.71L11.57 3H2c-.55 0-1 .45-1 1a1 1 0 001 .99zM15.96 9H16v-.02l-.04.02zM14 11.01H4.43l1.29-1.29A1.003 1.003 0 004.3 8.3l-2.99 3a.99.99 0 00-.29.7c0 .28.11.53.29.71l2.99 3a1.003 1.003 0 001.42-1.42L4.43 13H14c.55 0 1-.45 1-1s-.45-.99-1-.99z"],"swap-vertical":["M9 0h-.02L9 .04V0zM7 16h.02L7 15.95V16zM4.7 1.31c-.18-.18-.43-.29-.7-.29s-.53.11-.71.29l-3 2.99a1.003 1.003 0 001.42 1.42L3 4.43V14c0 .55.45 1 1 1s1-.45 1-1V4.43l1.29 1.29c.18.18.43.29.7.29A1.003 1.003 0 007.7 4.3l-3-2.99zM15 9.99c-.28 0-.53.11-.71.29L13 11.57V2c0-.55-.45-1-1-1s-1 .45-1 1v9.57l-1.29-1.29a.99.99 0 00-.7-.29 1.003 1.003 0 00-.71 1.71l3 2.99c.18.18.43.29.71.29.28 0 .53-.11.71-.29l3-2.99c.18-.18.29-.43.29-.71-.01-.55-.46-1-1.01-1z"],switch:["M9.293 2.293l1.414 1.414-4.999 5a3 3 0 11-1.415-1.415l5-5zM13 7a3 3 0 110 6 3 3 0 010-6zM3 9a1 1 0 100 2 1 1 0 000-2zm10 0a1 1 0 100 2 1 1 0 000-2z"],"symbol-circle":["M8 3.01a5 5 0 100 10 5 5 0 100-10z"],"symbol-cross":["M12 6.01h-2v-2c0-.55-.45-1-1-1H7c-.55 0-1 .45-1 1v2H4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h2v2c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-2h2c.55 0 1-.45 1-1v-2c0-.56-.45-1-1-1z"],"symbol-diamond":["M12 8.01c0-.19-.07-.36-.16-.51l.01-.01-3-5-.01.01c-.17-.29-.48-.49-.84-.49s-.67.2-.84.49l-.02-.01-3 5 .02.01c-.09.15-.16.32-.16.51s.07.36.16.51h-.02l3 5 .01-.01c.18.29.49.5.85.5s.67-.2.84-.49l.01.01 3-5-.01-.01c.09-.16.16-.32.16-.51z"],"symbol-square":["M12 3.01H4c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h8c.55 0 1-.45 1-1v-8c0-.56-.45-1-1-1z"],"symbol-triangle-down":["M13 4.01c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 .16.05.31.11.44H3.1l4 8h.01c.16.33.49.56.89.56s.72-.23.89-.56h.01l4-8h-.01c.06-.14.11-.28.11-.44z"],"symbol-triangle-up":["M12.89 11.56l-3.99-8h-.01c-.17-.32-.5-.55-.89-.55s-.72.23-.89.55H7.1l-4 8h.01c-.06.14-.11.29-.11.45 0 .55.45 1 1 1h8c.55 0 1-.45 1-1 0-.16-.05-.31-.11-.45z"],tag:["M1 3a2 2 0 012-2h4.584a2 2 0 011.414.586l5.413 5.412a2 2 0 010 2.829L9.827 14.41a2 2 0 01-2.829 0L1.586 8.998A2 2 0 011 7.584V3zm3.487-.007a1.494 1.494 0 100 2.988 1.494 1.494 0 000-2.988z"],"take-action":["M9 11a1.003 1.003 0 001.71.71l4-4a1.003 1.003 0 00-1.42-1.42l-4 4c-.18.18-.29.43-.29.71zM4 6c.28 0 .53-.11.71-.29l4-4A1.003 1.003 0 007.29.29l-4 4A1.003 1.003 0 004 6zm4 4l5-5-.79-.79.5-.5a1.003 1.003 0 00-1.42-1.42l-.5.5L10 2 5 7l.79.79-5.5 5.5a1.003 1.003 0 001.42 1.42l5.5-5.5L8 10zm7 4H7c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1z"],taxi:["M15.12 6.63h-.38L15 7c-.01.3-.01.64 0 .98V8c0 .07-.03.13-.04.19h.02L14 13.1v.9c0 .55-.45 1-1 1s-1-.45-1-1v-1H4v1c0 .55-.45 1-1 1s-1-.45-1-1v-.9l-.98-4.9h.02C1.03 8.13 1 8.07 1 8H.99c0-.33 0-.67.01-1l.26-.37H.88C.4 6.63 0 6.21 0 5.69s.4-.94.88-.94h1.05l.77-2.11c.19-.53.76-1.08 1.26-1.24 0 0 .68-.2 2.05-.32C6.01 1.05 6 1.03 6 1c0-.55.45-1 1-1h2c.55 0 1 .45 1 1 0 .03-.01.05-.02.08 1.37.12 2.05.32 2.05.32.51.15 1.08.71 1.27 1.24l.76 2.12h1.05c.49 0 .89.42.89.93 0 .52-.4.94-.88.94zM11 10h2V8h-2v2zm-8 0h2V8H3v2zm10-5l-.73-1.63C12.21 3.19 12.18 3 12 3H4c-.18 0-.21.19-.27.37L3 5c-.06.18-.18 1 0 1h10c.18 0 .06-.82 0-1z"],"text-highlight":["M9 10H2V6h7V4H1c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h8v-2zm4 3h-1V3h1c.55 0 1-.45 1-1s-.45-1-1-1h-1c-.37 0-.7.11-1 .28-.3-.17-.63-.28-1-.28H9c-.55 0-1 .45-1 1s.45 1 1 1h1v10H9c-.55 0-1 .45-1 1s.45 1 1 1h1c.37 0 .7-.11 1-.28.3.17.63.28 1 .28h1c.55 0 1-.45 1-1s-.45-1-1-1zm2-9h-2v2h1v4h-1v2h2c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1z"],th:["M15 1H1c-.6 0-1 .5-1 1v12c0 .6.4 1 1 1h14c.6 0 1-.4 1-1V2c0-.5-.4-1-1-1zM6 13H2v-2h4v2zm0-3H2V8h4v2zm0-3H2V5h4v2zm8 6H7v-2h7v2zm0-3H7V8h7v2zm0-3H7V5h7v2z"],"th-derived":["M5.6 10l-.3.3c-.2.2-.3.4-.3.7 0 .6.4 1 1 1 .3 0 .5-.1.7-.3l2-2c.2-.2.3-.4.3-.7s-.1-.5-.3-.7l-2-2C6.5 6.1 6.3 6 6 6c-.5 0-1 .4-1 1 0 .3.1.5.3.7l.3.3H1c-.6 0-1 .4-1 1s.4 1 1 1h4.6zM15 1H2c-.5 0-1 .5-1 1v5h2V5h11v2H8.8l.6.6c.1.1.2.3.3.4H14v2H9.7c-.1.1-.2.3-.3.4l-.6.6H14v2H3v-2H1v3c0 .5.5 1 1 1h13c.6 0 1-.5 1-1V2c0-.5-.4-1-1-1z"],"th-disconnect":["M12 1h3c.6 0 1 .5 1 1v12c0 .6-.4 1-1 1h-4.97l.286-2H14v-2h-3.398l.143-1H14V8h-2.97l.143-1H14V5h-2.541l.51-3.576C11.99 1.282 12 1.14 12 1zM5.97 1l-.572 4H2v2h3.112L4.97 8H2v2h2.684l-.143 1H2v2h2.255l-.225 1.576c-.02.142-.03.284-.03.424H1c-.6 0-1-.4-1-1V2c0-.5.4-1 1-1h4.97zM8.01.859a1 1 0 111.98.282l-2 14a1 1 0 11-1.98-.282l2-14z"],"th-filtered":["M10 10h3l1.78-2.226a1 1 0 00.22-.625V4.3l1-.9V14c0 .6-.4 1-1 1H1c-.6 0-1-.4-1-1V2c0-.5.4-1 1-1h4.333L9 4.3V5H7v2h2v1H7v2h3zm-4 3v-2H2v2h4zm0-3V8H2v2h4zm0-3V5H2v2h4zm8 6v-2H7v2h7z","M15.48 0c.31 0 .52.26.52.57 0 .16-.06.3-.17.41l-2.86 2.73v2.63c0 .16-.06.3-.17.41l-.82 1.1c-.1.1-.25.17-.41.17-.31 0-.57-.26-.57-.57V3.71L8.17.98A.566.566 0 018 .57c0-.31.26-.57.57-.57h6.91z"],"th-list":["M15 1H1c-.6 0-1 .5-1 1v12c0 .6.4 1 1 1h14c.6 0 1-.4 1-1V2c0-.5-.4-1-1-1zm-1 12H2v-2h12v2zm0-3H2V8h12v2zm0-3H2V5h12v2z"],"thumbs-down":["M2 2H0v7h2c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm13.99 4.38c.08-.58-.44-1.02-1.15-1.05-.25-.01-.52-.03-.81-.05.02 0 .05-.01.07-.01.7-.1 1.34-.49 1.41-1.07.06-.58-.46-.97-1.17-1.04-.25-.02-.52-.04-.79-.06.47-.15.84-.42.87-.93.04-.58-.79-1.03-1.5-1.09-.27-.02-.51-.04-.73-.05h-.09c-.23-.02-.43-.02-.62-.03C8.35.95 5.66 1.47 4 2.51v6c2.14 1.29 4.76 3.59 4.21 5.51-.18.59.31 1.05.98.98.81-.09 1.37-.91 1.4-1.78.04-1-.15-2.01-.5-2.91-.04-.25.01-.5.37-.53.49-.03 1.11-.06 1.59-.08.26 0 .51-.01.75-.02h.01c.41-.02.8-.05 1.13-.09.7-.09 1.35-.47 1.43-1.05.08-.58-.44-.97-1.15-1.05-.05-.01-.11-.01-.16-.02.17-.01.33-.03.49-.05.72-.08 1.37-.46 1.44-1.04z"],"thumbs-up":["M15.99 9.62c-.08-.58-.73-.96-1.43-1.05-.15-.02-.32-.04-.49-.05.06-.01.11-.01.16-.02.71-.08 1.23-.47 1.15-1.05-.08-.58-.73-.96-1.43-1.05-.34-.04-.72-.07-1.13-.09h-.01c-.24-.01-.49-.02-.75-.02-.48-.02-1.11-.04-1.59-.08-.36-.03-.41-.28-.37-.53.35-.9.54-1.91.5-2.91-.04-.85-.6-1.68-1.41-1.77-.67-.07-1.16.39-.99.98C8.76 3.91 6.13 6.2 4 7.49v6c1.66 1.03 4.35 1.56 7.48 1.5.19 0 .39-.01.62-.02h.09c.22-.01.46-.03.73-.05.71-.06 1.54-.51 1.5-1.09-.03-.51-.4-.79-.87-.93.27-.02.54-.04.79-.06.71-.06 1.24-.45 1.17-1.04-.06-.58-.7-.97-1.41-1.07-.02 0-.05-.01-.07-.01.29-.02.57-.03.81-.05.71-.03 1.23-.47 1.15-1.05zM2 7H0v7h2c.55 0 1-.45 1-1V8c0-.56-.45-1-1-1z"],tick:["M14 3c-.28 0-.53.11-.71.29L6 10.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42l4 4c.18.18.43.29.71.29s.53-.11.71-.29l8-8A1.003 1.003 0 0014 3z"],"tick-circle":["M8 16c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm4-11c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z"],time:["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zm1-6.41V4c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42L9 7.59z"],"timeline-area-chart":["M15 2.59L9.91 7.68 6.6 5.2l-.01.01C6.42 5.09 6.23 5 6 5c-.24 0-.44.09-.62.23v-.01L3 7.12V11h12V2.59zM15 12H2V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],"timeline-bar-chart":["M8 12h1c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1H8c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1zm5 0h1c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1h-1c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1zm2 1H2c-.55 0-1 .45-1 1s.45 1 1 1h13c.55 0 1-.45 1-1s-.45-1-1-1zM3 12h1c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1z"],"timeline-events":["M8 11H7v1h1v-1zm-4 0H3v1h1v-1zm7-8c.6 0 1-.5 1-1V1c0-.5-.4-1-1-1s-1 .5-1 1v1c0 .5.5 1 1 1zM4 3c.5 0 1-.5 1-1V1c0-.5-.5-1-1-1S3 .5 3 1v1c0 .5.5 1 1 1zm10-2h-1v1c0 1.1-.9 2-2 2s-2-.9-2-2V1H6v1c0 1.1-.9 2-2 2s-2-.9-2-2V1H1c-.5 0-1 .5-1 1v12c0 .5.5 1 1 1h13c.6 0 1-.5 1-1V2c0-.5-.4-1-1-1zM5 13H2v-3h3v3zm0-4H2V6h3v3zm4 4H6v-3h3v3zm0-4H6V6h3v3zm4 4h-3v-3h3v3zm0-4h-3V6h3v3zm-1-2h-1v1h1V7z"],"timeline-line-chart":["M15 12H2V9.41l3-3L8.29 9.7c.18.19.43.3.71.3s.53-.11.71-.29l6-6a1.003 1.003 0 00-1.42-1.42L9 7.59l-3.29-3.3C5.53 4.11 5.28 4 5 4s-.53.11-.71.29L2 6.59V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],tint:["M7.88 1s-4.9 6.28-4.9 8.9c.01 2.82 2.34 5.1 4.99 5.1 2.65-.01 5.03-2.3 5.03-5.13C12.99 7.17 7.88 1 7.88 1z"],torch:["M5 15c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H5v1zm7-15H4c-.55 0-1 .45-1 1v1h10V1c0-.55-.45-1-1-1zM5 7v6h6V7l2-4H3l2 4zm2 0c0-.55.45-1 1-1s1 .45 1 1v2c0 .55-.45 1-1 1s-1-.45-1-1V7z"],tractor:["M3.5 9a3.5 3.5 0 110 7 3.5 3.5 0 010-7zm9.5 1a3 3 0 110 6 3 3 0 010-6zm-9.5 1a1.5 1.5 0 100 3 1.5 1.5 0 000-3zm9.5 1a1 1 0 100 2 1 1 0 000-2zM5 0c1.46 0 2.527.668 3 2l.815 3.255a78.9 78.9 0 012.186.195L11 2h2l.001 3.688c.698.095 1.37.198 2.013.312.623.11.986.479.986 1v3.354a4.001 4.001 0 00-6.873 1.645H7.999l-.026-.002A4.5 4.5 0 00.659 9.01l-.654.001v-.829C.003 7.386.002 6.423 0 6.022 0 5.5.376 4.99 1 4.99V1a1 1 0 011-1h3zm1 2H3v2.99c1.29.024 2.554.069 3.781.135L6 2z"],train:["M13 14h-1l1 2H3l1-2H3c-1.1 0-2-.9-2-2V2C1 .9 4.13 0 8 0s7 .9 7 2v10c0 1.1-.9 2-2 2zm-2-2h2v-2h-2v2zM9 7h4V3H9v4zm-6 5h2v-2H3v2zm0-5h4V3H3v4z"],translate:["M15.89 14.56l-3.99-8h-.01c-.17-.33-.5-.56-.89-.56s-.72.23-.89.56h-.01L9 8.76 7.17 7.38l.23-.18C8.37 6.47 9 5.31 9 4V3h1c.55 0 1-.45 1-1s-.45-1-1-1H7c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1H1c-.55 0-1 .45-1 1s.45 1 1 1h6v1c0 .66-.32 1.25-.82 1.61l-.68.51-.68-.5C4.32 5.25 4 4.66 4 4H2c0 1.31.63 2.47 1.6 3.2l.23.17L1.4 9.2l.01.01C1.17 9.4 1 9.67 1 10c0 .55.45 1 1 1 .23 0 .42-.09.59-.21l.01.01 2.9-2.17 2.6 1.95-1.99 3.98h.01c-.07.13-.12.28-.12.44 0 .55.45 1 1 1 .39 0 .72-.23.89-.56h.01L8.62 14h4.76l.72 1.45h.01c.17.32.5.55.89.55.55 0 1-.45 1-1 0-.16-.05-.31-.11-.44zM9.62 12L11 9.24 12.38 12H9.62z"],trash:["M14.49 3.99h-13c-.28 0-.5.22-.5.5s.22.5.5.5h.5v10c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-10h.5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5zm-8.5 9c0 .55-.45 1-1 1s-1-.45-1-1v-6c0-.55.45-1 1-1s1 .45 1 1v6zm3 0c0 .55-.45 1-1 1s-1-.45-1-1v-6c0-.55.45-1 1-1s1 .45 1 1v6zm3 0c0 .55-.45 1-1 1s-1-.45-1-1v-6c0-.55.45-1 1-1s1 .45 1 1v6zm2-12h-4c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1h-4c-.55 0-1 .45-1 1v1h14v-1c0-.55-.45-1-1-1z"],tree:["M9 11.857V16H7v-4.143L1 13l3.885-4.44L3 9l3.07-4.297L5 5l3-5 3 5-1.07-.297L13 9l-1.885-.44L15 13l-6-1.143z"],"trending-down":["M15 7c-.55 0-1 .45-1 1v.59l-4.29-4.3A.997.997 0 009 4c-.16 0-.31.05-.44.11V4.1L5 5.88 1.45 4.11v.01C1.31 4.05 1.16 4 1 4c-.55 0-1 .45-1 1 0 .39.23.72.56.89v.01l4 2v-.01c.13.06.28.11.44.11s.31-.05.44-.11v.01L8.8 6.22 12.59 10H12c-.55 0-1 .45-1 1s.45 1 1 1h3c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1z"],"trending-up":["M15 4h-3c-.55 0-1 .45-1 1s.45 1 1 1h.59L8.8 9.78 5.45 8.11v.01C5.31 8.05 5.16 8 5 8s-.31.05-.44.11V8.1l-4 2v.01c-.33.17-.56.5-.56.89 0 .55.45 1 1 1 .16 0 .31-.05.44-.11v.01L5 10.12l3.55 1.78v-.01c.14.06.29.11.45.11.28 0 .53-.11.71-.29L14 7.41V8c0 .55.45 1 1 1s1-.45 1-1V5c0-.55-.45-1-1-1z"],truck:["M12.5 0a.5.5 0 01.5.5V9a1 1 0 011 1v2h.5a.5.5 0 01.5.5v1a.5.5 0 01-.5.5H13v1a1 1 0 01-2 0v-1H5v1a1 1 0 01-2 0v-1H1.5a.5.5 0 01-.5-.5v-1a.5.5 0 01.5-.5H2v-2a1 1 0 011-1V.5a.5.5 0 011 0V3a2 2 0 012-2h4a2 2 0 012 2V.5a.5.5 0 01.5-.5zM9 8H7a1 1 0 00-1 1v2a1 1 0 001 1h2a1 1 0 001-1V9a1 1 0 00-1-1zm3.5 3h-1a.5.5 0 100 1h1a.5.5 0 100-1zm-8 0h-1a.5.5 0 100 1h1a.5.5 0 100-1zM9 9a.5.5 0 01.5.5v1l-.008.09A.5.5 0 019 11H7l-.09-.008a.5.5 0 01-.41-.492v-1l.008-.09A.5.5 0 017 9zm2-5H5v2h6V4z"],"two-columns":["M3.99-.01h-3c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-14c0-.55-.45-1-1-1zm11.71 7.3l-2-2a1.003 1.003 0 00-1.71.71v4a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71s-.11-.53-.29-.71zM9.99-.01h-3c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-14c0-.55-.45-1-1-1z"],unarchive:["M13.382 0a1 1 0 01.894.553L16 4v11a1 1 0 01-1 1H1a1 1 0 01-1-1V4L1.724.553A1 1 0 012.618 0h10.764zM8 6c-.28 0-.53.11-.71.29l-2 2-.084.096A1.003 1.003 0 006.71 9.71l.29-.3V12l.007.116c.058.496.482.884.993.884.55 0 1-.45 1-1V9.41l.29.29.081.076A.97.97 0 0010 10a1.003 1.003 0 00.71-1.71l-2-2-.096-.084A1.002 1.002 0 008 6zm5-4H3L2 4h12l-1-2z"],underline:["M8 14c2.8 0 5-2.2 5-5V3c0-.6-.4-1-1-1s-1 .4-1 1v6c0 1.7-1.3 3-3 3s-3-1.3-3-3V3c0-.6-.4-1-1-1s-1 .4-1 1v6c0 2.8 2.2 5 5 5zM13.5 15h-11c-.3 0-.5.2-.5.5s.2.5.5.5h11c.3 0 .5-.2.5-.5s-.2-.5-.5-.5z"],undo:["M4 11c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm7-7H3.41L4.7 2.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3C.11 4.47 0 4.72 0 5c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L3.41 6H11c1.66 0 3 1.34 3 3s-1.34 3-3 3H7v2h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"],"ungroup-objects":["M3.5 5C1.57 5 0 6.57 0 8.5S1.57 12 3.5 12 7 10.43 7 8.5 5.43 5 3.5 5zm9 0C10.57 5 9 6.57 9 8.5s1.57 3.5 3.5 3.5S16 10.43 16 8.5 14.43 5 12.5 5z"],"unknown-vehicle":["M10.507 9.75v-3.5c0-.089.023-.171.051-.25h-7.55c-.176 0-.061-.824 0-1l.729-1.63c.06-.177.095-.37.27-.37h4.5V1.01c-.166-.003-.32-.01-.5-.01-2.72 0-4.036.402-4.036.402-.508.155-1.079.711-1.268 1.237L1.94 4.756H.887c-.483 0-.88.423-.88.939s.397.939.88.939h.376L1.008 7c-.034.685 0 1.436 0 2v5c0 .657.384 1 1 1s1-.343 1-1v-1h10v1c0 .657.383 1 1 1s1-.343 1-1v-3.5h-3.75a.75.75 0 01-.75-.75zm-5.5.25h-2V8h2v2zm11-4.305zM15.34.826a2.807 2.807 0 00-.932-.598c-.386-.16-.868-.241-1.445-.241-.447 0-.851.076-1.213.228-.362.153-.67.364-.926.636s-.456.592-.598.963a3.535 3.535 0 00-.218 1.144V3h1.789c.003-.208.023-.405.069-.588.049-.193.124-.362.225-.506.102-.144.232-.259.39-.345.159-.087.348-.13.567-.13.325 0 .58.09.762.272.183.18.275.46.275.839.008.222-.031.407-.116.555a1.654 1.654 0 01-.335.408 7.4 7.4 0 01-.452.37c-.162.123-.316.27-.463.438a2.556 2.556 0 00-.384.611c-.11.239-.177.535-.2.889V6h1.645v-.1c.032-.248.111-.453.237-.618.126-.164.27-.31.433-.438.163-.128.335-.255.518-.383a2.413 2.413 0 00.878-1.117c.102-.255.152-.58.152-.975A2.241 2.241 0 0015.34.826zM12.007 7v2h2V7h-2z"],unlock:["M11.99-.01c-2.21 0-4 1.79-4 4v3h-7c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-7c0-.55-.45-1-1-1h-3v-3c0-1.1.9-2 2-2s2 .9 2 2v1c0 .55.45 1 1 1s1-.45 1-1v-1c0-2.21-1.79-4-4-4z"],unpin:["M9.39 1c-.5.5-.4 1.48.15 2.53L4.38 7.54C2.85 6.5 1.52 6.07 1 6.59l3.5 3.5c-.02.02-1.4 2.8-1.4 2.8l2.8-1.4 3.5 3.5c.53-.53.1-1.86-.95-3.38l4.02-5.16c1.04.55 2.01.65 2.51.14L9.39 1z"],unresolve:["M11 3c-.55 0-1.07.09-1.57.26a6.46 6.46 0 010 9.48c.5.17 1.02.26 1.57.26 2.76 0 5-2.24 5-5s-2.24-5-5-5zM9.78 9.38l.09-.27c.08-.36.13-.73.13-1.11s-.05-.75-.13-1.11l-.09-.27a5.32 5.32 0 00-.29-.79l-.12-.21c-.14-.27-.31-.52-.51-.76a.7.7 0 00-.08-.1c-.24-.27-.49-.52-.78-.74-.43-.32-.92-.58-1.45-.75l.01-.01c-.1-.03-.2-.05-.3-.08-.12-.03-.23-.07-.36-.09A5.28 5.28 0 005 3C2.24 3 0 5.24 0 8s2.24 5 5 5c.31 0 .61-.04.9-.09.12-.02.24-.06.36-.09.1-.03.21-.04.3-.08l-.01-.01c.88-.29 1.64-.8 2.22-1.49.03-.03.06-.07.09-.1.19-.24.36-.49.51-.76.04-.07.08-.14.11-.21.13-.25.23-.52.3-.79z"],updated:["M8 0a7.95 7.95 0 00-6 2.74V1c0-.55-.45-1-1-1S0 .45 0 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H3.54C4.64 2.78 6.22 2 8 2c3.31 0 6 2.69 6 6 0 2.61-1.67 4.81-4 5.63-.63.22-1.29.37-2 .37-3.31 0-6-2.69-6-6 0-.55-.45-1-1-1s-1 .45-1 1c0 4.42 3.58 8 8 8 .34 0 .67-.03 1-.07.02 0 .04-.01.06-.01C12.98 15.4 16 12.06 16 8c0-4.42-3.58-8-8-8zm3 5c-.28 0-.53.11-.71.29L7 8.58 5.71 7.29a1.003 1.003 0 00-1.42 1.42l2 2c.18.18.43.29.71.29.28 0 .53-.11.71-.29l4-4A1.003 1.003 0 0011 5z"],upload:["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm3 8c-.28 0-.53-.11-.71-.29L9 6.41V12c0 .55-.45 1-1 1s-1-.45-1-1V6.41l-1.29 1.3a1.003 1.003 0 01-1.42-1.42l3-3C7.47 3.11 7.72 3 8 3s.53.11.71.29l3 3A1.003 1.003 0 0111 8z"],user:["M7.99-.01A7.998 7.998 0 00.03 8.77c.01.09.03.18.04.28.02.15.04.31.07.47.02.11.05.22.08.34.03.13.06.26.1.38.04.12.08.25.12.37.04.11.08.21.12.32a6.583 6.583 0 00.3.65c.07.14.14.27.22.4.04.07.08.13.12.2l.27.42.1.13a7.973 7.973 0 003.83 2.82c.03.01.05.02.07.03.37.12.75.22 1.14.29l.2.03c.39.06.79.1 1.2.1s.81-.04 1.2-.1l.2-.03c.39-.07.77-.16 1.14-.29.03-.01.05-.02.07-.03a8.037 8.037 0 003.83-2.82c.03-.04.06-.08.09-.13.1-.14.19-.28.28-.42.04-.07.08-.13.12-.2.08-.13.15-.27.22-.41.04-.08.08-.17.12-.26.06-.13.11-.26.17-.39.04-.1.08-.21.12-.32.04-.12.08-.24.12-.37.04-.13.07-.25.1-.38.03-.11.06-.22.08-.34.03-.16.05-.31.07-.47.01-.09.03-.18.04-.28.02-.26.04-.51.04-.78-.03-4.41-3.61-7.99-8.03-7.99zm0 14.4c-1.98 0-3.75-.9-4.92-2.31.67-.36 1.49-.66 2.14-.95 1.16-.52 1.04-.84 1.08-1.27.01-.06.01-.11.01-.17-.41-.36-.74-.86-.96-1.44v-.01c0-.01-.01-.02-.01-.02-.05-.13-.09-.26-.12-.39-.28-.05-.44-.35-.5-.63-.06-.11-.18-.38-.15-.69.04-.41.2-.59.38-.67v-.06c0-.51.05-1.24.14-1.72.02-.13.05-.26.09-.39.17-.59.53-1.12 1.01-1.49.49-.38 1.19-.59 1.82-.59.62 0 1.32.2 1.82.59.48.37.84.9 1.01 1.49.04.13.07.26.09.4.09.48.14 1.21.14 1.72v.07c.18.08.33.26.37.66.03.31-.1.58-.16.69-.06.27-.21.57-.48.62-.03.13-.07.26-.12.38 0 .01-.01.04-.01.04-.21.57-.54 1.06-.94 1.42 0 .06.01.13.01.19.04.43-.12.75 1.05 1.27.65.29 1.47.6 2.14.95a6.415 6.415 0 01-4.93 2.31z"],variable:["M3.94 3.15c.47-.66 1.05-1.24 1.76-1.73l.13-.4c-1.11.45-2.05 1.01-2.84 1.7-1.02.88-1.8 1.9-2.32 3.05C.22 6.76 0 7.75 0 8.75c0 1.75.66 3.5 1.99 5.25l.13-.42c-.39-.94-.59-1.82-.59-2.63 0-1.28.22-2.64.67-4.1.45-1.45 1.03-2.69 1.74-3.7zm7.51 6.41l-.27-.15c-.3.41-.52.66-.66.77-.09.06-.21.1-.33.1-.15 0-.3-.1-.45-.28-.25-.33-.59-1.22-1.01-2.69.38-.65.69-1.08.95-1.28.19-.15.39-.22.59-.22.08 0 .22.03.43.08.2.06.39.08.54.08.22 0 .4-.07.54-.22.15-.15.22-.34.22-.57 0-.25-.07-.45-.22-.59-.15-.15-.35-.22-.63-.22-.24 0-.47.06-.69.17-.21.11-.49.36-.82.74-.25.28-.61.78-1.1 1.48a6.72 6.72 0 00-.97-2.38l-2.59.44-.05.27c.19-.04.36-.06.49-.06.26 0 .47.11.64.33.26.34.63 1.38 1.11 3.12-.37.49-.63.81-.77.96-.23.24-.41.4-.56.47-.11.06-.24.09-.39.09-.11 0-.29-.06-.53-.18-.17-.07-.32-.11-.45-.11-.25 0-.46.08-.62.24-.16.16-.24.37-.24.61 0 .23.08.42.23.57.15.15.35.22.61.22.25 0 .48-.05.7-.15.22-.1.49-.32.82-.65.33-.33.78-.86 1.36-1.59.22.69.42 1.19.58 1.51.16.31.35.54.56.68.21.14.47.21.79.21.31 0 .62-.11.93-.33.4-.29.82-.77 1.26-1.47zm2.56-8.54l-.12.42c.39.95.59 1.82.59 2.64 0 1.09-.17 2.26-.5 3.51-.26.96-.6 1.87-1.02 2.71-.42.85-.82 1.51-1.21 1.98-.39.48-.87.92-1.44 1.32l-.14.4c1.11-.45 2.05-1.02 2.84-1.7 1.03-.89 1.81-1.91 2.33-3.05.44-.99.66-1.99.66-3 0-1.73-.66-3.48-1.99-5.23z"],"vertical-bar-chart-asc":["M6 7c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1s1-.45 1-1V8c0-.55-.45-1-1-1zM2 9c-.55 0-1 .45-1 1v5c0 .55.45 1 1 1s1-.45 1-1v-5c0-.55-.45-1-1-1zm8-5c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1s1-.45 1-1V5c0-.55-.45-1-1-1zm4-4c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1z"],"vertical-bar-chart-desc":["M6 4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1s1-.45 1-1V5c0-.55-.45-1-1-1zM2 0c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm8 7c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1s1-.45 1-1V8c0-.55-.45-1-1-1zm4 2c-.55 0-1 .45-1 1v5c0 .55.45 1 1 1s1-.45 1-1v-5c0-.55-.45-1-1-1z"],"vertical-distribution":["M1 2h14c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1s.45 1 1 1zm14 11H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM3 5c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1H3z"],video:["M15 2H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zM5 11V5l6 3-6 3z"],virus:["M11.918 11.107l.737.737.052-.051A1 1 0 0114.2 13.12l-.078.087-1.414 1.414a1 1 0 01-1.492-1.327l.029-.033-.863-.863c-.426.231-.89.402-1.38.502L9 14l.117.007A1 1 0 019 16H7l-.117-.007A1 1 0 017 14v-1.1a4.967 4.967 0 01-1.447-.539l-.846.846.078.087a1 1 0 01-1.492 1.327l-1.414-1.414-.078-.087a1 1 0 011.492-1.327l.744-.744A4.986 4.986 0 013.23 9.5H2a1 1 0 01-1.993.117L0 9.5v-2a1 1 0 011.993-.117L2 7.5h1.025a4.973 4.973 0 01.905-2.405l-.512-.513-.125.125A1 1 0 011.8 3.38l.078-.087 1.414-1.414a1 1 0 011.529 1.277l.573.575a4.969 4.969 0 011.604-.63V2l-.116-.007a1 1 0 010-1.986L7 0h2a1 1 0 01.117 1.993L9 2l.001 1.1c.639.13 1.233.381 1.757.73l.535-.537-.078-.087a1 1 0 011.492-1.327l1.414 1.414.078.087a1 1 0 01-1.492 1.327l-.535.536a4.97 4.97 0 01.803 2.257H14l.007-.117A1 1 0 0116 7.5v2l-.007.117A1 1 0 0114 9.5h-1.229a4.987 4.987 0 01-.853 1.607zM10 9a1 1 0 100 2 1 1 0 000-2zM6.5 5a1.5 1.5 0 100 3 1.5 1.5 0 000-3z"],"volume-down":["M9 2c-.28 0-.53.11-.71.29L5.59 5H3c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h2.59l2.71 2.71c.17.18.42.29.7.29.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm3.57 1.44l-1.59 1.22C11.62 5.61 12 6.76 12 8s-.38 2.39-1.02 3.34l1.59 1.22C13.47 11.27 14 9.7 14 8c0-1.7-.53-3.27-1.43-4.56z"],"volume-off":["M11 2c-.28 0-.53.11-.71.29L7.59 5H5c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h2.59l2.71 2.71c.17.18.42.29.7.29.55 0 1-.45 1-1V3c0-.55-.45-1-1-1z"],"volume-up":["M7 1.86c-.28 0-.53.11-.71.29l-2.7 2.71H1c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h2.59l2.71 2.71a1.003 1.003 0 001.71-.71v-10c-.01-.55-.46-1-1.01-1zm6.74-.99l-1.58 1.22A9.985 9.985 0 0114 7.86c0 2.16-.69 4.15-1.85 5.78l1.58 1.22c1.42-1.97 2.26-4.38 2.26-7 .01-2.61-.84-5.02-2.25-6.99zM8.98 4.52C9.62 5.48 10 6.63 10 7.86s-.38 2.39-1.02 3.34l1.59 1.22c.9-1.29 1.43-2.86 1.43-4.56 0-1.7-.53-3.27-1.43-4.56L8.98 4.52z"],walk:["M13 8h-2c-.16 0-.31-.05-.44-.11v.01l-1.02-.51-.37 1.86 1.38.92-.01.02c.27.17.46.46.46.81v4c0 .55-.45 1-1 1s-1-.45-1-1v-3.46l-1.27-.85-1.8 4.67h-.01A.98.98 0 015 16c-.55 0-1-.45-1-1 0-.13.03-.25.07-.36h-.01L7.39 6H5.62l-.73 1.45h-.01C4.72 7.77 4.39 8 4 8c-.55 0-1-.45-1-1 0-.16.05-.31.11-.44H3.1l1-2h.01c.17-.33.5-.56.89-.56h3.16l.29-.75C8.17 2.9 8 2.47 8 2c0-1.1.9-2 2-2s2 .9 2 2c0 1-.73 1.82-1.69 1.97l-.5 1.32 1.43.71H13c.55 0 1 .45 1 1s-.45 1-1 1z"],"warning-sign":["M15.84 13.5l.01-.01-7-12-.01.01c-.17-.3-.48-.5-.85-.5s-.67.2-.85.5l-.01-.01-7 12 .01.01c-.09.15-.15.31-.15.5 0 .55.45 1 1 1h14c.55 0 1-.45 1-1 0-.19-.06-.35-.15-.5zm-6.85-.51h-2v-2h2v2zm0-3h-2v-5h2v5z"],"waterfall-chart":["M8 7c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm-4 4h1c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1zm7-6c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1s-1 .45-1 1v1c0 .55.45 1 1 1zm4-3h-1c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm0 10H2V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],widget:["M13 11h2V5h-2v6zM3 5H1v6h2V5zm11-1c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM2 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM5 3h6V1H5v2zM2 0C.9 0 0 .9 0 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm3 15h6v-2H5v2z"],"widget-button":["M1 3h14c.55 0 1 .45 1 1v8c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1zm1 2v6h12V5H2zm3 4c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm3 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm3 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"widget-footer":["M14 0H2c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H3v-3h10v3zm0-4H3V2h10v8z"],"widget-header":["M14 0H2c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H3V6h10v8zm0-9H3V2h10v3z"],wrench:["M15.83 3.7l-3.06 3.05-2.84-.7-.7-2.83L12.29.17a5.004 5.004 0 00-4.83 1.29 4.967 4.967 0 00-1.12 5.36L.58 12.58c-.36.36-.58.86-.58 1.41 0 1.1.9 2 2 2 .55 0 1.05-.22 1.41-.59l5.77-5.77c1.79.69 3.91.33 5.35-1.12 1.32-1.3 1.74-3.15 1.3-4.81z"],"zoom-in":["M7.99 5.99v-2c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1v-2h2c.55 0 1-.45 1-1s-.45-1-1-1h-2zm7.56 7.44l-2.67-2.68a6.94 6.94 0 001.11-3.76c0-3.87-3.13-7-7-7s-7 3.13-7 7 3.13 7 7 7c1.39 0 2.68-.42 3.76-1.11l2.68 2.67a1.498 1.498 0 102.12-2.12zm-8.56-1.44c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"],"zoom-out":["M3.99 5.99c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1h-6zm11.56 7.44l-2.67-2.68a6.94 6.94 0 001.11-3.76c0-3.87-3.13-7-7-7s-7 3.13-7 7 3.13 7 7 7c1.39 0 2.68-.42 3.76-1.11l2.68 2.67a1.498 1.498 0 102.12-2.12zm-8.56-1.44c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"],"zoom-to-fit":["M11 10a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-2-2a1.003 1.003 0 00-1.42 1.42L12.59 8 11.3 9.29c-.19.18-.3.43-.3.71zM1 5c.55 0 1-.45 1-1V2h2c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1v3c0 .55.45 1 1 1zm4 1a1.003 1.003 0 00-1.71-.71l-2 2C1.11 7.47 1 7.72 1 8c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42L3.41 8 4.7 6.71c.19-.18.3-.43.3-.71zm1-1c.28 0 .53-.11.71-.29L8 3.41 9.29 4.7c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-2-2C8.53 1.11 8.28 1 8 1s-.53.11-.71.29l-2 2A1.003 1.003 0 006 5zm9 6c-.55 0-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1h3c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1zm0-11h-3c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zM4 14H2v-2c0-.55-.45-1-1-1s-1 .45-1 1v3c0 .55.45 1 1 1h3c.55 0 1-.45 1-1s-.45-1-1-1zm6-3c-.28 0-.53.11-.71.29L8 12.59 6.71 11.3A.965.965 0 006 11a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l2-2A1.003 1.003 0 0010 11z"]},yc={add:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm5-9h-4V5c0-.55-.45-1-1-1s-1 .45-1 1v4H5c-.55 0-1 .45-1 1s.45 1 1 1h4v4c0 .55.45 1 1 1s1-.45 1-1v-4h4c.55 0 1-.45 1-1s-.45-1-1-1z"],"add-column-left":["M4 11h2v2c0 .55.45 1 1 1s1-.45 1-1v-2h2c.55 0 1-.45 1-1s-.45-1-1-1H8V7c0-.55-.45-1-1-1s-1 .45-1 1v2H4c-.55 0-1 .45-1 1s.45 1 1 1zM19 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-7 18H2V2h10v16zm6 0h-5V2h5v16z"],"add-column-right":["M10 11h2v2c0 .55.45 1 1 1s1-.45 1-1v-2h2c.55 0 1-.45 1-1s-.45-1-1-1h-2V7c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1zm9-11H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM7 18H2V2h5v16zm11 0H8V2h10v16z"],"add-location":["M10 0a1 1 0 010 2 8 8 0 108 8 1 1 0 012 0c0 5.523-4.477 10-10 10S0 15.523 0 10 4.477 0 10 0zm0 6a4 4 0 110 8 4 4 0 010-8zm6-6c.6 0 1 .4 1 1v2h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v2c0 .6-.4 1-1 1s-1-.4-1-1V5h-2c-.6 0-1-.4-1-1 0-.5.4-1 1-1h2V1c0-.6.4-1 1-1z"],"add-row-bottom":["M19 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H2V8h16v10zm0-11H2V2h16v5zM7 14h2v2c0 .55.45 1 1 1s1-.45 1-1v-2h2c.55 0 1-.45 1-1s-.45-1-1-1h-2v-2c0-.55-.45-1-1-1s-1 .45-1 1v2H7c-.55 0-1 .45-1 1s.45 1 1 1z"],"add-row-top":["M7 8h2v2c0 .55.45 1 1 1s1-.45 1-1V8h2c.55 0 1-.45 1-1s-.45-1-1-1h-2V4c0-.55-.45-1-1-1s-1 .45-1 1v2H7c-.55 0-1 .45-1 1s.45 1 1 1zm12-8H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H2v-5h16v5zm0-6H2V2h16v10z"],"add-to-artifact":["M13 12H1c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1zm0 4H1c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1zM1 6h9c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm12 2H1c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1zm6-4h-2V2c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V6h2c.55 0 1-.45 1-1s-.45-1-1-1z"],"add-to-folder":["M.01 10V6H20v10c0 .55-.45 1-1 1H9.995v-3.99C9.965 11.332 8.635 10 6.987 10H.01zM19 3c.55 0 1 .45.99 1v1H0V2c0-.55.45-1 1-1h5.997c.28 0 .53.11.71.29L9.414 3H19zM6.987 12c.55 0 .999.45 1.009 1.01v5c0 .55-.45 1-1 1s-.999-.45-.999-1v-2.59l-4.288 4.29a1.003 1.003 0 01-1.42-1.42L4.579 14H1.989c-.55 0-1-.45-1-1s.45-1 1-1h4.998z"],airplane:["M20 2c0-1.1-.9-2-2-2-.55 0-1.05.22-1.41.59l-4.84 4.84L2 1 1 3l7.53 5.64L4.17 13H1l-1 1 4 2 2 4 1-1v-3.17l4.36-4.36L17 19l2-1-4.43-9.74 4.84-4.84c.37-.37.59-.87.59-1.42z"],"align-center":["M5 5c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1H5zM1 3h18c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm12 12c.55 0 1-.45 1-1s-.45-1-1-1H7c-.55 0-1 .45-1 1s.45 1 1 1h6zm4 2H3c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm2-8H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],"align-justify":["M1 3h18c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm18 14H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm0-12H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm0 4H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm0 4H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],"align-left":["M1 7h10c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm0-4h18c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm14 14H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm4-8H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zM1 15h6c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1z"],"align-right":["M19 17H5c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM1 3h18c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm18 10h-6c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1zm0-4H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm0-4H9c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1z"],"alignment-bottom":["M12 16h4c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1h-4c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1zm7 2H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zM4 16h4c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1z"],"alignment-horizontal-center":["M19 9h-2V7c0-.55-.45-1-1-1h-4c-.55 0-1 .45-1 1v2H9V3c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v6H1c-.55 0-1 .45-1 1s.45 1 1 1h2v6c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-6h2v2c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-2h2c.55 0 1-.45 1-1s-.45-1-1-1z"],"alignment-left":["M1 0C.45 0 0 .45 0 1v18c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm11 11H5c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1zm7-8H5c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"alignment-right":["M19 0c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm-4 11H8c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1zm0-8H1c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"alignment-top":["M8 4H4c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm11-4H1C.45 0 0 .45 0 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm-3 4h-4c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1z"],"alignment-vertical-center":["M17 3h-6V1c0-.55-.45-1-1-1S9 .45 9 1v2H3c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h6v2H7c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1v-2h2c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1h-2V9h6c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],annotation:["M9.41 13.41l7.65-7.65-2.83-2.83-7.65 7.65 2.83 2.83zm10-10c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2-.55 0-1.05.22-1.41.59l-1.65 1.65 2.83 2.83 1.64-1.66zM18 18H2V2h8.93l2-2H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V7.07l-2 2V18zM4 16l4.41-1.59-2.81-2.79L4 16z"],"app-header":["M19 0a1 1 0 011 1v18a1 1 0 01-1 1H1a1 1 0 01-1-1V1a1 1 0 011-1h18zM8 6a1 1 0 00-1.993-.117L6 6v8a1 1 0 001.993.117L8 14v-3h4v3a1 1 0 001.993.117L14 14V6a1 1 0 00-1.993-.117L12 6v3H8V6z"],application:["M3.5 9h9c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-9c-.28 0-.5.22-.5.5s.22.5.5.5zm0 2h5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-5c-.28 0-.5.22-.5.5s.22.5.5.5zM19 1H1c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zm-1 16H2V6h16v11zM3.5 13h7c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-7c-.28 0-.5.22-.5.5s.22.5.5.5z"],applications:["M15 5H1c-.55 0-1 .45-1 1v13c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-1 13H2V8h12v10zM3.5 10h7c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-7c-.28 0-.5.22-.5.5s.22.5.5.5zm0 2h3c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-3c-.28 0-.5.22-.5.5s.22.5.5.5zm0 2h5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-5c-.28 0-.5.22-.5.5s.22.5.5.5zM19 0H5c-.55 0-1 .45-1 1v3h2V3h12v10h-1v2h2c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],archive:["M16.434 0a1 1 0 01.857.486L20 5v14a1 1 0 01-1 1H1a1 1 0 01-1-1V5L2.709.486A1 1 0 013.566 0h12.868zM10 8c-.55 0-1 .45-1 1v4.58l-1.29-1.29-.081-.073A.996.996 0 007 11.99a1.003 1.003 0 00-.71 1.71l3 3 .096.084c.168.13.38.206.614.206.28 0 .53-.11.71-.29l3-3 .084-.096a1.003 1.003 0 00-1.504-1.324L11 13.58V9l-.007-.116A1.004 1.004 0 0010 8zm6-6H4L2 5.002h16L16 2z"],array:["M19 0a1 1 0 01.993.883L20 1v18a1 1 0 01-.883.993L19 20h-4a1 1 0 01-.117-1.993L15 18h3V2h-3a1 1 0 01-.993-.883L14 1a1 1 0 01.883-.993L15 0h4zM5 0a1 1 0 01.117 1.993L5 2H2v16h3a1 1 0 01.993.883L6 19a1 1 0 01-.883.993L5 20H1a1 1 0 01-.993-.883L0 19V1A1 1 0 01.883.007L1 0h4zm5 9a1 1 0 110 2 1 1 0 010-2zM6 9a1 1 0 110 2 1 1 0 010-2zm8 0a1 1 0 110 2 1 1 0 010-2z"],"array-boolean":["M19 0a1 1 0 01.993.883L20 1v18a1 1 0 01-.883.993L19 20h-4a1 1 0 01-.117-1.993L15 18h3V2h-3a1 1 0 01-.993-.883L14 1a1 1 0 01.883-.993L15 0h4zM5 0a1 1 0 01.117 1.993L5 2H2v16h3a1 1 0 01.993.883L6 19a1 1 0 01-.883.993L5 20H1a1 1 0 01-.993-.883L0 19V1A1 1 0 01.883.007L1 0h4zm10 7a1 1 0 01.993.883L16 8v4a1 1 0 01-.883.993L15 13H5a1 1 0 01-.993-.883L4 12V8a1 1 0 01.883-.993L5 7h10zm0 1h-5v4h5V8z"],"array-date":["M19 0a1 1 0 01.993.883L20 1v18a1 1 0 01-.883.993L19 20h-4a1 1 0 01-.117-1.993L15 18h3V2h-3a1 1 0 01-.993-.883L14 1a1 1 0 01.883-.993L15 0h4zM5 0a1 1 0 01.117 1.993L5 2H2v16h3a1 1 0 01.993.883L6 19a1 1 0 01-.883.993L5 20H1a1 1 0 01-.993-.883L0 19V1A1 1 0 01.883.007L1 0h4zm2.5 5a.5.5 0 01.5.5V6h4v-.5a.5.5 0 01.5-.5h1a.5.5 0 01.5.5V6h1a1 1 0 01.993.883L16 7v7a1 1 0 01-.883.993L15 15H5a1 1 0 01-.993-.883L4 14V7a1 1 0 01.883-.993L5 6h1v-.5a.5.5 0 01.5-.5h1zM15 9H5v5h10V9z"],"array-numeric":["M19 0a1 1 0 01.993.883L20 1v18a1 1 0 01-.883.993L19 20h-4a1 1 0 01-.117-1.993L15 18h3V2h-3a1 1 0 01-.993-.883L14 1a1 1 0 01.883-.993L15 0h4zM5 0a1 1 0 01.117 1.993L5 2H2v16h3a1 1 0 01.993.883L6 19a1 1 0 01-.883.993L5 20H1a1 1 0 01-.993-.883L0 19V1A1 1 0 01.883.007L1 0h4zm8.995 6.09c.32 0 .603.047.85.14a1.679 1.679 0 011.015.985c.09.23.135.482.135.755 0 .287-.063.552-.19.795a1.642 1.642 0 01-.57.615v.02l.101.05c.068.039.138.09.209.155.107.097.203.215.29.355a2.09 2.09 0 01.3 1.09c0 .313-.053.597-.16.85a1.898 1.898 0 01-1.12 1.065 2.42 2.42 0 01-.85.145c-.533 0-.99-.127-1.37-.38a1.702 1.702 0 01-.73-1.08c-.013-.067.013-.11.08-.13l.87-.2.041-.003c.038.004.064.028.079.073.073.2.193.37.36.51.167.14.39.21.67.21.32 0 .567-.095.74-.285.173-.19.26-.432.26-.725 0-.347-.1-.618-.3-.815-.2-.197-.47-.295-.81-.295h-.29l-.044-.006c-.037-.013-.056-.044-.056-.094V9.1l.006-.044c.013-.037.044-.056.094-.056h.27l.145-.008a.925.925 0 00.575-.262c.18-.18.27-.42.27-.72 0-.273-.08-.495-.24-.665-.16-.17-.383-.255-.67-.255-.253 0-.453.063-.6.19-.147.127-.25.297-.31.51-.02.06-.06.083-.12.07l-.85-.2-.042-.015c-.035-.02-.048-.055-.038-.105a1.684 1.684 0 01.645-1.035c.17-.13.37-.232.6-.305.23-.073.482-.11.755-.11zm-7.99.11l.044.006c.037.013.056.044.056.094v6.6l-.006.044c-.013.037-.044.056-.094.056h-.92l-.044-.006c-.037-.013-.056-.044-.056-.094V7.54h-.02l-1.04.73-.04.02c-.047.016-.07-.01-.07-.08V7.19l.008-.051a.196.196 0 01.062-.089l1.09-.79.051-.033a.295.295 0 01.129-.027h.85zm3.34-.11c.32 0 .603.05.85.15.247.1.455.235.625.405.17.17.3.37.39.6.09.23.135.478.135.745 0 .307-.057.588-.17.845a3.16 3.16 0 01-.47.745l-1.98 2.4V12h2.52l.044.006c.037.013.056.044.056.094v.8l-.006.044c-.013.037-.044.056-.094.056h-3.82l-.044-.006c-.037-.013-.056-.044-.056-.094v-.75l.006-.05a.165.165 0 01.044-.08l2.4-2.99.124-.167c.077-.11.143-.222.196-.333.08-.167.12-.347.12-.54a.92.92 0 00-.235-.64c-.157-.173-.378-.26-.665-.26-.273 0-.487.077-.64.23-.153.153-.247.36-.28.62-.013.067-.05.093-.11.08l-.88-.18-.043-.015c-.035-.02-.047-.055-.037-.105a1.78 1.78 0 01.56-1.115c.167-.157.372-.282.615-.375a2.35 2.35 0 01.845-.14z"],"array-string":["M19 0a1 1 0 01.993.883L20 1v18a1 1 0 01-.883.993L19 20h-4a1 1 0 01-.117-1.993L15 18h3V2h-3a1 1 0 01-.993-.883L14 1a1 1 0 01.883-.993L15 0h4zM5 0a1 1 0 01.117 1.993L5 2H2v16h3a1 1 0 01.993.883L6 19a1 1 0 01-.883.993L5 20H1a1 1 0 01-.993-.883L0 19V1A1 1 0 01.883.007L1 0h4zm2.012 6c.643 0 1.203.266 1.68.797.477.53.715 1.246.715 2.145a4.472 4.472 0 01-.965 2.814c-.644.83-1.66 1.5-3.047 2.011v-.581l.26-.104a3.87 3.87 0 001.624-1.285c.457-.632.686-1.29.686-1.971 0-.148-.023-.256-.07-.326-.023-.047-.054-.07-.093-.07-.038 0-.1.031-.186.093-.248.179-.558.268-.93.268-.45 0-.843-.18-1.18-.541A1.817 1.817 0 015 7.965c0-.527.194-.986.581-1.378A1.934 1.934 0 017.011 6zm5.593 0c.643 0 1.203.266 1.68.797.477.53.715 1.246.715 2.145a4.472 4.472 0 01-.965 2.814c-.644.83-1.659 1.5-3.047 2.011v-.581l.26-.104a3.87 3.87 0 001.624-1.285c.457-.632.686-1.29.686-1.971 0-.148-.023-.256-.07-.326-.023-.047-.054-.07-.093-.07-.038 0-.1.031-.186.093-.248.179-.558.268-.93.268-.45 0-.843-.18-1.18-.541a1.817 1.817 0 01-.506-1.285c0-.527.194-.986.581-1.378A1.934 1.934 0 0112.604 6z"],"array-timestamp":["M19 0a1 1 0 01.993.883L20 1v18a1 1 0 01-.883.993L19 20h-4a1 1 0 01-.117-1.993L15 18h3V2h-3a1 1 0 01-.993-.883L14 1a1 1 0 01.883-.993L15 0h4zM5 0a1 1 0 01.117 1.993L5 2H2v16h3a1 1 0 01.993.883L6 19a1 1 0 01-.883.993L5 20H1a1 1 0 01-.993-.883L0 19V1A1 1 0 01.883.007L1 0h4zm5 4a6 6 0 110 12 6 6 0 010-12zm0 1a5 5 0 100 10 5 5 0 000-10zm2.854 2.146a.5.5 0 01.057.638l-.057.07-2.5 2.5a.5.5 0 01-.638.057l-.07-.057-1.5-1.5a.5.5 0 01.638-.765l.07.057L10 9.293l2.146-2.147a.5.5 0 01.708 0z"],"arrow-bottom-left":["M18 3a1.003 1.003 0 00-1.71-.71L4 14.59V7c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1H5.41l12.3-12.29c.18-.18.29-.43.29-.71z"],"arrow-bottom-right":["M17 6c-.55 0-1 .45-1 1v7.59L3.71 2.29a1.003 1.003 0 00-1.42 1.42L14.59 16H7c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1z"],"arrow-down":["M16 11c-.3 0-.5.1-.7.3L11 15.6V2c0-.5-.4-1-1-1s-1 .5-1 1v13.6l-4.3-4.3c-.2-.2-.4-.3-.7-.3-.5 0-1 .4-1 1 0 .3.1.5.3.7l6 6c.2.2.4.3.7.3s.5-.1.7-.3l6-6c.2-.2.3-.4.3-.7 0-.6-.5-1-1-1z"],"arrow-left":["M18 9H4.41L8.7 4.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-6 6c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l6 6a1.003 1.003 0 001.42-1.42L4.41 11H18c.55 0 1-.45 1-1s-.45-1-1-1z"],"arrow-right":["M18.71 9.29l-6-6a1.003 1.003 0 00-1.42 1.42L15.59 9H2c-.55 0-1 .45-1 1s.45 1 1 1h13.59l-4.29 4.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l6-6c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],"arrow-top-left":["M17.71 16.29L5.41 4H13c.55 0 1-.45 1-1s-.45-1-1-1H3c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1s1-.45 1-1V5.41L16.29 17.7c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],"arrow-top-right":["M17 2H7c-.55 0-1 .45-1 1s.45 1 1 1h7.59L2.29 16.29a1.003 1.003 0 001.42 1.42L16 5.41V13c0 .55.45 1 1 1s1-.45 1-1V3c0-.55-.45-1-1-1z"],"arrow-up":["M16.7 7.3l-6-6c-.2-.2-.4-.3-.7-.3s-.5.1-.7.3l-6 6c-.2.2-.3.4-.3.7 0 .6.5 1 1 1 .3 0 .5-.1.7-.3L9 4.4V18c0 .5.4 1 1 1s1-.5 1-1V4.4l4.3 4.3c.2.2.4.3.7.3.5 0 1-.4 1-1 0-.3-.1-.5-.3-.7z"],"arrows-horizontal":["M19.7 9.3l-5-5c-.2-.2-.4-.3-.7-.3-.6 0-1 .4-1 1 0 .3.1.5.3.7L16.6 9H3.4l3.3-3.3c.2-.2.3-.4.3-.7 0-.6-.4-1-1-1-.3 0-.5.1-.7.3l-5 5c-.2.2-.3.4-.3.7s.1.5.3.7l5 5c.2.2.4.3.7.3.6 0 1-.4 1-1 0-.3-.1-.5-.3-.7L3.4 11h13.2l-3.3 3.3c-.2.2-.3.4-.3.7 0 .6.4 1 1 1 .3 0 .5-.1.7-.3l5-5c.2-.2.3-.4.3-.7s-.1-.5-.3-.7z"],"arrows-vertical":["M15 13c-.3 0-.5.1-.7.3L11 16.6V3.4l3.3 3.3c.2.2.4.3.7.3.6 0 1-.4 1-1 0-.3-.1-.5-.3-.7l-5-5c-.2-.2-.4-.3-.7-.3s-.5.1-.7.3l-5 5c-.2.2-.3.4-.3.7 0 .6.4 1 1 1 .3 0 .5-.1.7-.3L9 3.4v13.2l-3.3-3.3c-.2-.2-.4-.3-.7-.3-.6 0-1 .4-1 1 0 .3.1.5.3.7l5 5c.2.2.4.3.7.3s.5-.1.7-.3l5-5c.2-.2.3-.4.3-.7 0-.5-.4-1-1-1z"],asterisk:["M18.52 14.17l.01-.02L11.89 10l6.64-4.15-.01-.02A.97.97 0 0019 5c0-.55-.45-1-1-1-.2 0-.37.07-.52.17l-.01-.02L11 8.2V1c0-.55-.45-1-1-1S9 .45 9 1v7.2L2.53 4.15l-.01.02A.922.922 0 002 4c-.55 0-1 .45-1 1 0 .36.2.66.48.83l-.01.02L8.11 10l-6.64 4.15.01.02A.97.97 0 001 15c0 .55.45 1 1 1 .2 0 .37-.07.52-.17l.01.02L9 11.8V19c0 .55.45 1 1 1s1-.45 1-1v-7.2l6.47 4.04.01-.02c.15.11.32.18.52.18.55 0 1-.45 1-1 0-.36-.2-.66-.48-.83z"],"automatic-updates":["M10 18c-4.42 0-8-3.58-8-8 0-2.52 1.18-4.76 3-6.22V5c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1H2c-.55 0-1 .45-1 1s.45 1 1 1h2.06C1.61 3.82 0 6.71 0 10c0 5.52 4.48 10 10 10 .55 0 1-.45 1-1s-.45-1-1-1zm0-16c1.64 0 3.15.49 4.42 1.34l1.43-1.43A9.869 9.869 0 0010 0c-.55 0-1 .45-1 1s.45 1 1 1zm10 8c0-1.13-.2-2.21-.54-3.22L17.84 8.4A7.962 7.962 0 0115 16.22V15c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1h-2.06c2.45-1.82 4.06-4.71 4.06-8zm0-7a1.003 1.003 0 00-1.71-.71L12 8.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l7-7c.18-.18.29-.43.29-.71z"],backlink:["M18.387 19.79l-.094-.083L14 15.415V18a1 1 0 01-2 0l.003-5.075.017-.126.03-.111.044-.111.052-.098.067-.096.08-.09a1.01 1.01 0 01.112-.097l.11-.071.114-.054.105-.035.15-.03L13 12h5a1 1 0 110 2h-2.585l4.292 4.293a1 1 0 01-1.32 1.497zM7.036 9.136l-4.45 4.45-.117.127a2 2 0 002.818 2.818l.127-.117 4.45-4.449a4 4 0 01-.885 3.704l-.15.16-2 2A4 4 0 011.02 12.33l.15-.16 2-2a3.998 3.998 0 013.865-1.035zm6.671-3.843a1 1 0 01.083 1.32l-.083.094-7 7a1 1 0 01-1.497-1.32l.083-.094 7-7a1 1 0 011.414 0zm4.121-4.121a4 4 0 01.151 5.497l-.15.16-2 2a3.998 3.998 0 01-3.864 1.036l4.45-4.45.116-.128a2 2 0 00-2.818-2.818l-.127.117-4.45 4.45a4 4 0 01.885-3.705l.15-.16 2-2a4 4 0 015.657 0z"],badge:["M16.94 5.73c-.19-1.41.62-2.52 1.38-3.59L17.03.65C14.89 1.76 11.88 1.48 10 0 8.12 1.48 5.11 1.76 2.97.65L1.68 2.14c.76 1.07 1.57 2.18 1.38 3.59C2.68 8.59 0 10.94 1.4 14.08c.56 1.43 1.81 2.37 3.4 2.75 1.95.46 4.4.91 5.2 3.17.8-2.26 3.25-2.71 5.2-3.17 1.6-.38 2.84-1.32 3.4-2.75 1.4-3.14-1.28-5.49-1.66-8.35z"],"ban-circle":["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm5 11H5c-.55 0-1-.45-1-1s.45-1 1-1h10c.55 0 1 .45 1 1s-.45 1-1 1z"],"bank-account":["M19.2 8.02l-.78-.18C18.03 6.4 17.2 5.08 16.08 4l.5-2.28c.11-.42-.22-.78-.61-.72-1.06.12-2 .54-2.67 1.26-1.06-.42-2.34-.66-3.56-.66-3.12 0-5.79 1.5-7.4 3.72-.23-.05-.45-.11-.67-.11C.72 5.21 0 5.98 0 7c0 .72.39 1.32.95 1.62-.06.42-.12.9-.12 1.38 0 2.16.89 4.08 2.28 5.58l-.33 2.04c-.11.72.45 1.38 1.12 1.38h.72c.56 0 1-.42 1.11-1.02l.06-.48c1.17.54 2.5.9 3.95.9 1.39 0 2.78-.3 3.95-.9l.06.48c.11.6.56 1.02 1.11 1.02h.72c.67 0 1.22-.66 1.11-1.38l-.33-1.98c.78-.78 1.34-1.74 1.73-2.76l1-.24c.5-.12.89-.6.89-1.2V9.22c.11-.6-.28-1.08-.78-1.2zM15 10c-.6 0-1-.7-1-1.5S14.4 7 15 7s1 .7 1 1.5-.4 1.5-1 1.5zM7.55 5.83a.99.99 0 01-1.38-.28.99.99 0 01.28-1.38c2.34-1.56 4.77-1.56 7.11 0 .46.31.58.93.28 1.39-.31.46-.93.58-1.39.28-1.67-1.12-3.23-1.12-4.9-.01z"],barcode:["M6 16.98h2v-14H6v14zm3 0h1v-14H9v14zm-6 0h2v-14H3v14zm-3 0h2v-14H0v14zm16 0h2v-14h-2v14zm-4 0h1v-14h-1v14zm7-14v14h1v-14h-1zm-5 14h1v-14h-1v14z"],blank:[],"blocked-person":["M11.55 15.92c-1.48-.65-1.28-1.05-1.33-1.59-.01-.07-.01-.15-.01-.23.51-.45.92-1.07 1.19-1.78 0 0 .01-.04.02-.05.06-.15.11-.32.15-.48.34-.07.54-.44.61-.78.06-.11.14-.35.17-.62C10.33 9.42 8.92 7.38 8.92 5c0-.3.05-.58.09-.87-.33-.08-.67-.13-.99-.13-.79 0-1.68.25-2.31.73-.61.47-1.07 1.13-1.29 1.86-.05.16-.09.33-.11.5-.12.6-.17 1.51-.17 2.14v.08c-.24.09-.45.32-.49.83-.04.39.12.73.2.87.08.35.28.72.63.78.04.17.09.33.15.48 0 .01.01.02.01.03l.01.01c.27.72.7 1.35 1.22 1.8 0 .07-.01.14-.01.21-.05.54.1.94-1.38 1.59C3 16.56.77 17.26.32 18.31-.15 19.38.04 20 .04 20h15.95s.18-.62-.27-1.67c-.46-1.06-2.69-1.75-4.17-2.41zM14.97 0c-2.78 0-5.03 2.24-5.03 5s2.25 5 5.03 5S20 7.76 20 5s-2.25-5-5.03-5zm-3.03 5c0-1.66 1.35-3 3.02-3 .47 0 .9.11 1.29.3l-4.01 3.99c-.18-.4-.3-.83-.3-1.29zm3.03 3c-.47 0-.9-.11-1.29-.3l4.01-3.99c.19.39.3.82.3 1.29 0 1.66-1.36 3-3.02 3z"],bold:["M14.3 9c.4-.8.7-1.6.7-2.5C15 4 13 2 10.5 2H5c-.6 0-1 .4-1 1v13c0 .6.4 1 1 1h6.5c2.5 0 4.5-2 4.5-4.5 0-1.4-.7-2.7-1.7-3.5zM7 5h3.5c.8 0 1.5.7 1.5 1.5S11.3 8 10.5 8H7V5zm4.5 9H7v-3h4.5c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5z"],book:["M3 1v18c0 .55.45 1 1 1h2V0H4c-.55 0-1 .45-1 1zm14-1h-2v8l-2-2-2 2V0H7v20h10c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],bookmark:["M6 0c-.55 0-1 .45-1 1v18c0 .55.32.68.71.29L9.3 15.7a.996.996 0 011.41 0l3.59 3.59c.38.39.7.26.7-.29v-8-4.5V1c0-.55-.45-1-1-1H6z"],box:["M19.89 6.56l-2.99-6h-.01C16.72.23 16.39 0 16 0H4c-.39 0-.72.23-.89.56H3.1l-3 6h.01C.05 6.69 0 6.84 0 7v12c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V7c0-.16-.05-.31-.11-.44zM11 2h4.38l2 4H11V2zM4.62 2H9v4H2.62l2-4zM18 18H2V8h16v10zM8 12h4c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1z"],briefcase:["M19 5h-4V2c0-.55-.45-1-1-1H6c-.55 0-1 .45-1 1v3H1c-.55 0-1 .45-1 1v5h4v-1h2v1h8v-1h2v1h4V6c0-.55-.45-1-1-1zm-6 0H7V3h6v2zm3 8h-2v-1H6v1H4v-1H0v6c0 .55.45 1 1 1h18c.55 0 1-.45 1-1v-6h-4v1z"],"bring-data":["M18 18a1 1 0 010 2H2a1 1 0 010-2h16zM9.995 3.005c.55 0 1 .45 1 .999v9.584l1.29-1.288a1.002 1.002 0 011.42 1.419l-3 2.996a1.015 1.015 0 01-1.42 0l-3-2.997a1.002 1.002 0 011.42-1.419l1.29 1.29V4.013c0-.55.45-1.009 1-1.009zM16 0a1 1 0 110 2 1 1 0 010-2zm-3 0a1 1 0 110 2 1 1 0 010-2zm-3 0a1 1 0 110 2 1 1 0 010-2zM7 0a1 1 0 110 2 1 1 0 010-2zM4 0a1 1 0 110 2 1 1 0 010-2z"],build:["M19.43 16.67L9.31 7.81l1.47-1.56c.41-.44-.15-.8.15-1.6 1.08-2.76 4.19-2.99 4.19-2.99s.45-.47.87-.92C11.98-1 9.26.7 8.04 1.8L3.83 6.25l-.86.92c-.48.51-.48 1.33 0 1.84l-.87.92c-.48-.51-1.26-.51-1.74 0s-.48 1.33 0 1.84l1.74 1.84c.48.51 1.26.51 1.74 0s.48-1.33 0-1.84l.87-.92c.48.51 1.26.51 1.74 0l1.41-1.49 8.81 10.07c.76.76 2 .76 2.76 0 .76-.76.76-2 0-2.76z"],calculator:["M16 0H4c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM7 18H5v-2h2v2zm0-4H5v-2h2v2zm0-4H5V8h2v2zm4 8H9v-2h2v2zm0-4H9v-2h2v2zm0-4H9V8h2v2zm4 8h-2v-6h2v6zm0-8h-2V8h2v2zm0-4H5V2h10v4z"],calendar:["M15 5c.6 0 1-.4 1-1V2c0-.5-.4-1-1-1s-1 .5-1 1v2c0 .6.4 1 1 1zM5 5c.6 0 1-.4 1-1V2c0-.5-.4-1-1-1s-1 .5-1 1v2c0 .6.4 1 1 1zm13-2h-1v1c0 1.1-.9 2-2 2s-2-.9-2-2V3H7v1c0 1.1-.9 2-2 2s-2-.9-2-2V3H2c-.5 0-1 .5-1 1v14c0 .5.5 1 1 1h16c.5 0 1-.5 1-1V4c0-.5-.5-1-1-1zM7 17H3v-4h4v4zm0-5H3V8h4v4zm5 5H8v-4h4v4zm0-5H8V8h4v4zm5 5h-4v-4h4v4zm0-5h-4V8h4v4z"],camera:["M10 8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm9-4h-3.59L13.7 2.29A.956.956 0 0013 2H7c-.28 0-.53.11-.71.29L4.59 4H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h4.11c1.26 1.24 2.99 2 4.89 2s3.63-.76 4.89-2H19c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM4 8H2V6h2v2zm6 8c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"],"caret-down":["M16 7c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1 0 .24.1.46.24.63l-.01.01 5 6 .01-.01c.19.22.45.37.76.37s.57-.15.76-.37l.01.01 5-6-.01-.01c.14-.17.24-.39.24-.63z"],"caret-left":["M13 4c-.24 0-.46.1-.63.24l-.01-.01-6 5 .01.01c-.22.19-.37.45-.37.76s.15.57.37.76l-.01.01 6 5 .01-.01c.17.14.39.24.63.24.55 0 1-.45 1-1V5c0-.55-.45-1-1-1z"],"caret-right":["M14 10c0-.31-.15-.57-.37-.76l.01-.01-6-5-.01.01C7.46 4.1 7.24 4 7 4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1 .24 0 .46-.1.63-.24l.01.01 6-5-.01-.01c.22-.19.37-.45.37-.76z"],"caret-up":["M15.76 12.37l.01-.01-5-6-.01.01C10.57 6.15 10.31 6 10 6s-.57.15-.76.37l-.01-.01-5 6 .01.01c-.14.17-.24.39-.24.63 0 .55.45 1 1 1h10c.55 0 1-.45 1-1 0-.24-.1-.46-.24-.63z"],"cell-tower":["M11.5 8.32c.31-.35.51-.81.51-1.32 0-1.1-.9-2-2-2s-2 .9-2 2c0 .51.2.97.51 1.32L5.06 18.69c-.17.52.11 1.09.63 1.26s1.09-.11 1.26-.63L8.39 15h3.23l1.44 4.32c.17.52.74.81 1.26.63s.81-.74.63-1.26L11.5 8.32zM10.95 13H9.06l.95-2.84.94 2.84zM5.31 10.73a.996.996 0 101.37-1.45c-1.4-1.33-1.28-3.35-.01-4.54.4-.38.43-1.01.05-1.41-.36-.41-1-.43-1.4-.06-2.09 1.95-2.28 5.3-.01 7.46z","M4.6 12.2C3 11.1 2 9 2 7c0-2.1.9-3.9 2.6-5.2.5-.3.5-1 .2-1.4-.3-.5-1-.5-1.4-.2C1.2 1.9-.1 4.2 0 7c.1 2.7 1.4 5.3 3.4 6.8.2.1.4.2.6.2.3 0 .6-.1.8-.4.4-.5.3-1.1-.2-1.4zM13.27 10.69c.38.4 1.01.42 1.41.04 2.27-2.16 2.08-5.51-.01-7.46a.996.996 0 10-1.36 1.46c1.28 1.19 1.39 3.21-.01 4.54-.39.39-.41 1.02-.03 1.42z","M16.6.2c-.4-.3-1.1-.3-1.4.2-.3.4-.3 1.1.2 1.4C17.1 3.1 18 4.9 18 7c0 2-1 4.1-2.6 5.2-.5.3-.6.9-.2 1.4.2.3.5.4.8.4.2 0 .4-.1.6-.2C18.7 12.3 20 9.7 20 7c.09-2.8-1.2-5.1-3.4-6.8z"],changes:["M18 16H2c-1.1 0-2 .9-2 2s.9 2 2 2h16c1.1 0 2-.9 2-2s-.9-2-2-2zM3 5c.28 0 .53-.11.71-.29L5 3.41V13c0 .55.45 1 1 1s1-.45 1-1V3.41L8.29 4.7c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3C6.53.11 6.28 0 6 0s-.53.11-.71.29l-3 3A1.003 1.003 0 003 5zm7.29 5.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3a1.003 1.003 0 00-1.42-1.42L15 10.59V1c0-.55-.45-1-1-1s-1 .45-1 1v9.59L11.71 9.3A.965.965 0 0011 9a1.003 1.003 0 00-.71 1.71z"],chart:["M7 11v8c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-8l-2 2-4-2zm-7 8c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-8l-6 3v5zM17 7l-3 3v9c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V8.74c-.26.15-.58.26-1 .26-1.92 0-2-2-2-2zm2-6h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.59L10.8 8.78 7.45 7.11v.01C7.31 7.05 7.16 7 7 7s-.31.05-.44.11V7.1l-6 3v.01c-.33.17-.56.5-.56.89 0 .55.45 1 1 1 .16 0 .31-.05.44-.11v.01L7 9.12l3.55 1.78v-.01c.14.06.29.11.45.11.28 0 .53-.11.71-.29L18 4.41V6c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1z"],chat:["M19 0H7c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h5.59l3.71 3.71c.17.18.42.29.7.29.55 0 1-.45 1-1v-3h1c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM7 13c-1.1 0-2-.9-2-2V4H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h1v3a1.003 1.003 0 001.71.71L7.41 16H13c.55 0 1-.45 1-1v-.17L12.17 13H7z"],"chevron-backward":["M8.41 10l5.29-5.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L7 8.59V4c0-.55-.45-1-1-1s-1 .45-1 1v12c0 .55.45 1 1 1s1-.45 1-1v-4.59l5.29 5.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L8.41 10z"],"chevron-down":["M16 6c-.28 0-.53.11-.71.29L10 11.59l-5.29-5.3a1.003 1.003 0 00-1.42 1.42l6 6c.18.18.43.29.71.29s.53-.11.71-.29l6-6A1.003 1.003 0 0016 6z"],"chevron-forward":["M13 3c-.55 0-1 .45-1 1v4.59l-5.29-5.3a1.003 1.003 0 00-1.42 1.42l5.3 5.29-5.29 5.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l5.29-5.3V16c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1z"],"chevron-left":["M8.41 10l5.29-5.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-6 6c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l6 6a1.003 1.003 0 001.42-1.42L8.41 10z"],"chevron-right":["M13.71 9.29l-6-6a1.003 1.003 0 00-1.42 1.42l5.3 5.29-5.29 5.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l6-6c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],"chevron-up":["M16.71 12.29l-6-6C10.53 6.11 10.28 6 10 6s-.53.11-.71.29l-6 6a1.003 1.003 0 001.42 1.42L10 8.41l5.29 5.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],circle:["M10 0C4.5 0 0 4.5 0 10s4.5 10 10 10 10-4.5 10-10S15.5 0 10 0zm0 18c-4.4 0-8-3.6-8-8s3.6-8 8-8 8 3.6 8 8-3.6 8-8 8z"],"circle-arrow-down":["M14 10c-.28 0-.53.11-.71.29L11 12.59V5c0-.55-.45-1-1-1s-1 .45-1 1v7.59L6.71 10.3A.965.965 0 006 10a1.003 1.003 0 00-.71 1.71l4 4c.18.18.43.29.71.29s.53-.11.71-.29l4-4A1.003 1.003 0 0014 10zM10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"],"circle-arrow-left":["M15 9H7.41L9.7 6.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L7.41 11H15c.55 0 1-.45 1-1s-.45-1-1-1zm-5-9C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"],"circle-arrow-right":["M15.71 9.29l-4-4a1.003 1.003 0 00-1.42 1.42L12.59 9H5c-.55 0-1 .45-1 1s.45 1 1 1h7.59l-2.29 2.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zM10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"],"circle-arrow-up":["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.71-13.71C10.53 4.11 10.28 4 10 4s-.53.11-.71.29l-4 4a1.003 1.003 0 001.42 1.42L9 7.41V15c0 .55.45 1 1 1s1-.45 1-1V7.41l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-4-4z"],citation:["M4 1C1.79 1 0 2.79 0 5s1.79 4 4 4c.1 0 .2-.01.3-.02C3.82 11.32 2.53 13 1 13c-.55 0-1 .45-1 1s.45 1 1 1c3.87 0 7-4.48 7-10 0-2.21-1.79-4-4-4zM16 1c-2.21 0-4 1.79-4 4s1.79 4 4 4c.1 0 .2-.01.3-.02C15.82 11.32 14.53 13 13 13c-.55 0-1 .45-1 1s.45 1 1 1c3.87 0 7-4.48 7-10 0-2.21-1.79-4-4-4z"],clean:["M7 0L5 5 0 6.998 5 9l2 5 2-5 5-1.995L9 5zM15 10l-1.5 3.496-3.5 1.499 3.5 1.498L15 20l1.5-3.507L20 15l-3.5-1.504z"],clipboard:["M13 2c0-.55-.45-1-1-1h-.78a1.98 1.98 0 00-3.44 0H7c-.55 0-1 .45-1 1v2h7V2z","M16 2h-2v3H5V2H3c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1z"],cloud:["M15 7c-.12 0-.24.03-.36.04C13.83 4.69 11.62 3 9 3 5.69 3 3 5.69 3 9c0 .05.01.09.01.14A3.98 3.98 0 000 13c0 2.21 1.79 4 4 4h11c2.76 0 5-2.24 5-5s-2.24-5-5-5z"],"cloud-download":["M15 4c-.12 0-.24.03-.36.04C13.83 1.69 11.62 0 9 0 5.69 0 3 2.69 3 6c0 .05.01.09.01.14A3.98 3.98 0 000 10c0 2.21 1.79 4 4 4h.78c.55-.61 1.34-1 2.22-1v-2c0-1.66 1.34-3 3-3s3 1.34 3 3v2c.88 0 1.66.38 2.2.98C17.87 13.87 20 11.69 20 9c0-2.76-2.24-5-5-5zm-2 11c-.28 0-.53.11-.71.29L11 16.59V11c0-.55-.45-1-1-1s-1 .45-1 1v5.59L7.71 15.3A.965.965 0 007 15a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 0013 15z"],"cloud-upload":["M10.71 10.29c-.18-.18-.43-.29-.71-.29s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42L9 13.41V19c0 .55.45 1 1 1s1-.45 1-1v-5.59l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3zM15 4c-.12 0-.24.03-.36.04C13.83 1.69 11.62 0 9 0 5.69 0 3 2.69 3 6c0 .05.01.09.01.14A3.98 3.98 0 000 10c0 2.21 1.79 4 4 4 0-.83.34-1.58.88-2.12l3-3a2.993 2.993 0 014.24 0l3 3-.01.01c.52.52.85 1.23.87 2.02C18.28 13.44 20 11.42 20 9c0-2.76-2.24-5-5-5z"],code:["M6 6a1.003 1.003 0 00-1.71-.71l-4 4C.11 9.47 0 9.72 0 10c0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L2.41 10 5.7 6.71c.19-.18.3-.43.3-.71zm6-4c-.46 0-.83.31-.95.73l-4 14c-.02.09-.05.17-.05.27 0 .55.45 1 1 1 .46 0 .83-.31.95-.73l4-14c.02-.09.05-.17.05-.27 0-.55-.45-1-1-1zm7.71 7.29l-4-4a1.003 1.003 0 00-1.42 1.42l3.3 3.29-3.29 3.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],"code-block":["M19 5h-2V3c0-.55-.45-1-1-1h-4c-.55 0-1 .45-1 1v2H9V3c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v2H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zM8.71 15.29a1.003 1.003 0 01-1.42 1.42l-4-4C3.11 12.53 3 12.28 3 12s.11-.53.29-.71l4-4a1.003 1.003 0 011.42 1.42L5.41 12l3.3 3.29zm8-2.58l-4 4a1.003 1.003 0 01-1.42-1.42l3.3-3.29-3.29-3.29A.965.965 0 0111 8a1.003 1.003 0 011.71-.71l4 4c.18.18.29.43.29.71s-.11.53-.29.71z"],cog:["M19 8h-2.31c-.14-.46-.33-.89-.56-1.3l1.7-1.7a.996.996 0 000-1.41l-1.41-1.41a.996.996 0 00-1.41 0l-1.7 1.7c-.41-.22-.84-.41-1.3-.55V1c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v2.33c-.48.14-.94.34-1.37.58L5 2.28a.972.972 0 00-1.36 0L2.28 3.64c-.37.38-.37.99 0 1.36L3.9 6.62c-.24.44-.44.89-.59 1.38H1c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h2.31c.14.46.33.89.56 1.3L2.17 15a.996.996 0 000 1.41l1.41 1.41c.39.39 1.02.39 1.41 0l1.7-1.7c.41.22.84.41 1.3.55V19c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-2.33c.48-.14.94-.35 1.37-.59L15 17.72c.37.37.98.37 1.36 0l1.36-1.36c.37-.37.37-.98 0-1.36l-1.62-1.62c.24-.43.45-.89.6-1.38H19c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zm-9 6c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z"],"collapse-all":["M9.29 8.71c.18.18.43.29.71.29s.53-.11.71-.29l6-6a1.003 1.003 0 00-1.42-1.42L10 6.59l-5.29-5.3a1.003 1.003 0 00-1.42 1.42l6 6zm1.42 2.58c-.18-.18-.43-.29-.71-.29s-.53.11-.71.29l-6 6a1.003 1.003 0 001.42 1.42l5.29-5.3 5.29 5.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-6-6z"],"column-layout":["M19 1H1c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zM5 17H2V3h3v14zm4 0H6V3h3v14zm9 0h-8V3h8v14z"],comment:["M19 1H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3v4a1.003 1.003 0 001.71.71l4.7-4.71H19c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zM4 10c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm6 0c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm6 0c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"],comparison:["M6 8H1c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zm13-6h-5c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm0 3h-5V3h5v2zM6 14H1c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1zM6 2H1c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm4-2c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm9 14h-5c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1zm0 3h-5v-2h5v2zm0-9h-5c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zm0 3h-5V9h5v2z"],compass:["M15 10c0 .14-.03.28-.09.4l-3.99 8.98-.01.02a.991.991 0 01-1.82 0l-.01-.02-3.99-8.98c-.06-.12-.09-.26-.09-.4s.03-.28.09-.4L9.08.62 9.09.6a.991.991 0 011.82 0l.01.02 3.99 8.98c.06.12.09.26.09.4zm-5-6.54L7.09 10h5.81L10 3.46z"],compressed:["M19.89 6.56l-2.99-6h-.01C16.72.23 16.39 0 16 0H4c-.39 0-.72.23-.89.56H3.1l-3 6h.01C.05 6.69 0 6.84 0 7v12c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V7c0-.16-.05-.31-.11-.44zM11 2h4.38l2 4H11V2zM4.62 2H9v4H2.62l2-4zM18 18H2V8h7v4.59L6.71 10.3A.965.965 0 006 10a1.003 1.003 0 00-.71 1.71l4 4c.18.18.43.29.71.29s.53-.11.71-.29l4-4a1.003 1.003 0 00-1.42-1.42L11 12.59V8h7v10z"],confirm:["M9.71 5.29a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l7-7a1.003 1.003 0 00-1.42-1.42L12 7.59l-2.29-2.3zm7.93 2.32c.23.75.36 1.56.36 2.39 0 4.42-3.58 8-8 8s-8-3.58-8-8a7.998 7.998 0 0111.8-7.04l1.46-1.46C13.73.56 11.93 0 10 0 4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10c0-1.4-.29-2.73-.81-3.95l-1.55 1.56z"],console:["M19 19H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h18c.55 0 1 .45 1 1v16c0 .55-.45 1-1 1zM18 6H2v11h16V6zM4 8c.28 0 .53.11.71.29l2 2c.18.18.29.43.29.71s-.11.53-.29.71l-2 2a1.003 1.003 0 01-1.42-1.42L4.59 11l-1.3-1.29A1.003 1.003 0 014 8zm5 4h3c.55 0 1 .45 1 1s-.45 1-1 1H9c-.55 0-1-.45-1-1s.45-1 1-1z"],contrast:["M19 8h-1.26c-.19-.73-.48-1.42-.85-2.06l.94-.94a.996.996 0 000-1.41l-1.41-1.41a.996.996 0 00-1.41 0l-.94.94c-.65-.38-1.34-.67-2.07-.86V1c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v1.26c-.76.2-1.47.5-2.13.89L5 2.28a.972.972 0 00-1.36 0L2.28 3.64c-.37.38-.37.98 0 1.36l.87.87c-.39.66-.69 1.37-.89 2.13H1c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h1.26c.19.73.48 1.42.85 2.06l-.94.94a.996.996 0 000 1.41l1.41 1.41c.39.39 1.02.39 1.41 0l.94-.94c.64.38 1.33.66 2.06.85V19c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-1.26c.76-.2 1.47-.5 2.13-.89l.88.87c.37.37.98.37 1.36 0l1.36-1.36c.37-.38.37-.98 0-1.36l-.87-.87c.4-.65.7-1.37.89-2.13H19c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zm-9 7c-2.76 0-5-2.24-5-5s2.24-5 5-5v10z"],control:["M17 10h-7v7h7v-7zm0-7h-7v6h7V3zM9 3H3v14h6V3zm10-3H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H2V2h16v16z"],"credit-card":["M19 3H1c-.55 0-1 .45-1 1v2h20V4c0-.55-.45-1-1-1zM0 16c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V8H0v8zm6.5-2h7c.28 0 .5.22.5.5s-.22.5-.5.5h-7c-.28 0-.5-.22-.5-.5s.22-.5.5-.5zm-4 0h2c.28 0 .5.22.5.5s-.22.5-.5.5h-2c-.28 0-.5-.22-.5-.5s.22-.5.5-.5z"],cross:["M11.41 10l4.29-4.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L10 8.59l-4.29-4.3a1.003 1.003 0 00-1.42 1.42L8.59 10 4.3 14.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4.29-4.3 4.29 4.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L11.41 10z"],crown:["M2 8l4 2 4-5 4 5 4-2-1 7H3L2 8zm8-6a1 1 0 110 2 1 1 0 010-2zM1 5a1 1 0 110 2 1 1 0 010-2zm18 0a1 1 0 110 2 1 1 0 010-2zM3 16h14v2H3v-2z"],cube:["M1.953 4.481l7.41-4.02c.394-.215.88-.215 1.275 0l7.409 4.02L10 9.22 1.953 4.48zm-.817.68L9.5 10.085v9.281a1.316 1.316 0 01-.138-.064l-7.714-4.186A1.211 1.211 0 011 14.057v-8.35c0-.193.048-.38.136-.547zm17.728 0c.088.166.136.353.136.546v8.35c0 .438-.247.842-.648 1.06l-7.714 4.186c-.045.024-.091.046-.138.064v-9.281l8.364-4.926z"],"cube-add":["M17 3h2a1 1 0 010 2h-2v2a1 1 0 01-2 0V5h-2a1 1 0 010-2h2V1a1 1 0 012 0v2zm-3.969 4.435L10 9.22 1.953 4.48l7.41-4.02c.394-.215.88-.215 1.275 0l1.33.721A3.001 3.001 0 0013 7c0 .148.01.293.031.435zm.319.972A3 3 0 0019 7v7.057c0 .438-.247.842-.648 1.06l-7.714 4.186c-.045.024-.091.046-.138.064v-9.281l2.85-1.679zM1.136 5.16L9.5 10.086v9.281a1.316 1.316 0 01-.138-.064l-7.714-4.186A1.211 1.211 0 011 14.057v-8.35c0-.193.048-.38.136-.547z"],"cube-remove":["M11.968 1.182A3.001 3.001 0 0013 7h.77L10 9.22 1.953 4.48l7.41-4.02c.394-.215.88-.215 1.275 0l1.33.721zM19 7v7.057c0 .438-.247.842-.648 1.06l-7.714 4.186c-.045.024-.091.046-.138.064v-9.281L15.74 7H19zM1.136 5.16L9.5 10.086v9.281a1.316 1.316 0 01-.138-.064l-7.714-4.186A1.211 1.211 0 011 14.057v-8.35c0-.193.048-.38.136-.547zM13 3h6a1 1 0 010 2h-6a1 1 0 010-2z"],"curved-range-chart":["M19 16H3.02l2.14-1.74c2.25 1.7 7.33.46 11.83-2.99l-1.29-1.5c-3.56 2.74-7.31 4.03-8.93 3.19l10.55-8.57-.63-.78-10.59 8.6c-.64-1.64 1.46-4.91 5.09-7.7L9.9 3.01c-4.6 3.54-6.91 8.12-5.41 10.51L2 15.54V3c0-.55-.45-1-1-1s-1 .45-1 1v14a.998.998 0 001 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],cut:["M16 2s.72-1.28 0-2l-5.29 6.25 1.28 1.54L16 2zm.08 10c-.55 0-1.07.12-1.54.32L4.31 0c-.7.72 0 2 0 2l4.45 6.56-3.19 3.77C5.09 12.12 4.56 12 4 12c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4c0-.65-.17-1.26-.45-1.8l2.54-3.67 2.49 3.67c-.27.54-.44 1.15-.44 1.8 0 2.21 1.76 4 3.92 4 2.17 0 3.92-1.79 3.92-4 .02-2.21-1.74-4-3.9-4zM4 18c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm12.08 0c-1.08 0-1.96-.9-1.96-2s.88-2 1.96-2 1.96.9 1.96 2-.88 2-1.96 2z"],cycle:["M16 10a4 4 0 110 8 4 4 0 010-8zM4 10a4 4 0 110 8 4 4 0 010-8zm7.299-5.543l.087.089 1.93 2.232 2.048.708a1 1 0 01.65 1.16l-.031.112a1 1 0 01-1.16.65l-.112-.031-2.302-.796a1 1 0 01-.337-.197l-.092-.094-1.387-1.603-1.891 1.982 2.046 2.274a1 1 0 01.25.547l.007.122v4.24a1 1 0 01-1.993.117l-.007-.117-.001-3.857-2.408-2.676a1 1 0 01-.063-1.26l.082-.099 3.29-3.45a1 1 0 011.394-.053zM16 12a2 2 0 100 4 2 2 0 000-4zM4 12a2 2 0 100 4 2 2 0 000-4zm9.5-10a1.5 1.5 0 110 3 1.5 1.5 0 010-3z"],dashboard:["M6 5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zM4 9c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm6-4c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0-5C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm6-9c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm-8 5c0 1.1.9 2 2 2s2-.9 2-2c0-.33-2-8-2-8s-2 7.67-2 8zm6-9c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z"],"data-connection":["M2 11.9c.935.674 2.339 1.217 4.023 1.536A6.996 6.996 0 009.393 20c-3.988-.019-7.231-1.083-7.387-2.4L2 17.5v-5.6zM13 8c3.315 0 6 2.685 6 6s-2.685 6-6 6-6-2.685-6-6 2.685-6 6-6zm1 1l-4 6h2.5l-.5 4 4-6h-2.5l.5-4zm3-4.6v3.855a7.003 7.003 0 00-10.779 3.992c-2.408-.391-4.097-1.202-4.214-2.142L2 10V4.4c1.525 1.1 4.3 1.85 7.5 1.85S15.475 5.5 17 4.4zM9.5 0C13.637 0 17 1.125 17 2.5S13.637 5 9.5 5C5.35 5 2 3.875 2 2.5S5.35 0 9.5 0z"],"data-lineage":["M1.053 0C.47 0 0 .471 0 1.053V4.21c0 .58.471 1.052 1.053 1.052h3.275a6.332 6.332 0 003.728 4.738 6.33 6.33 0 00-3.728 4.737l-3.275-.001C.47 14.737 0 15.208 0 15.789v3.158C0 19.53.471 20 1.053 20h7.435c.581 0 1.053-.471 1.053-1.053V15.79c0-.58-.472-1.052-1.053-1.052H5.406a5.293 5.293 0 015.195-4.21v2.105c0 .58.471 1.052 1.052 1.052h7.294c.582 0 1.053-.471 1.053-1.052V7.368c0-.58-.471-1.052-1.053-1.052h-7.294c-.581 0-1.052.471-1.052 1.052v2.106a5.293 5.293 0 01-5.194-4.21h3.081c.581 0 1.053-.472 1.053-1.053V1.053C9.54.47 9.069 0 8.488 0H1.053z"],database:["M2.01 5.1v5.4c0 1.38 3.58 2.5 8 2.5s8-1.12 8-2.5V5.1c-1.49 1.13-4.51 1.9-8 1.9-3.48 0-6.5-.77-8-1.9zm8 .9c4.42 0 8-1.12 8-2.5s-3.58-2.5-8-2.5-8 1.12-8 2.5S5.6 6 10.01 6zm-8 6.1v5.4c0 1.38 3.58 2.5 8 2.5s8-1.12 8-2.5v-5.4c-1.49 1.13-4.51 1.9-8 1.9-3.48 0-6.5-.77-8-1.9z"],delete:["M15 6a1.003 1.003 0 00-1.71-.71L10 8.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42L8.59 10 5.3 13.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3.29-3.3 3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L11.41 10l3.29-3.29c.19-.18.3-.43.3-.71zm-5-6C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"],delta:["M10 0L0 20h20L10 0zM9 6l6 12H3L9 6z"],"derive-column":["M7.1 8.2h-.99c.28-1.11.66-1.92 1.12-2.43.28-.32.56-.48.83-.48.05 0 .1.02.13.05.03.03.05.07.05.12 0 .04-.04.13-.11.25a.64.64 0 00-.12.35c0 .15.06.28.18.39.12.11.27.16.45.16.2 0 .36-.07.49-.2s.2-.31.2-.54c0-.26-.1-.47-.3-.63-.19-.16-.51-.24-.95-.24-.68 0-1.3.19-1.85.58-.56.38-1.09 1.02-1.59 1.91-.17.3-.34.5-.49.59-.15.08-.4.13-.74.12l-.23.77h.95l-1.39 5.24c-.23.86-.39 1.39-.47 1.59-.12.29-.3.54-.54.75-.1.08-.21.12-.35.12-.04 0-.07-.01-.1-.03l-.03-.04c0-.02.03-.07.1-.13.07-.07.1-.17.1-.31 0-.15-.05-.28-.16-.38-.11-.1-.27-.15-.47-.15-.25 0-.44.07-.59.2-.15.12-.23.28-.23.46 0 .19.09.36.27.5.19.14.47.21.86.21.61 0 1.16-.15 1.63-.46.48-.31.89-.78 1.25-1.43.35-.64.72-1.68 1.09-3.11l.8-3.03h.96l.24-.77zM19 0h-9c-.55 0-1 .45-1 1v3h2V2h7v16h-7v-2H9v3c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-8.79 13.49c.15.28.32.49.52.61.19.12.44.19.73.19.28 0 .57-.1.86-.3.38-.25.77-.69 1.17-1.31l-.25-.14c-.27.37-.48.6-.61.69-.09.06-.19.09-.31.09-.14 0-.28-.09-.42-.26-.23-.29-.54-1.09-.93-2.4.35-.59.64-.97.87-1.15.17-.13.35-.2.55-.2.07 0 .2.03.39.08s.36.08.5.08c.2 0 .37-.07.5-.2.15-.14.22-.31.22-.52 0-.22-.07-.4-.2-.53s-.33-.2-.58-.2c-.22 0-.43.05-.63.15-.2.1-.45.32-.75.67-.23.25-.56.7-1.01 1.33a6.52 6.52 0 00-.91-2.15l-2.39.39-.05.25c.18-.03.33-.05.45-.05.24 0 .43.1.59.3.25.31.59 1.24 1.02 2.8-.34.44-.58.73-.7.87-.21.22-.38.36-.52.43-.1.05-.22.08-.35.08-.1 0-.26-.05-.49-.16a1.01 1.01 0 00-.42-.11c-.23 0-.42.07-.57.22-.15.14-.23.33-.23.55 0 .21.07.38.21.51.14.13.33.2.56.2.23 0 .44-.05.64-.14.2-.09.45-.29.75-.59s.72-.78 1.25-1.43c.21.61.39 1.06.54 1.35z"],desktop:["M19 0H1C.45 0 0 .45 0 1v13c0 .55.45 1 1 1h5.67l-.5 3H5c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1h-1.17l-.5-3H19c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 13H2V2h16v11z"],diagnosis:["M4 2a1 1 0 01.117 1.993L4 4v5a2 2 0 001.85 1.995L6 11a2 2 0 001.995-1.85L8 9V4a1 1 0 01-.117-1.993L8 2h1a1 1 0 01.993.883L10 3v6a4.002 4.002 0 01-3 3.874V13a3 3 0 003 3 4 4 0 003.995-3.8L14 12V8.792a2.5 2.5 0 112 0V12a6 6 0 01-6 6 5 5 0 01-4.995-4.783L5 13v-.126A4.002 4.002 0 012.005 9.2L2 9V3a1 1 0 01.883-.993L3 2h1z"],"diagram-tree":["M19 10v5h-2v-4h-6v4H9v-4H3v4H1v-5a1 1 0 011-1h7V5h2v4h7a1 1 0 011 1zM1 16h2a1 1 0 011 1v2a1 1 0 01-1 1H1a1 1 0 01-1-1v-2a1 1 0 011-1zm16 0h2a1 1 0 011 1v2a1 1 0 01-1 1h-2a1 1 0 01-1-1v-2a1 1 0 011-1zm-8 0h2a1 1 0 011 1v2a1 1 0 01-1 1H9a1 1 0 01-1-1v-2a1 1 0 011-1zM9 0h2a1 1 0 011 1v2a1 1 0 01-1 1H9a1 1 0 01-1-1V1a1 1 0 011-1z"],"direction-left":["M20 3.02l-20 7 20 7-5-7z"],"direction-right":["M20 10.02l-20-7 5 7-5 7z"],disable:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zM2 10c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L3.69 14.9A7.902 7.902 0 012 10zm8 8c-1.85 0-3.55-.63-4.9-1.69L16.31 5.1A7.902 7.902 0 0118 10c0 4.42-3.58 8-8 8z"],document:["M11.98 0h-8c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V6l-6-6zm4 18h-11V2h6v5h5v11z"],"document-open":["M8 15c0 .55.45 1 1 1s1-.45 1-1v-5c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1h2.59L1.3 16.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L8 12.41V15zm5-15H5c-.55 0-1 .45-1 1v6h2V2h6v5h5v11H6v-.76L4.04 19.2c.1.45.48.8.96.8h13c.55 0 1-.45 1-1V6l-6-6z"],"document-share":["M14.09 10.09c-.31.31-.67.57-1.09.72V18H2V2h6v5h1.18c.15-.42.39-.8.7-1.11v-.01l2.45-2.45c-.42-.29-.78-.65-1.01-1.11L9 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V9.24l-.88.88-.03-.03zM19 0h-5c-.55 0-1 .45-1 1s.45 1 1 1h2.59L11.3 7.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L18 3.41V6c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1z"],dollar:["M15.57 11.19c-.27-.51-.63-.93-1.07-1.26-.44-.33-.95-.6-1.51-.79-.56-.2-1.14-.36-1.72-.5-.6-.14-1.19-.26-1.75-.38-.57-.13-1.07-.27-1.51-.44-.44-.17-.8-.38-1.07-.63s-.41-.59-.41-1c0-.33.09-.6.28-.81.19-.21.42-.36.69-.47.27-.11.57-.18.88-.22.31-.04.58-.06.8-.06.71 0 1.35.14 1.9.41.55.27.91.81 1.06 1.62h3.36c-.09-.84-.32-1.56-.69-2.16-.37-.6-.83-1.08-1.38-1.45-.56-.37-1.18-.64-1.86-.81-.19-.05-.38-.07-.57-.1V1c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v1.1c-.22.03-.43.05-.66.1-.73.13-1.39.37-1.98.71-.6.34-1.09.8-1.47 1.35-.39.56-.58 1.25-.58 2.08 0 .76.13 1.41.4 1.93.26.52.62.95 1.06 1.28.44.33.94.6 1.5.79.55.2 1.13.36 1.74.5.58.14 1.16.26 1.72.38s1.07.26 1.51.43c.44.17.8.39 1.09.66.28.27.43.63.45 1.06.02.43-.08.78-.3 1.04-.22.26-.49.47-.83.6-.34.14-.7.23-1.09.28-.39.05-.73.07-1.03.07-.87 0-1.61-.2-2.23-.59-.62-.39-.98-1.08-1.07-2.06H3c.02.9.19 1.68.52 2.34.33.66.78 1.21 1.35 1.65.57.44 1.25.77 2.03.98.35.1.71.16 1.08.21V19c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1.13c.25-.04.5-.07.76-.13.77-.18 1.47-.46 2.1-.85.63-.39 1.14-.9 1.54-1.53.4-.63.59-1.39.59-2.29.01-.75-.13-1.37-.4-1.88z"],dot:["M10 6a4 4 0 100 8 4 4 0 100-8z"],"double-caret-horizontal":["M8 4c-.24 0-.46.1-.63.24l-.01-.01-6 5 .01.01c-.22.19-.37.45-.37.76s.15.57.37.76l-.01.01 6 5 .01-.01c.17.14.39.24.63.24.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm11 6c0-.31-.15-.57-.37-.76l.01-.01-6-5-.01.01C12.46 4.1 12.24 4 12 4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1 .24 0 .46-.1.63-.24l.01.01 6-5-.01-.01c.22-.19.37-.45.37-.76z"],"double-caret-vertical":["M5 9h10c.55 0 1-.45 1-1 0-.24-.1-.46-.24-.63l.01-.01-5-6-.01.01C10.57 1.15 10.31 1 10 1s-.57.15-.76.37l-.01-.01-5 6 .01.01C4.1 7.54 4 7.76 4 8c0 .55.45 1 1 1zm10 2H5c-.55 0-1 .45-1 1 0 .24.1.46.24.63l-.01.01 5 6 .01-.01c.19.22.45.37.76.37s.57-.15.76-.37l.01.01 5-6-.01-.01c.14-.17.24-.39.24-.63 0-.55-.45-1-1-1z"],"double-chevron-down":["M9.29 10.71c.18.18.43.29.71.29s.53-.11.71-.29l6-6a1.003 1.003 0 00-1.42-1.42L10 8.59l-5.29-5.3a1.003 1.003 0 00-1.42 1.42l6 6zM16 9c-.28 0-.53.11-.71.29L10 14.59l-5.29-5.3a1.003 1.003 0 00-1.42 1.42l6 6c.18.18.43.29.71.29s.53-.11.71-.29l6-6A1.003 1.003 0 0016 9z"],"double-chevron-left":["M5.41 10l5.29-5.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-6 6c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l6 6a1.003 1.003 0 001.42-1.42L5.41 10zm6 0l5.29-5.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-6 6c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l6 6a1.003 1.003 0 001.42-1.42L11.41 10z"],"double-chevron-right":["M11 10c0-.28-.11-.53-.29-.71l-6-6a1.003 1.003 0 00-1.42 1.42L8.59 10 3.3 15.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l6-6c.18-.18.29-.43.29-.71zm5.71-.71l-6-6a1.003 1.003 0 00-1.42 1.42l5.3 5.29-5.29 5.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l6-6c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],"double-chevron-up":["M4 11c.28 0 .53-.11.71-.29L10 5.41l5.29 5.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-6-6A.997.997 0 0010 3c-.28 0-.53.11-.71.29l-6 6A1.003 1.003 0 004 11zm6.71-1.71A.997.997 0 0010 9c-.28 0-.53.11-.71.29l-6 6a1.003 1.003 0 001.42 1.42l5.29-5.3 5.29 5.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-6-6z"],"doughnut-chart":["M16 10c0 3.31-2.69 6-6 6s-6-2.69-6-6 2.69-6 6-6V0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10h-4zm-.09-1h4.04C19.48 4.28 15.72.52 11 .05V4.1A5.98 5.98 0 0115.91 9z"],download:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm4.71 11.71l-4 4c-.18.18-.43.29-.71.29s-.53-.11-.71-.29l-4-4a1.003 1.003 0 011.42-1.42L9 12.59V5c0-.55.45-1 1-1s1 .45 1 1v7.59l2.29-2.29c.18-.19.43-.3.71-.3a1.003 1.003 0 01.71 1.71z"],"drag-handle-horizontal":["M7.5 11c-.83 0-1.5.67-1.5 1.5S6.67 14 7.5 14 9 13.33 9 12.5 8.33 11 7.5 11zm-5-5C1.67 6 1 6.67 1 7.5S1.67 9 2.5 9 4 8.33 4 7.5 3.33 6 2.5 6zm0 5c-.83 0-1.5.67-1.5 1.5S1.67 14 2.5 14 4 13.33 4 12.5 3.33 11 2.5 11zm15-2c.83 0 1.5-.67 1.5-1.5S18.33 6 17.5 6 16 6.67 16 7.5 16.67 9 17.5 9zm-5 2c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm5 0c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm-10-5C6.67 6 6 6.67 6 7.5S6.67 9 7.5 9 9 8.33 9 7.5 8.33 6 7.5 6zm5 0c-.83 0-1.5.67-1.5 1.5S11.67 9 12.5 9 14 8.33 14 7.5 13.33 6 12.5 6z"],"drag-handle-vertical":["M7.5 6C6.67 6 6 6.67 6 7.5S6.67 9 7.5 9 9 8.33 9 7.5 8.33 6 7.5 6zm0 5c-.83 0-1.5.67-1.5 1.5S6.67 14 7.5 14 9 13.33 9 12.5 8.33 11 7.5 11zm0 5c-.83 0-1.5.67-1.5 1.5S6.67 19 7.5 19 9 18.33 9 17.5 8.33 16 7.5 16zm5-12c.83 0 1.5-.67 1.5-1.5S13.33 1 12.5 1 11 1.67 11 2.5 11.67 4 12.5 4zm-5-3C6.67 1 6 1.67 6 2.5S6.67 4 7.5 4 9 3.33 9 2.5 8.33 1 7.5 1zm5 10c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0 5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0-10c-.83 0-1.5.67-1.5 1.5S11.67 9 12.5 9 14 8.33 14 7.5 13.33 6 12.5 6z"],draw:["M17.7 12.7c0-.1 0-.2-.1-.3l-2-7c-.1-.3-.3-.6-.6-.7L1.8 0l-.6.5L7.7 7c.3-.2.6-.3 1-.3 1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2c0-.4.1-.7.3-1L.5 1.2l-.5.6L4.7 15c.1.3.4.5.7.6l7 2c.1 0 .2.1.3.1.3 0 .5-.1.7-.3l4-4c.2-.2.3-.5.3-.7zm1 1c-.3 0-.5.1-.7.3l-4 4c-.2.2-.3.4-.3.7 0 .5.4 1 1 1 .3 0 .5-.1.7-.3l4-4c.2-.2.3-.4.3-.7 0-.6-.5-1-1-1z"],"drawer-left":["M9 0a1 1 0 011 1v18a1 1 0 01-1 1H1a1 1 0 01-1-1V1a1 1 0 011-1h8zM8 2H2v16h6V2zm2 7h6.59L14.3 6.71A.965.965 0 0114 6a1.003 1.003 0 011.71-.71l4 4c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-4 4a1.003 1.003 0 01-1.42-1.42l2.3-2.29H10V9z"],"drawer-left-filled":["M1 0h8a1 1 0 011 1v18a1 1 0 01-1 1H1a1 1 0 01-1-1V1a1 1 0 011-1zm9 9h6.59L14.3 6.71A.965.965 0 0114 6a1.003 1.003 0 011.71-.71l4 4c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-4 4a1.003 1.003 0 01-1.42-1.42l2.3-2.29H10V9z"],"drawer-right":["M19 0a1 1 0 011 1v18a1 1 0 01-1 1h-8a1 1 0 01-1-1V1a1 1 0 011-1h8zm-1 2h-6v16h6V2zm-8 7H3.41L5.7 6.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4C.11 9.47 0 9.72 0 10c0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L3.41 11H10V9z"],"drawer-right-filled":["M11 0h8a1 1 0 011 1v18a1 1 0 01-1 1h-8a1 1 0 01-1-1V1a1 1 0 011-1zm-1 9H3.41L5.7 6.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4C.11 9.47 0 9.72 0 10c0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L3.41 11H10V9z"],"drive-time":["M20.01 7.7c0-.63-.5-1.14-1.1-1.14h-1.32l-.95-2.57c-.24-.64-.95-1.31-1.59-1.5 0 0-1.65-.49-5.05-.49s-5.04.49-5.04.49c-.63.19-1.35.86-1.59 1.5l-.95 2.57H1.1C.5 6.56 0 7.07 0 7.7c0 .63.5 1.14 1.1 1.14h.47l-.34.91c-.24.64-.43 1.72-.43 2.4v5.39c0 .8.63 1.45 1.4 1.45.77 0 1.4-.65 1.4-1.45v-.83h12.8v.83c0 .8.63 1.45 1.4 1.45s1.4-.65 1.4-1.45v-5.39c0-.68-.19-1.77-.43-2.4l-.34-.91h.47c.61 0 1.11-.51 1.11-1.14zm-16.47.34l1.12-3.16c.08-.22.32-.39.54-.39h9.6c.22 0 .46.17.54.39l1.12 3.16c.08.21-.04.39-.26.39H3.8c-.22-.01-.34-.18-.26-.39zm.96 4.94c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.68 1.5 1.5c0 .83-.67 1.5-1.5 1.5zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"],duplicate:["M15 4H1c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm-1 14H2V6h12v12zm5-18H5c-.55 0-1 .45-1 1v2h2V2h12v12h-1v2h2c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],edit:["M4.59 12.59l2.83 2.83 7.65-7.65-2.83-2.83-7.65 7.65zM2 18l4.41-1.59-2.81-2.79L2 18zM16 2c-.55 0-1.05.22-1.41.59l-1.65 1.65 2.83 2.83 1.65-1.65A2.006 2.006 0 0016 2z"],eject:["M4 12h12c.55 0 1-.45 1-1 0-.25-.1-.47-.25-.64l.01-.01-6-7-.01.01C10.57 3.14 10.3 3 10 3s-.57.14-.75.36l-.01-.01-6 7 .01.01c-.15.17-.25.39-.25.64 0 .55.45 1 1 1zm12 1H4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1z"],emoji:["M10 0c5.523 0 10 4.477 10 10s-4.477 10-10 10S0 15.523 0 10 4.477 0 10 0zm0 2a8 8 0 100 16 8 8 0 000-16zm-4 8l.015.215C6.219 12.42 7.925 14 10 14a4 4 0 003.995-3.8L14 10h2l-.013.238C15.754 13.552 13.163 16 10 16a6 6 0 01-5.996-5.775L4 10h2zm1.5-4a1.5 1.5 0 110 3 1.5 1.5 0 010-3zm5 0a1.5 1.5 0 110 3 1.5 1.5 0 010-3z"],endorsed:["M19.83 9.38L18.81 7.6V5.62c0-.45-.23-.85-.61-1.08l-1.71-1-1.02-1.76a1.25 1.25 0 00-1.08-.61h-2.03l-1.74-1c-.38-.23-.87-.23-1.25 0l-1.74 1H5.65c-.44 0-.85.23-1.08.61L3.58 3.5l-1.8 1.04c-.38.24-.62.64-.62 1.08v2.06L.17 9.4c-.11.19-.17.4-.17.61s.06.42.17.61l.99 1.72v2.06c0 .45.23.85.61 1.08l1.78 1.02.99 1.72c.23.38.63.61 1.08.61h1.99l1.74 1c.19.11.41.17.62.17.21 0 .42-.06.61-.17l1.74-1h2.03c.44 0 .85-.23 1.08-.61l1.02-1.76 1.71-1c.38-.23.61-.64.61-1.08v-1.97l1.02-1.78c.27-.38.27-.85.04-1.25zm-5.08-.71l-5.01 5.01c-.18.18-.43.29-.71.29-.28 0-.53-.11-.71-.29l-3.01-3.01a1.003 1.003 0 011.42-1.42l2.3 2.3 4.31-4.3a1.003 1.003 0 011.71.71c0 .28-.12.53-.3.71z"],envelope:["M0 4.01v11.91l6.27-6.27L0 4.01zm18.91-1.03H1.09L10 10.97l8.91-7.99zm-5.18 6.66L20 15.92V4.01l-6.27 5.63zm-3.23 2.9c-.13.12-.31.19-.5.19s-.37-.07-.5-.19l-2.11-1.89-6.33 6.33h17.88l-6.33-6.33-2.11 1.89z"],equals:["M4 7h12a1 1 0 010 2H4a1 1 0 110-2zm0 4h12a1 1 0 010 2H4a1 1 0 010-2z"],eraser:["M18.71 8.43c.39-.4.39-1.05 0-1.45l-5.53-5.72a.967.967 0 00-1.4 0L1.29 12.1c-.39.4-.39 1.05 0 1.45l4.25 4.39 2.13 2.05h9.27c.02 0 .03.01.05.01.55 0 1-.45 1-1s-.45-1-1-1H9.46l.05-.05h.01l.81-.84 8.38-8.68zM7.52 17.94l-4.95-5.12 4.46-4.61 4.95 5.12-4.46 4.61z"],error:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm1 16H9v-2h2v2zm0-3H9V4h2v9z"],euro:["M8.89 4.47c.56-.31 1.23-.47 2.03-.47.44 0 .85.07 1.25.22.4.14.76.35 1.07.6.17.14.33.3.47.47l2.32-2.32c-.16-.15-.3-.32-.47-.46-.62-.49-1.33-.87-2.12-1.13-.8-.25-1.64-.38-2.52-.38-1.24 0-2.35.22-3.33.66-.99.44-1.82 1.05-2.49 1.82-.68.78-1.2 1.68-1.56 2.72-.09.26-.13.54-.2.8H2c-.55 0-1 .45-1 1s.45 1 1 1h1.04c-.01.2-.04.38-.04.58 0 .15.03.28.03.42H2c-.55 0-1 .45-1 1s.45 1 1 1h1.31c.07.3.13.6.23.89.36 1.02.88 1.92 1.56 2.67.68.76 1.51 1.35 2.49 1.79.98.43 2.09.65 3.33.65.99 0 1.9-.15 2.73-.46.83-.3 1.55-.74 2.17-1.32.03-.03.05-.06.08-.09l-2.41-2.15c-.01.01-.02.02-.02.03-.61.67-1.46 1-2.54 1-.8 0-1.47-.16-2.03-.47-.56-.31-1.01-.72-1.35-1.24-.28-.38-.47-.83-.63-1.3H12c.55 0 1-.45 1-1s-.45-1-1-1H6.56c0-.14-.02-.28-.02-.42 0-.2.02-.39.03-.58H13c.55 0 1-.45 1-1s-.45-1-1-1H6.94c.15-.46.34-.9.59-1.28.35-.52.8-.94 1.36-1.25zM18 11.38v0z"],exchange:["M2.5 8a2.5 2.5 0 000 5 2.5 2.5 0 000-5zm10.35 3.15a.495.495 0 10-.7.7L13.3 13H5.5c-.28 0-.5.22-.5.5s.22.5.5.5h7.79l-1.15 1.15c-.08.09-.14.21-.14.35a.495.495 0 00.85.35l2-2c.09-.09.15-.21.15-.35s-.06-.26-.15-.35l-2-2zM17.5 8a2.5 2.5 0 000 5 2.5 2.5 0 000-5zM7.15 9.85a.495.495 0 10.7-.7L6.71 8h7.79c.28 0 .5-.22.5-.5s-.22-.5-.5-.5H6.71l1.15-1.15c.08-.09.14-.21.14-.35a.495.495 0 00-.85-.35l-2 2c-.09.09-.15.21-.15.35s.06.26.15.35l2 2z"],"exclude-row":["M1 3h18c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zM0 13a1.003 1.003 0 001.71.71L4 11.41l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L5.41 10 7.7 7.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L4 8.59l-2.29-2.3A1.003 1.003 0 00.29 7.71L2.59 10 .3 12.29c-.19.18-.3.43-.3.71zm18-5h-7c-1.1 0-2 .9-2 2s.9 2 2 2h7c1.1 0 2-.9 2-2s-.9-2-2-2zm1 9H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],"expand-all":["M4 9c.28 0 .53-.11.71-.29L10 3.41l5.29 5.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-6-6C10.53 1.11 10.28 1 10 1s-.53.11-.71.29l-6 6A1.003 1.003 0 004 9zm12 2c-.28 0-.53.11-.71.29L10 16.59 4.71 11.3A.965.965 0 004 11a1.003 1.003 0 00-.71 1.71l6 6c.18.18.43.29.71.29s.53-.11.71-.29l6-6A1.003 1.003 0 0016 11z"],export:["M5 7c.28 0 .53-.11.71-.29L9 3.41V15c0 .55.45 1 1 1s1-.45 1-1V3.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-5-5C10.53.11 10.28 0 10 0s-.53.11-.71.29l-5 5A1.003 1.003 0 005 7zm14 7c-.55 0-1 .45-1 1v3H2v-3c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h18c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1z"],"eye-off":["M20 9.96v-.03-.01-.02-.02a.794.794 0 00-.21-.43c-.55-.69-1.19-1.3-1.85-1.87l-3.93 2.62a3.966 3.966 0 01-3.96 3.77c-.47 0-.91-.1-1.33-.24l-2.24 1.49c.52.21 1.05.39 1.6.51 1.21.27 2.43.28 3.64.05 1.11-.21 2.17-.64 3.17-1.18 1.56-.84 2.99-2 4.23-3.3.23-.24.46-.49.67-.75a.87.87 0 00.21-.43v-.02-.02-.01-.03V10v-.04zm-.46-5.14c.27-.18.46-.47.46-.82 0-.55-.45-1-1-1-.21 0-.39.08-.54.18l-.01-.02L15 5.46c-.95-.53-1.95-.96-3.01-1.2a9.158 9.158 0 00-3.65-.04c-1.11.21-2.17.64-3.17 1.18-1.56.84-2.99 2-4.23 3.3-.23.24-.46.48-.67.75-.27.34-.27.76 0 1.1.64.79 1.39 1.5 2.16 2.15.26.21.52.41.79.61L.44 15.16l.01.02A1 1 0 000 16c0 .55.45 1 1 1 .21 0 .39-.08.54-.18l.01.02 18-12-.01-.02zm-8.67 3.4c-.25-.12-.53-.2-.83-.2-1.1 0-1.99.89-1.99 1.99 0 .03.02.06.02.09l-1.78 1.19c-.14-.4-.22-.83-.22-1.28 0-2.19 1.78-3.97 3.98-3.97 1.01 0 1.91.38 2.61 1l-1.79 1.18z"],"eye-on":["M13.3 8.71c.18.18.43.29.71.29s.53-.11.71-.29l4.99-5a1.003 1.003 0 00-1.42-1.42L14 6.58l-2.29-2.29a.956.956 0 00-.7-.29 1.003 1.003 0 00-.71 1.71l3 3zM20 9.96v-.03-.01-.02-.02a.823.823 0 00-.21-.44c-.44-.55-.94-1.05-1.46-1.52l-2.2 2.2c-.55.54-1.3.88-2.12.88-.05 0-.09-.01-.14-.01a3.978 3.978 0 01-3.86 3.02 4.007 4.007 0 01-1.66-7.65A2.97 2.97 0 018.02 5c0-.28.05-.54.12-.8-1.05.22-2.07.64-3.02 1.15-1.57.85-3 2.02-4.24 3.33-.23.25-.46.5-.67.76-.28.35-.28.77 0 1.12.64.8 1.4 1.52 2.17 2.17 1.66 1.41 3.56 2.58 5.66 3.06 1.21.27 2.43.29 3.65.05 1.11-.21 2.18-.65 3.18-1.19 1.57-.85 3-2.02 4.24-3.33.23-.24.46-.49.67-.76.11-.12.18-.27.21-.44v-.02-.02-.01-.03V10c.01-.01.01-.03.01-.04zm-9.99 2.05c1.03 0 1.87-.79 1.98-1.8l-.09-.09-.01.01-2.1-2.11c-1 .11-1.77.95-1.77 1.98-.01 1.11.89 2.01 1.99 2.01z"],"eye-open":["M10.01 7.984A2.008 2.008 0 008.012 9.99c0 1.103.9 2.006 1.998 2.006a2.008 2.008 0 001.998-2.006c0-1.103-.9-2.006-1.998-2.006zM20 9.96v-.03-.01-.02-.02a.827.827 0 00-.21-.442c-.64-.802-1.398-1.514-2.168-2.166-1.658-1.404-3.566-2.587-5.664-3.058a8.982 8.982 0 00-3.656-.05c-1.11.2-2.178.641-3.177 1.183-1.569.852-2.997 2.016-4.246 3.33-.23.25-.46.49-.67.761-.279.351-.279.773 0 1.124.64.802 1.4 1.514 2.169 2.166 1.658 1.404 3.566 2.577 5.664 3.058 1.209.271 2.438.281 3.656.05 1.11-.21 2.178-.651 3.177-1.193 1.569-.852 2.997-2.016 4.246-3.33.23-.24.46-.49.67-.751.11-.12.179-.271.209-.442v-.02-.02-.01-.03V10v-.04zM10.01 14A4.003 4.003 0 016.014 9.99a4.003 4.003 0 013.996-4.011 4.003 4.003 0 013.996 4.011 4.003 4.003 0 01-3.996 4.011z"],"fast-backward":["M18 3c-.23 0-.42.09-.59.21l-.01-.01L11 8V4c0-.55-.45-1-1-1-.23 0-.42.09-.59.21L9.4 3.2l-8 6 .01.01C1.17 9.4 1 9.67 1 10s.17.6.41.79l-.01.01 8 6 .01-.01c.17.12.36.21.59.21.55 0 1-.45 1-1v-4l6.4 4.8.01-.01c.17.12.36.21.59.21.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"fast-forward":["M19 10c0-.33-.17-.6-.41-.79l.01-.01-8-6-.01.01C10.42 3.09 10.23 3 10 3c-.55 0-1 .45-1 1v4L2.6 3.2l-.01.01C2.42 3.09 2.23 3 2 3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1 .23 0 .42-.09.59-.21l.01.01L9 12v4c0 .55.45 1 1 1 .23 0 .42-.09.59-.21l.01.01 8-6-.01-.01c.24-.19.41-.46.41-.79z"],feed:["M2.5 15a2.5 2.5 0 000 5 2.5 2.5 0 000-5zm.5-5c-.55 0-1 .45-1 1s.45 1 1 1c2.76 0 5 2.24 5 5 0 .55.45 1 1 1s1-.45 1-1c0-3.87-3.13-7-7-7zM3 0c-.55 0-1 .45-1 1s.45 1 1 1c8.28 0 15 6.72 15 15 0 .55.45 1 1 1s1-.45 1-1C20 7.61 12.39 0 3 0zm0 5c-.55 0-1 .45-1 1s.45 1 1 1c5.52 0 10 4.48 10 10 0 .55.45 1 1 1s1-.45 1-1C15 10.37 9.63 5 3 5z"],"feed-subscribed":["M2.5 15a2.5 2.5 0 000 5 2.5 2.5 0 000-5zM3 2c1.76 0 3.44.31 5.01.87.03-.71.31-1.35.75-1.85C6.96.37 5.03 0 3 0c-.55 0-1 .45-1 1s.45 1 1 1zm10.32 4.67a.99.99 0 001.4 0l4.98-4.98c.19-.17.3-.42.3-.7 0-.55-.45-1-1-1a.99.99 0 00-.7.29l-4.27 4.27-2.28-2.28a.99.99 0 00-.7-.29c-.55 0-.99.45-.99 1 0 .28.11.52.29.7l2.97 2.99zM3 10c-.55 0-1 .45-1 1s.45 1 1 1c2.76 0 5 2.24 5 5 0 .55.45 1 1 1s1-.45 1-1c0-3.87-3.13-7-7-7zm13.94-2.69l-.82.82-.02-.02c-.2.2-.42.37-.67.51A14.8 14.8 0 0118 17c0 .55.45 1 1 1s1-.45 1-1c0-3.61-1.14-6.94-3.06-9.69zM3 5c-.55 0-1 .45-1 1s.45 1 1 1c5.52 0 10 4.48 10 10 0 .55.45 1 1 1s1-.45 1-1C15 10.37 9.63 5 3 5z"],film:["M19 2h-5v3H6V2H1c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h5v-3h8v3h5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zM4 17H2v-2h2v2zm0-3H2v-2h2v2zm0-3H2V9h2v2zm0-3H2V6h2v2zm0-3H2V3h2v2zm10 8H6V7h8v6zm4 4h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm0-3h-2V6h2v2zm0-3h-2V3h2v2z"],filter:["M18 1H2a1.003 1.003 0 00-.71 1.71L7 8.41V18a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71V8.41l5.71-5.71c.18-.17.29-.42.29-.7 0-.55-.45-1-1-1z"],"filter-keep":["M15 2c0-.55-.45-1-1-1H1a1.003 1.003 0 00-.71 1.71L5 7.41V16a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71V7.41l4.71-4.71c.18-.17.29-.42.29-.7zm4 11c-.28 0-.53.11-.71.29L15 16.59l-1.29-1.29A.965.965 0 0013 15a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l4-4A1.003 1.003 0 0019 13z"],"filter-list":["M15 2c0-.55-.45-1-1-1H1a1.003 1.003 0 00-.71 1.71L5 7.41V16a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71V7.41l4.71-4.71c.18-.17.29-.42.29-.7zm-4 8c0 .55.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1h-7c-.55 0-1 .45-1 1zm8 7h-7c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1zm0-4h-7c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1z"],"filter-open":["M15 2c0 .28-.11.53-.29.7L10 7.41V13c0 .28-.11.53-.29.71l-3 3A1.003 1.003 0 015 16V7.41L.29 2.71A1.003 1.003 0 011 1h13c.55 0 1 .45 1 1zm4.707 11.293a1 1 0 010 1.414l-4 4c-.63.63-1.707.184-1.707-.707v-8c0-.89 1.077-1.337 1.707-.707l4 4z"],"filter-remove":["M15 2c0-.55-.45-1-1-1H1a1.003 1.003 0 00-.71 1.71L5 7.41V16a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71V7.41l4.71-4.71c.18-.17.29-.42.29-.7zm2.91 13.5l1.79-1.79c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-1.79 1.79-1.79-1.79a1.003 1.003 0 00-1.42 1.42l1.79 1.79-1.79 1.79a1.003 1.003 0 001.42 1.42l1.79-1.79 1.79 1.79a1.003 1.003 0 001.42-1.42l-1.8-1.79z"],flag:["M3 3c-.55 0-1 .45-1 1v15c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1zm0-3c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm2 4.08v8.28c3.01-2.41 8.67 2.64 13 0V4.08C13.61 7.14 8.01 1 5 4.08z"],flame:["M11.622 0c0 1.71.49 3.077 1.472 4.103C16.364 6.496 18 9.23 18 12.308c0 3.418-1.962 5.983-5.887 7.692 2.887-3 2.453-4.23-.49-8C8.5 13.5 9 14.5 9.5 16.5c-1.048 0-2 0-2.5-.5 0 .684 1.197 2.5 1.952 4-3.924-1.026-8.123-7.18-6.651-7.692.981-.342 2.126-.171 3.434.513C4.1 6.667 6.062 2.393 11.622 0z"],flash:["M4.96 6.37a1.003 1.003 0 001.42-1.42l-2-2a1.07 1.07 0 00-.71-.28 1.003 1.003 0 00-.71 1.71l2 1.99zm9.37.3c.28 0 .53-.11.71-.29l2-2a1.003 1.003 0 00-1.42-1.42l-2 2a1.003 1.003 0 00.71 1.71zM10 5c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1S9 .45 9 1v3c0 .55.45 1 1 1zm-5 5c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1h3c.55 0 1-.45 1-1zm14-1h-3c-.55 0-1 .45-1 1s.45 1 1 1h3c.55 0 1-.45 1-1s-.45-1-1-1zm-9-3c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm5.04 1.63a1.003 1.003 0 00-1.42 1.42l2 2a1.003 1.003 0 001.42-1.42l-2-2zM10 15c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1s1-.45 1-1v-3c0-.55-.45-1-1-1zm-4.33-1.67c-.28 0-.53.11-.71.29l-2 2a1.003 1.003 0 001.42 1.42l2-2a1.003 1.003 0 00-.71-1.71z"],"floppy-disk":["M14 1h-3v5h3V1zm5.71 2.29l-3-3A.997.997 0 0016 0h-1v7H5V0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V4c0-.28-.11-.53-.29-.71zM17 19H3v-8c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v8z"],"flow-branch":["M14.425 7.953a3.98 3.98 0 01.562 2.045 3.98 3.98 0 01-.583 2.08L18 15.671V12.98c0-.248.097-.496.29-.689.379-.379 1.047-.38 1.426 0a.94.94 0 01.283.696l-.001 5.049a.957.957 0 01-.276.69.955.955 0 01-.69.273h-5.059a.971.971 0 01-.689-.289 1.026 1.026 0 010-1.417.972.972 0 01.69-.29h2.702l-3.634-3.573a3.998 3.998 0 01-5.924-2.431H1a1 1 0 010-2h6.12a3.998 3.998 0 015.96-2.409L16.665 3l-2.694-.001a.972.972 0 01-.689-.29 1.035 1.035 0 010-1.425.94.94 0 01.696-.283l5.05.001c.248 0 .497.083.69.276a.954.954 0 01.272.69l.001 5.052a.971.971 0 01-.29.689 1.028 1.028 0 01-1.419 0 .972.972 0 01-.29-.69V4.323l-3.567 3.63z"],"flow-end":["M12 9.919a3.998 3.998 0 014-3.92c2.21 0 4 1.79 4 3.997a3.998 3.998 0 01-4 3.996 3.998 3.998 0 01-4-3.916.967.967 0 01-.28.612L7.685 14.71a.958.958 0 01-.686.285c-.536 0-.994-.461-.994-.997 0-.273.107-.528.283-.704l2.379-2.302H.98c-.537 0-.976-.46-.976-.996s.44-.992.976-.992h7.676L6.287 6.687a.957.957 0 01-.283-.686c0-.536.458-.996.994-.996.274 0 .51.1.686.285l4.027 4.024c.159.158.27.365.29.605z"],"flow-linear":["M5.125 10.997H.976C.439 10.997 0 10.537 0 10c0-.536.44-.993.976-.993h4.148a4.002 4.002 0 017.752 0h3.776L14.293 6.69a.962.962 0 01-.285-.687c0-.537.46-1.001.996-1.001a.96.96 0 01.698.3l4.005 4.015c.176.176.293.41.293.683a.972.972 0 01-.283.693L15.702 14.7a.997.997 0 01-.698.297c-.537 0-.996-.453-.996-.99 0-.273.107-.517.283-.692l2.371-2.318h-3.787a4.002 4.002 0 01-7.75 0z"],"flow-review":["M6.13 9.004A4.005 4.005 0 0110.012 6c1.87 0 3.44 1.278 3.881 3.005h2.768l-2.354-2.317a.97.97 0 01-.283-.691c0-.536.462-.995 1-.995.273 0 .517.107.693.283l4 4.041a.97.97 0 01.284.692.956.956 0 01-.293.682l-3.991 3.997a.944.944 0 01-.694.292c-.537 0-1-.46-1-.997a.97.97 0 01.284-.692l2.345-2.29h-2.765a4.005 4.005 0 01-3.875 2.981 4.005 4.005 0 01-3.874-2.981H3.349l2.376 2.308a.97.97 0 01.283.691 1 1 0 01-.994.983.989.989 0 01-.713-.291L.293 10.699A.956.956 0 010 10.017a.97.97 0 01.283-.692l4.03-4.037a.996.996 0 01.701-.283c.537 0 .994.464.994 1a.97.97 0 01-.283.691L3.34 9.004h2.79z"],"flow-review-branch":["M13.04 13.424c-.6.36-1.302.568-2.052.568a4 4 0 01-3.868-2.999H3.342l2.372 2.31c.176.176.283.42.283.694 0 .537-.452.998-.988.998a.935.935 0 01-.691-.289L.292 10.683A.96.96 0 010 9.999c0-.274.107-.518.283-.694l4.035-4.04a.973.973 0 01.691-.288c.536 0 .988.47.988 1.007a.975.975 0 01-.283.694L3.332 8.984h3.786a4 4 0 013.87-3.006c.771 0 1.492.22 2.102.599l3.565-3.57-2.538-.003a.974.974 0 01-.69-.29c-.38-.38-.38-1.052-.002-1.431A.94.94 0 0114.122 1l4.896.005a.96.96 0 01.69.277c.193.193.27.442.27.69l.005 4.9a.971.971 0 01-.289.69 1.023 1.023 0 01-1.416 0 .975.975 0 01-.29-.691l-.003-2.54-3.554 3.62c.351.596.553 1.291.553 2.034 0 .763-.213 1.477-.583 2.084l3.595 3.595.003-2.54c0-.249.097-.497.29-.69.38-.38 1.05-.381 1.429-.002a.94.94 0 01.282.697l-.005 4.9a.927.927 0 01-.277.675.974.974 0 01-.69.291L13.974 19a.97.97 0 01-.69-.29 1.03 1.03 0 01.002-1.42.974.974 0 01.69-.29l2.696-.003-3.632-3.573z"],flows:["M17.5 7.93a2.5 2.5 0 00-2.45 2h-2.3l-4.01-4-.75.75 3.26 3.25h-6.3a2.5 2.5 0 100 1h6.3l-3.26 3.25.75.75 4.01-4h2.3a2.5 2.5 0 102.45-3z"],"folder-close":["M0 17c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V7H0v10zM19 4H9.41l-1.7-1.71A.997.997 0 007 2H1c-.55 0-1 .45-1 1v3h20V5c0-.55-.45-1-1-1z"],"folder-new":["M12.994 7c0 1.655 1.344 3 2.998 3a3.002 3.002 0 002.999-3H20v10c0 .55-.45 1-1 1H1.01c-.55 0-1-.45-1-1V7h12.984zM10.76 6H0V3c0-.55.45-1 1-1h3.998c.28 0 .53.11.71.29L7.415 4h2.579c0 .768.29 1.469.765 2zm8.23-3c.55 0 1 .45 1 1s-.45 1-1 1h-1.998v2c0 .55-.45 1-1 1s-1-.45-1-1V5h-1.998c-.55 0-1-.45-1-1s.45-1 1-1h1.999V1c0-.55.45-1 .999-1 .55 0 1 .45 1 1v2h1.999z"],"folder-open":["M20 9c0-.55-.45-1-1-1H5c-.43 0-.79.27-.93.65h-.01l-3 8h.01c-.04.11-.07.23-.07.35 0 .55.45 1 1 1h14c.43 0 .79-.27.93-.65h.01l3-8h-.01c.04-.11.07-.23.07-.35zM3.07 7.63C3.22 7.26 3.58 7 4 7h14V5c0-.55-.45-1-1-1H8.41l-1.7-1.71A.997.997 0 006 2H1c-.55 0-1 .45-1 1v12.31l3.07-7.68z"],"folder-shared":["M11 4H9.41l-1.7-1.71A.997.997 0 007 2H1c-.55 0-1 .45-1 1v3h11.78C11.3 5.47 11 4.77 11 4zm8-1h-5c-.55 0-1 .45-1 1s.45 1 1 1h2.59L12.3 9.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L18 6.41V9c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1zm-2.46 7.7l-1.42 1.42a2.996 2.996 0 11-4.24-4.24l.88-.88H0v10c0 .55.45 1 1 1h18c.55 0 1-.45 1-1v-5.18c-.31.11-.65.18-1 .18-1.02 0-1.92-.52-2.46-1.3z"],"folder-shared-open":["M3.07 7.63C3.22 7.26 3.58 7 4 7h7.76l.54-.54A2.97 2.97 0 0111 4H8.41l-1.7-1.71A.997.997 0 006 2H1c-.55 0-1 .45-1 1v12.31l3.07-7.68zm13.47 3.07l-1.42 1.42A2.996 2.996 0 0110 10c0-.77.3-1.47.78-2H5c-.43 0-.79.27-.93.65h-.01l-3 8h.01c-.04.11-.07.23-.07.35 0 .55.45 1 1 1h14c.43 0 .79-.27.93-.65h.01l2.01-5.36c-1-.01-1.88-.52-2.41-1.29zM19 3h-5c-.55 0-1 .45-1 1s.45 1 1 1h2.59L12.3 9.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L18 6.41V9c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1z"],follower:["M11.54 15.92c-1.48-.65-1.28-1.05-1.33-1.59-.01-.07-.01-.15-.01-.23.51-.45.92-1.07 1.19-1.78 0 0 .01-.04.02-.05.06-.15.11-.32.15-.48.34-.07.54-.44.61-.78.08-.14.23-.48.2-.87-.05-.5-.25-.73-.47-.82v-.09c0-.63-.06-1.55-.17-2.15-.02-.17-.06-.33-.11-.5a3.69 3.69 0 00-1.29-1.86C9.69 4.25 8.8 4 8.01 4c-.8 0-1.69.25-2.32.73-.61.47-1.06 1.13-1.28 1.86-.05.17-.09.33-.11.5-.12.6-.18 1.51-.18 2.14v.08c-.23.09-.44.32-.49.83-.04.39.12.73.2.87.08.35.28.72.63.78.04.17.09.33.15.48 0 .01.01.02.01.03l.01.01c.27.72.7 1.35 1.22 1.8 0 .07-.01.14-.01.21-.05.54.1.94-1.38 1.59-1.48.65-3.71 1.35-4.16 2.4C-.16 19.38.02 20 .02 20h15.95s.18-.62-.27-1.67c-.46-1.06-2.68-1.75-4.16-2.41zm8.15-12.63l-3-3a.956.956 0 00-.7-.29 1.003 1.003 0 00-.71 1.71L16.58 3H13c-.55 0-1 .45-1 1s.45 1 1 1h3.58l-1.29 1.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.3-.71z"],following:["M11.55 15.92c-1.48-.65-1.28-1.05-1.33-1.59-.01-.07-.01-.15-.01-.23.51-.45.92-1.07 1.19-1.78 0 0 .01-.04.02-.05.06-.15.11-.32.15-.48.34-.07.54-.44.61-.78.08-.14.23-.48.2-.87-.05-.5-.25-.73-.47-.82v-.09c0-.63-.06-1.55-.17-2.15-.02-.17-.06-.33-.11-.5a3.69 3.69 0 00-1.29-1.86C9.7 4.25 8.81 4 8.02 4c-.79 0-1.68.25-2.31.73-.61.47-1.07 1.13-1.29 1.86-.05.16-.09.33-.11.5-.12.6-.18 1.51-.18 2.14v.08c-.23.09-.44.32-.48.83-.04.39.12.73.2.87.08.35.28.72.63.78.04.17.09.33.15.48 0 .01.01.02.01.03l.01.01c.27.72.7 1.35 1.22 1.8 0 .07-.01.14-.01.21-.05.54.1.94-1.38 1.59C3 16.56.77 17.26.32 18.31-.15 19.38.04 20 .04 20h15.95s.18-.62-.27-1.67c-.46-1.06-2.69-1.75-4.17-2.41zM19 3h-3.58l1.29-1.29A1.003 1.003 0 0015.29.29l-3 3c-.17.18-.28.43-.28.71 0 .28.11.53.29.71l3 3c.18.18.43.29.7.29a1.003 1.003 0 00.71-1.71L15.42 5H19c.55 0 1-.45 1-1s-.45-1-1-1z"],font:["M17.93 18.64l-7-18C10.78.27 10.42 0 10 0s-.78.27-.93.64l-7 18c-.04.11-.07.23-.07.36 0 .55.45 1 1 1 .42 0 .78-.27.93-.64L6.41 13h7.19l2.47 6.36c.15.37.51.64.93.64.55 0 1-.45 1-1 0-.13-.03-.25-.07-.36zM7.18 11L10 3.76 12.82 11H7.18z"],fork:["M16.71 11.29a1.003 1.003 0 00-1.42 1.42l1.3 1.29h-2.17l-8-8h10.17L15.3 7.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-3-3a1.003 1.003 0 00-1.42 1.42L16.59 4H1c-.55 0-1 .45-1 1s.45 1 1 1h2.59l9.71 9.71c.17.18.42.29.7.29h2.59l-1.29 1.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-3-3z"],form:["M2 13v4h4v-4H2zm-1-2h6c.55 0 1 .45 1 1v6c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1v-6c0-.55.45-1 1-1zm11-7h7c.55 0 1 .45 1 1s-.45 1-1 1h-7c-.55 0-1-.45-1-1s.45-1 1-1zM8 1a1.003 1.003 0 01.71 1.71l-5 6C3.53 8.89 3.28 9 3 9s-.53-.11-.71-.29l-2-2a1.003 1.003 0 011.42-1.42L3 6.59l4.29-5.3C7.47 1.11 7.72 1 8 1zm4 13h7c.55 0 1 .45 1 1s-.45 1-1 1h-7c-.55 0-1-.45-1-1s.45-1 1-1z"],"full-circle":["M9.96 0a10 10 0 100 20 10 10 0 100-20z"],"full-stacked-chart":["M15 16h2c.55 0 1-.45 1-1v-5h-4v5c0 .55.45 1 1 1zM12 2c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v4h4V2zm6 4h-4v3h4V6zm0-4c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v3h4V2zm-6 5H8v5h4V7zm-9 9h2c.55 0 1-.45 1-1v-3H2v3c0 .55.45 1 1 1zm6 0h2c.55 0 1-.45 1-1v-2H8v2c0 .55.45 1 1 1zm10 1H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zM6 2c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v3h4V2zm0 4H2v5h4V6z"],fullscreen:["M3.41 2H6c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1v5c0 .55.45 1 1 1s1-.45 1-1V3.41L7.29 8.7c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L3.41 2zM8 11c-.28 0-.53.11-.71.29L2 16.59V14c0-.55-.45-1-1-1s-1 .45-1 1v5c0 .55.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1H3.41l5.29-5.29c.19-.18.3-.43.3-.71 0-.55-.45-1-1-1zM19 0h-5c-.55 0-1 .45-1 1s.45 1 1 1h2.59L11.3 7.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L18 3.41V6c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm0 13c-.55 0-1 .45-1 1v2.59l-5.29-5.29A.965.965 0 0012 11a1.003 1.003 0 00-.71 1.71l5.3 5.29H14c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1v-5c0-.55-.45-1-1-1z"],function:["M10.14 5.82H8.73c.4-1.66.94-2.87 1.6-3.64.4-.48.8-.72 1.18-.72.08 0 .14.02.19.07.05.05.07.1.07.18 0 .07-.05.19-.16.37s-.16.36-.16.52c0 .23.08.43.25.59a.9.9 0 00.64.25c.28 0 .51-.1.7-.3.19-.2.28-.47.28-.81 0-.39-.14-.7-.42-.94-.28-.24-.74-.36-1.36-.36-.97 0-1.86.29-2.65.87-.79.56-1.54 1.52-2.26 2.85-.24.46-.48.75-.7.88-.22.13-.57.19-1.06.19l-.32 1.15H5.9l-1.99 7.85c-.33 1.29-.56 2.09-.67 2.39-.17.44-.43.81-.77 1.12a.74.74 0 01-.5.19c-.05 0-.1-.02-.14-.05l-.04-.07c0-.03.05-.1.15-.2.1-.1.15-.26.15-.47 0-.23-.08-.42-.23-.57-.16-.15-.38-.23-.67-.23-.35 0-.63.1-.85.29-.21.2-.32.43-.32.7 0 .29.13.54.39.75.25.22.65.33 1.2.33.88 0 1.66-.23 2.33-.69.68-.46 1.27-1.17 1.78-2.14.51-.96 1.03-2.52 1.56-4.66l1.14-4.54H9.8l.34-1.15zm6.8 1.95c.25-.2.51-.29.78-.29.1 0 .29.04.56.11.27.08.51.11.72.11.29 0 .52-.1.72-.3.18-.19.28-.45.28-.77 0-.33-.1-.6-.29-.8-.19-.2-.47-.29-.82-.29-.32 0-.62.08-.9.23-.28.15-.64.49-1.08 1-.33.38-.81 1.05-1.44 2a9.712 9.712 0 00-1.31-3.22l-3.4.59-.07.37c.25-.05.47-.08.64-.08.34 0 .62.15.84.44.35.46.84 1.85 1.46 4.19-.49.66-.82 1.09-1 1.3-.3.33-.55.54-.74.64-.15.08-.32.12-.51.12-.14 0-.38-.08-.7-.24-.22-.1-.42-.16-.59-.16-.33 0-.6.11-.82.32-.21.22-.32.49-.32.83 0 .31.1.57.3.77.2.2.47.29.8.29.32 0 .63-.07.92-.21.29-.14.64-.43 1.08-.88.43-.45 1.03-1.16 1.79-2.14.29.93.55 1.61.76 2.03.21.42.46.73.74.91.28.19.62.28 1.04.28.4 0 .81-.15 1.23-.44.55-.38 1.1-1.04 1.68-1.97l-.35-.21c-.39.55-.68.89-.87 1.03-.12.09-.27.13-.44.13-.2 0-.4-.13-.59-.38-.33-.43-.77-1.63-1.33-3.6.47-.86.89-1.44 1.23-1.71z"],"gantt-chart":["M4 7h5c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zm3 2v1c0 .55.45 1 1 1h6c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1H8c-.55 0-1 .45-1 1zm12 3h-6c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm0 4H2V3c0-.55-.45-1-1-1s-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],geofence:["M8 11l.075.003.126.017.111.03.111.044.098.052.096.067.09.08c.036.035.068.073.097.112l.071.11.054.114.035.105.03.148L9 12V18a1 1 0 01-1.993.117L7 18v-3.586l-5.293 5.293a1 1 0 01-1.497-1.32l.083-.094L5.584 13h-3.58a1 1 0 01-.117-1.993L2.004 11H8zm3.018-11a1.003 1.003 0 01.39.087l.12.063.031.02.1.078 8.027 7.026.062.064.068.086.044.068.064.128.04.117.024.113.011.108v.1l-.007.073-.019.103-.037.121-.039.09-.05.087-4.996 7.994c-.06.097-.137.183-.226.254l-.093.067-.095.053-.087.037-.125.037a1.018 1.018 0 01-.218.026H11v-5a3 3 0 00-2.824-2.995L8 9H3V6a1 1 0 01.321-.734l.098-.08 7-5a1.01 1.01 0 01.45-.178L11.018 0z"],geolocation:["M0 8.33l9.17 2.5 2.5 9.17L20 0z"],geosearch:["M8 18.88c-3.79 0-6.88-3.09-6.88-6.88 0-.61.08-1.22.23-1.79.03.01.06-.01.1-.01h.09v.55c0 .23.21.42.44.42.04 0 .09-.01.12-.02l.9.88c.09.09.23.09.32 0s.09-.23 0-.32l-.86-.9c0-.02.05-.04.05-.07v-.13c0-.18.1-.25.29-.41h.53c.1 0 .19-.01.27-.05.01-.01.02 0 .03-.01.02-.01.03-.02.05-.04.01-.01.02-.01.02-.02l.02-.02 1.13-1.13c-.16-.32-.3-.65-.42-.99h-.64v-.53c0-.01.06.06.06-.1h.38c-.04-.16-.08-.32-.1-.48h-.71c.2-.16.42-.31.64-.45C4.02 6.09 4 5.8 4 5.5c0-.14.01-.28.02-.43C1.62 6.46 0 9.04 0 12c0 4.41 3.59 8 8 8 3.87 0 7.09-2.77 7.82-6.44l-.97-1.1c-.26 3.57-3.23 6.42-6.85 6.42zm-2.12-3.67v-.35h.15c.29 0 .49-.23.49-.53v-.68c0-.01.01-.01 0-.02L4.71 11.8h-.77c-.29 0-.47.24-.47.53v2c0 .29.18.53.47.53h.33v2.02c0 .28.28.51.56.51s.56-.23.56-.51v-1.22h-.01c.29 0 .5-.16.5-.45zm13.83-2.92l-3.68-3.68c.14-.21.27-.42.38-.65.02-.04.04-.07.05-.11.11-.22.2-.45.28-.69v-.01c.07-.24.13-.48.17-.73l.03-.17c.04-.24.06-.49.06-.75C17 2.46 14.54 0 11.5 0S6 2.46 6 5.5 8.46 11 11.5 11c.26 0 .51-.02.76-.06l.17-.03c.25-.04.49-.1.73-.17h.01c.24-.08.47-.17.69-.28.04-.02.07-.04.11-.05.23-.11.44-.24.65-.38l3.68 3.68c.17.18.42.29.7.29a1.003 1.003 0 00.71-1.71zM11.5 9.5c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm1.93 5.33v-.65c0-.11-.13-.21-.24-.21-.11 0-.24.09-.24.21v.65c0 .11.13.21.24.21.11 0 .24-.1.24-.21zm-2.41.67h.83c.29 0 .46-.21.46-.5v-1.86l.23-.22c-.34.05-.69.08-1.04.08-.36 0-.7-.03-1.05-.08.03.05.06.1.08.16V15c.01.29.2.5.49.5z"],"git-branch":["M15 2c-1.66 0-3 1.34-3 3 0 1.3.84 2.4 2 2.82V9c0 1.1-.9 2-2 2H8c-.73 0-1.41.21-2 .55V5.82C7.16 5.4 8 4.3 8 3c0-1.66-1.34-3-3-3S2 1.34 2 3c0 1.3.84 2.4 2 2.82v8.37C2.84 14.6 2 15.7 2 17c0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.25-.77-2.3-1.85-2.75C6.45 13.52 7.16 13 8 13h4c2.21 0 4-1.79 4-4V7.82C17.16 7.4 18 6.3 18 5c0-1.66-1.34-3-3-3zM5 2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 16c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zM15 6c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-commit":["M19 9h-4.1a5 5 0 00-9.8 0H1c-.55 0-1 .45-1 1s.45 1 1 1h4.1a5 5 0 009.8 0H19c.55 0 1-.45 1-1s-.45-1-1-1zm-9 4c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z"],"git-merge":["M15 8c-1.3 0-2.4.84-2.82 2H11c-2.49 0-4.54-1.83-4.92-4.21A2.995 2.995 0 005 0C3.34 0 2 1.34 2 3c0 1.3.84 2.4 2 2.81v8.37C2.84 14.6 2 15.7 2 17c0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.3-.84-2.4-2-2.82V9.86C7.27 11.17 9.03 12 11 12h1.18A2.996 2.996 0 0018 11c0-1.66-1.34-3-3-3zM5 18c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zM5 4c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm10 8c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-new-branch":["M17 3h-1V2c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1V5h1c.55 0 1-.45 1-1s-.45-1-1-1zm-3 4.86V9c0 1.1-.9 2-2 2H8c-.73 0-1.41.21-2 .55V5.82C7.16 5.4 8 4.3 8 3c0-1.66-1.34-3-3-3S2 1.34 2 3c0 1.3.84 2.4 2 2.82v8.37C2.84 14.6 2 15.7 2 17c0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.25-.77-2.3-1.85-2.75C6.45 13.52 7.16 13 8 13h4c2.21 0 4-1.79 4-4V7.86c-.32.08-.65.14-1 .14s-.68-.06-1-.14zM5 2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 16c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-pull":["M17 14.18V7c0-2.21-1.79-4-4-4h-2.59l1.29-1.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3C7.11 3.47 7 3.72 7 4c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L10.41 5H13c1.1 0 2 .9 2 2v7.18A2.996 2.996 0 0016 20c1.66 0 3-1.34 3-3 0-1.3-.84-2.4-2-2.82zM16 18c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zM4 1C2.34 1 1 2.34 1 4c0 1.3.84 2.4 2 2.82v7.37C1.84 14.6 1 15.7 1 17c0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.3-.84-2.4-2-2.82V6.82C6.16 6.4 7 5.3 7 4c0-1.66-1.34-3-3-3zm0 17c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zM4 5c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-push":["M15 11c0-.28-.11-.53-.29-.71l-3-3C11.53 7.11 11.28 7 11 7s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42l1.29-1.3V19c0 .55.45 1 1 1s1-.45 1-1v-8.59l1.29 1.29c.18.19.43.3.71.3.55 0 1-.45 1-1zm4-11H1C.45 0 0 .45 0 1v16c0 .55.45 1 1 1h7v-2H2v-2h6v-1H4V2h14v11h-4v1h4v2h-4v2h5c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM5 8h2V6H5v2zm2-5H5v2h2V3z"],"git-repo":["M7 3H5v2h2V3zm0 6H5v2h2V9zm0-3H5v2h2V6zm12-6H1C.45 0 0 .45 0 1v16c0 .55.45 1 1 1h4v2l2-1 2 1v-2h10c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 16H9v-1H5v1H2v-2h16v2zm0-3H4V2h14v11z"],glass:["M17 6V0H3v6c0 3.53 2.61 6.43 6 6.92V18H6c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1h-3v-5.08c3.39-.49 6-3.39 6-6.92z"],globe:["M7.53 4.37c.1-.1.1-.26 0-.35l-.68-.68c-.1-.1-.25-.1-.35 0-.1.1-.1.26 0 .35l.68.68c.1.1.25.1.35 0zm3.17.06h.3c.09 0 .16-.01.16-.1 0-.09-.07-.1-.16-.1h-.3c-.09 0-.16.01-.16.1s.07.1.16.1zm.98 1.15c.09 0 .19-.08.19-.17v-.42c0-.09-.1-.17-.19-.17s-.19.08-.19.17v.42c0 .09.1.17.19.17zm-6.5 4.19c-.35 0-.56.28-.56.63v2.37c0 .35.21.62.56.62h.39v2.4c0 .34.33.61.67.61s.67-.27.67-.61v-1.44h-.02c.35 0 .6-.19.6-.54v-.41h.18c.35 0 .58-.28.58-.62v-.81c0-.01.01-.01 0-.02L6.1 9.77h-.92zM10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8 0-.74.11-1.46.3-2.14h.03v.65c0 .28.25.5.53.5.05 0 .1-.01.15-.02l1.05 1.05c.1.11.28.11.38 0 .1-.1.11-.27 0-.38L3.42 8.59c0-.03.05-.05.05-.08v-.16c0-.22.12-.3.34-.49h.63c.12 0 .23-.01.32-.07.01-.01.02 0 .03-.01.02-.02.04-.03.06-.04.01-.01.02-.01.03-.02l.02-.02 2.15-2.15c.24-.24.24-.63 0-.86-.23-.24-.62-.19-.86.04l-.41.46H5v-.64c0-.01.07.07.07-.12h.87c.17 0 .3-.12.3-.29 0-.17-.13-.29-.3-.29H4.88C6.27 2.7 8.05 2 10 2s3.73.7 5.12 1.86h-1.58l-.01-.04c-.06 0-.12 0-.17.04l-.71.7c-.09.09-.09.23 0 .31.09.09.23.09.32 0l.56-.6.01-.03h.34c0 .19-.1.13-.1.16v.1c0 .29-.2.5-.49.5h-.51c-.25 0-.52.28-.52.54v.23h-.12c-.16 0-.27.08-.27.24v.33h-.32c-.23 0-.41.15-.41.38 0 .22.18.35.41.35.1 0 .19.04.26-.16l.06.01.66-.59h.23l.53.5c.04.04.11.03.16-.01.04-.04.04-.16 0-.2L13 6.15h.32l.12.16c.25.25.65.23.89-.02l.12-.14H15c.02 0 .11.07.11.07v.33s-.06-.01-.07-.01h-.49c-.16 0-.28.13-.28.29 0 .16.13.29.28.29h.49c.01 0 .07-.01.07-.01v.2c-.19.28-.33.57-.62.57h-1.28s0-.01-.01-.01l-.58-.58a.622.622 0 00-.89 0l-.58.58s0 .01-.01.01h-.34c-.35 0-.67.28-.67.63v1.25c0 .35.32.61.67.61h1.22c.46.19.78.48.97.94v2.28c0 .35.23.6.58.6h.98c.35 0 .54-.25.54-.6v-2.2l1.21-1.17.04-.02.02-.01h.04c.1-.11.2-.26.2-.42V8.49c0-.25-.22-.44-.42-.63h.58c.02.38.29.57.63.57h.43c.13.51.18 1.03.18 1.57 0 4.42-3.58 8-8 8zm6.16-5.65c-.14 0-.29.11-.29.25v.77c0 .14.15.25.29.25.14 0 .29-.11.29-.25v-.77c0-.14-.15-.25-.29-.25zM10.5 3.48c0-.34-.28-.57-.62-.57h-.74c-.34 0-.57.25-.57.59 0 .05-.13.06.06.1v.64c0 .2.09.36.29.36.2 0 .29-.16.29-.36v-.19h.68c.33 0 .61-.23.61-.57z"],"globe-network":["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm7.39 7h-3.63c-.31-1.99-.92-3.66-1.72-4.73 2.45.65 4.41 2.42 5.35 4.73zM13 10c0 .69-.04 1.36-.11 2H7.11a18.419 18.419 0 010-4h5.77c.08.64.12 1.31.12 2zm-3-8c1.07 0 2.25 2.05 2.75 5h-5.5c.5-2.95 1.68-5 2.75-5zm-2.04.27C7.16 3.34 6.55 5.01 6.24 7H2.61c.94-2.31 2.9-4.08 5.35-4.73zM2 10c0-.69.11-1.36.28-2h3.83a18.419 18.419 0 000 4H2.28c-.17-.64-.28-1.31-.28-2zm.61 3h3.63c.31 1.99.92 3.66 1.72 4.73A7.996 7.996 0 012.61 13zM10 18c-1.07 0-2.25-2.05-2.75-5h5.5c-.5 2.95-1.68 5-2.75 5zm2.04-.27c.79-1.07 1.4-2.74 1.72-4.73h3.63a7.996 7.996 0 01-5.35 4.73zM13.89 12a18.419 18.419 0 000-4h3.83c.17.64.28 1.31.28 2s-.11 1.36-.28 2h-3.83z"],graph:["M17.5 4A2.5 2.5 0 0015 6.5c0 .06.01.12.02.18l-1.9.84C12.38 6.6 11.27 6 10 6c-.83 0-1.59.25-2.23.68L4.91 4.14c.05-.21.09-.42.09-.64a2.5 2.5 0 00-5 0A2.5 2.5 0 002.5 6c.42 0 .81-.11 1.16-.3l2.79 2.48C6.17 8.73 6 9.34 6 10c0 1.41.73 2.64 1.83 3.35l-.56 1.67A2.498 2.498 0 005 17.5a2.5 2.5 0 005 0c0-.74-.32-1.39-.83-1.85l.56-1.68c.09.01.18.03.27.03 2.21 0 4-1.79 4-4 0-.22-.03-.44-.07-.65l2.02-.9c.43.34.96.55 1.55.55a2.5 2.5 0 000-5z"],"graph-remove":["M17.41 4l2.29-2.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L16 2.59 13.71.3A.965.965 0 0013 0a1.003 1.003 0 00-.71 1.71L14.59 4 12.3 6.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L16 5.41l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L17.41 4zM19 10c-.83 0-1.55-.36-2.09-.91l-.03.03-.88-.88-.88.88a2.996 2.996 0 11-4.24-4.24l.88-.88-.88-.88.03-.03C10.36 2.55 10 1.83 10 1c0-.35.07-.68.18-.99-.06 0-.12-.01-.18-.01C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10c0-.06-.01-.12-.01-.18-.31.11-.64.18-.99.18z"],"greater-than":["M12.838 10l-9.154 3.051a1 1 0 00.632 1.898l12-4c.912-.304.912-1.594 0-1.898l-12-4a1 1 0 00-.632 1.898L12.838 10z"],"greater-than-or-equal-to":["M3.684 11.051a1 1 0 00.632 1.898l12-4c.912-.304.912-1.594 0-1.898l-12-4a1 1 0 00-.632 1.898L12.838 8l-9.154 3.051zM4 15h12a1 1 0 110 2H4a1 1 0 010-2z"],grid:["M19 11c.55 0 1-.45 1-1s-.45-1-1-1h-2V5h2c.55 0 1-.45 1-1s-.45-1-1-1h-2V1c0-.55-.45-1-1-1s-1 .45-1 1v2h-4V1c0-.55-.45-1-1-1S9 .45 9 1v2H5V1c0-.55-.45-1-1-1S3 .45 3 1v2H1c-.55 0-1 .45-1 1s.45 1 1 1h2v4H1c-.55 0-1 .45-1 1s.45 1 1 1h2v4H1c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1v-2h4v2c0 .55.45 1 1 1s1-.45 1-1v-2h4v2c0 .55.45 1 1 1s1-.45 1-1v-2h2c.55 0 1-.45 1-1s-.45-1-1-1h-2v-4h2zM9 15H5v-4h4v4zm0-6H5V5h4v4zm6 6h-4v-4h4v4zm0-6h-4V5h4v4z"],"grid-view":["M0 19c0 .55.45 1 1 1h8v-9H0v8zM0 1v8h9V0H1C.45 0 0 .45 0 1zm19-1h-8v9h9V1c0-.55-.45-1-1-1zm-8 20h8c.55 0 1-.45 1-1v-8h-9v9z"],"group-objects":["M6 7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm8-3H6c-3.31 0-6 2.69-6 6s2.69 6 6 6h8c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 11H6c-2.76 0-5-2.24-5-5s2.24-5 5-5h8c2.76 0 5 2.24 5 5s-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"],"grouped-bar-chart":["M12 16h1c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1h-1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1zm7 1H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm-3-1h1c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1h-1c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1zm-9 0h1c.55 0 1-.45 1-1v-5c0-.55-.45-1-1-1H7c-.55 0-1 .45-1 1v5c0 .55.45 1 1 1zm-4 0h1c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v13c0 .55.45 1 1 1z"],hand:["M17 5c-.42 0-.79.27-.93.64L14.38 10h-.77l1.34-6.67c.03-.1.05-.21.05-.33a.998.998 0 00-1.98-.19h-.01L11.57 10H11V1c0-.55-.45-1-1-1S9 .45 9 1v9h-.2L6.97 2.76a.997.997 0 00-1.73-.41l-.03.03c-.01.02-.02.03-.03.04-.01.02-.01.03-.02.04v.01c-.01.01-.02.02-.02.03v.01c-.02.01-.02.02-.03.03 0 0 0 .01-.01.01 0 .01 0 .02-.01.03 0 0 0 .01-.01.01 0 .01-.01.02-.01.03 0 0 0 .01-.01.01 0 .01-.01.02-.01.03 0 .01 0 .01-.01.02 0 .01-.01.02-.01.03 0 .01 0 .01-.01.02 0 .01-.01.02-.01.03v.02c0 .01 0 .02-.01.03V3c0 .05 0 .09.01.14l1.45 10.25L6 12.7v.01L3.84 9.45h-.01A.98.98 0 003 9c-.55 0-1 .45-1 1 0 .2.06.39.17.55L6 18.44C7.06 19.4 8.46 20 10 20c3.31 0 6-2.69 6-6v-1.84l.01-.03v-.06l1.94-5.75A1.003 1.003 0 0017 5z"],"hand-down":["M17.68 9.84C15.91 9 14.27 6.49 13.45 4.9 12.41 2.43 12.21 0 7.87 0 5.49 0 3.95.76 3.05 2.65 2.31 4.2 2 5.48 2 9.79v.99c0 .82.69 1.48 1.54 1.48.38 0 .73-.14 1-.36.19.6.78 1.05 1.47 1.05.47 0 .89-.2 1.17-.52.26.47.77.79 1.36.79.65 0 1.2-.39 1.43-.93l.03.77v5.44c0 .48.23.91.59 1.18.21.19.5.32.85.32h.06c.83 0 1.5-.67 1.5-1.5v-8.24l.01-.67c.85.98 1.92 1.76 3.24 1.89 1.79.19 2.09-1.33 1.43-1.64z"],"hand-left":["M15.1 6.54c-1.58-.81-4.09-2.46-4.94-4.23-.31-.65-1.82-.35-1.64 1.43.13 1.33.91 2.4 1.89 3.24L9.74 7H1.5C.67 7 0 7.67 0 8.5v.06c0 .36.13.64.32.85.27.36.7.59 1.18.59h5.44l.78.01c-.54.23-.93.78-.93 1.43 0 .59.32 1.1.79 1.36-.32.28-.52.7-.52 1.17 0 .69.44 1.28 1.05 1.47-.22.27-.36.62-.36 1 0 .85.66 1.54 1.48 1.54h.99c4.31 0 5.59-.31 7.14-1.05 1.89-.9 2.65-2.44 2.65-4.82-.01-4.32-2.44-4.52-4.91-5.57z"],"hand-right":["M20 8.5c0-.83-.67-1.5-1.5-1.5h-8.24l-.67-.01c.98-.85 1.76-1.92 1.89-3.24.18-1.79-1.33-2.08-1.65-1.43-.84 1.76-3.35 3.41-4.93 4.23C2.43 7.59 0 7.79 0 12.13c0 2.38.76 3.92 2.65 4.82C4.2 17.69 5.48 18 9.79 18h.99c.82 0 1.48-.69 1.48-1.54 0-.38-.14-.73-.36-1 .6-.19 1.05-.78 1.05-1.47 0-.47-.2-.89-.52-1.17.47-.26.79-.77.79-1.36 0-.65-.39-1.2-.93-1.43l.77-.03h5.44c.48 0 .91-.23 1.18-.59.19-.21.32-.49.32-.85v-.03-.03z"],"hand-up":["M16.46 7.74c-.38 0-.73.14-1 .36-.19-.6-.78-1.05-1.47-1.05-.47 0-.89.2-1.17.52-.26-.47-.77-.79-1.36-.79-.65 0-1.2.39-1.43.93L10 6.94V1.5c0-.48-.23-.91-.59-1.18C9.2.13 8.92 0 8.56 0H8.5C7.67 0 7 .67 7 1.5v8.24l-.01.67c-.84-.98-1.92-1.76-3.24-1.89-1.79-.18-2.08 1.33-1.43 1.65 1.77.84 3.41 3.35 4.23 4.94 1.05 2.47 1.25 4.9 5.58 4.9 2.38 0 3.92-.76 4.82-2.65.74-1.56 1.05-2.84 1.05-7.15v-.99c0-.81-.69-1.48-1.54-1.48z"],hat:["M18.5 13c1.118 0 1.466.534 1.498 1.366L20 14.5v.5c0 1.945-5.69 3-10 3S0 16.945 0 15v-.5c0-.908.323-1.5 1.5-1.5.895 0 3.5 1.2 8.5 1.2l.411-.003C15.143 14.134 17.631 13 18.5 13zm-5-10c1.725 0 2.954 2.729 3.688 8.186-1.455.263-3.805.72-6.392.801l-.434.01L10 12c-2.896 0-5.585-.524-7.189-.814C3.546 5.73 4.775 3 6.5 3 8.6 3 8.329 5.5 10 5.5S11.5 3 13.5 3z"],header:["M16 1c-.55 0-1 .45-1 1v7H5V2c0-.55-.45-1-1-1s-1 .45-1 1v16c0 .55.45 1 1 1s1-.45 1-1v-7h10v7c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1z"],"header-one":["M10 0c.55 0 1 .45 1 1v14c0 .55-.45 1-1 1s-1-.45-1-1V9H2v6c0 .55-.45 1-1 1s-1-.45-1-1V1c0-.55.45-1 1-1s1 .45 1 1v6h7V1c0-.55.45-1 1-1zm7.4 10.77c.17-.2.29-.46.34-.77H19v10h-1.5v-7.11H15v-1.24c.32 0 .63-.03.93-.08.31-.06.58-.16.83-.29.26-.12.47-.3.64-.51z"],"header-two":["M16.6 17.41c-.22.17-.4.36-.56.55-.16.19-.27.4-.33.61h4.28V20H14c.01-.81.18-1.52.53-2.13.35-.6.81-1.13 1.41-1.58.28-.23.58-.46.89-.68.31-.22.59-.46.85-.71.26-.26.48-.53.63-.83.16-.3.25-.64.26-1.02 0-.18-.02-.37-.06-.57-.04-.2-.11-.39-.22-.56s-.26-.31-.45-.43-.44-.18-.75-.18c-.28 0-.52.06-.71.19s-.34.3-.45.52c-.11.22-.2.48-.25.78-.05.3-.08.62-.09.97h-1.43c0-.54.07-1.04.2-1.5.13-.47.32-.87.58-1.2.26-.34.58-.6.95-.78.37-.19.81-.29 1.3-.29.54 0 .99.09 1.35.29.36.19.65.44.87.74.22.29.38.62.47.97.09.35.14.68.14 1 0 .4-.05.75-.16 1.07-.11.32-.26.61-.44.88-.19.27-.4.52-.63.74-.24.22-.48.43-.73.63s-.5.38-.75.56c-.26.17-.5.35-.71.53zM10 0c.55 0 1 .45 1 1v14c0 .55-.45 1-1 1s-1-.45-1-1V9H2v6c0 .55-.45 1-1 1s-1-.45-1-1V1c0-.55.45-1 1-1s1 .45 1 1v6h7V1c0-.55.45-1 1-1z"],headset:["M18.97 9H19A9 9 0 001 9h.03C.41 9.73 0 10.8 0 12c0 1.74.84 3.2 2 3.76V16c0 1.66 1.34 3 3 3h3c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1H5c-.55 0-1-.45-1-1 .55 0 1-.45 1-1V9c0-.55-.45-1-1-1h-.92C3.57 4.61 6.47 2 10 2s6.43 2.61 6.92 6H16c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h1c1.66 0 3-1.79 3-4 0-1.2-.41-2.27-1.03-3z"],heart:["M20 6.25C20 3.35 17.65 1 14.75 1c-1.02 0-1.95.31-2.75.82v-.04c-.09.06-.17.12-.26.19-.04.03-.09.06-.14.1-.68.51-1.24 1.18-1.6 1.96-.4-.86-1.04-1.57-1.8-2.1-.04-.02-.07-.05-.1-.08a7 7 0 00-.6-.33c-.13-.04-.23-.1-.35-.15-.05-.02-.1-.05-.15-.07v.02C6.45 1.13 5.87 1 5.25 1A5.25 5.25 0 000 6.25c0 .09.01.17.01.25H0c0 .06.01.12.02.18s.01.12.02.18C.13 7.89.44 9 1.07 10.17 2.23 12.33 4.1 14.11 7 16.53v.01c.9.75 1.89 1.55 3 2.46.71-.58 1.38-1.12 2-1.63 3.48-2.86 5.64-4.78 6.93-7.18.63-1.17.94-2.27 1.03-3.3.01-.07.01-.14.02-.21 0-.06.01-.11.02-.17h-.01c0-.09.01-.17.01-.26z"],"heart-broken":["M8.11 7.45C8.05 7.31 8 7.16 8 7c0-.07.03-.13.04-.19h-.02l.86-4.32A5.159 5.159 0 005.25 1 5.25 5.25 0 000 6.25c0 .09.01.17.01.25H0c0 .06.01.12.02.18s.01.12.02.18C.13 7.89.44 9 1.07 10.17c1.38 2.58 3.76 4.6 7.71 7.83l-.76-3.8h.02c-.01-.07-.04-.13-.04-.2 0-.21.08-.39.18-.54l-.02-.01 1.68-2.52-1.73-3.48zM20 6.25C20 3.35 17.65 1 14.75 1c-1.54 0-2.92.67-3.88 1.73l-.83 4.13 1.85 3.69h-.01c.07.14.12.29.12.45 0 .21-.08.39-.18.54l.02.01-1.77 2.66.81 4.07c4.16-3.39 6.63-5.45 8.05-8.1.63-1.17.94-2.27 1.03-3.3.01-.07.01-.14.02-.21 0-.06.01-.11.02-.17h-.01c0-.08.01-.16.01-.25z"],"heat-grid":["M14 12h6V8h-6v4zM0 12h6V8H0v4zm1-3h4v2H1V9zm-1 7c0 .55.45 1 1 1h5v-4H0v3zM19 3h-5v4h6V4c0-.55-.45-1-1-1zm0 3h-4V4h4v2zM0 4v3h6V3H1c-.55 0-1 .45-1 1zm7 3h6V3H7v4zm7 10h5c.55 0 1-.45 1-1v-3h-6v4zm-7 0h6v-4H7v4zm1-3h4v2H8v-2zm-1-2h6V8H7v4z"],heatmap:["M6 0a6 6 0 100 12A6 6 0 106 0z","M10.5 8a4.5 4.5 0 100 9 4.5 4.5 0 100-9z","M16.5 7a3.5 3.5 0 100 7 3.5 3.5 0 100-7zM18 16a2 2 0 100 4 2 2 0 100-4zM2.5 14a2.5 2.5 0 100 5 2.5 2.5 0 100-5zM16.5 0a2.5 2.5 0 100 5 2.5 2.5 0 100-5z"],help:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zM7.41 4.62c.65-.54 1.51-.82 2.56-.82.54 0 1.03.08 1.48.25.44.17.83.39 1.14.68.32.29.56.63.74 1.02.17.39.26.82.26 1.27s-.08.87-.24 1.23c-.16.37-.4.73-.71 1.11l-1.21 1.58c-.14.17-.28.33-.32.48-.05.15-.11.35-.11.6v.97H9v-2s.06-.58.24-.81l1.21-1.64c.25-.3.41-.56.51-.77s.14-.44.14-.67c0-.35-.11-.63-.32-.85s-.5-.33-.88-.33c-.37 0-.67.11-.89.33-.22.23-.37.54-.46.94-.03.12-.11.17-.23.16l-1.95-.29c-.12-.01-.16-.08-.14-.22.13-.93.52-1.67 1.18-2.22zM9 14h2.02L11 16H9v-2z"],"helper-management":["M17 10h-3v3h3v-3zm0 4h-3v3h3v-3zm0-8h-3v3h3V6zm2-6H1C.4 0 0 .4 0 1v18c0 .5.4 1 1 1h18c.5 0 1-.5 1-1V1c0-.6-.5-1-1-1zm-1 18H2V2h16v16zm-9-4H6v3h3v-3zm4 0h-3v3h3v-3z"],"high-priority":["M12 16v4H8v-4h4zm1-16l-1 14H8L7 0h6z"],highlight:["M11.22 14.09l3.03-3.03.71.71L20 6.73l-5.71-5.71-5.04 5.04.71.71-3.02 3.04 4.28 4.28zm6.8 3.91h-16c-.55 0-1 .45-1 1s.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1zm-15-1h4.04c.28 0 .53-.11.71-.3l2.02-2.02-3.44-3.45-4.04 4.04c-.18.18-.3.44-.3.71.01.57.46 1.02 1.01 1.02z"],history:["M10 0C6.71 0 3.82 1.6 2 4.05V2c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H3.76C5.23 3.17 7.47 2 10 2c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8c0-.55-.45-1-1-1s-1 .45-1 1c0 5.52 4.48 10 10 10s10-4.48 10-10S15.52 0 10 0zm0 3c-.55 0-1 .45-1 1v6c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L11 9.59V4c0-.55-.45-1-1-1z"],home:["M2 12v7c0 .55.45 1 1 1h5v-7h4v7h5c.55 0 1-.45 1-1v-7l-8-8-8 8zm17.71-2.71L17 6.59V3c0-.55-.45-1-1-1s-1 .45-1 1v1.59L10.71.3C10.53.11 10.28 0 10 0s-.53.11-.71.29l-9 9a1.003 1.003 0 001.42 1.42L10 2.41l8.29 8.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],"horizontal-bar-chart":["M1 1c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1zm3 5h11c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1zm8 8H4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h8c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1zm7-6H4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h15c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1z"],"horizontal-bar-chart-asc":["M1 9h11c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zm0-5h9c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zm18 12H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h18c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zM1 14h14c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1z"],"horizontal-bar-chart-desc":["M10 16H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h9c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm2-5H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h11c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm3-5H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1zm4-5H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1z"],"horizontal-distribution":["M12 2H8c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zM1 0C.45 0 0 .45 0 1v18c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm18 0c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1z"],"id-number":["M2 5v10h16V5H2zm0-2h16c1.1 0 2 .9 2 2v10c0 1.1-.9 2-2 2H2c-1.1 0-2-.9-2-2V5c0-1.1.9-2 2-2z","M8.88 12.38c-.17-.39-1.01-.66-1.56-.9-.56-.24-.48-.39-.5-.6v-.09c.19-.17.35-.4.45-.67 0 0 0-.02.01-.02l.06-.18c.13-.03.2-.17.23-.29.03-.05.09-.18.08-.33-.04-.18-.11-.27-.2-.3v-.03c0-.24-.02-.58-.06-.81-.01-.06-.02-.12-.04-.19-.08-.27-.25-.52-.48-.7C6.63 7.09 6.3 7 6 7s-.63.09-.87.27c-.23.17-.4.42-.48.7-.02.06-.03.13-.04.19-.04.22-.06.57-.06.81V9c-.09.03-.17.12-.19.31-.01.14.05.27.08.32.03.14.1.27.23.3.02.06.03.12.06.18v.01c.11.27.27.51.47.68v.08c-.02.2.04.35-.51.6-.56.24-1.39.51-1.56.9-.19.39-.12.62-.12.62h5.98c-.01 0 .06-.23-.11-.62zM12 7h4c.55 0 1 .45 1 1s-.45 1-1 1h-4c-.55 0-1-.45-1-1s.45-1 1-1zM12 11h4c.55 0 1 .45 1 1s-.45 1-1 1h-4c-.55 0-1-.45-1-1s.45-1 1-1z"],"image-rotate-left":["M10.5 13c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5-1.5.67-1.5 1.5.67 1.5 1.5 1.5zM14 7H1c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm-1 10l-5-3-1 2-2-4-3 4.5V9h11v8zm3-15h-1.59l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H16c1.1 0 2 .9 2 2v3c0 .55.45 1 1 1s1-.45 1-1V6c0-2.21-1.79-4-4-4z"],"image-rotate-right":["M5.29 4.29a1.003 1.003 0 001.42 1.42l2-2C8.89 3.53 9 3.28 9 3c0-.28-.11-.53-.29-.71l-2-2a1.003 1.003 0 00-1.42 1.42l.3.29H4C1.79 2 0 3.79 0 6v3c0 .55.45 1 1 1s1-.45 1-1V6c0-1.1.9-2 2-2h1.59l-.3.29zM15.5 13c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5-1.5.67-1.5 1.5.67 1.5 1.5 1.5zM19 7H6c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm-1 10l-5-3-1 2-2-4-3 4.5V9h11v8z"],import:["M9.29 15.71c.18.18.43.29.71.29s.53-.11.71-.29l5-5a1.003 1.003 0 00-1.42-1.42L11 12.59V1c0-.55-.45-1-1-1S9 .45 9 1v11.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42l5 5zM19 14c-.55 0-1 .45-1 1v3H2v-3c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h18c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1z"],inbox:["M16.92 3.56l-.01-.02c-.16-.35-.5-.6-.91-.6H4c-.41 0-.76.25-.91.6l-.01.02L0 10.49v6.46c0 .55.45 1 1 1h18c.55 0 1-.45 1-1v-6.46l-3.08-6.93zM15 10.95c-.55 0-1 .45-1 1v1H6v-1c0-.55-.45-1-1-1H1.98l2.67-6h10.7l2.67 6H15z"],"inbox-filtered":["M10.262 3l1.958 1.958v.05H4.65l-2.67 5.997H5c.55 0 1 .45 1 .999v1h8v-1c0-.55.45-1 1-1h3.02l-.635-1.426.625-.63c.354-.353.598-.8.707-1.289L20 10.545v6.456c0 .55-.45.999-1 .999H1c-.55 0-1-.45-1-1v-6.455L3.08 3.62l.01-.02c.15-.35.5-.6.91-.6h6.262zm9.088-3a.642.642 0 01.46 1.1l-3.03 3.03v2.95c0 .18-.07.34-.19.46l-1.28 1.29c-.11.1-.27.17-.45.17-.35 0-.64-.29-.64-.64V4.13L11.19 1.1a.642.642 0 01.45-1.1h7.71z"],"inbox-geo":["M7.427 3a7.467 7.467 0 00-.411 2.009H4.65l-2.67 5.996H5c.55 0 1 .45 1 .999v1h8V13c.165.01.332 0 .5 0a7.48 7.48 0 005.5-2.4V17c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1v-6.455L3.08 3.62l.01-.02c.15-.35.5-.6.91-.6h3.427zm5.715-.596a.133.133 0 01-.193 0l-.374-.374a.133.133 0 010-.193.133.133 0 01.193 0l.373.374a.133.133 0 010 .193zm1.743.033c-.05 0-.088-.006-.088-.055 0-.05.038-.056.088-.056h.165c.05 0 .088.006.088.055 0 .05-.038.056-.088.056h-.165zm.539.632c-.05 0-.104-.044-.104-.094v-.23c0-.05.054-.094.104-.094.05 0 .104.044.104.094v.23c0 .05-.055.094-.104.094zm-3.575 2.304h.506l1.182 1.2c.006.005 0 .005 0 .01v.446c0 .187-.126.341-.319.341h-.098v.226c0 .192-.138.296-.33.296h.01v.792c0 .188-.181.336-.368.336s-.369-.149-.369-.335v-1.32h-.214c-.193 0-.308-.149-.308-.341V5.72c0-.192.115-.346.308-.346zM14.5 0C17.536 0 20 2.464 20 5.5S17.536 11 14.5 11A5.502 5.502 0 019 5.5C9 2.464 11.464 0 14.5 0zm0 9.9c2.431 0 4.4-1.969 4.4-4.4 0-.297-.027-.583-.099-.864h-.236c-.188 0-.336-.104-.347-.313h-.319c.11.104.231.209.231.346v.705c0 .088-.055.17-.11.23h-.022l-.011.006-.022.011-.666.643v1.21c0 .193-.104.33-.296.33h-.54c-.192 0-.319-.137-.319-.33V6.221a.915.915 0 00-.533-.518h-.671c-.192 0-.368-.143-.368-.335V4.68c0-.192.176-.346.368-.346l.193-.005.319-.32a.342.342 0 01.489 0l.319.32c.005 0 .005.005.005.005h.704c.16 0 .237-.16.341-.313v-.11l-.038.005h-.27a.159.159 0 01-.153-.16c0-.087.066-.159.154-.159h.269l.039.006V3.42s-.05-.038-.061-.038h-.302l-.067.076a.342.342 0 01-.489.011l-.066-.088h-.176l.248.259c.021.022.021.088 0 .11-.028.022-.067.028-.088.006l-.292-.276h-.127l-.363.325-.033-.006c-.038.11-.087.089-.143.089-.126 0-.225-.072-.225-.193 0-.127.099-.209.225-.209h.176v-.182c0-.088.061-.131.149-.131h.066v-.127c0-.143.149-.297.286-.297h.28c.16 0 .27-.115.27-.275V2.42c0-.016.055.017.055-.088h-.187l-.005.017-.308.33a.123.123 0 01-.177 0c-.049-.044-.049-.121 0-.171l.391-.385c.027-.022.06-.022.094-.022l.005.022h.869A4.376 4.376 0 0014.5 1.1a4.402 4.402 0 00-2.816 1.018h.583c.094 0 .165.066.165.159s-.072.16-.165.16h-.478c0 .104-.039.06-.039.066v.351h.429l.226-.252c.132-.127.346-.155.473-.022a.332.332 0 010 .473l-1.183 1.182-.011.011c-.005.005-.011.005-.016.011a.115.115 0 00-.034.022c-.005.006-.01 0-.016.006a.309.309 0 01-.176.038h-.347c-.12.104-.187.148-.187.27v.088c0 .016-.027.027-.027.043l.561.589c.06.06.055.154 0 .209a.143.143 0 01-.209 0l-.578-.578a.425.425 0 01-.082.011c-.154 0-.292-.12-.292-.274v-.358h-.016c-.104.374-.165.77-.165 1.177 0 2.431 1.969 4.4 4.4 4.4zm3.388-3.107c.077 0 .16.06.16.137v.424c0 .077-.083.137-.16.137s-.16-.06-.16-.137V6.93c0-.077.083-.137.16-.137zm-3.113-4.879c0 .187-.154.314-.335.314h-.374v.104c0 .11-.05.198-.16.198s-.16-.088-.16-.198V1.98c-.104-.022-.033-.028-.033-.055 0-.187.127-.325.314-.325h.407c.187 0 .341.127.341.314z"],"inbox-search":["M7.136 3a6.327 6.327 0 00-.098 2.009H4.65l-2.67 5.996H5c.55 0 1 .45 1 .999v1h8v-1c0-.55.45-1 1-1h1.076l1.14 1.14a2.767 2.767 0 001.974.806c.282 0 .554-.042.81-.12V17c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1v-6.455L3.08 3.62l.01-.02c.15-.35.5-.6.91-.6h3.136zm3.244 1.33c0 1.62 1.31 2.93 2.93 2.93s2.93-1.31 2.93-2.93-1.31-2.93-2.93-2.93-2.93 1.31-2.93 2.93zm6.47 2.43l2.89 2.85c.13.15.22.35.23.56 0 .43-.35.78-.78.78-.23 0-.42-.08-.56-.22l-2.87-2.87c-.17.1-.33.2-.51.29-.03.01-.06.03-.09.04-.18.07-.35.15-.55.21-.19.06-.37.11-.57.14-.05.01-.1.02-.14.02-.2.03-.39.05-.6.05A4.3 4.3 0 019 4.31C9 1.93 10.93.01 13.3 0c2.37 0 4.3 1.93 4.3 4.3 0 .21-.02.4-.05.6-.01.05-.01.09-.02.14-.04.2-.08.38-.14.58-.05.19-.13.36-.21.54-.01.03-.03.06-.04.09-.08.18-.18.34-.29.51z"],"inbox-update":["M10.083 3a6.04 6.04 0 00.001 2.009H4.65l-2.67 5.996H5c.55 0 1 .45 1 .999v1h8v-1c0-.55.45-1 1-1h3.02l-.53-1.19a5.97 5.97 0 001.824-.811L20 10.545v6.456c0 .55-.45.999-1 .999H1c-.55 0-1-.45-1-1v-6.455L3.08 3.62l.01-.02c.15-.35.5-.6.91-.6h6.083zM16 8a4 4 0 110-8 4 4 0 010 8z"],"info-sign":["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zM9 4h2v2H9V4zm4 12H7v-1h2V8H8V7h3v8h2v1z"],inheritance:["M6 10c0 2.21 1.79 4 4 4h6.59l-2.29-2.29A.965.965 0 0114 11a1.003 1.003 0 011.71-.71l4 4c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-4 4a1.003 1.003 0 01-1.42-1.42l2.3-2.29H10c-3.31 0-6-2.69-6-6H1a1 1 0 01-1-1V1a1 1 0 011-1h8a1 1 0 011 1v8a1 1 0 01-1 1H6zM2 2v6h6V2H2z"],"inherited-group":["M1 9c.55 0 1 .45 1 1v4c0 1.1.9 2 2 2h2.59l-.3-.29a1.003 1.003 0 011.42-1.42l2 2c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-2 2A1.003 1.003 0 016 19c0-.28.11-.53.3-.71l.29-.29H4c-2.21 0-4-1.79-4-4v-4c0-.55.45-1 1-1zm6.996-9c.79 0 1.68.25 2.309.73a3.63 3.63 0 011.4 2.36c.11.6.17 1.52.17 2.15v.09c.22.09.42.32.47.82.03.39-.12.73-.2.87-.07.34-.27.71-.61.78-.04.16-.09.33-.15.48-.01.01-.02.05-.02.05-.27.71-.68 1.33-1.19 1.78 0 .08 0 .16.01.23.05.55-.15.95 1.33 1.6 1.469.66 3.698 1.35 4.178 2.39.45 1.05.27 1.67.27 1.67h-5.227a1.982 1.982 0 00-.319-.417l-2-2A2.003 2.003 0 005 15H4c-.548 0-1-.452-1-1v-1.462c.511-.213 1.023-.413 1.468-.608 1.479-.65 1.329-1.05 1.379-1.59l.01-.21c-.52-.45-.95-1.08-1.22-1.8l-.01-.01-.01-.03c-.07-.15-.12-.32-.16-.49-.34-.06-.54-.43-.62-.78-.08-.14-.24-.48-.2-.87.05-.51.26-.74.49-.83v-.08c0-.64.05-1.55.17-2.15a3.648 3.648 0 011.4-2.36C6.317.25 7.207 0 7.996 0zm5.997 3c.59 0 1.26.19 1.73.55.46.35.8.85.97 1.4.04.13.07.25.08.38.08.45.13 1.14.13 1.61v.07c.16.07.31.24.35.62.02.29-.09.55-.15.65-.05.26-.2.53-.46.59-.03.12-.07.25-.11.36-.01.01-.01.04-.01.04-.2.53-.51 1-.89 1.34 0 .06 0 .12.01.17.04.41-.11.71 1 1.19 1.099.5 2.768 1.01 3.128 1.79.34.79.2 1.25.2 1.25h-3.039V15c-.06-.33-.17-.69-.33-1.06-.45-.97-1.37-1.52-3.238-2.3-.17-.07-.76-.31-.77-.32-.1-.04-.2-.08-.28-.12.05-.14.04-.29.06-.45l.01-.16c-.25-.21-.47-.48-.65-.79.22-.34.41-.71.56-1.12l.028-.078-.002.013-.006.035.06-.15c.36-.26.6-.67.72-1.13.18-.37.29-.82.25-1.3-.05-.5-.21-.92-.47-1.22-.02-.53-.06-1.11-.12-1.59.38-.17.83-.26 1.24-.26z"],"inner-join":["M8.7 4.7C7.4 6 6.5 7.9 6.5 10s.8 4 2.2 5.3c-.8.5-1.7.7-2.7.7-3.3 0-6-2.7-6-6s2.7-6 6-6c1 0 1.9.2 2.7.7zm-3.34 9.25c-.55-1.2-.86-2.54-.86-3.95s.31-2.75.86-3.95a4.001 4.001 0 000 7.9zM14 4c3.3 0 6 2.7 6 6s-2.7 6-6 6c-1 0-1.9-.2-2.7-.7 1.3-1.3 2.2-3.2 2.2-5.3s-.8-3.9-2.2-5.3C12.1 4.2 13 4 14 4zm.6 2.05c.55 1.2.86 2.54.86 3.95s-.31 2.75-.86 3.95c1.9-.31 3.36-1.96 3.36-3.95S16.5 6.36 14.6 6.05zM10 5.5C8.8 6.7 8 8.2 8 10s.8 3.3 2 4.4c1.2-1.1 2-2.7 2-4.5s-.8-3.3-2-4.4z"],insert:["M19 0H1C.4 0 0 .4 0 1v18c0 .5.4 1 1 1h18c.5 0 1-.5 1-1V1c0-.6-.5-1-1-1zm-1 18H2V2h16v16zM5 11h4v4c0 .6.4 1 1 1s1-.4 1-1v-4h4c.6 0 1-.4 1-1s-.4-1-1-1h-4V5c0-.6-.4-1-1-1s-1 .4-1 1v4H5c-.6 0-1 .4-1 1s.4 1 1 1z"],intersection:["M13 4c-1.31 0-2.51.43-3.5 1.14A5.977 5.977 0 006 4c-3.31 0-6 2.69-6 6s2.69 6 6 6c1.31 0 2.51-.43 3.5-1.14.99.71 2.19 1.14 3.5 1.14 3.31 0 6-2.69 6-6s-2.69-6-6-6zm-4.93 9.41c-.61.37-1.31.59-2.07.59-2.21 0-4-1.79-4-4s1.79-4 4-4c.76 0 1.46.22 2.07.59C7.4 7.56 7 8.73 7 10s.4 2.44 1.07 3.41zM13 14c-.76 0-1.46-.22-2.07-.59C11.6 12.44 12 11.27 12 10s-.4-2.44-1.07-3.41C11.54 6.22 12.24 6 13 6c2.21 0 4 1.79 4 4s-1.79 4-4 4z"],"ip-address":["M6 3.66C6 5.69 10 11 10 11s4-5.31 4-7.34C13.99 1.64 12.21 0 10 0S6 1.64 6 3.66zM8 4c0-1.1.9-2 2-2s2 .9 2 2-.9 2-2 2-2-.9-2-2zM14 13.5V13h-4v1h3v2h-2v1h3v-3.5zM3 12h14c.55 0 1 .45 1 1v6c0 .55-.45 1-1 1H3c-.55 0-1-.45-1-1v-6c0-.55.45-1 1-1zm4 1v6h1v-6H7zm3 1v5h1v-5h-1z"],issue:["M10 20C4.477 20 0 15.523 0 10S4.477 0 10 0s10 4.477 10 10-4.477 10-10 10zm0-2a8 8 0 100-16 8 8 0 000 16zm1-2H9v-2h2v2zm0-3H9V4h2v9z"],"issue-closed":["M15.364 5.9a.997.997 0 01-.707-.293l-2.121-2.122a1 1 0 111.414-1.414l1.414 1.414L18.192.657a1 1 0 011.414 1.414l-3.535 3.536a.997.997 0 01-.707.292zM11.78.157a3.002 3.002 0 00-1.437 1.85 8 8 0 107.1 5.055l.042-.042 1.472-1.472A9.959 9.959 0 0120 10c0 5.523-4.477 10-10 10S0 15.523 0 10 4.477 0 10 0c.608 0 1.202.054 1.78.158zM11 16H9v-2h2v2zm0-3H9V4h2v9z"],"issue-new":["M13.167.512a2.98 2.98 0 00-.131.524c-.74.115-1.39.5-1.848 1.052a8 8 0 106.724 6.724 2.997 2.997 0 001.052-1.848 2.98 2.98 0 00.524-.13A9.99 9.99 0 0120 10c0 5.523-4.477 10-10 10S0 15.523 0 10 4.477 0 10 0a9.99 9.99 0 013.167.512zM11 16H9v-2h2v2zm0-3H9V4h2v9zm6-10h1.5a1 1 0 010 2H17v1.5a1 1 0 01-2 0V5h-1.5a1 1 0 010-2H15V1.5a1 1 0 012 0V3z"],italic:["M11.7 4H14c.6 0 1-.4 1-1s-.4-1-1-1H7c-.6 0-1 .4-1 1s.4 1 1 1h2.2L7.3 15H5c-.6 0-1 .4-1 1s.4 1 1 1h7c.6 0 1-.4 1-1s-.4-1-1-1H9.8l1.9-11z"],"join-table":["M19 6h-4V2c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h4v4c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1zM6 12H2V9h4v3zm0-4H2V5h4v3zm7 9H7v-3h6v3zm0-4H7V9h6v4zm0-5H7V5h6v3zm5 9h-4v-3h4v3zm0-4h-4v-3h4v3z"],key:["M14 0c-3.31 0-6 2.69-6 6 0 1.11.32 2.14.85 3.03L.44 17.44a1.498 1.498 0 102.12 2.12l.79-.79.94.94c.18.18.43.29.71.29s.53-.11.71-.29l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-.94-.94 3.2-3.2A5.9 5.9 0 0014 12c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 9c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z"],"key-backspace":["M19 3H7c-.28 0-.53.11-.71.29l-6 6C.11 9.47 0 9.72 0 10c0 .28.11.53.29.71l6 6c.18.18.43.29.71.29h12c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zm-2.29 9.29a1.003 1.003 0 01-1.42 1.42L13 11.41l-2.29 2.29c-.18.19-.43.3-.71.3a1.003 1.003 0 01-.71-1.71l2.3-2.29-2.3-2.29a1.003 1.003 0 011.42-1.42L13 8.59l2.29-2.29c.18-.19.43-.3.71-.3a1.003 1.003 0 01.71 1.71L14.41 10l2.3 2.29z"],"key-command":["M15.5 12H14V8h1.5C17.43 8 19 6.43 19 4.5S17.43 1 15.5 1 12 2.57 12 4.5V6H8V4.5C8 2.57 6.43 1 4.5 1S1 2.57 1 4.5 2.57 8 4.5 8H6v4H4.5C2.57 12 1 13.57 1 15.5S2.57 19 4.5 19 8 17.43 8 15.5V14h4v1.5c0 1.93 1.57 3.5 3.5 3.5s3.5-1.57 3.5-3.5-1.57-3.5-3.5-3.5zm0-9c.83 0 1.5.67 1.5 1.5S16.33 6 15.5 6 14 5.33 14 4.5 14.67 3 15.5 3zm-11 14c-.83 0-1.5-.67-1.5-1.5S3.67 14 4.5 14s1.5.67 1.5 1.5S5.33 17 4.5 17zm0-11C3.67 6 3 5.33 3 4.5S3.67 3 4.5 3 6 3.67 6 4.5 5.33 6 4.5 6zm7.5 6H8V8h4v4zm3.5 5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"],"key-control":["M16.71 7.29l-6-6C10.53 1.11 10.28 1 10 1s-.53.11-.71.29l-6 6a1.003 1.003 0 001.42 1.42L10 3.41l5.29 5.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],"key-delete":["M19.71 9.29l-6-6A.997.997 0 0013 3H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h12c.28 0 .53-.11.71-.29l6-6c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zm-9 3a1.003 1.003 0 01-1.42 1.42L7 11.41 4.71 13.7c-.18.19-.43.3-.71.3a1.003 1.003 0 01-.71-1.71L5.59 10l-2.3-2.29a1.003 1.003 0 011.42-1.42L7 8.59 9.29 6.3c.18-.19.43-.3.71-.3a1.003 1.003 0 01.71 1.71L8.41 10l2.3 2.29z"],"key-enter":["M18 2c-.55 0-1 .45-1 1v5c0 2.21-1.79 4-4 4H4.41L6.7 9.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L4.41 14H13c3.31 0 6-2.69 6-6V3c0-.55-.45-1-1-1z"],"key-escape":["M2 8c.55 0 1-.45 1-1V4.41l6.29 6.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L4.41 3H7c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1v5c0 .55.45 1 1 1zm9-6.94V3.1c3.39.49 6 3.38 6 6.9 0 3.87-3.13 7-7 7-3.52 0-6.41-2.61-6.9-6H1.06c.5 4.5 4.31 8 8.94 8a9 9 0 009-9c0-4.63-3.5-8.44-8-8.94z"],"key-option":["M13 4h6c.55 0 1-.45 1-1s-.45-1-1-1h-6c-.55 0-1 .45-1 1s.45 1 1 1zm6 12h-4.42L6.87 2.5l-.02.01A.977.977 0 006 2H1c-.55 0-1 .45-1 1s.45 1 1 1h4.42l7.71 13.5.01-.01c.18.3.49.51.86.51h5c.55 0 1-.45 1-1s-.45-1-1-1z"],"key-shift":["M17.74 10.35l-6.99-8.01-.01.01C10.56 2.14 10.3 2 10 2s-.56.14-.74.35l-.01-.01-7 8 .01.01A.95.95 0 002 11c0 .55.45 1 1 1h3v5c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-5h3c.55 0 1-.45 1-1 0-.25-.1-.48-.26-.65z"],"key-tab":["M19 13H4.41l2.29-2.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L2 12.59V10c0-.55-.45-1-1-1s-1 .45-1 1v8c0 .55.45 1 1 1s1-.45 1-1v-2.59l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L4.41 15H19c.55 0 1-.45 1-1s-.45-1-1-1zm0-12c-.55 0-1 .45-1 1v2.59L14.71 1.3A.965.965 0 0014 1a1.003 1.003 0 00-.71 1.71L15.59 5H1c-.55 0-1 .45-1 1s.45 1 1 1h14.59L13.3 9.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L18 7.41V10c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1z"],"known-vehicle":["M19 4a.997.997 0 00-.707.293L14 8.586l-2.293-2.293a1 1 0 00-1.414 1.414l3 3a.997.997 0 001.414 0l5-5A1 1 0 0019 4zm-2.048 7.291c.011.072.048.134.048.209a1.5 1.5 0 01-1.5 1.5c-.225 0-.433-.057-.624-.145-.279.085-.57.145-.876.145a2.99 2.99 0 01-2.121-.879l-3-3 .007-.007A3.027 3.027 0 018.184 8H4V7l1-3h10l.19.568 1.307-1.308c-.336-.356-.758-.658-1.165-.772 0 0-1.74-.488-5.332-.488s-5.332.488-5.332.488c-.67.188-1.424.864-1.674 1.502L2.99 4H3L2 7H1a1 1 0 000 2h.333l-.28.84L1 10v7.5a1.5 1.5 0 103 0V17h12v.5a1.5 1.5 0 003 0V10l-.19-.568-1.858 1.86zM4.5 13a1.5 1.5 0 110-3 1.5 1.5 0 010 3z"],"lab-test":["M13 2a1 1 0 010 2v4l4 8v1a1 1 0 01-1 1H4a1 1 0 01-1-1v-1l4-8V4a1 1 0 110-2h6zm-2 2H9v4l-2 4h6l-2-4V4z"],label:["M3 12h14v-1H3v1zm11-9H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V9l-6-6zm4 12H2V5h11v3H3v1h10v1h5v5zm-4-6V5l4 4h-4z"],layer:["M19.5 9.1l-9-5c-.2-.1-.3-.1-.5-.1s-.3 0-.5.1l-9 5c-.3.2-.5.5-.5.9s.2.7.5.9l9 5c.2.1.3.1.5.1s.3 0 .5-.1l9-5c.3-.2.5-.5.5-.9s-.2-.7-.5-.9z"],"layer-outline":["M9.514 4.126l-9 5a1 1 0 000 1.748l9 5a1 1 0 00.972 0l9-5a1 1 0 000-1.748l-9-5a1 1 0 00-.972 0zM10 6.144l6.94 3.855L10 13.855 3.059 9.999 10 6.144z"],layers:["M.5 6.9l9 5c.2.1.3.1.5.1s.3 0 .5-.1l9-5c.3-.2.5-.5.5-.9s-.2-.7-.5-.9l-9-5c-.2-.1-.3-.1-.5-.1s-.3 0-.5.1l-9 5c-.3.2-.5.5-.5.9s.2.7.5.9z","M19 9c-.2 0-.3 0-.5.1L10 13.9 1.5 9.1C1.3 9 1.2 9 1 9c-.6 0-1 .4-1 1 0 .4.2.7.5.9l9 5c.2.1.3.1.5.1s.3 0 .5-.1l9-5c.3-.2.5-.5.5-.9 0-.6-.4-1-1-1z","M19 13c-.2 0-.3 0-.5.1L10 17.9l-8.5-4.7c-.2-.2-.3-.2-.5-.2-.6 0-1 .4-1 1 0 .4.2.7.5.9l9 5c.2.1.3.1.5.1s.3 0 .5-.1l9-5c.3-.2.5-.5.5-.9 0-.6-.4-1-1-1z"],layout:["M18 6c-1.1 0-2 .9-2 2 0 .37.11.71.28 1.01l-2.27 2.27c-.3-.17-.64-.28-1.01-.28-.93 0-1.71.64-1.93 1.5H8.93c-.22-.86-1-1.5-1.93-1.5-.37 0-.71.11-1.01.28L3.72 9.01C3.89 8.71 4 8.37 4 8c0-.34-.09-.66-.24-.94l3.66-3.38c.31.2.68.32 1.08.32 1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2c0 .34.09.66.24.94L3.08 6.32C2.77 6.12 2.4 6 2 6 .9 6 0 6.9 0 8s.9 2 2 2c.37 0 .71-.11 1.01-.28l2.27 2.27c-.17.3-.28.64-.28 1.01s.11.71.28 1.01l-2.27 2.27C2.71 16.11 2.37 16 2 16c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2c0-.37-.11-.71-.28-1.01l2.27-2.27c.3.17.64.28 1.01.28.93 0 1.71-.64 1.93-1.5h2.14c.22.86 1 1.5 1.93 1.5 1.1 0 2-.9 2-2 0-.37-.11-.71-.28-1.01l2.27-2.27c.3.17.64.28 1.01.28 1.1 0 2-.9 2-2s-.9-2-2-2z"],"layout-auto":["M18 13c-.53 0-1.01.21-1.37.55L11.9 10.6c.06-.19.1-.39.1-.6s-.04-.41-.1-.6l4.72-2.95c.37.34.85.55 1.38.55 1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2c0 .21.04.41.1.6l-4.73 2.96c-.24-.23-.54-.4-.87-.48V3.93c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2S8 .9 8 2c0 .93.64 1.71 1.5 1.93v4.14c-.33.09-.63.26-.87.48L3.9 5.6c.06-.19.1-.39.1-.6 0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2c.53 0 1.01-.21 1.37-.55L8.1 9.4c-.06.19-.1.39-.1.6s.04.41.1.6l-4.72 2.95C3.01 13.21 2.53 13 2 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2c0-.21-.04-.41-.1-.6l4.73-2.96c.24.23.54.4.87.48v4.14C8.64 16.29 8 17.07 8 18c0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93v-4.14c.33-.09.63-.26.87-.48l4.73 2.96c-.06.18-.1.38-.1.59 0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2z"],"layout-balloon":["M18 16c-.14 0-.28.02-.42.05l-1.73-3.45c.69-.45 1.14-1.22 1.14-2.1s-.46-1.65-1.14-2.1l1.73-3.45c.14.03.28.05.42.05 1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2c0 .6.27 1.13.69 1.5l-1.77 3.54c-.14-.02-.28-.04-.42-.04a2.5 2.5 0 00-2.45 2h-4.1A2.5 2.5 0 005.5 8c-.14 0-.28.02-.42.04L3.31 4.5C3.73 4.13 4 3.6 4 3c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2c.14 0 .28-.02.42-.05L4.14 8.4C3.46 8.85 3 9.62 3 10.5s.46 1.65 1.14 2.1l-1.73 3.45A1.84 1.84 0 002 16c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2c0-.6-.27-1.13-.69-1.5l1.77-3.54c.14.02.28.04.42.04a2.5 2.5 0 002.45-2h4.1a2.5 2.5 0 002.45 2c.14 0 .28-.02.42-.04l1.77 3.54c-.42.37-.69.9-.69 1.5 0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2z"],"layout-circle":["M18.3 8c-.2-.9-.6-1.7-1.1-2.5.2-.3.3-.7.3-1 0-1.1-.9-2-2-2-.4 0-.7.1-1 .3-.8-.5-1.6-.8-2.5-1.1-.1-1-1-1.7-2-1.7S8.2.8 8 1.7c-.9.3-1.7.6-2.5 1.1-.3-.2-.7-.3-1-.3-1.1 0-2 .9-2 2 0 .4.1.7.3 1-.5.8-.8 1.6-1.1 2.5C.8 8.2 0 9 0 10s.8 1.8 1.7 2c.2.9.6 1.7 1.1 2.5-.2.3-.3.7-.3 1 0 1.1.9 2 2 2 .4 0 .7-.1 1-.3.8.5 1.6.8 2.5 1.1.1 1 1 1.7 2 1.7s1.8-.8 2-1.7c.9-.2 1.7-.6 2.5-1.1.3.2.7.3 1 .3 1.1 0 2-.9 2-2 0-.4-.1-.7-.3-1 .5-.8.8-1.6 1.1-2.5 1-.1 1.7-1 1.7-2s-.8-1.8-1.7-2zm-1.8 5.8c-.3-.2-.6-.3-1-.3-1.1 0-2 .9-2 2 0 .4.1.7.3 1-.6.3-1.2.6-1.9.8-.3-.7-1-1.3-1.9-1.3-.8 0-1.6.5-1.9 1.3-.7-.2-1.3-.4-1.9-.8.2-.3.3-.6.3-1 0-1.1-.9-2-2-2-.4 0-.7.1-1 .3-.3-.6-.6-1.2-.8-1.9.8-.3 1.3-1.1 1.3-1.9s-.5-1.6-1.2-1.8c.2-.7.4-1.3.8-1.9.3.2.6.3 1 .3 1.1 0 2-.9 2-2 0-.4-.1-.7-.3-1 .6-.3 1.2-.6 1.9-.8.2.7 1 1.2 1.8 1.2s1.6-.5 1.9-1.3c.7.2 1.3.4 1.9.8-.2.3-.3.6-.3 1 0 1.1.9 2 2 2 .4 0 .7-.1 1-.3.3.6.6 1.2.8 1.9-.8.3-1.3 1.1-1.3 1.9s.5 1.6 1.2 1.8c-.1.7-.4 1.4-.7 2z"],"layout-grid":["M2 0a2 2 0 100 4 2 2 0 100-4zM10 0a2 2 0 100 4 2 2 0 100-4zM18 0a2 2 0 100 4 2 2 0 100-4zM18 8a2 2 0 100 4 2 2 0 100-4zM18 16a2 2 0 100 4 2 2 0 100-4zM10 16a2 2 0 100 4 2 2 0 100-4zM2 16a2 2 0 100 4 2 2 0 100-4zM2 8a2 2 0 100 4 2 2 0 100-4zM10 8a2 2 0 100 4 2 2 0 100-4z"],"layout-group-by":["M2 2a2 2 0 100 4 2 2 0 100-4zM18 0a2 2 0 100 4 2 2 0 100-4zM18 8a2 2 0 100 4 2 2 0 100-4zM18 16a2 2 0 100 4 2 2 0 100-4zM2 14a2 2 0 100 4 2 2 0 100-4zM2 8a2 2 0 100 4 2 2 0 100-4zM13 12a2 2 0 100 4 2 2 0 100-4zM13 4a2 2 0 100 4 2 2 0 100-4z"],"layout-hierarchy":["M18.5 16.07v-4.14c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2-.93 0-1.71.64-1.93 1.5h-4.14c-.18-.7-.73-1.25-1.43-1.43V3.93c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2S8 .9 8 2c0 .93.64 1.71 1.5 1.93v4.14c-.7.18-1.25.73-1.43 1.43H3.93C3.71 8.64 2.93 8 2 8c-1.1 0-2 .9-2 2 0 .93.64 1.71 1.5 1.93v4.14c-.86.22-1.5 1-1.5 1.93 0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93v-4.14c.7-.18 1.25-.73 1.43-1.43h4.14c.18.7.73 1.25 1.43 1.43v4.14c-.86.22-1.5 1-1.5 1.93 0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93v-4.14c.7-.18 1.25-.73 1.43-1.43h4.14c.18.7.73 1.25 1.43 1.43v4.14c-.86.22-1.5 1-1.5 1.93 0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93z"],"layout-linear":["M16.5 7a2.5 2.5 0 00-2.45 2h-2.1a2.5 2.5 0 00-4.9 0h-2.1a2.5 2.5 0 100 1h2.1a2.5 2.5 0 004.9 0h2.1a2.5 2.5 0 102.45-3z"],"layout-skew-grid":["M2 0a2 2 0 100 4 2 2 0 100-4zM18 0a2 2 0 100 4 2 2 0 100-4zM18 8a2 2 0 100 4 2 2 0 100-4zM18 16a2 2 0 100 4 2 2 0 100-4zM2 16a2 2 0 100 4 2 2 0 100-4zM2 8a2 2 0 100 4 2 2 0 100-4zM10 12a2 2 0 100 4 2 2 0 100-4zM10 4a2 2 0 100 4 2 2 0 100-4z"],"layout-sorted-clusters":["M2 8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM2 0C.9 0 0 .9 0 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm16 8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-8 4c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],learning:["M10.551 1.127a1.256 1.256 0 00-1.102 0L.456 5.89c-.608.309-.608.913 0 1.222l8.993 4.762c.334.17.767.17 1.102 0l8.992-4.762c.61-.309.61-.913 0-1.222l-8.992-4.762z","M18 6.5l.016 4.514c.002.548.447.99.994.99a.99.99 0 00.99-.99V6.5h-2zM3.366 10.033l6.401 3.358a.5.5 0 00.465 0l6.406-3.358a.25.25 0 01.366.221v5.109a.25.25 0 01-.139.224l-6.64 3.302a.5.5 0 01-.446 0l-6.64-3.302A.25.25 0 013 15.363v-5.108a.25.25 0 01.366-.222z"],"left-join":["M8.7 4.7C7.4 6 6.5 7.9 6.5 10s.8 4 2.2 5.3c-.8.5-1.7.7-2.7.7-3.3 0-6-2.7-6-6s2.7-6 6-6c1 0 1.9.2 2.7.7zM14 4c3.3 0 6 2.7 6 6s-2.7 6-6 6c-1 0-1.9-.2-2.7-.7 1.3-1.3 2.2-3.2 2.2-5.3s-.8-3.9-2.2-5.3C12.1 4.2 13 4 14 4zm.6 2.05c.55 1.2.86 2.54.86 3.95s-.31 2.75-.86 3.95c1.9-.31 3.36-1.96 3.36-3.95S16.5 6.36 14.6 6.05zM10 5.5C8.8 6.7 8 8.2 8 10s.8 3.3 2 4.4c1.2-1.1 2-2.7 2-4.5s-.8-3.3-2-4.4z"],"less-than":["M7.162 10l9.154 3.052a1 1 0 01-.632 1.897l-12-4c-.912-.304-.912-1.594 0-1.897l12-4a1 1 0 01.632 1.897L7.162 10z"],"less-than-or-equal-to":["M16.316 11.051L7.162 8l9.154-3.051a1 1 0 10-.632-1.898l-12 4c-.912.304-.912 1.594 0 1.898l12 4a1 1 0 10.632-1.898zM16 15H4a1 1 0 100 2h12a1 1 0 100-2z"],lifesaver:["M8.143 14.644L7.028 17.43c.919.368 1.922.57 2.972.57s2.053-.202 2.972-.57l-1.115-2.786A4.986 4.986 0 0110 15a4.986 4.986 0 01-1.857-.356zm-2.787-2.787A4.986 4.986 0 015 10c0-.656.126-1.283.356-1.857L2.57 7.028A7.978 7.978 0 002 10c0 1.05.202 2.053.57 2.972l2.786-1.115zm2.787-6.5A4.986 4.986 0 0110 5c.656 0 1.283.126 1.857.356l1.115-2.786A7.978 7.978 0 0010 2c-1.05 0-2.053.202-2.972.57l1.115 2.786zm6.5 2.786c.23.574.357 1.2.357 1.857 0 .656-.126 1.283-.356 1.857l2.786 1.115c.368-.919.57-1.922.57-2.972s-.202-2.053-.57-2.972l-2.786 1.115zM10 13a3 3 0 100-6 3 3 0 000 6zm0 7C4.477 20 0 15.523 0 10S4.477 0 10 0s10 4.477 10 10-4.477 10-10 10z"],lightbulb:["M6.33 13.39c0 .34.27.61.6.61h6.13c.33 0 .6-.27.6-.61C14.03 9.78 16 9.4 16 6.09 16 2.72 13.31 0 10 0S4 2.72 4 6.09c0 3.31 1.97 3.69 2.33 7.3zM13 15H7c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1zm-1 3H8c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1z"],link:["M10.85 11.98l-4.44 4.44-1 1c-.36.36-.86.58-1.41.58-1.1 0-2-.9-2-2 0-.55.22-1.05.59-1.41l5.44-5.44C7.69 9.06 7.36 9 7 9c-1.11 0-2.09.46-2.82 1.18l-.01-.01-3 3 .01.01C.46 13.91 0 14.89 0 16c0 2.21 1.79 4 4 4 1.11 0 2.09-.46 2.82-1.18l.01.01 3-3-.01-.01C10.54 15.09 11 14.11 11 13c0-.36-.06-.69-.15-1.02zM20 4c0-2.21-1.79-4-4-4-1.11 0-2.09.46-2.82 1.18l-.01-.01-3 3 .01.01C9.46 4.91 9 5.89 9 7c0 .36.06.69.15 1.02l4.44-4.44 1-1c.36-.36.86-.58 1.41-.58 1.1 0 2 .9 2 2 0 .55-.22 1.05-.59 1.41l-5.44 5.44c.34.09.67.15 1.03.15 1.11 0 2.09-.46 2.82-1.18l.01.01 3-3-.01-.01C19.54 6.09 20 5.11 20 4zM5 14a1.003 1.003 0 001.71.71l8-8a1.003 1.003 0 00-1.42-1.42l-2 2-2 2-2 2-2 2c-.18.18-.29.43-.29.71z"],list:["M1.03 1C.46 1 0 1.46 0 2.03v.95C0 3.54.46 4 1.03 4h17.95C19.54 4 20 3.54 20 2.97v-.94C20 1.46 19.54 1 18.97 1H1.03zM0 17.97C0 18.54.46 19 1.03 19h17.95c.56 0 1.03-.46 1.03-1.03v-.95c0-.56-.46-1.03-1.03-1.03H1.03C.46 16 0 16.46 0 17.03v.94zM0 12.97C0 13.54.46 14 1.03 14h17.95c.56 0 1.03-.46 1.03-1.03v-.95c0-.56-.46-1.03-1.03-1.03H1.03C.46 11 0 11.46 0 12.03v.94zM0 7.97C0 8.54.46 9 1.03 9h17.95C19.54 9 20 8.54 20 7.97v-.94C20 6.46 19.54 6 18.97 6H1.03C.46 6 0 6.46 0 7.03v.94z"],"list-columns":["M0 2.973v-.936C0 1.468.46 1.01 1.029 1H7.97C8.541 1 9 1.468 9 2.027v.946C9 3.542 8.53 4 7.971 4H1.03C.459 4 0 3.542 0 2.973zm0 5v-.936C0 6.468.46 6.01 1.029 6H7.97C8.541 6 9 6.468 9 7.027v.946C9 8.542 8.53 9 7.971 9H1.03C.459 9 0 8.542 0 7.973zm0 5v-.936C0 11.468.46 11.01 1.029 11H7.97C8.541 11 9 11.468 9 12.027v.946C9 13.542 8.53 14 7.971 14H1.03C.459 14 0 13.542 0 12.973zm0 5v-.936C0 16.468.46 16.01 1.029 16H7.97C8.541 16 9 16.468 9 17.027v.946C9 18.542 8.53 19 7.971 19H1.03C.459 19 0 18.542 0 17.973zm11-15v-.936c0-.569.46-1.027 1.029-1.037h6.942C19.541 1 20 1.468 20 2.027v.946C20 3.542 19.53 4 18.971 4H12.03C11.459 4 11 3.542 11 2.973zm0 5v-.936c0-.569.46-1.027 1.029-1.037h6.942C19.541 6 20 6.468 20 7.027v.946C20 8.542 19.53 9 18.971 9H12.03C11.459 9 11 8.542 11 7.973zm0 5v-.936c0-.569.46-1.027 1.029-1.037h6.942c.57 0 1.029.468 1.029 1.027v.946c0 .569-.47 1.027-1.029 1.027H12.03c-.57 0-1.029-.458-1.029-1.027zm0 5v-.936c0-.569.46-1.027 1.029-1.037h6.942c.57 0 1.029.468 1.029 1.027v.946c0 .569-.47 1.027-1.029 1.027H12.03c-.57 0-1.029-.458-1.029-1.027z"],"list-detail-view":["M8 6H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1zm0 5H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm0 5H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zM8 1H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zm11 0h-7c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1z"],locate:["M10 8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm9 1h-1.07c-.45-3.61-3.32-6.45-6.93-6.91V1c0-.55-.45-1-1-1S9 .45 9 1v1.09C5.39 2.55 2.52 5.39 2.07 9H1c-.55 0-1 .45-1 1s.45 1 1 1h1.07c.45 3.61 3.32 6.45 6.93 6.91V19c0 .55.45 1 1 1s1-.45 1-1v-1.09c3.61-.46 6.48-3.29 6.93-6.91H19c.55 0 1-.45 1-1s-.45-1-1-1zm-4 2h.9a5.98 5.98 0 01-4.9 4.91V15c0-.55-.45-1-1-1s-1 .45-1 1v.91A5.98 5.98 0 014.1 11H5c.55 0 1-.45 1-1s-.45-1-1-1h-.9A5.98 5.98 0 019 4.09V5c0 .55.45 1 1 1s1-.45 1-1v-.91A5.98 5.98 0 0115.9 9H15c-.55 0-1 .45-1 1s.45 1 1 1z"],lock:["M15.93 9H14V4.99c0-2.21-1.79-4-4-4s-4 1.79-4 4V9H3.93c-.55 0-.93.44-.93.99v8c0 .55.38 1.01.93 1.01h12c.55 0 1.07-.46 1.07-1.01v-8c0-.55-.52-.99-1.07-.99zM8 9V4.99c0-1.1.9-2 2-2s2 .9 2 2V9H8z"],"log-in":["M19 0h-8c-.55 0-1 .45-1 1s.45 1 1 1h7v16h-7c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-4 10c0-.28-.11-.53-.29-.71l-5-5a1.003 1.003 0 00-1.42 1.42L11.59 9H1c-.55 0-1 .45-1 1s.45 1 1 1h10.59L8.3 14.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l5-5c.18-.18.29-.43.29-.71z"],"log-out":["M19.71 9.29l-5-5a1.003 1.003 0 00-1.42 1.42L16.59 9H6c-.55 0-1 .45-1 1s.45 1 1 1h10.59l-3.29 3.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l5-5c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zM9 18H2V2h7c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1z"],manual:["M20 1.1a.976.976 0 00-.83-.88C15.15-.43 12.07.34 10 2.5 7.93.34 4.85-.43.84.22.37.3.03.67 0 1.1v15.01c0 .07 0 .14.01.21.09.52.61.88 1.15.79 3.85-.62 6.4.16 8 2.46.02.02.03.04.05.07.02.02.04.04.06.07l.01.01a1.07 1.07 0 00.28.19c.01 0 .01.01.02.01.03.01.07.03.1.04.01 0 .02.01.04.01.03.01.07.02.1.02.01 0 .02 0 .04.01H10c.04 0 .09 0 .13-.01.01 0 .03 0 .04-.01.03-.01.06-.01.1-.02.01 0 .03-.01.04-.01.03-.01.07-.02.1-.04.01 0 .02-.01.03-.01.07-.03.13-.07.19-.11.01 0 .01-.01.02-.01.02-.02.04-.03.06-.05.01-.01.02-.02.03-.02l.05-.05c.01-.01.02-.02.02-.03.01-.02.02-.03.04-.05 1.61-2.3 4.15-3.09 8-2.46.54.09 1.06-.26 1.15-.79-.01-.05 0-.09 0-.13V1.1zM9 16.63c-1.78-1.31-4.12-1.83-7-1.55V2c3.26-.37 5.51.39 7 2.35v12.28zm9-1.56c-2.88-.28-5.22.24-7 1.55V4.34c1.49-1.96 3.74-2.71 7-2.35v13.08z"],"manually-entered-data":["M1 12h4.34l2-2H1c-.55 0-1 .45-1 1s.45 1 1 1zm16.77-3.94l1.65-1.65c.36-.36.58-.86.58-1.41 0-1.1-.9-2-2-2-.55 0-1.05.22-1.41.59l-1.65 1.65 2.83 2.82zM1 4h12.34l2-2H1c-.55 0-1 .45-1 1s.45 1 1 1zM0 15c0 .55.45 1 1 1h.34l2-2H1c-.55 0-1 .45-1 1zm1-7h8.34l2-2H1c-.55 0-1 .45-1 1s.45 1 1 1zm18 2h-.34l-2 2H19c.55 0 1-.45 1-1s-.45-1-1-1zm0 4h-4.34l-2 2H19c.55 0 1-.45 1-1s-.45-1-1-1zM4 19l4.41-1.59-2.81-2.79L4 19zM14.23 5.94l-7.65 7.65 2.83 2.83 7.65-7.65-2.83-2.83z"],map:["M19.54 4.18l.01-.02-6-4-.01.02C13.39.08 13.21 0 13 0s-.39.08-.54.18l-.01-.02L7 3.8 1.55.17l-.01.01A.969.969 0 001 0C.45 0 0 .45 0 1v14c0 .35.19.64.46.82l-.01.02 6 4 .01-.02c.15.1.33.18.54.18s.39-.08.54-.18l.01.02L13 16.2l5.45 3.63.01-.02c.15.11.33.19.54.19.55 0 1-.45 1-1V5c0-.35-.19-.64-.46-.82zM6 17.13l-4-2.67V2.87l4 2.67v11.59zm6-2.67l-4 2.67V5.54l4-2.67v11.59zm6 2.67l-4-2.67V2.87l4 2.67v11.59z"],"map-create":["M18 9.22v7.91l-4-2.67V9.22c-.61-.55-1-1.33-1-2.22-.35 0-.69-.07-1-.18v7.65l-4 2.67V5.54l2.02-1.35c0-.06-.02-.13-.02-.19 0-1.66 1.34-3 3-3 0-.34.07-.66.17-.97C13.12.02 13.06 0 13 0c-.21 0-.39.08-.54.18l-.01-.02L7 3.8 1.55.17l-.01.01A.969.969 0 001 0C.45 0 0 .45 0 1v14c0 .35.19.64.46.82l-.01.02 6 4 .01-.02c.15.1.33.18.54.18s.39-.08.54-.18l.01.02L13 16.2l5.45 3.63.01-.02c.15.11.33.19.54.19.55 0 1-.45 1-1V6.82c-.31.11-.65.18-1 .18 0 .89-.39 1.67-1 2.22zM6 17.13l-4-2.67V2.87l4 2.67v11.59zM12 4c0 .55.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V5h2c.55 0 1-.45 1-1s-.45-1-1-1h-2V1c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1z"],"map-marker":["M9.98 0c-3.87 0-7 2.98-7 6.67 0 3.68 7 13.33 7 13.33s7-9.65 7-13.33c0-3.68-3.14-6.67-7-6.67zm0 10c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z"],maximize:["M19 0h-5c-.55 0-1 .45-1 1s.45 1 1 1h2.59L11.3 7.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L18 3.41V6c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zM8 11c-.28 0-.53.11-.71.29L2 16.59V14c0-.55-.45-1-1-1s-1 .45-1 1v5c0 .55.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1H3.41l5.29-5.29c.19-.18.3-.43.3-.71 0-.55-.45-1-1-1z"],media:["M15 9c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm4-7H1c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-1 13l-6-5-2 2-4-5-4 8V4h16v11z"],menu:["M1 6h18c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm18 3H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm0 5H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],"menu-closed":["M8 6h11c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zM4 6c-.28 0-.53.11-.71.29l-3 3C.11 9.47 0 9.72 0 10c0 .28.11.53.29.71l3 3A1.003 1.003 0 005 13V7c0-.55-.45-1-1-1zm15 8H8c-.55 0-1 .45-1 1s.45 1 1 1h11c.55 0 1-.45 1-1s-.45-1-1-1zm0-5H8c-.55 0-1 .45-1 1s.45 1 1 1h11c.55 0 1-.45 1-1s-.45-1-1-1z"],"menu-open":["M12 9H1c-.55 0-1 .45-1 1s.45 1 1 1h11c.55 0 1-.45 1-1s-.45-1-1-1zm0 5H1c-.55 0-1 .45-1 1s.45 1 1 1h11c.55 0 1-.45 1-1s-.45-1-1-1zm0-10H1c-.55 0-1 .45-1 1s.45 1 1 1h11c.55 0 1-.45 1-1s-.45-1-1-1zm7.71 5.29l-3-3A1.003 1.003 0 0015 7v6a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],"merge-columns":["M6.71 6.29a1.003 1.003 0 00-1.42 1.42L6.59 9H2V2h5v2.18c.42.15.8.39 1.11.7l.01-.01.88.89V1c0-.55-.45-1-1-1H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-4.76l-.88.88-.01-.01c-.31.31-.69.56-1.11.71V18H2v-7h4.59L5.3 12.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-3-3zM19 0h-7c-.55 0-1 .45-1 1v4.76l.88-.88.01.01c.31-.31.69-.55 1.11-.7V2h5v7h-4.59l1.29-1.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L13.41 11H18v7h-5v-2.18c-.42-.15-.8-.39-1.11-.7l-.01.01-.88-.89V19c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],"merge-links":["M10 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm8-5c-.93 0-1.71.64-1.93 1.5H14V4c0-2.21-1.79-4-4-4S6 1.79 6 4v5.5H3.93C3.71 8.64 2.93 8 2 8c-1.1 0-2 .9-2 2s.9 2 2 2c.93 0 1.71-.64 1.93-1.5H6V16c0 2.21 1.79 4 4 4s4-1.79 4-4v-5.5h2.07c.22.86 1 1.5 1.93 1.5 1.1 0 2-.9 2-2s-.9-2-2-2zm-5 8c0 1.66-1.34 3-3 3s-3-1.34-3-3V4c0-1.66 1.34-3 3-3s3 1.34 3 3v12zM10 3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],minimize:["M8 11H3c-.55 0-1 .45-1 1s.45 1 1 1h2.59L.3 18.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L7 14.41V17c0 .55.45 1 1 1s1-.45 1-1v-5c0-.55-.45-1-1-1zM20 1a1.003 1.003 0 00-1.71-.71L13 5.59V3c0-.55-.45-1-1-1s-1 .45-1 1v5c0 .55.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1h-2.59l5.29-5.29c.19-.18.3-.43.3-.71z"],minus:["M16 9H4c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1z"],"mobile-phone":["M15 0H5c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-5 19c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm4-3H6V3h8v13z"],"mobile-video":["M19 5c-.28 0-.53.11-.71.29L15 8.59V5c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h13c.55 0 1-.45 1-1v-3.59l3.29 3.29c.18.19.43.3.71.3.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z"],modal:["M19 1a1 1 0 011 1v16a1 1 0 01-1 1H1a1 1 0 01-1-1V2a1 1 0 011-1h18zm-1 4H2v12h16V5zm-3-3h-2v2h2V2zm3 0h-2v2h2V2z"],"modal-filled":["M20 5v13a1 1 0 01-1 1H1a1 1 0 01-1-1V5h20zm-3-4h2a1 1 0 011 1v1h-3V1zm-2 2H0V2a1 1 0 011-1h14v2z"],moon:["M19 14.15A9.94 9.94 0 019.94 20C4.45 20 0 15.55 0 10.06 0 6.03 2.4 2.56 5.85 1a9.811 9.811 0 00-.88 4.09c0 5.49 4.45 9.94 9.94 9.94 1.46 0 2.84-.31 4.09-.88z"],more:["M3.5 8a2.5 2.5 0 100 5 2.5 2.5 0 100-5zM17.5 8a2.5 2.5 0 100 5 2.5 2.5 0 100-5zM10.5 8a2.5 2.5 0 100 5 2.5 2.5 0 100-5z"],mountain:["M20 16H4l7-11h1l2 2h1l5 9zm-4-5l-1.5-3h-1l-1-1-1-1L8 11.5l3-1.5 1 1 1-1 3 1zM8.055 8L2.79 16H0l7-8h1.055z"],move:["M19.71 9.29l-3-3a1.003 1.003 0 00-1.42 1.42L16.59 9H11V3.41l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3C10.53.11 10.28 0 10 0s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42L9 3.41V9H3.41L4.7 7.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3C.11 9.47 0 9.72 0 10c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L3.41 11H9v5.59L7.71 15.3A.965.965 0 007 15a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3a1.003 1.003 0 00-1.42-1.42L11 16.59V11h5.59l-1.29 1.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],mugshot:["M19 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18h-.07c-.05-.2-.12-.42-.22-.67-.46-1.05-2.68-1.75-4.16-2.4-1.48-.65-1.28-1.05-1.33-1.59-.01-.07-.01-.15-.01-.23.51-.45.92-1.07 1.19-1.78 0 0 .01-.04.02-.05.06-.15.11-.32.15-.48.34-.07.54-.44.61-.78.08-.14.23-.48.2-.87-.05-.5-.25-.73-.47-.82v-.09c0-.63-.06-1.55-.17-2.15-.02-.17-.06-.33-.11-.5a3.67 3.67 0 00-1.29-1.86C11.7 3.25 10.81 3 10.02 3s-1.68.25-2.31.73c-.61.47-1.07 1.13-1.29 1.86-.05.16-.09.33-.11.5-.12.6-.17 1.51-.17 2.14v.08c-.24.09-.44.32-.49.83-.04.39.12.73.2.87.08.35.28.72.63.78.04.17.09.33.15.48 0 .01.01.02.01.03l.01.01c.27.72.7 1.35 1.22 1.8 0 .07-.01.14-.01.21-.05.54.1.94-1.38 1.59-1.48.65-3.7 1.35-4.16 2.4-.12.27-.18.49-.23.69H2V2h16v16z"],"multi-select":["M19 3H7c-.55 0-1 .45-1 1v1h12v6h1c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zm-6 6H1c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1zm-1 6H2v-4h10v4zm4-9H4c-.55 0-1 .45-1 1v1h12v6h1c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1z"],music:["M19 0c-.08 0-.16.03-.24.05V.03l-12 3v.02C6.33 3.16 6 3.53 6 4v11.35c-.59-.22-1.27-.35-2-.35-2.21 0-4 1.12-4 2.5S1.79 20 4 20c1.94 0 3.55-.86 3.92-2H8V7.78l10-2.5v7.07c-.59-.22-1.27-.35-2-.35-2.21 0-4 1.12-4 2.5s1.79 2.5 4 2.5c1.94 0 3.55-.86 3.92-2H20V1c0-.55-.45-1-1-1z"],"new-drawing":["M18.7 13.7c.5 0 1 .4 1 1 0 .257-.073.44-.22.614l-.08.086-4 4c-.2.2-.4.3-.7.3-.6 0-1-.5-1-1 0-.257.073-.44.22-.614L14 18l4-4c.2-.2.4-.3.7-.3zM1.8 0l8.378 2.982A3.003 3.003 0 0013 7a3.003 3.003 0 003.877 2.87l.723 2.53.049.06a.41.41 0 01.051.24c0 .167-.07.403-.208.593l-.092.107-4 4c-.2.2-.4.3-.7.3-.075 0-.15-.056-.225-.084L12.4 17.6l-7-2-.112-.042c-.223-.094-.431-.244-.542-.45L4.7 15 0 1.8l.5-.6L7 7.7c-.2.3-.3.6-.3 1 0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2a1.68 1.68 0 00-.871.22L7.7 7 1.2.5l.6-.5zM16 0c.55 0 1 .45 1 1v2h2c.55 0 1 .45 1 1s-.45 1-1 1h-2v2c0 .432-.278.803-.664.941l-.01.004A.989.989 0 0116 8c-.55 0-1-.45-1-1V5h-2c-.55 0-1-.45-1-1l.007-.116C12.065 3.388 12.489 3 13 3h2V1c0-.55.45-1 1-1z"],"new-grid-item":["M8 0H1C.45 0 0 .45 0 1v7c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm0 11H1c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-7c0-.55-.45-1-1-1zm6 7h-1v-1c0-.55-.45-1-1-1s-1 .45-1 1v2c0 .55.45 1 1 1h2c.55 0 1-.45 1-1s-.45-1-1-1zm5-7h-2c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1zm0-11h-7c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-5 11h-2c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1s1-.45 1-1v-1h1c.55 0 1-.45 1-1s-.45-1-1-1zm5 5c-.55 0-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h2c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1z"],"new-layer":["M11.513 2.663A2 2 0 0013 6h1v1a2 2 0 104 0v-.733l1.5.833c.3.2.5.5.5.9s-.2.7-.5.9l-9 5c-.2.1-.3.1-.5.1s-.3 0-.5-.1l-9-5C.2 8.7 0 8.4 0 8s.2-.7.5-.9l9-5c.2-.1.3-.1.5-.1s.3 0 .5.1l1.013.563zM17 3h2a1 1 0 010 2h-2v2a1 1 0 01-2 0V5h-2a1 1 0 010-2h2V1a1 1 0 012 0v2z"],"new-layers":["M17 3h2a1 1 0 010 2h-2v2a1 1 0 01-2 0V5h-2a1 1 0 010-2h2V1a1 1 0 012 0v2zm-1.252 5.984L10.5 11.9c-.2.1-.3.1-.5.1s-.3 0-.5-.1l-9-5C.2 6.7 0 6.4 0 6s.2-.7.5-.9l9-5c.2-.1.3-.1.5-.1s.3 0 .5.1L13.92 2H13a2 2 0 100 4h1v1a2 2 0 001.748 1.984zm2.07-1.15C17.935 7.58 18 7.298 18 7V6h1c.353 0 .684-.091.972-.251.018.078.028.162.028.251 0 .4-.2.7-.5.9l-1.682.934zM19 9c.6 0 1 .4 1 1 0 .4-.2.7-.5.9l-9 5c-.2.1-.3.1-.5.1s-.3 0-.5-.1l-9-5c-.3-.2-.5-.5-.5-.9 0-.6.4-1 1-1 .2 0 .3 0 .5.1l8.5 4.8 8.5-4.8c.2-.1.3-.1.5-.1zm0 4c.6 0 1 .4 1 1 0 .4-.2.7-.5.9l-9 5c-.2.1-.3.1-.5.1s-.3 0-.5-.1l-9-5c-.3-.2-.5-.5-.5-.9 0-.6.4-1 1-1 .2 0 .3 0 .5.2l8.5 4.7 8.5-4.8c.2-.1.3-.1.5-.1z"],"new-link":["M14.5 12a2.5 2.5 0 00-2.45 2h-7.1a2.5 2.5 0 100 1h7.1a2.5 2.5 0 102.45-3zM19 5h-2V3c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V7h2c.55 0 1-.45 1-1s-.45-1-1-1z"],"new-object":["M12 4c0 .6.4 1 1 1h2v2c0 .6.4 1 1 1 .5 0 1-.4 1-1V5h2c.5 0 1-.4 1-1s-.5-1-1-1h-2V1c0-.6-.5-1-1-1-.6 0-1 .4-1 1v2h-2c-.6 0-1 .5-1 1zm7 3c0 1.7-1.3 3-3 3s-3-1.3-3-3c-1.7 0-3-1.3-3-3s1.3-3 3-3c0-.2 0-.4.1-.5-1-.3-2-.5-3.1-.5C4.5 0 0 4.5 0 10s4.5 10 10 10 10-4.5 10-10c0-1.1-.2-2.1-.5-3H19z"],"new-person":["M11.41 15.92c-1.46-.65-1.26-1.05-1.31-1.59-.01-.07-.01-.15-.01-.23.5-.45.91-1.07 1.18-1.78 0 0 .01-.04.02-.05.06-.15.11-.32.15-.48.33-.07.53-.44.6-.78.08-.14.23-.48.2-.87-.05-.5-.24-.73-.47-.82v-.09c0-.63-.06-1.55-.17-2.15-.02-.17-.06-.33-.11-.5-.22-.73-.67-1.4-1.27-1.86C9.58 4.25 8.7 4 7.92 4c-.78 0-1.66.25-2.28.73-.61.47-1.06 1.13-1.27 1.86-.05.16-.08.33-.11.5-.12.6-.18 1.51-.18 2.14v.08c-.23.09-.43.32-.48.83-.04.39.12.73.2.87.08.35.28.72.62.78.04.17.09.33.15.48 0 .01.01.02.01.03l.01.01c.27.72.69 1.35 1.21 1.8 0 .07-.01.14-.01.21-.05.54.1.94-1.36 1.59-1.46.65-3.66 1.35-4.11 2.4C-.14 19.38.04 20 .04 20h15.75s.18-.62-.27-1.67c-.45-1.06-2.65-1.75-4.11-2.41zM18.87 3h-2V1c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V5h2c.55 0 1-.45 1-1s-.45-1-1-1z"],"new-prescription":["M11.95 10.23c.16-.18.22-.22.46-.22h1.48c.25 0 .47.08.59.33.1.2.09.41-.05.66l-2.71 3.58L14.88 19c.13.21.16.46.03.69-.12.21-.34.31-.57.31H12.7c-.31 0-.56-.17-.7-.44l-1.9-2.67-1.93 2.68c-.15.27-.42.43-.73.43H5.98c-.25 0-.47-.08-.59-.33-.1-.2-.09-.41.05-.66l3.09-4.35L4.26 9H3v4.32c0 .41-.3.69-.7.69H.7c-.41 0-.7-.28-.7-.69V.69C0 .28.3 0 .7 0h4.42c.71 0 1.36.1 1.94.3.59.2 1.11.49 1.54.87.44.38.78.84 1.02 1.39.25.54.37 1.13.37 1.77 0 1.01-.28 1.88-.84 2.6-.43.54-1.35 1.29-2 1.59l3.09 3.94 1.71-2.23zM4.71 6.04c.71 0 1.45-.16 1.81-.46.33-.28.5-.69.5-1.25s-.17-.97-.5-1.25c-.35-.3-1.1-.46-1.81-.46h-1.7v3.42h1.7zM19 3c.55 0 1 .45 1 1s-.45 1-1 1h-2v2c0 .55-.45 1-1 1s-1-.45-1-1V5h-2c-.55 0-1-.45-1-1s.45-1 1-1h2V1c0-.55.45-1 1-1s1 .45 1 1v2h2z"],"new-text-box":["M19 3h-2V1c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V5h2c.55 0 1-.45 1-1s-.45-1-1-1zM5 7.5v1c0 .28.22.5.5.5s.5-.22.5-.5V8h2v7h-.5c-.28 0-.5.22-.5.5s.22.5.5.5h2c.28 0 .5-.22.5-.5s-.22-.5-.5-.5H9V8h2v.5c0 .28.22.5.5.5s.5-.22.5-.5v-1c0-.28-.22-.5-.5-.5h-6c-.28 0-.5.22-.5.5zM16 9c-.55 0-1 .45-1 1v8H2V5h8c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1v15c0 .55.45 1 1 1h15c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1z"],ninja:["M20 6s-2.98 2.43-6.12 2.19C13.52 5.31 12.05 0 6 0c0 0 2.41 2.99 2.16 6.12C5.27 6.49 0 7.97 0 14c0 0 2.98-2.43 6.11-2.19C6.47 14.69 7.94 20 14 20c0 0-2.42-2.99-2.16-6.13C14.73 13.51 20 12.02 20 6zm-10 6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"],"not-equal-to":["M9.487 7l.532-3.196a1 1 0 011.962.392L11.513 7H16a1 1 0 010 2h-4.82l-.333 2H16a1 1 0 010 2h-5.487l-.532 3.196a1 1 0 01-1.962-.392L8.487 13H4a1 1 0 010-2h4.82l.333-2H4a1 1 0 110-2h5.487z"],notifications:["M10 20c1.1 0 2-.9 2-2H8c0 1.1.9 2 2 2zm7-5c-.55 0-1-.45-1-1V8c0-2.61-1.67-4.81-4-5.63V2c0-1.1-.9-2-2-2S8 .9 8 2v.37C5.67 3.19 4 5.39 4 8v6c0 .55-.45 1-1 1s-1 .45-1 1 .45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],"notifications-snooze":["M10 18c0 1.1-.9 2-2 2s-2-.9-2-2zM8 0c.476 0 .914.168 1.258.448C8.508.878 8.09 1.562 8 2.5c-.133 1.4.4 2.367 1.6 2.9C8.533 6.6 8 7.467 8 8v1.2a2.8 2.8 0 002.8 2.8H14v2c0 .51.388.935.884.993L15 15c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1s.45-1 1-1 1-.45 1-1V8c0-2.61 1.67-4.81 4-5.63V2c0-1.1.9-2 2-2z","M16 9.25v-.395a.75.75 0 00-.75-.75h-2.813L15.834 3.9A.75.75 0 0016 3.43v-.68a.75.75 0 00-.75-.75h-4.5a.75.75 0 00-.75.75v.184c0 .414.336.75.75.75h2.813L10.22 7.831a1 1 0 00-.221.627v.792c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75z"],"notifications-updated":["M10 20c1.1 0 2-.9 2-2H8c0 1.1.9 2 2 2zm2-17.834A2.994 2.994 0 008 4.99c0 .808.319 1.557.876 2.114l2.97 2.99a2.99 2.99 0 004.154.072V14c0 .55.45 1 1 1s1 .45 1 1-.45 1-1 1H3c-.55 0-1-.45-1-1s.45-1 1-1 1-.45 1-1V8c0-2.61 1.67-4.81 4-5.63V2c0-1.1.9-2 2-2s2 .9 2 2v.166zm1.26 6.514l-2.97-2.99a.973.973 0 01-.29-.7c0-.55.44-1 .99-1 .27 0 .52.11.7.29l2.28 2.28 4.27-4.27a.99.99 0 01.7-.29c.55 0 1 .45 1 1 0 .28-.11.53-.3.7l-4.98 4.98a.99.99 0 01-1.4 0z"],"numbered-list":["M1.74 9.01h1.27V1h-.95c-.04.24-.12.45-.26.62-.13.17-.29.3-.47.41-.19.11-.4.18-.63.23-.23.04-.46.07-.71.07v1.03h1.75v5.65zm.43 7.93c.18-.14.37-.28.58-.43.21-.14.42-.29.63-.45.21-.16.41-.33.61-.5.2-.18.37-.38.52-.59.15-.21.28-.45.37-.7.09-.25.14-.54.14-.85 0-.25-.04-.52-.12-.8-.08-.28-.21-.54-.39-.78-.19-.24-.43-.44-.73-.59-.3-.17-.68-.25-1.12-.25-.41 0-.77.08-1.08.23-.32.16-.58.37-.8.64-.22.27-.38.59-.49.96-.11.37-.16.77-.16 1.21h1.19c.01-.28.03-.53.08-.77s.12-.45.21-.62c.09-.18.22-.31.38-.42.16-.1.35-.15.59-.15.26 0 .47.05.63.14.16.09.29.21.38.35.09.14.15.29.18.45.03.16.05.31.05.45-.01.31-.08.58-.22.81-.14.24-.32.45-.53.66-.22.2-.45.39-.71.57-.26.18-.51.36-.74.54-.5.36-.89.78-1.17 1.27-.3.47-.45 1.04-.46 1.69H5v-1.14H1.43c.05-.17.14-.33.27-.49.13-.15.29-.3.47-.44zM18 4.02H8c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-1c0-.56-.45-1-1-1zm0 9H8c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-1c0-.56-.45-1-1-1z"],numerical:["M2.39 5.75c-.17.21-.38.39-.63.52s-.52.23-.83.29c-.3.05-.61.08-.93.08v1.24h2.49V15h1.49V4.98H2.73c-.05.31-.17.57-.34.77zm17.2 4.71c-.27-.44-.65-.71-1.14-.82v-.02c.42-.16.72-.43.92-.79.2-.36.29-.79.29-1.27 0-.42-.08-.8-.23-1.12-.15-.33-.36-.59-.62-.8-.26-.21-.55-.37-.87-.48-.32-.11-.65-.16-.98-.16-.43 0-.82.08-1.16.25-.34.16-.63.39-.87.69-.24.29-.43.64-.57 1.04-.14.4-.22.83-.23 1.3h1.39c-.01-.25.02-.49.07-.72.06-.23.14-.44.26-.63s.27-.34.45-.45c.18-.11.39-.17.63-.17.39 0 .71.12.96.37s.37.58.37.99c0 .29-.05.54-.16.74-.11.2-.25.36-.43.47-.18.11-.38.19-.61.24-.23.05-.46.06-.68.05v1.17c.28-.01.55 0 .81.03s.5.1.71.21c.21.11.38.28.51.5.13.22.2.52.2.89 0 .55-.16.97-.47 1.27-.31.3-.7.45-1.17.45-.55 0-.95-.19-1.23-.58-.27-.39-.4-.88-.38-1.46h-1.39c.01.5.08.96.21 1.38.13.41.32.77.57 1.06.25.29.56.52.93.68.37.16.8.24 1.3.24.41 0 .79-.07 1.16-.21.37-.14.69-.33.96-.58.28-.25.5-.56.66-.92a3 3 0 00.24-1.23c0-.64-.14-1.17-.41-1.61zM8.58 12.41c.21-.18.45-.36.7-.53.25-.18.5-.36.75-.56.25-.2.49-.41.73-.63.23-.22.44-.47.63-.74.18-.27.33-.56.44-.88.11-.32.16-.67.16-1.07 0-.32-.05-.65-.14-1-.09-.35-.25-.68-.47-.97-.22-.3-.51-.55-.87-.74-.36-.2-.81-.29-1.35-.29-.49 0-.93.1-1.3.29-.37.18-.69.44-.95.78-.26.33-.45.73-.58 1.2-.13.46-.2.96-.2 1.5h1.43c.01-.35.04-.67.09-.97.05-.3.14-.56.25-.78.11-.22.26-.39.45-.52s.43-.19.71-.19c.31 0 .56.06.75.18.19.12.34.26.45.43.11.17.18.36.22.56.04.2.06.39.06.57-.01.38-.1.72-.26 1.02-.15.3-.37.57-.63.83-.26.25-.54.49-.85.71-.31.22-.61.45-.89.68-.6.45-1.06.98-1.41 1.58-.35.61-.52 1.32-.53 2.13h6.01v-1.43H7.69c.06-.21.17-.42.33-.61s.34-.38.56-.55z"],office:["M19 6h-5V1c0-.55-.45-1-1-1H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h4v-6h4v6h10c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1zM6 12H2V8h4v4zm0-6H2V2h4v4zm6 6H8V8h4v4zm0-6H8V2h4v4zm6 11h-4v-3h4v3zm0-5h-4V8h4v4z"],offline:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zM7 18l2-7H5l8-9-2 7h4l-8 9z"],"oil-field":["M19 17.99h-1.36l-4.35-9.57 2.91-.86 1.66 4.1c.11.27.43.4.72.31.12-.04.22-.11.28-.2.06-.11 1.47-2.08 1.05-5.6C19.79 5.12 19.3 0 16.01 0 14.89.01 13.99.83 14 1.84c0 .19.04.38.1.56l1.34 3.31L.72 10.03v.02c-.41.12-.72.49-.72.94 0 .55.45 1 1 1 .1 0 .19-.03.28-.06v.02l2-.59 1.47 6.63H3c-.55 0-1 .45-1 1s.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1zM5.2 10.8l3.95-1.16-2.83 6.22L5.2 10.8zm2.35 7.19l3.95-8.68 3.95 8.68h-7.9z"],"one-column":["M14.94 0h-4c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-8 6c-.28 0-.53.11-.71.29l-3 3c-.18.18-.29.43-.29.71s.11.53.29.71l3 3A1.003 1.003 0 007.94 13V7c0-.55-.45-1-1-1z"],outdated:["M10 0c5.52 0 10 4.48 10 10s-4.48 10-10 10S0 15.52 0 10c0-.55.45-1 1-1s1 .45 1 1c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8C7.47 2 5.22 3.17 3.76 5H5c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1s1 .45 1 1v2.05C3.82 1.6 6.71 0 10 0zm1 16H9v-2h2v2zm0-3H9V4h2v9z"],"page-layout":["M19 1H1c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zM7 17H2V8h5v9zm11 0H8V8h10v9zm0-10H2V3h16v4z"],"panel-stats":["M1 1h18a1 1 0 011 1v15a1 1 0 01-1 1H1a1 1 0 01-1-1V2a1 1 0 011-1zm1 2v13h16V3H2zm9 0h1v13h-1V3zm2 7h3.952v1H13v-1zm0 2h3.952v1H13v-1zm0 2h3.952v1H13v-1zm0-6h3.952v1H13V8zm0-2h3.952v1H13V6zm0-2h3.952v1H13V4z"],"panel-table":["M19 1H1c-.6 0-1 .4-1 1v15c0 .6.4 1 1 1h18c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1zm-9 11H7V9h3v3zm0-4H7V5h3v3zm-8 8V3h4v13H2zm5 0v-3h3v3H7zm11 0h-7v-3h7v3zm0-4h-7V9h7v3zm0-4h-7V5h7v3z"],paperclip:["M18.35 2.67A5.664 5.664 0 0014.33 1c-1.44 0-2.89.56-3.99 1.67l-9.16 9.27C.4 12.73 0 13.78 0 14.83s.39 2.1 1.18 2.9c.78.79 1.82 1.18 2.85 1.18 1.04 0 2.07-.39 2.87-1.2l9.14-9.27c.96-.96.96-2.5.02-3.45-.94-.95-2.49-.96-3.44 0l-7.59 7.69c-.31.32-.3.83.01 1.14.31.31.81.31 1.13.02l7.59-7.69c.31-.31.84-.31 1.13-.02.31.31.31.85 0 1.16l-9.14 9.27c-.93.95-2.54.93-3.45.02-.94-.95-.92-2.55.02-3.49l9.16-9.25c1.55-1.56 4.18-1.59 5.72-.03 1.56 1.57 1.55 4.26 0 5.82l-8.89 9.02c-.3.31-.3.81.01 1.11.3.3.79.31 1.1.01v.01l8.91-9.02A5.645 5.645 0 0020 6.73c0-1.48-.55-2.94-1.65-4.06z"],paragraph:["M16.5 1H7C4.2 1 2 3.2 2 6s2.2 5 5 5v6.5c0 .8.7 1.5 1.5 1.5s1.5-.7 1.5-1.5V4h2v13.5c0 .8.7 1.5 1.5 1.5s1.5-.7 1.5-1.5V4h1.5c.8 0 1.5-.7 1.5-1.5S17.3 1 16.5 1z"],path:["M18 0H2C.9 0 0 .9 0 2s.9 2 2 2h7v4H4c-1.1 0-2 .9-2 2s.9 2 2 2h5v4H6c-1.1 0-2 .9-2 2s.9 2 2 2h8c1.1 0 2-.9 2-2s-.9-2-2-2h-3v-4h5c1.1 0 2-.9 2-2s-.9-2-2-2h-5V4h7c1.1 0 2-.9 2-2s-.9-2-2-2z"],"path-search":["M4 7c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm15 11.69l-5-2.5v-3.63c-.32.11-.66.22-1 .29v3.32l-6 2.57v-7.25c-.36-.27-.69-.57-1-.9v8.1l-5-2.5V10c.55 0 1-.45 1-1s-.45-1-1-1V1.31l3.43 1.71c.11-.31.24-.62.39-.92L.72.05A.545.545 0 00.5 0C.22 0 0 .22 0 .5v16c0 .2.12.36.28.44l6 3c.07.04.14.06.22.06.07 0 .14-.01.2-.04l6.79-2.91 5.79 2.9c.07.03.14.05.22.05.28 0 .5-.22.5-.5v-4.21c-.31.13-.64.21-1 .21v3.19zM10 5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm3-1c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm6.72-.94l-1.43-.72c.2.43.36.89.48 1.36l.23.11V5.5c-.55 0-1 .45-1 1s.45 1 1 1v1.96l1 1V3.5c0-.2-.12-.36-.28-.44zm-3.69 5.56c.14-.21.27-.42.38-.65.02-.04.04-.07.05-.11.11-.22.2-.45.28-.69v-.01c.07-.24.13-.48.17-.73l.03-.17c.04-.25.06-.5.06-.76C17 2.46 14.54 0 11.5 0S6 2.46 6 5.5 8.46 11 11.5 11c.26 0 .51-.02.76-.06l.17-.03c.25-.04.49-.1.73-.17h.01c.24-.08.47-.17.69-.28.04-.02.07-.03.11-.05.23-.11.44-.24.65-.38l.18.18 3.5 3.5c.17.18.42.29.7.29a1.003 1.003 0 00.71-1.71l-3.68-3.67zm-4.53.88c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z"],pause:["M7 3H4c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zm9 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],people:["M16.94 17a4.92 4.92 0 00-.33-1.06c-.45-.97-1.37-1.52-3.24-2.3-.17-.07-.76-.31-.77-.32-.1-.04-.2-.08-.28-.12.05-.14.04-.29.06-.45 0-.05.01-.11.01-.16-.25-.21-.47-.48-.65-.79.22-.34.41-.71.56-1.12l.04-.11c-.01.02-.01.02-.02.08l.06-.15c.36-.26.6-.67.72-1.13.18-.37.29-.82.25-1.3-.05-.5-.21-.92-.47-1.22-.02-.53-.06-1.11-.12-1.59.38-.17.83-.26 1.24-.26.59 0 1.26.19 1.73.55.46.35.8.85.97 1.4.04.13.07.25.08.38.08.45.13 1.14.13 1.61v.07c.16.07.31.24.35.62.02.29-.09.55-.15.65-.05.26-.2.53-.46.59-.03.12-.07.25-.11.36-.01.01-.01.04-.01.04-.2.53-.51 1-.89 1.34 0 .06 0 .12.01.17.04.41-.11.71 1 1.19 1.1.5 2.77 1.01 3.13 1.79.34.79.2 1.25.2 1.25h-3.04zm-5.42-3.06c1.47.66 3.7 1.35 4.18 2.39.45 1.05.27 1.67.27 1.67H.04s-.19-.62.27-1.67c.46-1.05 2.68-1.75 4.16-2.4 1.48-.65 1.33-1.05 1.38-1.59 0-.07.01-.14.01-.21-.52-.45-.95-1.08-1.22-1.8l-.01-.01c0-.01-.01-.02-.01-.03-.07-.15-.12-.32-.16-.49-.34-.06-.54-.43-.62-.78-.08-.14-.24-.48-.2-.87.05-.51.26-.74.49-.83v-.08c0-.64.05-1.55.17-2.15a3.648 3.648 0 011.4-2.36C6.32 2.25 7.21 2 8 2s1.68.25 2.31.73a3.63 3.63 0 011.4 2.36c.11.6.17 1.52.17 2.15v.09c.22.09.42.32.47.82.03.39-.12.73-.2.87-.07.34-.27.71-.61.78-.04.16-.09.33-.15.48-.01.01-.02.05-.02.05-.27.71-.68 1.33-1.19 1.78 0 .08 0 .16.01.23.05.55-.15.95 1.33 1.6z"],percentage:["M15 10c-1.66 0-3 1.34-3 3v2c0 1.66 1.34 3 3 3s3-1.34 3-3v-2c0-1.66-1.34-3-3-3zm1 5c0 .55-.45 1-1 1s-1-.45-1-1v-2c0-.55.45-1 1-1s1 .45 1 1v2zM8 7V5c0-1.66-1.34-3-3-3S2 3.34 2 5v2c0 1.66 1.34 3 3 3s3-1.34 3-3zM4 7V5c0-.55.45-1 1-1s1 .45 1 1v2c0 .55-.45 1-1 1s-1-.45-1-1zm11-4a1.003 1.003 0 00-1.88-.48L5.14 16.49a1.003 1.003 0 101.74.99l7.99-13.97c.08-.15.13-.32.13-.51z"],person:["M19.61 17.91c-.57-1.32-3.35-2.19-5.19-3.01-1.85-.82-1.59-1.31-1.66-1.99-.01-.09-.01-.19-.02-.29.63-.56 1.15-1.33 1.49-2.22 0 0 .02-.05.02-.06.07-.19.13-.39.19-.6.42-.09.67-.55.76-.98.1-.17.29-.6.25-1.08-.06-.62-.31-.91-.59-1.03v-.11c0-.79-.07-1.93-.22-2.68A4.55 4.55 0 0012.9.92C12.11.32 11 0 10.01 0s-2.1.32-2.89.92a4.55 4.55 0 00-1.74 2.94c-.14.75-.22 1.89-.22 2.68v.1c-.29.11-.55.4-.61 1.04-.04.48.15.91.25 1.08.1.44.35.91.79.98.05.21.12.41.19.6 0 .01.01.03.01.04l.01.02c.34.91.87 1.69 1.52 2.25 0 .09-.01.18-.02.26-.07.68.13 1.17-1.72 1.99S.96 16.59.39 17.91C-.18 19.23.05 20 .05 20h19.9s.23-.77-.34-2.09z"],phone:["M19.91 15.51c-.08-.08-4.21-2.5-4.35-2.57a.876.876 0 00-.4-.1c-.19 0-.42.13-.71.4-.28.27-1.17 1.49-1.43 1.76s-.48.4-.65.4c-.08 0-.19-.02-.32-.07s-1.45-.73-4.2-3.15-3.11-4-3.13-4.44c0-.17.13-.39.4-.65.28-.25.57-.51.89-.74.32-.24.61-.5.88-.78s.4-.52.4-.71c0-.13-.03-.27-.1-.4C7.12 4.32 4.62.19 4.53.1c-.19-.18-.92-.1-1.29.1C.25 1.82 0 4 .05 4.86c.05.89.61 5.58 5.2 9.93 5.7 5.41 9.66 5.2 9.92 5.2.87 0 3.52-.48 4.65-3.19.16-.38.31-1.07.09-1.29z"],"pie-chart":["M9 .98c-4.5.5-8 4.31-8 8.94 0 4.97 4.03 9.04 9 9.04 4.63 0 8.44-3.96 8.94-7.96H9V.98z","M10-.08V10h10C20 4 15.52-.08 10-.08z"],pin:["M11.77 1.16c-.81.81-.74 2.28.02 3.76L6.1 8.71c-2.17-1.46-4.12-2-4.94-1.18l4.95 4.95-4.95 6.36 6.36-4.95 4.95 4.95c.82-.82.27-2.77-1.19-4.94l3.8-5.69c1.47.76 2.94.84 3.76.02l-7.07-7.07z"],pivot:["M5.83 9.75L.29 15.29a1.003 1.003 0 001.42 1.42l5.54-5.54c-.57-.37-1.05-.85-1.42-1.42zM19 11c-.55 0-1 .45-1 1v1.59l-3.83-3.83c-.37.56-.85 1.04-1.41 1.41L16.59 15H15c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1zm-5-4c0-2.21-1.79-4-4-4S6 4.79 6 7s1.79 4 4 4 4-1.79 4-4zm-4 2c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"],"pivot-table":["M3 5H1c-.55 0-1 .45-1 1v13c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm0-5H1C.45 0 0 .45 0 1v2c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm13.71 5.29C16.53 5.11 16.28 5 16 5s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42L15 8.41V11c0 2.21-1.79 4-4 4H8.41l1.29-1.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L8.41 17H11c3.31 0 6-2.69 6-6V8.41l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3zM19 0H6c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],play:["M16 10c0-.36-.2-.67-.49-.84l.01-.01-10-6-.01.01A.991.991 0 005 3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1 .19 0 .36-.07.51-.16l.01.01 10-6-.01-.01c.29-.17.49-.48.49-.84z"],plus:["M16 9h-5V4c0-.55-.45-1-1-1s-1 .45-1 1v5H4c-.55 0-1 .45-1 1s.45 1 1 1h5v5c0 .55.45 1 1 1s1-.45 1-1v-5h5c.55 0 1-.45 1-1s-.45-1-1-1z"],"polygon-filter":["M18 7c-.27 0-.52.05-.75.15l-6.28-4.88c.01-.09.03-.18.03-.27 0-1.1-.9-2-2-2S7 .9 7 2c0 .06.01.12.02.19l-4.19 3C2.57 5.07 2.29 5 2 5 .9 5 0 5.9 0 7c0 .74.4 1.38 1 1.72v7.55c-.6.35-1 .99-1 1.73 0 1.1.9 2 2 2 .74 0 1.38-.4 1.72-1h7.55c.35.6.98 1 1.72 1 1.1 0 2-.9 2-2 0-.37-.11-.72-.29-1.02L18.03 11A2 2 0 0018 7zm-5.03 9c-.72.01-1.35.41-1.69 1H3.72c-.17-.3-.42-.55-.72-.72V8.72c.6-.34 1-.98 1-1.72 0-.06-.01-.12-.02-.19l4.19-3c.26.12.54.19.83.19.27 0 .52-.05.75-.15l6.28 4.88c-.01.09-.03.18-.03.27 0 .37.11.72.29 1.02L12.97 16z"],power:["M10 10c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1S9 .45 9 1v8c0 .55.45 1 1 1zm3-7.45v2.16c2.36 1.12 4 3.5 4 6.29 0 3.87-3.13 7-7 7s-7-3.13-7-7c0-2.79 1.64-5.17 4-6.29V2.55C3.51 3.79 1 7.09 1 11a9 9 0 0018 0c0-3.91-2.51-7.21-6-8.45z"],"predictive-analysis":["M20 8.01c0-1.26-.61-2.43-1.61-3.12C17.86 2.5 15.8.79 13.4.79c-.58 0-1.14.1-1.69.29A3.533 3.533 0 009.17 0C8.05 0 7 .55 6.32 1.45c-.15-.02-.3-.03-.45-.03-1.63 0-3.03 1.12-3.46 2.71C.97 4.65 0 6.05 0 7.66c0 .48.09.95.26 1.4-.17.44-.26.91-.26 1.39 0 1.38.72 2.64 1.89 3.29.67.7 1.59 1.09 2.54 1.09.61 0 1.19-.15 1.71-.45.68.82 1.68 1.3 2.73 1.3.66 0 1.28-.18 1.83-.52.61.49 1.34.81 2.11.91 1.3 1.43 2.3 3.28 2.31 3.3 0 0 .35.61.33.61.96-.01 1.77-.2 1.64-1.3.01.02-.92-2.89-.92-2.89.52-.26.94-.69 1.21-1.23 1.12-.66 1.84-1.91 1.84-3.26 0-.3-.03-.6-.1-.89.57-.64.88-1.51.88-2.4zm-1.54 1.28l-.18-.2-.77-.84c-.33-.37-.67-1.17-.73-1.73 0 0-.13-1.25-.13-1.26-.06-.74-1.17-.73-1.13.14 0 .02.13 1.26.13 1.26.04.36.15.77.3 1.17-.08-.01-.15-.02-.22-.02 0 0-2.57-.12-2.57-.13-.73-.03-.89 1.22-.05 1.25l2.57.13c.53.03 1.29.37 1.61.72l.61.67.02.06c.1.27.14.55.14.83 0 .93-.51 1.77-1.34 2.18l-.2.1-.09.23c-.19.48-.6.82-1.1.93l-.67.14.87 2.75c-.48-.76-1.19-1.79-2.02-2.67l-.15-.16-.21-.02c-.51-.04-.99-.21-1.42-.48l1.7-1.48c.44-.39 1.04-.55 1.24-.49 0 0 .78.22.78.23.78.2 1.03-.92.29-1.21l-.78-.23c-.69-.2-1.67.22-2.24.72l-1.91 1.66-.39.32c-.44.36-.93.55-1.5.55-.8 0-1.54-.41-1.97-1.07v-1.88c0-.5.21-.98.34-1.07 0 0 .65-.43.64-.43.87-.69.21-1.57-.64-1.14 0-.01-.65.43-.65.43-.31.2-.54.56-.7.97-.13-.13-.28-.25-.43-.35 0 0-1.91-1.26-1.91-1.28-.81-.56-1.5.63-.61 1.11 0-.02 1.89 1.28 1.89 1.28.46.31.77.97.77 1.36v.84c-.43.24-.78.36-1.24.36-.67 0-1.31-.29-1.77-.79l-.07-.08-.09-.05a2.425 2.425 0 01-1.31-2.16c0-.38.09-.74.25-1.08l.15-.31-.14-.33c-.17-.34-.25-.7-.25-1.08 0-1.13.76-2.1 1.85-2.37l.39-.09.07-.43a2.41 2.41 0 012.39-2.05c.19 0 .39.02.58.07l.4.1.22-.38A2.41 2.41 0 019.17 1.3c.55 0 1.08.19 1.5.53l-.44.45-.01-.01-.31.31c-.41.35-.92.53-1.11.5 0 0-.84-.13-.84-.14-.83-.15-1.09 1.08-.18 1.29.01 0 .84.14.84.14.03 0 .06 0 .09.01-.14.46-.18.96-.12 1.4 0 0 .21 1.24.19 1.23.13.65 1.32.44 1.16-.22 0-.01-.19-1.23-.19-1.23-.07-.48.15-1.19.45-1.5l.48-.5c.07-.06.13-.12.19-.18l.93-.95c.5-.23 1.04-.34 1.59-.34 1.93 0 3.57 1.4 3.89 3.34l.05.31.26.15a2.445 2.445 0 01.87 3.4z"],prescription:["M13.95 10.23c.16-.18.22-.22.46-.22h1.48c.25 0 .47.08.59.33.1.2.09.41-.05.66l-2.71 3.58L16.88 19c.13.21.16.46.03.69-.12.21-.34.31-.57.31H14.7c-.31 0-.56-.17-.7-.44l-1.9-2.67-1.93 2.68c-.15.27-.42.43-.73.43H7.98c-.25 0-.47-.08-.59-.33-.1-.2-.09-.41.05-.66l3.09-4.35L6.26 9H5v4.32c0 .41-.3.69-.7.69H2.7c-.41 0-.7-.28-.7-.69V.69c0-.41.3-.69.7-.69h4.42c.71 0 1.36.1 1.94.3.59.2 1.11.49 1.54.87.44.38.78.84 1.02 1.39.24.54.36 1.14.36 1.78 0 1.01-.28 1.88-.84 2.6-.43.54-1.35 1.29-2 1.59l3.09 3.94 1.72-2.24zM6.71 6.04c.71 0 1.45-.16 1.81-.46.33-.28.5-.69.5-1.25s-.17-.97-.5-1.25c-.35-.3-1.1-.46-1.81-.46h-1.7v3.42h1.7z"],presentation:["M19 1h-8c0-.55-.45-1-1-1S9 .45 9 1H1c-.55 0-1 .45-1 1s.45 1 1 1h1v11c0 .55.45 1 1 1h4.59L4.3 18.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L9 16.41V19c0 .55.45 1 1 1s1-.45 1-1v-2.59l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L12.41 15H17c.55 0 1-.45 1-1V3h1c.55 0 1-.45 1-1s-.45-1-1-1zm-3 12H4V3h12v10z"],print:["M14 16H6v-4H4v5c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-5h-2v4zm2-13c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v1h12V3zm3 2H1c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h2v-3h14v3h2c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-1 4h-2V7h2v2z"],projects:["M18 4c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v2h16V4zm-2-3c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v1h12V1zm3 6H1c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm-5 7c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-2h1v2h6v-2h1v2z"],properties:["M2 15c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm5-4h12c.55 0 1-.45 1-1s-.45-1-1-1H7c-.55 0-1 .45-1 1s.45 1 1 1zM2 1C.9 1 0 1.9 0 3s.9 2 2 2 2-.9 2-2-.9-2-2-2zm17 8H7c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1zm0 7H7c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1z"],property:["M3 5c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm5-1h11c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zM3 15c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm16 1H8c-.55 0-1 .45-1 1s.45 1 1 1h11c.55 0 1-.45 1-1s-.45-1-1-1zm-1-8H9c-1.1 0-2 .9-2 2s.9 2 2 2h9c1.1 0 2-.9 2-2s-.9-2-2-2zM3 7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"],"publish-function":["M7.01 10.11c.35-.64.72-1.68 1.09-3.11l.8-3.03h.96l.24-.77h-.99c.28-1.11.66-1.92 1.12-2.43.28-.32.56-.48.83-.48.05 0 .1.02.13.05.03.03.05.07.05.12 0 .04-.04.13-.11.25-.08.12-.11.24-.11.35 0 .15.06.28.18.39.12.11.27.16.45.16.2 0 .36-.07.49-.2s.2-.31.2-.54c0-.26-.1-.47-.3-.63-.2-.16-.52-.24-.96-.24-.68 0-1.3.19-1.86.58-.55.38-1.08 1.02-1.58 1.91-.17.3-.34.5-.49.59-.15.08-.4.13-.74.12l-.23.77h.95L5.74 9.21c-.23.86-.39 1.39-.47 1.59-.12.29-.3.54-.54.75-.1.08-.21.12-.35.12-.04 0-.07-.01-.1-.03l-.03-.04c0-.02.03-.07.1-.13.07-.07.1-.17.1-.31 0-.15-.05-.28-.16-.38-.11-.1-.27-.15-.47-.15-.25 0-.44.07-.59.2-.15.12-.23.28-.23.46 0 .19.09.36.27.5.19.14.47.21.86.21.61 0 1.16-.15 1.63-.46.48-.31.89-.79 1.25-1.43zm3.7 1.18c-.18-.18-.43-.29-.71-.29s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42L9 14.41V19c0 .55.45 1 1 1s1-.45 1-1v-4.59l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3zm4.15-6.78c.17-.13.36-.2.55-.2.07 0 .2.03.39.08s.36.08.5.08c.2 0 .37-.07.5-.2.13-.14.2-.31.2-.52 0-.22-.07-.4-.2-.53s-.33-.2-.58-.2c-.22 0-.43.05-.63.15-.2.1-.45.32-.75.67-.23.25-.56.7-1.01 1.33a6.52 6.52 0 00-.91-2.15l-2.38.39-.05.25c.18-.03.33-.05.45-.05.24 0 .43.1.59.3.25.31.59 1.24 1.02 2.79-.34.44-.58.73-.7.87-.21.22-.38.36-.52.43-.1.05-.22.08-.35.08-.1 0-.26-.05-.49-.16a1.01 1.01 0 00-.42-.11c-.23 0-.42.07-.57.22-.17.14-.24.32-.24.55 0 .21.07.38.21.51.14.13.33.2.56.2.23 0 .44-.05.64-.14.2-.09.45-.29.75-.59s.72-.78 1.25-1.43c.2.62.38 1.07.53 1.35.15.28.32.49.52.61.19.12.44.19.73.19.28 0 .57-.1.86-.3.38-.25.77-.69 1.17-1.31l-.25-.14c-.27.37-.48.6-.61.69-.09.06-.19.09-.31.09-.14 0-.28-.09-.42-.26-.23-.29-.54-1.09-.93-2.4.37-.58.66-.96.9-1.14z"],pulse:["M19 10h-2.38L14.9 6.55h-.01c-.17-.32-.5-.55-.89-.55-.43 0-.79.28-.93.66h-.01l-2.75 7.57L7.98 1.82h-.02A.978.978 0 007 1c-.44 0-.8.29-.94.69h-.01L3.28 10H1c-.55 0-1 .45-1 1s.45 1 1 1h3c.44 0 .8-.29.94-.69h.01l1.78-5.34 2.29 12.21h.02c.08.46.47.82.96.82.43 0 .79-.28.93-.66h.01l3.21-8.82.96 1.92h.01c.16.33.49.56.88.56h3c.55 0 1-.45 1-1s-.45-1-1-1z"],random:["M14.47 5h2.12L15.3 6.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-3-3a1.003 1.003 0 00-1.42 1.42L16.59 3H14c-.31 0-.57.15-.76.37l-.01-.01-2.93 3.52 1.3 1.56L14.47 5zm2.24 7.29a1.003 1.003 0 00-1.42 1.42l1.3 1.29h-2.12L4.77 3.36l-.01.01A.998.998 0 004 3H1c-.55 0-1 .45-1 1s.45 1 1 1h2.53l9.7 11.64.01-.01c.19.22.45.37.76.37h2.59l-1.29 1.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-3-3zM3.53 15H1c-.55 0-1 .45-1 1s.45 1 1 1h3c.31 0 .57-.15.76-.37l.01.01 2.93-3.52-1.3-1.56L3.53 15z"],record:["M10 3a7 7 0 100 14 7 7 0 100-14z"],redo:["M19.71 5.29l-4-4a1.003 1.003 0 00-1.42 1.42L16.59 5H6c-3.31 0-6 2.69-6 6s2.69 6 6 6h5v-2H6c-2.21 0-4-1.79-4-4s1.79-4 4-4h10.59L14.3 9.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zM15 14c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],refresh:["M19 1c-.55 0-1 .45-1 1v2.06C16.18 1.61 13.29 0 10 0 4.48 0 0 4.48 0 10c0 .55.45 1 1 1s1-.45 1-1c0-4.42 3.58-8 8-8 2.52 0 4.76 1.18 6.22 3H15c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zm0 8c-.55 0-1 .45-1 1 0 4.42-3.58 8-8 8-2.52 0-4.76-1.18-6.22-3H5c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1s1-.45 1-1v-2.06C3.82 18.39 6.71 20 10 20c5.52 0 10-4.48 10-10 0-.55-.45-1-1-1z"],"regression-chart":["M19 16H3.1L19.31 3.39l-.61-.79L2 15.59V3c0-.55-.45-1-1-1s-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm-9-9c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm-5 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm10-2c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zm-5 4c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2z"],remove:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm5-9H5c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1z"],"remove-column":["M19 0H5c-.55 0-1 .45-1 1v4h2V2h5v16H6v-3H4v4c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18h-5V2h5v16zM6.29 13.71a1.003 1.003 0 001.42-1.42L5.41 10 7.7 7.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L4 8.59l-2.29-2.3A1.003 1.003 0 00.29 7.71L2.59 10 .3 12.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L4 11.41l2.29 2.3z"],"remove-column-left":["M4 11h6c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zM19 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-7 18H2V2h10v16zm6 0h-5V2h5v16z"],"remove-column-right":["M19 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM7 18H2V2h5v16zm11 0H8V2h10v16zm-8-7h6c.55 0 1-.45 1-1s-.45-1-1-1h-6c-.55 0-1 .45-1 1s.45 1 1 1z"],"remove-row-bottom":["M7 14h6c.55 0 1-.45 1-1s-.45-1-1-1H7c-.55 0-1 .45-1 1s.45 1 1 1zM19 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H2V8h16v10zm0-11H2V2h16v5z"],"remove-row-top":["M7 8h6c.55 0 1-.45 1-1s-.45-1-1-1H7c-.55 0-1 .45-1 1s.45 1 1 1zm12-8H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H2v-5h16v5zm0-6H2V2h16v10z"],repeat:["M14 6c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1v2.05C16.18 1.6 13.29 0 10 0 4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10c0-.55-.45-1-1-1s-1 .45-1 1c0 4.42-3.58 8-8 8s-8-3.58-8-8 3.58-8 8-8c2.53 0 4.77 1.17 6.24 3H15c-.55 0-1 .45-1 1z"],reset:["M6 6c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1s1 .45 1 1v2.05C3.82 1.6 6.71 0 10 0c5.52 0 10 4.48 10 10s-4.48 10-10 10S0 15.52 0 10c0-.55.45-1 1-1s1 .45 1 1c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8C7.47 2 5.23 3.17 3.76 5H5c.55 0 1 .45 1 1z"],resolve:["M8.7 4.7C7.9 4.2 7 4 6 4c-3.3 0-6 2.7-6 6s2.7 6 6 6c1 0 1.9-.2 2.7-.7C7.3 14 6.5 12.1 6.5 10s.9-4 2.2-5.3zM14 4c-1 0-1.9.2-2.7.7 1.4 1.4 2.2 3.2 2.2 5.3s-.9 4-2.2 5.3c.8.5 1.7.7 2.7.7 3.3 0 6-2.7 6-6s-2.7-6-6-6zm-4 1.5C8.8 6.7 8 8.2 8 10s.8 3.3 2 4.4c1.2-1.1 2-2.7 2-4.5s-.8-3.3-2-4.4z"],rig:["M7 4.2C7 5.75 8.34 7 10 7s3-1.46 3-2.8C13 1.45 10.94 0 10 0H6c0 2.74 3.76 1.96 1 4.2zm11.71 14.09L13 12.59V9.01c0-.55-.45-1-1-1H8c-.55 0-1 .45-1 1v3.58l-5.71 5.7a1.003 1.003 0 001.42 1.42L7 15.42V19c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-3.58l4.29 4.29a1.003 1.003 0 001.42-1.42zM10.21 8c.01 0 .01.01 0 0 .01.01.01 0 0 0z"],"right-join":["M8.7 4.7C7.4 6 6.5 7.9 6.5 10s.8 4 2.2 5.3c-.8.5-1.7.7-2.7.7-3.3 0-6-2.7-6-6s2.7-6 6-6c1 0 1.9.2 2.7.7zm-3.34 9.25c-.55-1.2-.86-2.54-.86-3.95s.31-2.75.86-3.95a4.001 4.001 0 000 7.9zM14 4c3.3 0 6 2.7 6 6s-2.7 6-6 6c-1 0-1.9-.2-2.7-.7 1.3-1.3 2.2-3.2 2.2-5.3s-.8-3.9-2.2-5.3C12.1 4.2 13 4 14 4zm-4 1.5C8.8 6.7 8 8.2 8 10s.8 3.3 2 4.4c1.2-1.1 2-2.7 2-4.5s-.8-3.3-2-4.4z"],ring:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"],"rotate-document":["M8.71 6.29A.997.997 0 008 6H3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h9c.55 0 1-.45 1-1v-8c0-.28-.11-.53-.29-.71l-4-4zM11 18H4V8h3v3c0 .55.45 1 1 1h3v6zm3-16h-1.59l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2C9.11 2.47 9 2.72 9 3c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H14c1.1 0 2 .9 2 2v3c0 .55.45 1 1 1s1-.45 1-1V6c0-2.21-1.79-4-4-4z"],"rotate-page":["M14 2h-1.59l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2C9.11 2.47 9 2.72 9 3c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H14c1.1 0 2 .9 2 2v3c0 .55.45 1 1 1s1-.45 1-1V6c0-2.21-1.79-4-4-4zm-2 5H3c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm-1 11H4V9h7v9z"],route:["M14.028 6.016c.146.275.31.57.485.872.304.524.628 1.047.952 1.545l.118.178-.208-.006-.577-.005c-2.093.004-2.841.303-2.841.895 0 .069.271.248 1.245.567l1.008.313c2.671.831 3.99 1.827 3.99 4.167 0 2.76-1.928 4.059-4.832 4.376-.782.085-1.52.098-2.452.066l-1.15-.046H6.221l.535-.811a67.46 67.46 0 001.122-1.787h2.04l.686.03c1.028.046 1.77.043 2.523-.039 1.832-.2 2.673-.767 2.673-1.789 0-.69-.483-1.09-1.992-1.585l-.83-.257c-1.192-.364-2.037-.7-2.59-1.165.399-1 .612-1.844.612-2.538a6.018 6.018 0 00-.382-2.098c.745-.573 1.884-.822 3.41-.883zM5 4.2c2.648 0 4.791 2.151 4.8 4.797C9.8 11.652 5 18.6 5 18.6l-.5-.744C3.273 15.993.2 11.121.2 8.997A4.802 4.802 0 015 4.2zm0 2.4a2.4 2.4 0 10.002 4.802A2.4 2.4 0 005 6.6zM17 .333a2.671 2.671 0 012.667 2.665C19.667 4.473 17 8.333 17 8.333l-.391-.587c-.741-1.137-2.276-3.629-2.276-4.748A2.668 2.668 0 0117 .333z"],satellite:["M9 18c.6 0 1 .4 1 1s-.4 1-1 1c-5 0-9-4-9-9 0-.6.4-1 1-1s1 .4 1 1c0 3.9 3.1 7 7 7zm0-4c.6 0 1 .4 1 1s-.4 1-1 1c-2.8 0-5-2.2-5-5 0-.6.4-1 1-1s1 .4 1 1c0 1.7 1.3 3 3 3zm5.7-3.7c.4-.4 1-.4 1.4 0l3.6 3.6c.4.4.4 1 0 1.4l-1.4 1.4c-.4.4-1 .4-1.4 0l-3.6-3.6c-.4-.4-.4-1 0-1.4l1.4-1.4zM4.7.3c.4-.4 1-.4 1.4 0l3.6 3.6c.4.4.4 1 0 1.4L8.3 6.7c-.4.4-1 .4-1.4 0L3.3 3.1c-.4-.4-.4-1 0-1.4L4.7.3zm11.1 1c.4-.4 1-.4 1.4 0l1.6 1.6c.4.4.4 1 0 1.4l-6.5 6.5c-.4.4-1 .4-1.4 0L9.3 9.2c-.4-.4-.4-1 0-1.4l6.5-6.5zM9 12c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1z"],saved:["M12 0H4c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V6l-6-6zm4 18H5V2h6v5h5v11zm-8.29-6.71a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29.32 0 .59-.16.77-.38l.01.01 4-5-.01-.01c.14-.18.23-.38.23-.62 0-.55-.45-1-1-1-.32 0-.59.16-.77.38l-.01-.01-3.3 4.13-2.21-2.21z"],"scatter-plot":["M9 9c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm5 2c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm4-5c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm1 10H2V3c0-.55-.45-1-1-1s-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zM5 15c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"],search:["M19.56 17.44l-4.94-4.94A8.004 8.004 0 0016 8c0-4.42-3.58-8-8-8S0 3.58 0 8s3.58 8 8 8c1.67 0 3.21-.51 4.5-1.38l4.94 4.94a1.498 1.498 0 102.12-2.12zM8 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z"],"search-around":["M9.9 6.9a3 3 0 100 6 3 3 0 100-6zM3 14c-1.7 0-3 1.3-3 3s1.3 3 3 3 3-1.3 3-3-1.3-3-3-3zm0 5c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM3 0C1.3 0 0 1.3 0 3s1.3 3 3 3 3-1.3 3-3-1.3-3-3-3zm0 5c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM17 14c-1.7 0-3 1.3-3 3s1.3 3 3 3 3-1.3 3-3-1.3-3-3-3zm0 5c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM17 0c-1.7 0-3 1.3-3 3s1.3 3 3 3 3-1.3 3-3-1.3-3-3-3zm0 5c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM10 10L5 5","M5.379 4.671l5.02 5.02-.707.708-5.02-5.02zM10 10l5-5","M14.621 4.671l.707.708-5.02 5.02-.707-.707z","M10 10l5 5M10.379 9.671l5.02 5.02-.707.708-5.02-5.02z","M10 10l-5 5M9.621 9.671l.707.708-5.02 5.02-.707-.707z"],"search-template":["M13 8H5c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1zm0 3H5c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1zm0-6H5c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1zm6.56 12.44l-3.23-3.23A8.939 8.939 0 0018 9a9 9 0 10-9 9c1.94 0 3.74-.62 5.21-1.67l3.23 3.23a1.498 1.498 0 102.12-2.12zM9 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"],"search-text":["M19.56 17.44l-3.23-3.23A8.939 8.939 0 0018 9a9 9 0 10-9 9c1.94 0 3.74-.62 5.21-1.67l3.23 3.23a1.498 1.498 0 102.12-2.12zM9 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7zm3.5-11h-7c-.28 0-.5.22-.5.5v2c0 .28.22.5.5.5s.5-.22.5-.5V7h2v6h-.5c-.28 0-.5.22-.5.5s.22.5.5.5h3c.28 0 .5-.22.5-.5s-.22-.5-.5-.5H10V7h2v.5c0 .28.22.5.5.5s.5-.22.5-.5v-2c0-.28-.22-.5-.5-.5z"],"segmented-control":["M19 5H1c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-1 8h-8V7h8v6z"],select:["M19.71 18.29l-4.25-4.25L20 12.91 9.93 9.33c.04-.1.07-.21.07-.33V3c0-.55-.45-1-1-1H4V1c0-.55-.45-1-1-1S2 .45 2 1v1H1c-.55 0-1 .45-1 1s.45 1 1 1h1v5c0 .55.45 1 1 1h6c.12 0 .23-.03.34-.07L12.91 20l1.14-4.54 4.25 4.25c.17.18.42.29.7.29a1.003 1.003 0 00.71-1.71zM8 8H4V4h4v4z"],selection:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z","M10 6a4 4 0 100 8 4 4 0 100-8z"],"send-message":["M1.754.135L19.393 9.06c.57.288.775.943.458 1.462-.107.176-.266.32-.458.418l-17.64 8.924c-.57.289-1.288.102-1.604-.417A1.001 1.001 0 010 18.925v-6.851L11.021 10 0 7.938V1.075C0 .481.529 0 1.18 0c.201 0 .399.047.574.135z"],"send-to":["M19 0h-5c-.6 0-1 .4-1 1s.4 1 1 1h2.6l-4.3 4.3c-.2.2-.3.4-.3.7 0 .6.4 1 1 1 .3 0 .5-.1.7-.3L18 3.4V6c0 .5.5 1 1 1s1-.5 1-1V1c0-.6-.5-1-1-1zm0 9c-1 0-1.9-.5-2.5-1.3l-1.4 1.4c-.5.6-1.3.9-2.1.9-1.7 0-3-1.3-3-3 0-.8.3-1.6.9-2.1l1.4-1.4C11.5 2.9 11 2 11 1c0-.3.1-.6.2-.9-.4-.1-.8-.1-1.2-.1C4.5 0 0 4.5 0 10s4.5 10 10 10 10-4.5 10-10c0-.4 0-.8-.1-1.2-.3.1-.6.2-.9.2z"],"send-to-graph":["M8 11H3c-.55 0-1 .45-1 1s.45 1 1 1h2.59L.3 18.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L7 14.41V17c0 .55.45 1 1 1s1-.45 1-1v-5c0-.55-.45-1-1-1zm10 2c-.53 0-1.01.21-1.37.55L11.9 10.6c.06-.19.1-.39.1-.6 0-.21-.04-.41-.1-.6l4.72-2.95c.37.34.85.55 1.38.55 1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2c0 .21.04.41.1.6l-4.73 2.96c-.24-.23-.54-.4-.87-.48V3.93c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2S8 .9 8 2c0 .93.64 1.71 1.5 1.93v4.14c-.33.09-.63.26-.87.48L7.6 7.91 5.42 6.55 3.9 5.6c.06-.19.1-.39.1-.6 0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2c.53 0 1.01-.21 1.37-.55L9 9.96V10h.06L12 11.84l.4.25 1.51.94 2.19 1.37c-.06.19-.1.39-.1.6 0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2zm-7-2.96l-.06-.04H11v.04z"],"send-to-map":["M8 11H3c-.55 0-1 .45-1 1s.45 1 1 1h2.59L.3 18.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L7 14.41V17c0 .55.45 1 1 1s1-.45 1-1v-5c0-.55-.45-1-1-1zm11.54-6.82l.01-.02-6-4-.01.02C13.39.08 13.21 0 13 0s-.39.08-.54.18l-.01-.02L7 3.8 1.55.17l-.01.01A.969.969 0 001 0C.45 0 0 .45 0 1v9c0-.55.45-1 1-1h1V2.87l4 2.67V9h2V5.54l4-2.67v11.6l-1 .67v2.4l2-1.33 5.45 3.63.01-.02c.15.1.33.18.54.18.55 0 1-.45 1-1V5c0-.35-.19-.64-.46-.82zM18 17.13l-4-2.67V2.87l4 2.67v11.59z"],"series-add":["M13.29 9.29c.3.62.8 1.12 1.42 1.42l-3 3c-.18.18-.43.29-.71.29s-.53-.11-.71-.3L7 10.41l-5 5V17h17c.55 0 1 .45 1 1s-.45 1-1 1H1a.998.998 0 01-1-1V4c0-.55.45-1 1-1s1 .45 1 1v8.59l4.29-4.3C6.47 8.11 6.72 8 7 8s.53.11.71.29l3.29 3.3 2.29-2.3zM12 5c0-.5.4-1 1-1h2V2c0-.6.4-1 1-1 .5 0 1 .4 1 1v2h2c.5 0 1 .4 1 1s-.5 1-1 1h-2v2c0 .6-.5 1-1 1-.6 0-1-.4-1-1V6h-2c-.6 0-1-.4-1-1z"],"series-configuration":["M11.91 10.67c.52.45 1.13.8 1.8 1.03l-2.01 2.01c-.18.18-.43.29-.71.29-.28 0-.53-.11-.71-.3L7 10.41l-5 5V17h16.99c.55 0 1 .45 1 1s-.45 1-1 1H1a.998.998 0 01-1-1V4c0-.55.45-1 1-1s1 .45 1 1v8.59l4.29-4.3C6.47 8.11 6.72 8 7 8c.28 0 .53.11.71.29l3.29 3.3.91-.92zM18.5 4.6h1.04c.25 0 .45.2.46.44v.9c0 .25-.2.45-.45.45h-1.04c-.07.22-.16.42-.27.62l.73.73c.17.17.17.44 0 .61l-.61.61c-.17.17-.44.17-.61 0l-.73-.73c-.2.11-.4.2-.62.26v1.05c0 .25-.2.45-.45.45h-.9c-.25 0-.45-.2-.45-.45V8.51c-.21-.06-.4-.15-.58-.25l-.76.77c-.17.17-.46.17-.64 0l-.64-.64a.465.465 0 010-.64l.76-.77c-.1-.19-.19-.38-.25-.59h-1.04c-.25 0-.45-.2-.45-.45v-.9c0-.25.2-.45.45-.45h1.04c.07-.22.16-.42.27-.61l-.73-.73a.429.429 0 010-.61l.61-.61c.17-.17.44-.17.61 0l.73.73c.2-.11.4-.2.62-.26V1.45a.44.44 0 01.44-.45h.9c.25 0 .45.2.45.45V2.5c.21.06.4.15.58.25l.76-.77c.17-.17.46-.17.64 0l.64.64c.17.17.17.46 0 .64l-.76.77c.1.17.19.36.25.57zm-4.69.9c0 .93.75 1.69 1.69 1.69.93 0 1.69-.75 1.69-1.69s-.75-1.69-1.69-1.69-1.69.76-1.69 1.69z"],"series-derived":["M18.82 6.58c-.03.05-.07.09-.11.13 0 0 0-.01-.01-.01l-2 2c-.2.2-.4.3-.7.3-.6 0-1-.4-1-1 0-.3.1-.5.3-.7L16.6 6H11c-.6 0-1-.4-1-1s.4-1 1-1h5.6l-1.3-1.3c-.2-.2-.3-.4-.3-.7 0-.6.4-1 1-1 .3 0 .5.1.7.3l3 3c.2.2.3.4.3.7s-.1.5-.3.7l-.88.88zm-5.53 2.71c.3.62.8 1.12 1.42 1.42l-3 3c-.18.18-.43.29-.71.29s-.53-.11-.71-.3L7 10.41l-5 5V17h17c.55 0 1 .45 1 1s-.45 1-1 1H1a.998.998 0 01-1-1V4c0-.55.45-1 1-1s1 .45 1 1v8.59l4.29-4.3C6.47 8.11 6.72 8 7 8s.53.11.71.29l3.29 3.3 2.29-2.3z"],"series-filtered":["M12.14 10.45c.21.67.65 1.23 1.22 1.61l-1.65 1.65c-.18.18-.43.29-.71.29s-.53-.11-.71-.3L7 10.41l-5 5V17h17c.55 0 1 .45 1 1s-.45 1-1 1H1a.998.998 0 01-1-1V4c0-.55.45-1 1-1s1 .45 1 1v8.59l4.29-4.3C6.47 8.11 6.72 8 7 8s.53.11.71.29l3.29 3.3 1.14-1.14zM19.35 1a.642.642 0 01.46 1.1l-3.03 3.03v2.95c0 .18-.07.34-.19.46l-1.28 1.29c-.11.1-.27.17-.45.17-.35 0-.64-.29-.64-.64V5.13L11.19 2.1a.642.642 0 01.45-1.1h7.71z"],"series-search":["M11.28 11.31l-.28.28-3.29-3.3C7.53 8.11 7.28 8 7 8s-.53.11-.71.29L2 12.59V4c0-.55-.45-1-1-1s-1 .45-1 1v14a.998.998 0 001 1h18c.55 0 1-.45 1-1s-.45-1-1-1H2v-1.59l5-5 3.29 3.29c.18.19.43.3.71.3s.53-.11.71-.29l2.09-2.09c-.17.02-.34.02-.51.02-.7 0-1.38-.12-2.01-.33zm-.93-6c0-1.62 1.31-2.93 2.93-2.93s2.93 1.31 2.93 2.93-1.31 2.93-2.93 2.93-2.93-1.31-2.93-2.93zm6.47 2.43c.11-.17.21-.33.29-.51.01-.03.03-.06.04-.09.08-.18.16-.35.21-.54.06-.2.1-.38.14-.58.01-.05.01-.09.02-.14.03-.2.05-.39.05-.6 0-2.37-1.93-4.3-4.3-4.3-2.37.01-4.3 1.93-4.3 4.31s1.93 4.3 4.3 4.3c.21 0 .4-.02.6-.05.04 0 .09-.01.14-.02.2-.03.38-.08.57-.14.2-.06.37-.14.55-.21.03-.01.06-.03.09-.04.18-.09.34-.19.51-.29l2.87 2.87c.14.14.33.22.56.22.43 0 .78-.35.78-.78a.938.938 0 00-.23-.56l-2.89-2.85z"],settings:["M4 1c0-.55-.45-1-1-1S2 .45 2 1v5h2V1zM2 19c0 .55.45 1 1 1s1-.45 1-1v-6H2v6zm9-18c0-.55-.45-1-1-1S9 .45 9 1v8h2V1zm7 0c0-.55-.45-1-1-1s-1 .45-1 1v3h2V1zM9 19c0 .55.45 1 1 1s1-.45 1-1v-3H9v3zm9-14h-2c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-2 14c0 .55.45 1 1 1s1-.45 1-1v-8h-2v8zM4 7H2c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm7 3H9c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1z"],shapes:["M7.88 11.12a.958.958 0 011.277.33l3.719 6.207c.081.136.124.29.124.447 0 .495-.419.896-.936.896H4.936a.969.969 0 01-.436-.103.878.878 0 01-.392-1.21l3.409-6.208a.915.915 0 01.362-.36zM15 5a4 4 0 110 8 4 4 0 010-8zM8 1a1 1 0 011 1v6a1 1 0 01-1 1H2a1 1 0 01-1-1V2a1 1 0 011-1h6z"],share:["M15 18H2V5h8.76l2-2H1c-.55 0-1 .45-1 1v15c0 .55.45 1 1 1h15c.55 0 1-.45 1-1V7.24l-2 2V18zm4-18h-7c-.55 0-1 .45-1 1s.45 1 1 1h4.59l-7.3 7.29a1.003 1.003 0 001.42 1.42L18 3.41V8c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1z"],"shared-filter":["M13.917 17.209c1.01.454 2.543.928 2.873 1.643.31.722.186 1.148.186 1.148H6.026s-.13-.426.186-1.148 1.842-1.203 2.86-1.65c1.017-.447.914-.722.948-1.093 0-.048.007-.097.007-.145a3.067 3.067 0 01-.839-1.237l-.007-.007c0-.007-.006-.014-.006-.02a1.757 1.757 0 01-.11-.337c-.234-.042-.372-.296-.426-.537a1.045 1.045 0 01-.138-.598c.034-.35.179-.509.337-.57v-.056c0-.44.034-1.065.117-1.478a2.508 2.508 0 01.962-1.623c.426-.33 1.038-.501 1.58-.501.544 0 1.155.172 1.588.502a2.496 2.496 0 01.963 1.622c.075.413.117 1.045.117 1.478v.062c.15.062.288.22.323.564.02.268-.083.502-.138.598-.048.234-.185.488-.42.537a2.635 2.635 0 01-.116.364 3.094 3.094 0 01-.818 1.224c0 .055 0 .11.007.158.034.378-.103.653.914 1.1z","M14.976 16.57c-.24-.099-.455-.186-.65-.273l-.007-.004a3.801 3.801 0 01-.194-.091c.224-.288.41-.609.554-.946l.001-.002.013-.033c.018-.043.036-.087.052-.13l.011-.027.016-.04c.105-.092.19-.19.256-.284.129-.184.213-.38.265-.563.105-.226.225-.592.192-1.026l-.001-.011-.002-.011a1.854 1.854 0 00-.325-.91 9.924 9.924 0 00-.12-1.246 3.09 3.09 0 00-.106-.475l-.001-.006a3.543 3.543 0 00-.763-1.353c.27-.092.56-.139.83-.139.495 0 1.05.156 1.444.456a2.269 2.269 0 01.875 1.475c.069.375.106.95.106 1.344v.056c.138.056.263.2.294.513.019.244-.075.456-.125.543-.044.213-.169.444-.381.488-.025.1-.056.206-.094.3a2.815 2.815 0 01-.756 1.144c0 .05 0 .1.006.144.004.043.006.086.007.127.01.283.018.518.824.872.192.087.404.173.623.263.83.34 1.752.717 1.99 1.231.28.657.168 1.044.168 1.044h-2.081a3.864 3.864 0 00-.188-.542l-.005-.013-.006-.012c-.183-.397-.491-.681-.76-.88a5.614 5.614 0 00-.896-.522 17.36 17.36 0 00-.916-.4l-.15-.061zM14 1c.55 0 1 .45 1 1 0 .28-.11.53-.29.7L10 7.41v.897a3.182 3.182 0 00-.69.4 3.508 3.508 0 00-1.343 2.259c-.07.37-.107.836-.122 1.237a1.836 1.836 0 00-.339.926c-.046.458.09.84.195 1.06.053.178.138.376.27.56.055.08.125.162.21.242v.143l.053.052L6.71 16.71A1.003 1.003 0 015 16V7.41L.29 2.71A1.003 1.003 0 011 1h13z","M9.059 14.361c-.23-.044-.366-.296-.42-.535a1.045 1.045 0 01-.138-.598c.034-.35.179-.509.337-.57v-.056c0-.44.034-1.065.117-1.478A2.508 2.508 0 0110 9.441V13c0 .28-.11.53-.29.71l-.651.651z"],shield:["M10 20c6-3.81 9-9.048 9-15.714-2 0-5-1.429-9-4.286-4 2.857-7 4.286-9 4.286C1 10.952 4 16.19 10 20zm0-17.348c2.577 1.734 4.776 2.88 6.667 3.419-.44 4.627-2.636 8.353-6.667 11.297V2.652z"],shop:["M17.94 3.63c-.01-.02-.01-.03-.02-.04l-.03-.09h-.01c-.18-.3-.49-.5-.86-.5h-14c-.42 0-.77.25-.92.61L0 8.5h.02a2.5 2.5 0 005 0 2.5 2.5 0 005 0 2.5 2.5 0 005 0 2.5 2.5 0 005 0l-2.08-4.87zM3.02 2h14c.55 0 1-.45 1-1s-.45-1-1-1h-14c-.55 0-1 .45-1 1s.44 1 1 1zm13 14h-12v-4h-2v7c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-7h-2v4z"],"shopping-cart":["M18 14H8.72l-.67-2H17c.44 0 .8-.29.94-.69h.01l2-6h-.01c.03-.1.06-.2.06-.31 0-.55-.45-1-1-1H5.39l-.44-1.32h-.01C4.8 2.29 4.44 2 4 2H1c-.55 0-1 .45-1 1s.45 1 1 1h2.28l3.33 10H5c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2h9c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2zM6.05 6h11.56l-1.33 4H7.39L6.05 6z"],"signal-search":["M7.15 10.33c.888.8 1.999 1.36 3.228 1.574l2.326 6.98a.846.846 0 01-.535 1.07.844.844 0 01-1.072-.535l-1.225-3.671H7.125L5.9 19.419a.85.85 0 01-1.072.536.85.85 0 01-.536-1.071l2.857-8.555zm1.353 1.305l-.808 2.413h1.607l-.8-2.413zM5 5.5c0 .76.13 1.49.37 2.17-.496 1.056-.313 2.356.704 3.29.385.353.404.94.038 1.311a.982.982 0 01-1.356.038c-2.183-2.01-2-5.125.01-6.94a.95.95 0 01.24-.156A6.421 6.421 0 005 5.5z","M3.874 13.185c-1.346-.918-2.187-2.67-2.187-4.34 0-1.752.757-3.254 2.187-4.339.42-.25.42-.834.168-1.168-.252-.418-.84-.418-1.177-.167C1.014 4.59-.08 6.509.005 8.846c.084 2.253 1.177 4.423 2.86 5.675.168.083.336.166.504.166.253 0 .505-.083.673-.333.337-.418.253-.918-.168-1.169zM12.246 12.309a.98.98 0 01-1.354-.037.917.917 0 01-.206-.324 6.54 6.54 0 001.959-.049 5.125 5.125 0 01-.399.41zM14.631 11.476l1.228 1.229a6.6 6.6 0 01-1.723 1.816c-.169.083-.337.166-.505.166-.253 0-.505-.083-.673-.333-.337-.418-.253-.918.168-1.169.62-.422 1.133-1.022 1.505-1.709z","M11.5 0C14.54 0 17 2.46 17 5.5c0 .26-.02.51-.06.75l-.03.17c-.04.25-.1.49-.17.73v.01c-.08.24-.17.47-.28.69-.01.04-.03.07-.05.11-.11.23-.24.44-.38.65l3.68 3.68A1.003 1.003 0 0119 14c-.28 0-.53-.11-.7-.29l-3.68-3.68c-.21.14-.42.27-.65.38-.04.01-.07.03-.11.05-.22.11-.45.2-.69.28h-.01c-.24.07-.48.13-.73.17l-.17.03c-.25.04-.5.06-.76.06C8.46 11 6 8.54 6 5.5S8.46 0 11.5 0zm0 1.5c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4z"],"sim-card":["M16.71 5.29l-5-5A.997.997 0 0011 0H4c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V6c0-.28-.11-.53-.29-.71zM9 7h2v3H9V7zM6 7h2v3H6V7zm2 11H6v-3h2v3zm3 0H9v-3h2v3zm3 0h-2v-3h2v3zm0-4H6v-3h8v3zm0-4h-2V7h2v3z"],slash:["M12 2c-.46 0-.85.32-.97.74L7.04 16.7c-.02.1-.04.2-.04.3 0 .55.45 1 1 1 .46 0 .85-.32.97-.74L12.96 3.3c.02-.1.04-.2.04-.3 0-.55-.45-1-1-1z"],"small-cross":["M11.41 10l3.29-3.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L10 8.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42L8.59 10 5.3 13.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3.29-3.3 3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L11.41 10z"],"small-minus":["M14 9H6c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1z"],"small-plus":["M14 9h-3V6c0-.55-.45-1-1-1s-1 .45-1 1v3H6c-.55 0-1 .45-1 1s.45 1 1 1h3v3c0 .55.45 1 1 1s1-.45 1-1v-3h3c.55 0 1-.45 1-1s-.45-1-1-1z"],"small-tick":["M15 5c-.28 0-.53.11-.71.29L8 11.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l7-7A1.003 1.003 0 0015 5z"],snowflake:["M11 11.776v2.81l2.31 2.242a.987.987 0 010 1.415c-.399.39-1.044.39-1.442 0L11 17.414V19a.99.99 0 01-.996 1A.996.996 0 019 19v-1.636l-.912.879c-.398.39-1.043.39-1.441 0a.987.987 0 010-1.415L9 14.536v-2.79l-2.548 1.435-.837 3.063c-.146.534-.705.85-1.248.707a.998.998 0 01-.721-1.224l.309-1.132-1.4.793a1.03 1.03 0 01-1.393-.366.99.99 0 01.373-1.366l1.445-.818-1.224-.322a.998.998 0 01-.72-1.225c.145-.533.704-.85 1.248-.707l3.193.84 2.462-1.395-2.532-1.434-3.123.82a1.022 1.022 0 01-1.249-.706.998.998 0 01.721-1.225L2.91 7.18l-1.4-.793a.99.99 0 01-.373-1.366 1.03 1.03 0 011.392-.366l1.445.818-.328-1.2a.998.998 0 01.72-1.225 1.022 1.022 0 011.25.707l.855 3.132L9 8.311V5.414L6.647 3.121a.987.987 0 010-1.414 1.033 1.033 0 011.441 0L9 2.586V1c0-.552.44-1 1.004-1A.99.99 0 0111 1l-.007 1.536.875-.829a1.033 1.033 0 011.441 0 .987.987 0 010 1.414L11 5.364v2.918l2.53-1.42.855-3.131c.146-.534.705-.85 1.249-.707a.998.998 0 01.72 1.224l-.327 1.2 1.4-.792a1.03 1.03 0 011.392.366.99.99 0 01-.373 1.366l-1.355.768 1.153.303a.998.998 0 01.721 1.225c-.146.533-.705.85-1.249.707l-3.123-.821-2.576 1.459 2.506 1.42 3.193-.84a1.022 1.022 0 011.249.707.998.998 0 01-.72 1.225l-1.224.322 1.4.793a.99.99 0 01.373 1.366 1.03 1.03 0 01-1.393.366l-1.356-.768.31 1.132a.998.998 0 01-.721 1.224 1.022 1.022 0 01-1.249-.707l-.837-3.063L11 11.776z"],"social-media":["M11.5 5c.8 0 1.6-.4 2-1 2 1.2 3.3 3.3 3.5 5.7 0 .5.5.9 1 .9.6 0 1-.5 1-1v-.1c-.2-3.3-2.2-6.2-5.1-7.6C13.7.8 12.7 0 11.5 0 10.1 0 9 1.1 9 2.5S10.1 5 11.5 5zm5 7c-1.4 0-2.5 1.1-2.5 2.5 0 .4.1.7.2 1.1-1.1.9-2.6 1.4-4.2 1.4-1.9 0-3.6-.8-4.9-2-.2-.2-.5-.4-.8-.4-.5 0-1 .5-1 1 0 .3.1.5.3.7C5.3 18 7.5 19 10 19c2.2 0 4.2-.8 5.8-2.1.2.1.5.1.7.1 1.4 0 2.5-1.1 2.5-2.5S17.9 12 16.5 12zM5 10.5c0-1.1-.7-2.1-1.7-2.4.5-1.9 1.9-3.5 3.6-4.4.3-.2.6-.5.6-.9 0-.5-.4-1-1-1-.2 0-.4.1-.6.2-2.4 1.2-4.2 3.6-4.7 6.4C.5 8.9 0 9.6 0 10.5 0 11.9 1.1 13 2.5 13S5 11.9 5 10.5z"],sort:["M19 16h-9c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h9c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm0-5h-9c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h9c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zM7 15c-.28 0-.53.11-.71.29L5 16.59V11c0-.55-.45-1-1-1s-1 .45-1 1v5.59L1.71 15.3A.965.965 0 001 15a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 007 15zM19 1h-9c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zm0 5h-9c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1z"],"sort-alphabetical":["M8 15c-.28 0-.53.11-.71.29L6 16.59v-5.58c0-.55-.45-1-1-1s-1 .45-1 1v5.58L2.71 15.3c-.18-.18-.43-.3-.71-.3a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 008 15zm8.89-.79v-1.22H11.3v1.3h3.51L11 18.78V20h5.99v-1.3h-3.91l3.81-4.49zM14.97 0h-1.95L9.01 11.01h1.89l.98-2.92h4.17l.98 2.92h1.96L14.97 0zm-2.59 6.63l1.58-4.74H14l1.57 4.74h-3.19z"],"sort-alphabetical-desc":["M8.01 15c-.28 0-.53.11-.71.29L6 16.59v-5.58c0-.55-.45-1-1-1s-1 .45-1 1v5.58L2.71 15.3c-.18-.18-.43-.3-.71-.3a1.003 1.003 0 00-.71 1.71l3 3a1.014 1.014 0 001.42 0l3-3c.18-.18.29-.43.29-.71.01-.55-.44-1-.99-1zm4.44-5.65l6.4-7.88V0H10.5v1.67h5.91L10 9.44v1.57h9V9.35h-6.55zm1.27 3.64L11 20h1.59l.56-1.56h2.68l.55 1.56h1.64l-2.68-7.01h-1.62zm-.16 4.3l.93-2.57h.02l.9 2.57h-1.85z"],"sort-asc":["M10 8h5c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1h-5c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zm0 5h7c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1h-7c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zm0-10h3c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1h-3c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zm9 12h-9c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h9c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zM7 14c-.28 0-.53.11-.71.29L5 15.59V10c0-.55-.45-1-1-1s-1 .45-1 1v5.59L1.71 14.3A.965.965 0 001 14a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 007 14z"],"sort-desc":["M13 15h-3c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm-6-1c-.28 0-.53.11-.71.29L5 15.59V10c0-.55-.45-1-1-1s-1 .45-1 1v5.59L1.71 14.3A.965.965 0 001 14a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 007 14zM19 0h-9c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-4 10h-5c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm2-5h-7c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z"],"sort-numerical":["M9 14.99c-.28 0-.53.11-.71.29L7 16.58v-5.59c0-.55-.45-1-1-1s-1 .45-1 1v5.59l-1.29-1.29a.965.965 0 00-.71-.3 1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29.28 0 .53-.11.71-.29l3-3c.18-.18.29-.43.29-.71a.99.99 0 00-1-1zm8.88.23c-.08-.42-.22-.79-.42-1.12-.2-.33-.47-.6-.8-.8-.33-.2-.76-.3-1.28-.3a2.333 2.333 0 00-1.72.71c-.21.22-.37.48-.49.78-.11.3-.17.62-.17.97 0 .27.04.54.13.8.08.26.22.5.4.7.19.21.43.38.71.5a2.142 2.142 0 001.72.02c.25-.12.47-.31.66-.58l.02.02c-.01.19-.04.4-.08.63-.04.24-.11.46-.21.67-.1.21-.23.38-.39.53a.92.92 0 01-.62.22c-.24 0-.44-.08-.6-.25-.16-.17-.27-.36-.31-.59h-1.31c.04.29.12.56.24.79.12.23.28.43.48.59.19.16.42.28.67.36.25.08.52.12.82.12.49 0 .9-.1 1.23-.31.34-.21.61-.48.82-.82.21-.34.37-.71.47-1.13.1-.42.15-.83.15-1.25 0-.43-.04-.85-.12-1.26zm-1.42.63c-.05.15-.11.28-.2.4-.09.12-.2.21-.34.27s-.3.1-.49.1c-.17 0-.33-.04-.46-.11s-.24-.17-.33-.29c-.08-.12-.15-.25-.19-.4-.04-.15-.06-.31-.06-.47 0-.15.02-.3.07-.45.05-.15.11-.28.2-.39.09-.12.2-.21.33-.28.13-.07.27-.11.44-.11.17 0 .33.04.47.11.14.07.25.17.34.28a1.387 1.387 0 01.28.86c.01.17-.02.33-.06.48zM15.32 11H17V0h-1.25c-.05.34-.17.62-.34.85-.17.23-.39.42-.63.57-.25.15-.52.25-.83.31-.3.06-.62.09-.94.09v1.41h2.31V11z"],"sort-numerical-desc":["M9 15c-.28 0-.53.11-.71.29L7 16.59v-5.58c0-.55-.45-1-1-1s-1 .45-1 1v5.58L3.71 15.3c-.18-.18-.43-.3-.71-.3a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29.28 0 .53-.11.71-.29l3-3A1.003 1.003 0 009 15zm6.7-1.33a1.5 1.5 0 01-.44.43c-.17.11-.37.19-.58.23-.22.04-.44.06-.67.05v1.07h1.66V20H17v-6.99h-1.06c-.04.26-.12.48-.24.66zm3.15-10.3c-.11-.68-.29-1.26-.55-1.76-.26-.5-.62-.89-1.08-1.18C16.75.14 16.17 0 15.46 0c-.54 0-1.03.09-1.46.27-.43.18-.79.44-1.09.76-.3.33-.52.71-.67 1.15-.16.44-.24.92-.24 1.43 0 .54.08 1.04.23 1.47.15.44.37.81.65 1.12.28.31.61.55 1 .72.39.17.82.26 1.3.26.46 0 .88-.11 1.26-.33.38-.22.68-.53.9-.94l.03.03c-.03.35-.07.74-.12 1.16-.05.42-.15.81-.29 1.18-.14.37-.35.68-.61.92-.26.25-.62.37-1.06.37-.43 0-.77-.13-1.03-.4-.25-.27-.4-.62-.44-1.05h-1.64c.02.43.11.83.29 1.18.17.35.39.66.67.91a3.027 3.027 0 002.07.8c.71 0 1.3-.17 1.79-.5.48-.33.87-.76 1.17-1.29.3-.53.51-1.12.64-1.76.13-.64.19-1.28.19-1.92.01-.77-.05-1.49-.15-2.17zM17.1 4.44c-.08.27-.19.5-.34.71-.15.21-.34.37-.57.49-.23.12-.5.18-.8.18-.3 0-.56-.06-.78-.19-.22-.13-.4-.29-.55-.49-.14-.2-.25-.44-.32-.7-.07-.27-.11-.55-.11-.84 0-.28.04-.55.11-.82.07-.26.18-.49.32-.7.14-.2.33-.36.55-.48.22-.12.48-.17.78-.17.31 0 .57.06.8.18.23.12.42.28.57.48.15.2.26.43.34.69.08.26.11.53.11.82 0 .29-.04.57-.11.84z"],"split-columns":["M15 13a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-3-3a1.003 1.003 0 00-1.42 1.42L16.59 9H11V2h5v2c.77 0 1.47.3 2 .78V1c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v3.78C2.53 4.3 3.23 4 4 4V2h5v7H3.41L4.7 7.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3C.11 9.47 0 9.72 0 10c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L3.41 11H9v7H4v-2c-.77 0-1.47-.3-2-.78V19c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-3.78c-.53.48-1.23.78-2 .78v2h-5v-7h5.59l-1.29 1.29c-.19.18-.3.43-.3.71z"],square:["M19 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H2V2h16v16z"],"stacked-chart":["M12 2c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v4h4V2zm3 14h2c.55 0 1-.45 1-1v-5h-4v5c0 .55.45 1 1 1zm3-10c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v3h4V6zm-6 1H8v5h4V7zm-9 9h2c.55 0 1-.45 1-1v-3H2v3c0 .55.45 1 1 1zm16 1H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zM6 9c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v2h4V9zm3 7h2c.55 0 1-.45 1-1v-2H8v2c0 .55.45 1 1 1z"],star:["M10 0l3.1 6.6 6.9 1-5 5.1 1.2 7.3-6.2-3.4L3.8 20 5 12.7 0 7.6l6.9-1z"],"star-empty":["M20 7.6l-6.9-1.1L10 0 6.9 6.6 0 7.6l5 5.1L3.8 20l6.2-3.4 6.2 3.4-1.2-7.2 5-5.2zM10 15l-4.5 2.4.9-5.2-3.6-3.6 5-.8L10 3.1l2.2 4.7 5 .8-3.6 3.7.9 5.2L10 15z"],"step-backward":["M15 3c-.23 0-.42.09-.59.21l-.01-.01L8 8V4c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-4l6.4 4.8.01-.01c.17.12.36.21.59.21.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"step-chart":["M19 16H2v-3h4c.55 0 1-.45 1-1V8h3v2c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V6h2c.55 0 1-.45 1-1s-.45-1-1-1h-3c-.55 0-1 .45-1 1v4h-3V7c0-.55-.45-1-1-1H6c-.55 0-1 .45-1 1v4H2V3c0-.55-.45-1-1-1s-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],"step-forward":["M15 3h-2c-.55 0-1 .45-1 1v4L5.6 3.2l-.01.01C5.42 3.09 5.23 3 5 3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1 .23 0 .42-.09.59-.21l.01.01L12 12v4c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],stop:["M16 3H4c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],stopwatch:["M10 6a6 6 0 106 6h-6V6zm-.998-1.938A1.015 1.015 0 019 4V2H7a1 1 0 110-2h6a1 1 0 010 2h-2v2c0 .02 0 .041-.002.062A8.001 8.001 0 0110 20a8 8 0 01-.998-15.938z"],strikethrough:["M18 9h-4.46a4.7 4.7 0 00-.4-.14c-.19-.05-.51-.14-.96-.25-.45-.11-.9-.23-1.37-.35-.47-.12-.89-.23-1.27-.33s-.6-.16-.65-.17c-.53-.15-.95-.37-1.27-.66-.32-.28-.49-.68-.49-1.19 0-.36.09-.66.26-.9s.39-.43.65-.57c.26-.14.55-.24.87-.3s.63-.09.93-.09c.89 0 1.63.19 2.21.57.45.3.75.76.89 1.38h2.63c-.06-.52-.2-.98-.42-1.4-.3-.57-.71-1.05-1.23-1.43a5.33 5.33 0 00-1.79-.87c-.7-.2-1.42-.3-2.19-.3-.66 0-1.31.08-1.96.25s-1.22.43-1.73.77-.92.79-1.23 1.32c-.31.52-.46 1.15-.46 1.87 0 .37.05.74.15 1.1.1.36.28.7.53 1.02.18.24.41.47.69.67H2c-.55 0-1 .45-1 1s.45 1 1 1h10.14c.02.01.05.02.07.02.3.11.58.29.84.55.25.26.38.67.38 1.21 0 .27-.06.53-.17.79-.11.26-.29.49-.54.69-.25.2-.57.36-.97.49s-.88.19-1.44.19c-.52 0-1.01-.06-1.45-.17-.45-.11-.84-.29-1.19-.54s-.61-.56-.8-.95c-.05-.08-.09-.18-.12-.28H4.11c.09.43.22.82.4 1.18.33.65.77 1.18 1.32 1.59.55.41 1.2.72 1.94.92.74.2 1.53.3 2.37.3.73 0 1.44-.08 2.14-.25.7-.17 1.33-.43 1.88-.79.55-.36.99-.83 1.33-1.39.34-.56.51-1.25.51-2.05 0-.37-.06-.75-.18-1.12a3.12 3.12 0 00-.15-.39H18c.55 0 1-.45 1-1s-.45-1-1-1z"],style:["M18 18H2V2h12.3l2-2H1C.4 0 0 .4 0 1v18c0 .6.4 1 1 1h18c.6 0 1-.4 1-1V7.7l-2 2V18zm1.2-18l-7.6 7.6 2.8 2.8L20 4.8V0h-.8zM4 15.9c3.1.2 5.9.2 8.2-2 1.1-1.1 1.1-3 0-4.1-.6-.5-1.3-.8-2-.8s-1.4.3-1.9.8C7.2 11 6.6 14.3 4 15.9z"],"swap-horizontal":["M16.02 10c-.01 0-.01 0 0 0H16h.02zM2 6h13.58l-2.29 2.29a1 1 0 00-.3.71 1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-4-4a1.003 1.003 0 00-1.42 1.42L15.58 4H2c-.55 0-1 .45-1 1s.45 1 1 1zm2 4h-.02H4zm14 4H4.42l2.29-2.29a1 1 0 00.3-.71 1.003 1.003 0 00-1.71-.71l-4 4c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L4.42 16H18c.55 0 1-.45 1-1s-.45-1-1-1z"],"swap-vertical":["M9.71 5.3l-4-4A.997.997 0 005 1.01c-.28 0-.53.11-.71.29l-4 4a1.003 1.003 0 001.42 1.42L4 4.42V18c0 .55.45 1 1 1s1-.45 1-1V4.42l2.29 2.29a1 1 0 00.71.3 1.003 1.003 0 00.71-1.71zM10 3.98c0 .01 0 .01 0 0V4v-.02zm0 12.04c0-.01 0-.01 0 0V16v.02zm9-3.03c-.28 0-.53.11-.71.29L16 15.58V2c0-.55-.45-1-1-1s-1 .45-1 1v13.58l-2.29-2.29a1.003 1.003 0 00-1.42 1.42l4 4c.18.18.43.29.71.29.28 0 .53-.11.71-.29l4-4c.18-.18.29-.43.29-.71 0-.56-.45-1.01-1-1.01z"],switch:["M12.293 2.293l1.414 1.414-7.127 7.129a3.5 3.5 0 11-1.415-1.415l7.128-7.128zM16.5 9a3.5 3.5 0 110 7 3.5 3.5 0 010-7zm-13 2a1.5 1.5 0 100 3 1.5 1.5 0 000-3zm13 0a1.5 1.5 0 100 3 1.5 1.5 0 000-3z"],"symbol-circle":["M10 4.01a6 6 0 100 12 6 6 0 100-12z"],"symbol-cross":["M15 8.01h-3v-3c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v3H5c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h3v3c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-3h3c.55 0 1-.45 1-1v-2c0-.56-.45-1-1-1z"],"symbol-diamond":["M15 10.01c0-.21-.08-.39-.18-.54l.02-.01-4-6-.02.01c-.18-.28-.47-.46-.82-.46s-.64.18-.82.45l-.01-.01-4 6 .02.01c-.11.16-.19.34-.19.55s.08.39.18.54l-.02.01 4 6 .02-.01c.18.27.47.46.82.46s.64-.19.82-.46l.02.01 4-6-.02-.01c.1-.16.18-.34.18-.54z"],"symbol-square":["M15 4.01H5c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-10c0-.56-.45-1-1-1z"],"symbol-triangle-down":["M16 5c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1 0 .16.05.31.11.44H4.1l5 10h.01c.17.33.5.56.89.56s.72-.23.89-.56h.01l5-10h-.01c.06-.13.11-.28.11-.44z"],"symbol-triangle-up":["M15.89 14.56l-4.99-10h-.01c-.17-.33-.5-.56-.89-.56s-.72.23-.89.56H9.1l-5 10h.01c-.06.13-.11.28-.11.44 0 .55.45 1 1 1h10c.55 0 1-.45 1-1 0-.16-.05-.31-.11-.44z"],tag:["M2 4a2 2 0 012-2h4.588a2 2 0 011.414.586l7.41 7.41a2 2 0 010 2.828l-4.588 4.588a2 2 0 01-2.829 0l-7.41-7.41A2 2 0 012 8.588V4zm3.489-.006a1.495 1.495 0 100 2.99 1.495 1.495 0 000-2.99z"],"take-action":["M5 7c.28 0 .53-.11.71-.29l5-5A1.003 1.003 0 009.29.29l-5 5A1.003 1.003 0 005 7zm6 6a1.003 1.003 0 001.71.71l5-5a1.003 1.003 0 00-1.42-1.42l-5 5c-.18.18-.29.43-.29.71zm8 5h-1c0-.55-.45-1-1-1h-7c-.55 0-1 .45-1 1H8c-.55 0-1 .45-1 1s.45 1 1 1h11c.55 0 1-.45 1-1s-.45-1-1-1zm-9-6l6-6-1.29-1.29a1.003 1.003 0 00-1.42-1.42L12 2 6 8l1.29 1.29-7 7a1.003 1.003 0 001.42 1.42l7-7L10 12z"],taxi:["M19 9h-.33l.33 1v.5c0 .15-.03.3-.07.44h.01L17 17.23v.27c0 .83-.67 1.5-1.5 1.5s-1.5-.67-1.5-1.5V17H6v.5c0 .83-.67 1.5-1.5 1.5S3 18.33 3 17.5v-.27l-1.93-6.28h.01c-.05-.15-.08-.3-.08-.45V10s.02-.06.05-.16c.06-.17.16-.47.28-.84H1c-.55 0-1-.45-1-1s.45-1 1-1h1l1-3h-.01v-.01c.25-.64 1-1.31 1.67-1.5 0 0 .78-.21 2.33-.36V1c0-.55.45-1 1-1h4c.55 0 1 .45 1 1v1.13c1.55.14 2.33.36 2.33.36.67.19 1.42.86 1.67 1.5V4H17l1 3h1c.55 0 1 .45 1 1s-.45 1-1 1zM3 11.5c0 .83.67 1.5 1.5 1.5S6 12.33 6 11.5 5.33 10 4.5 10 3 10.67 3 11.5zM16 7l-1-3H5L4 7v1h12V7zm-.5 3c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z"],"text-highlight":["M16 17c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1s1-.45 1-1-.45-1-1-1c-.77 0-1.47.3-2 .78-.53-.48-1.23-.78-2-.78-.55 0-1 .45-1 1s.45 1 1 1 1 .45 1 1v12c0 .55-.45 1-1 1s-1 .45-1 1 .45 1 1 1c.77 0 1.47-.3 2-.78.53.48 1.23.78 2 .78.55 0 1-.45 1-1s-.45-1-1-1zm-4-4H2V7h10V5H1c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h11v-2zm7-8h-3v2h2v6h-2v2h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z"],th:["M19 1H1c-.6 0-1 .5-1 1v16c0 .5.4 1 1 1h18c.5 0 1-.5 1-1V2c0-.5-.5-1-1-1zM7 17H2v-3h5v3zm0-4H2v-3h5v3zm0-4H2V6h5v3zm11 8H8v-3h10v3zm0-4H8v-3h10v3zm0-4H8V6h10v3z"],"th-derived":["M5.3 13.3c-.2.2-.3.4-.3.7 0 .6.4 1 1 1 .3 0 .5-.1.7-.3l3-3c.2-.2.3-.4.3-.7s-.1-.5-.3-.7l-3-3C6.5 7.1 6.3 7 6 7c-.6 0-1 .4-1 1 0 .3.1.5.3.7L6.6 10H1c-.6 0-1 .4-1 1s.4 1 1 1h5.6l-1.3 1.3zM19 1H3c-.5 0-1 .5-1 1v6h1c0-1.7 1.3-3 3-3 .8 0 1.6.3 2.1.9l.1.1H9v.8l1 1V6h8v3h-6.8c.3.3.5.6.6 1H18v3h-6.8l-.1.1-.9.9H18v3h-8v-2.8l-1 1V17H4v-.8c-.6-.5-1-1.3-1-2.2H2v4c0 .5.5 1 1 1h16c.6 0 1-.5 1-1V2c0-.5-.5-1-1-1z"],"th-disconnect":["M14.25 1H19c.5 0 1 .5 1 1v16c0 .5-.5 1-1 1h-7.221l.278-2H18v-3h-5.527l.14-1H18v-3h-4.971l.139-1H18V6h-4.416l.637-4.587c.02-.139.03-.277.03-.413zM8.221 1l-.694 5H2v3h5.11l-.139 1H2v3h4.555l-.14 1H2v3h3.999l-.22 1.587c-.02.139-.03.277-.03.413H1c-.6 0-1-.5-1-1V2c0-.5.4-1 1-1h7.221zM10.26.862a1 1 0 011.98.276l-2.5 18a1 1 0 01-1.98-.276l2.5-18z"],"th-filtered":["M17.333 10l1.435-1.722a1 1 0 00.232-.64V4.85l1-.9V18c0 .5-.5 1-1 1H1c-.6 0-1-.5-1-1V2c0-.5.4-1 1-1h6.722L12 4.85V6H8v3h4v1H8v3h10v-3h-.667zM7 17v-3H2v3h5zm0-4v-3H2v3h5zm0-4V6H2v3h5zm11 8v-3H8v3h10z","M19.35 0a.642.642 0 01.46 1.1l-3.03 3.03v2.95c0 .18-.07.34-.19.46l-1.28 1.29c-.11.1-.27.17-.45.17-.35 0-.64-.29-.64-.64V4.13L11.19 1.1a.642.642 0 01.45-1.1h7.71z"],"th-list":["M19 1H1c-.6 0-1 .5-1 1v16c0 .5.4 1 1 1h18c.5 0 1-.5 1-1V2c0-.5-.5-1-1-1zm-1 16H2v-3h16v3zm0-4H2v-3h16v3zm0-4H2V6h16v3z"],"thumbs-down":["M18.55 6.56c-.31-.01-.65-.03-1.02-.06.03 0 .06-.01.09-.01.88-.12 1.68-.63 1.76-1.37.08-.75-.58-1.25-1.46-1.33-.32-.03-.65-.05-.99-.08.59-.19 1.05-.54 1.09-1.2.05-.75-.99-1.32-1.87-1.41-.34-.03-.64-.05-.91-.07h-.11c-.28-.02-.54-.02-.77-.02-3.92-.08-7.29.6-9.36 1.93v7.72c2.67 1.66 5.95 4.61 5.26 7.08-.21.76.39 1.35 1.23 1.26 1.01-.11 1.71-1.18 1.75-2.28.05-1.29-.19-2.59-.62-3.74-.05-.32.01-.65.47-.68.61-.04 1.39-.08 1.99-.1.32 0 .64-.01.94-.03h.01c.52-.03 1-.07 1.42-.12.88-.11 1.69-.6 1.79-1.35.1-.75-.55-1.25-1.44-1.35-.07-.01-.13-.02-.2-.02.21-.02.42-.04.61-.06.88-.11 1.69-.6 1.79-1.35.09-.75-.56-1.31-1.45-1.36zM3 3H0v8h3c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"thumbs-up":["M3 9H0v8h3c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1zm16.99 3.09c-.1-.75-.91-1.24-1.79-1.35-.19-.02-.4-.05-.61-.06.07-.01.14-.01.2-.02.88-.1 1.53-.61 1.44-1.35-.1-.74-.91-1.24-1.79-1.35-.42-.05-.9-.09-1.42-.12h-.01l-.94-.03c-.6-.02-1.39-.05-1.99-.1-.45-.03-.51-.36-.47-.68.43-1.15.67-2.45.62-3.74-.04-1.11-.74-2.17-1.75-2.28-.84-.09-1.45.5-1.23 1.26.7 2.47-2.58 5.43-5.25 7.08v7.72c2.08 1.33 5.44 2.01 9.35 1.93.24 0 .49-.01.77-.02h.11c.27-.02.57-.04.91-.07.88-.08 1.92-.66 1.87-1.41-.04-.65-.5-1.01-1.09-1.2.34-.03.67-.05.99-.08.89-.08 1.55-.58 1.46-1.33-.08-.75-.88-1.25-1.76-1.37-.03 0-.06-.01-.09-.01.37-.02.71-.04 1.02-.06.91-.05 1.55-.61 1.45-1.36z"],tick:["M17 4c-.28 0-.53.11-.71.29L7 13.59 3.71 10.3A.965.965 0 003 10a1.003 1.003 0 00-.71 1.71l4 4c.18.18.43.29.71.29s.53-.11.71-.29l10-10A1.003 1.003 0 0017 4z"],"tick-circle":["M10 20C4.48 20 0 15.52 0 10S4.48 0 10 0s10 4.48 10 10-4.48 10-10 10zm5-14c-.28 0-.53.11-.71.29L8 12.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29.28 0 .53-.11.71-.29l7-7A1.003 1.003 0 0015 6z"],time:["M11 9.59V4c0-.55-.45-1-1-1s-1 .45-1 1v6c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L11 9.59zM10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"],"timeline-area-chart":["M19 16H2V3c0-.55-.45-1-1-1s-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm0-13.41l-7.07 7.07-4.3-3.44-.01.01A.987.987 0 007 6c-.24 0-.46.1-.63.24l-.01-.01L3 9.03V15h16V2.59z"],"timeline-bar-chart":["M19 17H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zM9 16h2c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v13c0 .55.45 1 1 1zm6 0h2c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1zM3 16h2c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1z"],"timeline-events":["M5 5c.6 0 1-.4 1-1V2c0-.5-.4-1-1-1s-1 .5-1 1v2c0 .6.4 1 1 1zm10 0c.6 0 1-.4 1-1V2c0-.5-.4-1-1-1s-1 .5-1 1v2c0 .6.4 1 1 1zm-9 9H4v2h2v-2zM17 3v1c0 1.1-.9 2-2 2s-2-.9-2-2V3H7v1c0 1.1-.9 2-2 2s-2-.9-2-2V3H2c-.5 0-1 .5-1 1v14c0 .5.5 1 1 1h16c.5 0 1-.5 1-1V4c0-.5-.5-1-1-1h-1zM7 17H3v-4h4v4zm0-5H3V8h4v4zm5 5H8v-4h4v4zm0-5H8V8h4v4zm5 5h-4v-4h4v4zm0-5h-4V8h4v4zm-6 2H9v2h2v-2zm5-5h-2v2h2V9z"],"timeline-line-chart":["M19 16H2v-1.59l5-5 3.29 3.29c.18.19.43.3.71.3s.53-.11.71-.29l7-7a1.003 1.003 0 00-1.42-1.42L11 10.59l-3.29-3.3C7.53 7.11 7.28 7 7 7s-.53.11-.71.29L2 11.59V3c0-.55-.45-1-1-1s-1 .45-1 1v14a.998.998 0 001 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],tint:["M9.86 2S3.98 9.18 3.98 12.17C3.99 15.4 6.78 18 9.96 18c3.18-.01 6.04-2.63 6.03-5.86C15.99 9.05 9.86 2 9.86 2z"],torch:["M6.97 19c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-2h-6v2zm-3-15l3 4v8h6V8l3-4h-12zm5 5c0-.55.45-1 1-1s1 .45 1 1v2c0 .55-.45 1-1 1s-1-.45-1-1V9zm6-9h-10c-.55 0-1 .45-1 1v2h12V1c0-.55-.45-1-1-1z"],tractor:["M4.5 11a4.5 4.5 0 110 9 4.5 4.5 0 010-9zm11.499 1a4 4 0 110 8 4 4 0 010-8zm-11.5 1.571a1.928 1.928 0 100 3.857 1.928 1.928 0 000-3.857zM16 14.667a1.333 1.333 0 100 2.666 1.333 1.333 0 000-2.666zM5.999 0C7.46 0 8.527.668 9 2l.851 4.256c1.433.096 2.82.217 4.147.362V2h2L16 6.862c.962.13 1.886.275 2.767.435.779.141 1.232.614 1.232 1.284L20 13a4.995 4.995 0 00-4-1.997A5.001 5.001 0 0011.099 15h-1.12a5.499 5.499 0 00-5.478-4.994 5.482 5.482 0 00-3.377 1.157H.004v-1.18L0 7.327c-.002-.597.37-1.18.999-1.302V1a1 1 0 011-1h4zm1 2H3v4h.75c1.386.027 2.749.073 4.079.139L6.999 2z"],train:["M16 18h-2l2 2H4l.12-.12L6 18H4c-1.1 0-2-.9-2-2V2c0-1.1 3.58-2 8-2s8 .9 8 2v14c0 1.1-.9 2-2 2zM5.5 15c.83 0 1.5-.67 1.5-1.5S6.33 12 5.5 12 4 12.67 4 13.5 4.67 15 5.5 15zM9 3H4v6h5V3zm7 0h-5v6h5V3zm-1.5 9c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z"],translate:["M19.89 18.56l-4.99-10h-.01c-.17-.33-.5-.56-.89-.56s-.72.23-.89.56h-.01l-1.73 3.46-2.8-2.3 1.99-1.64C11.44 7.34 12 6.23 12 5V4h1c.55 0 1-.45 1-1s-.45-1-1-1H8V1c0-.55-.45-1-1-1S6 .45 6 1v1H1c-.55 0-1 .45-1 1s.45 1 1 1h9v1c0 .62-.28 1.18-.73 1.54L7 8.42 4.73 6.54C4.28 6.18 4 5.62 4 5H2c0 1.23.56 2.34 1.44 3.07l1.99 1.64-3.06 2.52.01.01c-.23.18-.38.45-.38.76 0 .55.45 1 1 1 .24 0 .45-.1.63-.24l.01.01L7 11l3.36 2.77.01-.01c.02.02.05.03.08.05.01 0 .01.01.02.02l-2.36 4.73h.01c-.07.13-.12.28-.12.44 0 .55.45 1 1 1 .39 0 .72-.23.89-.56h.01L11.12 17h5.76l1.22 2.45h.01c.17.32.5.55.89.55.55 0 1-.45 1-1 0-.16-.05-.31-.11-.44zM12.12 15L14 11.24 15.88 15h-3.76z"],trash:["M17 1h-5c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1H3c-.55 0-1 .45-1 1v1h16V2c0-.55-.45-1-1-1zm.5 3h-15c-.28 0-.5.22-.5.5s.22.5.5.5H3v14c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5h.5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5zM7 16c0 .55-.45 1-1 1s-1-.45-1-1V8c0-.55.45-1 1-1s1 .45 1 1v8zm4 0c0 .55-.45 1-1 1s-1-.45-1-1V8c0-.55.45-1 1-1s1 .45 1 1v8zm4 0c0 .55-.45 1-1 1s-1-.45-1-1V8c0-.55.45-1 1-1s1 .45 1 1v8z"],tree:["M11 15.542V20H9v-4.458L2 17l4.5-5.625L4 12l3.655-5.483L6 7l4-7 4 7-1.655-.483L16 12l-2.5-.625L18 17l-7-1.458z"],"trending-down":["M19 10c-.55 0-1 .45-1 1v1.37l-6.25-7.03-.01.01A.971.971 0 0011 5c-.23 0-.42.09-.59.21l-.01-.01-3.43 2.58-5.42-3.61-.01.01A.969.969 0 001 4c-.55 0-1 .45-1 1 0 .35.19.64.46.82l-.01.01 6 4 .01-.02c.15.11.33.19.54.19.23 0 .42-.09.59-.21l.01.01 3.26-2.45L16.77 14H15c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1z"],"trending-up":["M19 4h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.77l-5.91 6.65L7.6 10.2l-.01.01C7.42 10.09 7.23 10 7 10c-.21 0-.39.08-.54.18l-.01-.02-6 4 .01.02c-.27.18-.46.47-.46.82 0 .55.45 1 1 1 .21 0 .39-.08.54-.18l.01.02 5.41-3.61 3.43 2.58.01-.01c.18.11.37.2.6.2.3 0 .56-.14.74-.34l.01.01L18 7.63V9c0 .55.45 1 1 1s1-.45 1-1V5c0-.55-.45-1-1-1z"],truck:["M16 0a1 1 0 011 1v11a1 1 0 011 1v3h.5a.5.5 0 01.5.5v1a.5.5 0 01-.5.5H17v1a1 1 0 01-1 1h-1a1 1 0 01-1-1v-1H6v1a1 1 0 01-1 1H4a1 1 0 01-1-1v-1H1.5a.5.5 0 01-.5-.5v-1a.5.5 0 01.5-.5H2v-3a1 1 0 011-1V1a1 1 0 112 0v3a2 2 0 012-2h6a2 2 0 012 2V1a1 1 0 011-1zm-4 10H8a1 1 0 00-1 1v4a1 1 0 001 1h4a1 1 0 001-1v-4a1 1 0 00-1-1zm-7 4H4a1 1 0 000 2h1a1 1 0 000-2zm11 0h-1a1 1 0 000 2h1a1 1 0 000-2zm-4.5 0a.5.5 0 110 1h-3l-.09-.008A.5.5 0 018.5 14zm0-1.5a.5.5 0 110 1h-3l-.09-.008a.5.5 0 01.09-.992zm0-1.5a.5.5 0 110 1h-3l-.09-.008A.5.5 0 018.5 11zM14 5H6v3h8V5z"],"two-columns":["M5 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm14.71 9.29l-3-3A1.003 1.003 0 0015 7v6a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zM12 0H8c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],unarchive:["M16.434 0a1 1 0 01.857.486L20 5v14a1 1 0 01-1 1H1a1 1 0 01-1-1V5L2.709.486A1 1 0 013.566 0h12.868zM10 8c-.28 0-.53.11-.71.29l-3 3-.084.096A1.003 1.003 0 007.71 12.71L9 11.41v4.58l.007.116c.058.496.482.884.993.884.55 0 1-.45 1-1v-4.58l1.29 1.29.081.073c.171.139.389.227.629.227a1.003 1.003 0 00.71-1.71l-3-3-.096-.084A1.002 1.002 0 0010 8zm6-6H4L2 5.002h16L16 2z"],underline:["M10 17c3.3 0 6-2.7 6-6V3.5c0-.8-.7-1.5-1.5-1.5S13 2.7 13 3.5V11c0 1.7-1.3 3-3 3s-3-1.3-3-3V3.5C7 2.7 6.3 2 5.5 2S4 2.7 4 3.5V11c0 3.3 2.7 6 6 6zM16.5 19h-13c-.3 0-.5.2-.5.5s.2.5.5.5h13c.3 0 .5-.2.5-.5s-.2-.5-.5-.5z"],undo:["M5 14c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm9-9H3.41L5.7 2.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4C.11 5.47 0 5.72 0 6c0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L3.41 7H14c2.21 0 4 1.79 4 4s-1.79 4-4 4H9v2h5c3.31 0 6-2.69 6-6s-2.69-6-6-6z"],"ungroup-objects":["M4.5 6C2.01 6 0 8.01 0 10.5S2.01 15 4.5 15 9 12.99 9 10.5 6.99 6 4.5 6zm11 0C13.01 6 11 8.01 11 10.5s2.01 4.5 4.5 4.5 4.5-2.01 4.5-4.5S17.99 6 15.5 6z"],"unknown-vehicle":["M13 11.988v-4H4v-1l1-3h6V2.003a35.867 35.867 0 00-1-.015c-3.593 0-5.332.488-5.332.488-.67.188-1.424.864-1.674 1.503l-.004.009H3l-1 3H1a1 1 0 100 2h.333l-.28.84-.053.16v7.5a1.5 1.5 0 103 0v-.5h12v.5a1.5 1.5 0 103 0v-4.5h-5a1 1 0 01-1-1zm-8.5 1a1.5 1.5 0 110-3 1.5 1.5 0 010 3zM19.83 2.782a2.392 2.392 0 00-.592-.853c-.276-.264-.64-.485-1.09-.663C17.695 1.09 17.132 1 16.457 1c-.523 0-.996.084-1.418.253a3.157 3.157 0 00-1.084.703c-.299.3-.532.656-.698 1.065-.166.41-.254.861-.264 1.353h2.096c0-.246.028-.476.085-.69.057-.214.145-.4.264-.56.119-.16.27-.287.456-.383.185-.095.406-.143.663-.143.38 0 .677.1.89.3.215.2.321.51.321.93.01.245-.035.45-.135.614-.1.164-.23.314-.392.45a8.598 8.598 0 01-.527.41 3.53 3.53 0 00-.542.485c-.171.187-.32.412-.45.676-.127.265-.206.592-.234.984v.614h1.924v-.519c.038-.273.13-.5.278-.683.147-.182.316-.343.506-.484a13.5 13.5 0 01.606-.424c.214-.14.408-.312.584-.512s.323-.442.442-.724.178-.642.178-1.079c0-.264-.059-.548-.178-.854zm-4.54 6.099v2.103h2.237V8.881H15.29z"],unlock:["M14 1c-2.21 0-4 1.79-4 4v4H2c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-8c0-.55-.45-1-1-1h-2V5c0-1.1.9-2 2-2s2 .9 2 2v2c0 .55.45 1 1 1s1-.45 1-1V5c0-2.21-1.79-4-4-4z"],unpin:["M11.77 1.16c-.81.81-.74 2.28.02 3.76L6.1 8.71c-2.17-1.46-4.12-2-4.94-1.18l4.95 4.95-2.12 3.54 3.54-2.12 4.95 4.95c.82-.82.27-2.77-1.19-4.94l3.8-5.69c1.47.76 2.94.84 3.76.02l-7.08-7.08z"],unresolve:["M11.47 12.46c.16-.36.29-.74.38-1.14 0-.02.01-.04.01-.06.09-.4.14-.82.14-1.26 0-.44-.05-.86-.14-1.27 0-.02-.01-.04-.01-.06-.09-.4-.22-.78-.38-1.14-.01-.02-.02-.03-.02-.05a5.94 5.94 0 00-.61-1.03c0-.01-.01-.01-.01-.02a6.308 6.308 0 00-2.1-1.77c-.19-.1-.39-.18-.59-.26-.03-.01-.06-.02-.1-.03-.17-.07-.34-.12-.52-.17-.05-.01-.1-.03-.15-.04a4.34 4.34 0 00-.52-.09c-.05-.01-.11-.02-.17-.03C6.46 4.02 6.23 4 6 4c-3.31 0-6 2.69-6 6s2.69 6 6 6c.23 0 .46-.02.68-.04l.17-.03c.17-.02.34-.06.51-.09.05-.01.1-.03.15-.04.18-.05.36-.1.53-.17l.09-.03a5.973 5.973 0 002.68-2.04c0-.01.01-.01.01-.02.24-.32.44-.66.61-1.03.02-.01.03-.03.04-.05zM14 4c-.99 0-1.91.24-2.73.66a7.51 7.51 0 010 10.68c.82.42 1.74.66 2.73.66 3.31 0 6-2.69 6-6s-2.69-6-6-6z"],updated:["M10 0C6.71 0 3.82 1.6 2 4.05V2c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H3.76C5.22 3.17 7.47 2 10 2c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8c0-.55-.45-1-1-1s-1 .45-1 1c0 5.52 4.48 10 10 10s10-4.48 10-10S15.52 0 10 0zm4 7c-.28 0-.53.11-.71.29L9 11.58 6.71 9.29a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29.28 0 .53-.11.71-.29l5-5A1.003 1.003 0 0014 7z"],upload:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm4 10c-.28 0-.53-.11-.71-.29L11 7.41V15c0 .55-.45 1-1 1s-1-.45-1-1V7.41l-2.29 2.3a1.003 1.003 0 01-1.42-1.42l4-4c.18-.18.43-.29.71-.29s.53.11.71.29l4 4A1.003 1.003 0 0114 10z"],user:["M10 0C4.48 0 0 4.48 0 10c0 .33.02.65.05.97.01.12.03.23.05.35.03.2.05.4.09.59.03.14.06.28.1.42l.12.48c.05.16.1.31.15.46.05.13.09.27.15.4.06.16.13.32.21.48.05.11.1.22.16.33.09.17.17.34.27.5.05.09.1.17.15.25.11.18.22.35.34.52.04.06.08.11.12.17 1.19 1.62 2.85 2.86 4.78 3.53l.09.03c.46.15.93.27 1.42.36.08.01.17.03.25.04.49.07.99.12 1.5.12s1.01-.05 1.5-.12c.08-.01.17-.02.25-.04.49-.09.96-.21 1.42-.36l.09-.03c1.93-.67 3.59-1.91 4.78-3.53.04-.05.08-.1.12-.16.12-.17.23-.35.34-.53.05-.08.1-.16.15-.25.1-.17.19-.34.27-.51.05-.11.1-.21.15-.32.07-.16.14-.32.21-.49.05-.13.1-.26.14-.39.05-.15.11-.31.15-.46.05-.16.08-.32.12-.48.03-.14.07-.28.1-.42.04-.19.06-.39.09-.59.02-.12.04-.23.05-.35.05-.32.07-.64.07-.97 0-5.52-4.48-10-10-10zm0 18a7.94 7.94 0 01-6.15-2.89c.84-.44 1.86-.82 2.67-1.19 1.45-.65 1.3-1.05 1.35-1.59.01-.07.01-.14.01-.21-.51-.45-.93-1.08-1.2-1.8l-.01-.01c0-.01-.01-.02-.01-.03a4.42 4.42 0 01-.15-.48c-.33-.07-.53-.44-.61-.79-.08-.14-.23-.48-.2-.87.05-.51.26-.74.49-.83v-.08c0-.63.06-1.55.17-2.15.02-.17.06-.33.11-.5.21-.73.66-1.4 1.26-1.86.62-.47 1.5-.72 2.28-.72.78 0 1.65.25 2.27.73.6.46 1.05 1.12 1.26 1.86.05.16.08.33.11.5.11.6.17 1.51.17 2.15v.09c.22.1.42.33.46.82.04.39-.12.73-.2.87-.07.34-.27.71-.6.78-.04.16-.09.33-.15.48 0 .01-.02.05-.02.05-.26.71-.67 1.33-1.17 1.78 0 .08.01.16.01.23.05.54-.15.94 1.31 1.59.81.36 1.84.74 2.68 1.19A7.958 7.958 0 0110 18z"],variable:["M4.93 3.79a9.1 9.1 0 012.2-2.27L7.29 1c-1.38.59-2.57 1.33-3.55 2.22C2.46 4.39 1.49 5.72.83 7.23.28 8.51 0 9.81 0 11.12c0 2.28.83 4.57 2.49 6.86l.16-.55c-.49-1.23-.73-2.38-.73-3.44 0-1.67.28-3.46.84-5.36.55-1.9 1.28-3.51 2.17-4.84zm9.38 8.39l-.33-.2c-.37.54-.65.87-.82 1a.74.74 0 01-.42.12c-.19 0-.38-.12-.57-.37-.31-.42-.73-1.59-1.26-3.5.47-.85.86-1.41 1.19-1.67.23-.19.48-.29.74-.29.1 0 .28.04.53.11.26.07.48.11.68.11.27 0 .5-.1.68-.29.18-.19.27-.44.27-.75 0-.33-.09-.58-.27-.77-.18-.19-.44-.29-.78-.29-.3 0-.59.07-.86.22s-.61.47-1.02.97c-.31.37-.77 1.02-1.37 1.94a9.683 9.683 0 00-1.24-3.14l-3.24.59-.06.36c.24-.05.44-.07.61-.07.32 0 .59.14.8.43.33.45.8 1.8 1.39 4.07-.47.64-.78 1.06-.96 1.26-.28.32-.52.53-.7.62-.14.08-.3.11-.48.11-.14 0-.36-.08-.67-.23-.21-.1-.4-.15-.57-.15-.31 0-.57.11-.78.32s-.31.48-.31.8c0 .31.09.55.28.75.19.19.44.29.76.29.31 0 .6-.07.87-.2s.61-.42 1.02-.86c.41-.44.98-1.13 1.7-2.08.28.9.52 1.56.72 1.97.2.41.44.71.7.89.26.18.59.27.99.27.38 0 .77-.14 1.17-.43.54-.36 1.07-1 1.61-1.91zM17.51 1l-.15.54c.49 1.24.73 2.39.73 3.45 0 1.43-.21 2.96-.63 4.6-.33 1.26-.75 2.45-1.27 3.55-.52 1.11-1.02 1.97-1.51 2.6-.49.62-1.09 1.2-1.8 1.72l-.17.53c1.38-.59 2.57-1.34 3.55-2.23 1.29-1.17 2.26-2.5 2.91-4 .55-1.28.83-2.59.83-3.91 0-2.27-.83-4.56-2.49-6.85z"],"vertical-bar-chart-asc":["M8 7H7c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zM3 9H2c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1zm10-5h-1c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm5-4h-1c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],"vertical-bar-chart-desc":["M3 0H2c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm5 4H7c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm5 3h-1c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm5 2h-1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1z"],"vertical-distribution":["M1 2h18c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1s.45 1 1 1zm2 5c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1H3zm16 11H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],video:["M19 2H1c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zM7 14V6l6 4-6 4z"],virus:["M15.249 13.835l1.251 1.251.354-.354.087-.077a1 1 0 011.327 1.491l-2.122 2.122-.087.077a1 1 0 01-1.327-1.491l.354-.354-1.251-1.251A6.466 6.466 0 0111 16.424L10.999 18h.501a1 1 0 01.117 1.993L11.5 20h-3a1 1 0 01-.117-1.993L8.5 18h.499v-1.577a6.46 6.46 0 01-2.538-.97L5.414 16.5l.354.354a1 1 0 01-1.327 1.491l-.087-.077-2.122-2.122a1 1 0 011.327-1.491l.087.077.354.354.97-.97a6.472 6.472 0 01-1.384-3.057l-.025.002L2 11.06v.44a1 1 0 01-1.993.117L0 11.5v-3a1 1 0 011.993-.117L2 8.5v.56h1.567A6.471 6.471 0 014.97 5.883l-.971-.969-.353.354-.087.077a1 1 0 01-1.327-1.491l2.122-2.122.087-.077a1 1 0 011.327 1.491l-.354.353 1.047 1.048A6.46 6.46 0 019 3.577L9 2h-.5A1 1 0 018.383.007L8.5 0h3a1 1 0 01.117 1.993L11.5 2H11v1.577a6.466 6.466 0 012.838 1.176l.04-.046L15.086 3.5l-.353-.353a1 1 0 011.327-1.491l.087.077 2.122 2.122a1 1 0 01-1.327 1.491l-.087-.077-.354-.354-1.207 1.207-.046.041a6.467 6.467 0 011.16 2.733H18V8.5a1 1 0 011.993-.117L20 8.5v3a1 1 0 01-1.993.117L18 11.5v-.605h-1.561a6.466 6.466 0 01-1.19 2.94zM12.5 11a1.5 1.5 0 100 3 1.5 1.5 0 000-3zM8 6a2 2 0 100 4 2 2 0 000-4z"],"volume-down":["M15.92 3.93l-1.6 1.18A7.948 7.948 0 0116 10c0 1.84-.63 3.54-1.68 4.89l1.6 1.18A9.878 9.878 0 0018 10c0-2.29-.78-4.39-2.08-6.07zM11 3c-.28 0-.53.11-.71.29L7.59 6H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h4.59l2.71 2.71c.17.18.42.29.7.29.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"volume-off":["M14 3c-.28 0-.53.11-.71.29L10.59 6H6c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h4.59l2.71 2.71c.17.18.42.29.7.29.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"volume-up":["M9 3.43c-.28 0-.53.11-.71.29l-2.7 2.71H1c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h4.59l2.71 2.71a1.003 1.003 0 001.71-.71v-12c-.01-.55-.46-1-1.01-1zm8.31-1.56l-1.62 1.2C17.14 5.16 18 7.69 18 10.43s-.86 5.27-2.31 7.37l1.62 1.2C19 16.57 20 13.62 20 10.43c0-3.18-1-6.13-2.69-8.56zm-3.39 2.49l-1.6 1.18A7.948 7.948 0 0114 10.43c0 1.84-.63 3.54-1.68 4.89l1.6 1.18A9.94 9.94 0 0016 10.43c0-2.28-.78-4.38-2.08-6.07z"],walk:["M16 10h-2c-.23 0-.42-.09-.59-.21l-.01.01-1.69-1.27-.63 3.14 2.62 2.62c.19.18.3.43.3.71v4c0 .55-.45 1-1 1s-1-.45-1-1v-3.59L9.39 12.8l-2.45 6.55h-.01c-.14.38-.5.65-.93.65-.55 0-1-.45-1-1 0-.12.03-.24.07-.35h-.01L9.43 7h-2.9l-1.7 2.55-.01-.01c-.18.27-.47.46-.82.46-.55 0-1-.45-1-1 0-.21.08-.39.18-.54l-.01-.01 2-3 .02.01C5.36 5.19 5.65 5 6 5h4.18l.36-.96c-.33-.43-.54-.96-.54-1.54a2.5 2.5 0 015 0A2.5 2.5 0 0112.5 5c-.06 0-.12-.01-.18-.02l-.44 1.18L14.33 8H16c.55 0 1 .45 1 1s-.45 1-1 1z"],"warning-sign":["M19.86 17.52l.01-.01-9-16-.01.01C10.69 1.21 10.37 1 10 1s-.69.21-.86.52l-.01-.01-9 16 .01.01c-.08.14-.14.3-.14.48 0 .55.45 1 1 1h18c.55 0 1-.45 1-1 0-.18-.06-.34-.14-.48zM11 17H9v-2h2v2zm0-3H9V6h2v8z"],"waterfall-chart":["M13 7h2c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zm-9 8h1c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1zm4-6h2c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zm11-5h-1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm0 12H2V3c0-.55-.45-1-1-1s-1 .45-1 1v14a.998.998 0 001 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],widget:["M18 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM2 16c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm15-1h2V5h-2v10zM3 5H1v10h2V5zM2 0C.9 0 0 .9 0 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm3 3h10V1H5v2zm13 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM5 19h10v-2H5v2z"],"widget-button":["M1 4h18c.55 0 1 .45 1 1v10c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V5c0-.55.45-1 1-1zm1 2v8h16V6H2zm4 5c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm4 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm4 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"widget-footer":["M17 0H3c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H4v-4h12v4zm0-5H4V2h12v11z"],"widget-header":["M17 0H3c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H4V7h12v11zm0-12H4V2h12v4z"],wrench:["M19.8 4.44L16.13 8.1l-3.55-.71-.71-3.53L15.54.21c-2.01-.53-4.23-.03-5.8 1.53-1.86 1.85-2.23 4.6-1.14 6.83L.59 16.59C.22 16.95 0 17.45 0 18a2 2 0 002 2c.55 0 1.05-.22 1.41-.59l8.03-8.04c2.23 1.05 4.97.67 6.82-1.16 1.57-1.56 2.07-3.77 1.54-5.77z"],"zoom-in":["M19.56 17.44l-4.94-4.94A8.004 8.004 0 0016 8c0-4.42-3.58-8-8-8S0 3.58 0 8s3.58 8 8 8c1.67 0 3.21-.51 4.5-1.38l4.94 4.94a1.498 1.498 0 102.12-2.12zM8 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zm3-7H9V5c0-.55-.45-1-1-1s-1 .45-1 1v2H5c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V9h2c.55 0 1-.45 1-1s-.45-1-1-1z"],"zoom-out":["M11 7H5c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1zm8.56 10.44l-4.94-4.94A8.004 8.004 0 0016 8c0-4.42-3.58-8-8-8S0 3.58 0 8s3.58 8 8 8c1.67 0 3.21-.51 4.5-1.38l4.94 4.94a1.498 1.498 0 102.12-2.12zM8 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z"],"zoom-to-fit":["M1 7c.55 0 1-.45 1-1V2h4c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1v5c0 .55.45 1 1 1zm5 1a1.003 1.003 0 00-1.71-.71l-2 2c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42L4.41 10 5.7 8.71c.19-.18.3-.43.3-.71zm2-2c.28 0 .53-.11.71-.29L10 4.41l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-2-2C10.53 2.11 10.28 2 10 2s-.53.11-.71.29l-2 2A1.003 1.003 0 008 6zM6 18H2v-4c0-.55-.45-1-1-1s-1 .45-1 1v5c0 .55.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1zm8-6a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-2-2a1.003 1.003 0 00-1.42 1.42l1.3 1.29-1.29 1.29c-.19.18-.3.43-.3.71zm5-12h-5c-.55 0-1 .45-1 1s.45 1 1 1h4v4c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm-7 14c-.28 0-.53.11-.71.29L10 15.59 8.71 14.3A.965.965 0 008 14a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l2-2A1.003 1.003 0 0012 14zm7-1c-.55 0-1 .45-1 1v4h-4c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1v-5c0-.55-.45-1-1-1z"]},bc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}var n;return Ql(t,e),n=t,t.prototype.render=function(){var e=this.props.icon;if(null==e||"boolean"==typeof e)return null;if("string"!=typeof e)return e;var t=this.props,i=t.className,s=t.color,r=t.htmlTitle,a=t.iconSize,o=void 0===a?n.SIZE_STANDARD:a,l=t.intent,c=t.title,h=void 0===c?e:c,d=t.tagName,u=void 0===d?"span":d,p=ec(t,["className","color","htmlTitle","iconSize","intent","title","tagName"]),m=o>=n.SIZE_LARGE?n.SIZE_LARGE:n.SIZE_STANDARD,f=this.renderSvgPaths(m,e),g=lc()(Po,function(e){if(null!=e)return 0===e.indexOf(wa+"-icon-")?e:wa+"-icon-"+e}(e),Ro(l),i),v="0 0 "+m+" "+m;return qr.createElement(u,Zl(Zl({},p),{className:g,title:r}),qr.createElement("svg",{fill:s,"data-icon":e,width:o,height:o,viewBox:v},h&&qr.createElement("desc",null,h),f))},t.prototype.renderSvgPaths=function(e,t){var i=(e===n.SIZE_STANDARD?vc:yc)[t];return null==i?null:i.map((function(e,t){return qr.createElement("path",{key:t,d:e,fillRule:"evenodd"})}))},t.displayName="Blueprint3.Icon",t.SIZE_STANDARD=16,t.SIZE_LARGE=20,t=n=tc([gc.polyfill],t)}(dc),_c=45,Mc="M 50,50 m 0,-45 a 45,45 0 1 1 0,90 a 45,45 0 1 1 0,-90",wc=280,Sc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}var n;return Ql(t,e),n=t,t.prototype.componentDidUpdate=function(e){e.value!==this.props.value&&this.forceUpdate()},t.prototype.render=function(){var e,t=this.props,i=t.className,s=t.intent,r=t.value,a=t.tagName,o=void 0===a?"div":a,l=this.getSize(),c=lc()(ko,Ro(s),((e={})[To]=null!=r,e),i),h=Math.min(16,4*n.SIZE_LARGE/l),d=wc-wc*(null==r?.25:function(e,t,n){if(null==e)return e;if(n=0||n.indexOf(Ea)>=0)&&console.warn("[Blueprint] Classes.SMALL/LARGE are ignored if size prop is set.")},t.prototype.getSize=function(){var e=this.props,t=e.className,i=void 0===t?"":t,s=e.size;return null==s?i.indexOf(Da)>=0?n.SIZE_SMALL:i.indexOf(Ea)>=0?n.SIZE_LARGE:n.SIZE_STANDARD:Math.max(10,s)},t.prototype.getViewBox=function(e){var t=_c+e/2,n=(50-t).toFixed(2),i=(2*t).toFixed(2);return n+" "+n+" "+i+" "+i},t.displayName="Blueprint3.Spinner",t.SIZE_SMALL=20,t.SIZE_STANDARD=50,t.SIZE_LARGE=100,t=n=tc([gc.polyfill],t)}(dc),Lc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={isActive:!1},t.handleKeyDown=function(e){var n,i;cc(e.which)&&(e.preventDefault(),e.which!==t.currentKeyDown&&t.setState({isActive:!0})),t.currentKeyDown=e.which,null===(i=(n=t.props).onKeyDown)||void 0===i||i.call(n,e)},t.handleKeyUp=function(e){var n,i,s;cc(e.which)&&(t.setState({isActive:!1}),null===(n=t.buttonRef)||void 0===n||n.click()),t.currentKeyDown=void 0,null===(s=(i=t.props).onKeyUp)||void 0===s||s.call(i,e)},t.handleBlur=function(e){var n,i;t.state.isActive&&t.setState({isActive:!1}),null===(i=(n=t.props).onBlur)||void 0===i||i.call(n,e)},t}return Ql(t,e),t.prototype.getCommonButtonProps=function(){var e,t=this.props,n=t.active,i=t.alignText,s=t.fill,r=t.large,a=t.loading,o=t.outlined,l=t.minimal,c=t.small,h=t.tabIndex,d=this.props.disabled||a;return{className:lc()(ja,((e={})[Sa]=!d&&(n||this.state.isActive),e[Ca]=d,e[Ta]=s,e[Ea]=r,e[za]=a,e[Aa]=l,e[Ha]=o,e[Da]=c,e),Oo(i),Ro(this.props.intent),this.props.className),disabled:d,onBlur:this.handleBlur,onClick:d?void 0:this.props.onClick,onKeyDown:this.handleKeyDown,onKeyUp:this.handleKeyUp,tabIndex:d?-1:h}},t.prototype.renderChildren=function(){var e=this.props,t=e.children,n=e.icon,i=e.loading,s=e.rightIcon,r=e.text;return[i&&qr.createElement(Sc,{key:"loading",className:Wa,size:bc.SIZE_LARGE}),qr.createElement(bc,{key:"leftIcon",icon:n}),(!uc(r)||!uc(t))&&qr.createElement("span",{key:"text",className:Ga},r,t),qr.createElement(bc,{key:"rightIcon",icon:s})]},t}(dc),kc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buttonRef=null,t.handleRef=ac(t,"buttonRef",t.props.elementRef),t}return Ql(t,e),t.prototype.render=function(){return qr.createElement("button",Zl({type:"button",ref:this.handleRef},sc(this.props),this.getCommonButtonProps()),this.renderChildren())},t.prototype.componentDidUpdate=function(e){e.elementRef!==this.props.elementRef&&(rc(e.elementRef,null),this.handleRef=ac(this,"buttonRef",this.props.elementRef),rc(this.props.elementRef,this.buttonRef))},t.displayName="Blueprint3.Button",t}(Lc),xc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buttonRef=null,t.handleRef=ac(t,"buttonRef",t.props.elementRef),t}return Ql(t,e),t.prototype.render=function(){var e=this.props,t=e.href,n=e.tabIndex,i=void 0===n?0:n,s=this.getCommonButtonProps();return qr.createElement("a",Zl({role:"button",ref:this.handleRef},sc(this.props),s,{href:s.disabled?void 0:t,tabIndex:s.disabled?-1:i}),this.renderChildren())},t.prototype.componentDidUpdate=function(e){e.elementRef!==this.props.elementRef&&(rc(e.elementRef,null),this.handleRef=ac(this,"buttonRef",this.props.elementRef),rc(this.props.elementRef,this.buttonRef))},t.displayName="Blueprint3.AnchorButton",t}(Lc);function Cc(e,t){return function(n){var i=n.className,s=n.elementRef,r=ec(n,["className","elementRef"]);return qr.createElement(e,Zl(Zl({},r),{className:lc()(t,i),ref:s}))}}Cc("h1",Ia),Cc("h2",Ia),Cc("h3",Ia);var Tc=Cc("h4",Ia),Ec=(Cc("h5",Ia),Cc("h6",Ia)),zc=(Cc("blockquote",Va),Cc("code",Na),Cc("pre",$a),Cc("label",Za),Cc("ol",Fa),Cc("ul",Fa),n(1350));function Ac(e){return"function"==typeof e}var Hc=!Ac(Jr.createPortal),Dc={blueprintPortalClassName:function(e,t){if(null!=e[t]&&"string"!=typeof e[t])return new Error("[Blueprint] context blueprintPortalClassName must be string")}},Pc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.context={},t.state={hasMounted:!1},t.portalElement=null,t}return Ql(t,e),t.prototype.render=function(){return Hc||"undefined"==typeof document||!this.state.hasMounted||null===this.portalElement?null:Jr.createPortal(this.props.children,this.portalElement)},t.prototype.componentDidMount=function(){this.props.container&&(this.portalElement=this.createContainerElement(),this.props.container.appendChild(this.portalElement),this.setState({hasMounted:!0},this.props.onChildrenMount),Hc&&this.unstableRenderNoPortal())},t.prototype.componentDidUpdate=function(e){null!=this.portalElement&&e.className!==this.props.className&&(void 0!==e.className&&this.portalElement.classList.remove(e.className),Oc(this.portalElement.classList,this.props.className)),Hc&&this.unstableRenderNoPortal()},t.prototype.componentWillUnmount=function(){null!=this.portalElement&&(Hc&&Jr.unmountComponentAtNode(this.portalElement),this.portalElement.remove())},t.prototype.createContainerElement=function(){var e=document.createElement("div");return e.classList.add(Lo),Oc(e.classList,this.props.className),null!=this.context&&Oc(e.classList,this.context.blueprintPortalClassName),e},t.prototype.unstableRenderNoPortal=function(){null!==this.portalElement&&Jr.unstable_renderSubtreeIntoContainer(this,qr.createElement("div",null,this.props.children),this.portalElement)},t.displayName="Blueprint3.Portal",t.contextTypes=Dc,t.defaultProps={container:"undefined"!=typeof document?document.body:void 0},t}(qr.Component);function Oc(e,t){null!=t&&""!==t&&e.add.apply(e,t.split(" "))}var Yc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={hasEverOpened:t.props.isOpen},t.containerElement=null,t.refHandlers={container:function(e){return t.containerElement=(0,Jr.findDOMNode)(e)}},t.maybeRenderChild=function(e){if(Ac(e)&&(e=e()),null==e)return null;var n="object"==typeof e?qr.cloneElement(e,{className:lc()(e.props.className,lo),tabIndex:t.props.enforceFocus||t.props.autoFocus?0:void 0}):qr.createElement("span",{className:lo},e),i=t.props,s=i.onOpening,r=i.onOpened,a=i.onClosing,o=i.onClosed,l=i.transitionDuration,c=i.transitionName,h=zc.CSSTransition;return qr.createElement(h,{classNames:c,onEntering:s,onEntered:r,onExiting:a,onExited:o,timeout:l,addEndListener:t.handleTransitionAddEnd},n)},t.handleBackdropMouseDown=function(e){var n,i=t.props,s=i.backdropProps,r=i.canOutsideClickClose,a=i.enforceFocus,o=i.onClose;r&&(null==o||o(e)),a&&t.bringFocusInsideOverlay(),null===(n=null==s?void 0:s.onMouseDown)||void 0===n||n.call(s,e)},t.handleDocumentClick=function(e){var i=t.props,s=i.canOutsideClickClose,r=i.isOpen,a=i.onClose,o=e.composed?e.composedPath()[0]:e.target,l=n.openStack.indexOf(t),c=n.openStack.slice(l).some((function(e){var t=e.containerElement;return t&&t.contains(o)&&!t.isSameNode(o)}));r&&s&&!c&&(null==a||a(e))},t.handleDocumentFocus=function(e){var n=e.composed?e.composedPath()[0]:e.target;t.props.enforceFocus&&null!=t.containerElement&&n instanceof Node&&!t.containerElement.contains(n)&&(e.preventDefault(),e.stopImmediatePropagation(),t.bringFocusInsideOverlay())},t.handleKeyDown=function(e){var n=t.props,i=n.canEscapeKeyClose,s=n.onClose;27===e.which&&i&&(null==s||s(e),e.preventDefault())},t.handleTransitionAddEnd=function(){},t}var n;return Ql(t,e),n=t,t.getDerivedStateFromProps=function(e){var t=e.isOpen;return t?{hasEverOpened:t}:null},t.prototype.render=function(){var e,t;if(this.props.lazy&&!this.state.hasEverOpened)return null;var n=this.props,i=n.children,s=n.className,r=n.usePortal,a=n.isOpen,o=a&&null!==(t=qr.Children.map(i,this.maybeRenderChild))&&void 0!==t?t:[],l=this.maybeRenderBackdrop();null!==l&&o.unshift(l);var c=lc()(ao,((e={})[ho]=a,e[co]=!r,e),s),h=qr.createElement(zc.TransitionGroup,{appear:!0,className:c,component:"div",onKeyDown:this.handleKeyDown,ref:this.refHandlers.container},o);return r?qr.createElement(Pc,{className:this.props.portalClassName,container:this.props.portalContainer},h):h},t.prototype.componentDidMount=function(){this.props.isOpen&&this.overlayWillOpen()},t.prototype.componentDidUpdate=function(e){e.isOpen&&!this.props.isOpen?this.overlayWillClose():!e.isOpen&&this.props.isOpen&&this.overlayWillOpen()},t.prototype.componentWillUnmount=function(){this.overlayWillClose()},t.prototype.bringFocusInsideOverlay=function(){var e=this;return this.requestAnimationFrame((function(){if(null!=e.containerElement&&null!=document.activeElement&&e.props.isOpen&&!e.containerElement.contains(document.activeElement)){var t=e.containerElement.querySelector("[autofocus]"),n=e.containerElement.querySelector("[tabindex]");null!=t?t.focus():null!=n&&n.focus()}}))},t.prototype.maybeRenderBackdrop=function(){var e=this.props,t=e.backdropClassName,n=e.backdropProps,i=e.hasBackdrop,s=e.isOpen,r=e.transitionDuration,a=e.transitionName;return i&&s?qr.createElement(zc.CSSTransition,{classNames:a,key:"__backdrop",timeout:r,addEndListener:this.handleTransitionAddEnd},qr.createElement("div",Zl({},n,{className:lc()(oo,t,null==n?void 0:n.className),onMouseDown:this.handleBackdropMouseDown,tabIndex:this.props.canOutsideClickClose?0:void 0}))):null},t.prototype.overlayWillClose=function(){document.removeEventListener("focus",this.handleDocumentFocus,!0),document.removeEventListener("mousedown",this.handleDocumentClick);var e=n.openStack,t=e.indexOf(this);if(-1!==t){if(e.splice(t,1),e.length>0){var i=n.getLastOpened();i.props.enforceFocus&&document.addEventListener("focus",i.handleDocumentFocus,!0)}0===e.filter((function(e){return e.props.usePortal&&e.props.hasBackdrop})).length&&document.body.classList.remove(ho)}},t.prototype.overlayWillOpen=function(){var e=n.openStack;e.length>0&&document.removeEventListener("focus",n.getLastOpened().handleDocumentFocus,!0),e.push(this),this.props.autoFocus&&this.bringFocusInsideOverlay(),this.props.enforceFocus&&document.addEventListener("focus",this.handleDocumentFocus,!0),this.props.canOutsideClickClose&&!this.props.hasBackdrop&&document.addEventListener("mousedown",this.handleDocumentClick),this.props.hasBackdrop&&this.props.usePortal&&document.body.classList.add(ho)},t.displayName="Blueprint3.Overlay",t.defaultProps={autoFocus:!0,backdropProps:{},canEscapeKeyClose:!0,canOutsideClickClose:!0,enforceFocus:!0,hasBackdrop:!0,isOpen:!1,lazy:!0,transitionDuration:300,transitionName:ao,usePortal:!0},t.openStack=[],t.getLastOpened=function(){return n.openStack[n.openStack.length-1]},t=n=tc([gc.polyfill],t)}(dc),Rc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ql(t,e),t.prototype.render=function(){return qr.createElement(Yc,Zl({},this.props,{className:uo,hasBackdrop:!0}),qr.createElement("div",{className:Ka},qr.createElement("div",{className:lc()(Ua,this.props.className),style:this.props.style},this.maybeRenderHeader(),this.props.children)))},t.prototype.validateProps=function(e){null==e.title&&(null!=e.icon&&console.warn("[Blueprint] iconName is ignored if title is omitted."),null!=e.isCloseButtonShown&&console.warn("[Blueprint] isCloseButtonShown prop is ignored if title is omitted."))},t.prototype.maybeRenderCloseButton=function(){return!1!==this.props.isCloseButtonShown?qr.createElement(kc,{"aria-label":"Close",className:Xa,icon:qr.createElement(bc,{icon:"small-cross",iconSize:bc.SIZE_LARGE}),minimal:!0,onClick:this.props.onClose}):void 0},t.prototype.maybeRenderHeader=function(){var e=this.props,t=e.icon,n=e.title;if(null!=n)return qr.createElement("div",{className:qa},qr.createElement(bc,{icon:t,iconSize:bc.SIZE_LARGE}),qr.createElement(Tc,null,n),this.maybeRenderCloseButton())},t.defaultProps={canOutsideClickClose:!0,isOpen:!1},t.displayName="Blueprint3.Dialog",t=tc([gc.polyfill],t)}(dc),Vc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ql(t,e),t.prototype.render=function(){var e=this.props,t=e.className,n=e.tagName,i=void 0===n?"div":n,s=ec(e,["className","tagName"]),r=lc()(Ja,t);return qr.createElement(i,Zl(Zl({},s),{className:r}))},t.displayName="Blueprint3.Divider",t=tc([gc.polyfill],t)}(dc),Nc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ql(t,e),t.prototype.render=function(){var e,t=this.props,n=t.className,i=t.disabled,s=t.elementRef,r=t.fill,a=t.iconProps,o=t.large,l=t.minimal,c=t.options,h=void 0===c?[]:c,d=ec(t,["className","disabled","elementRef","fill","iconProps","large","minimal","options"]),u=lc()(Qa,((e={})[Ca]=i,e[Ta]=r,e[Ea]=o,e[Aa]=l,e),n),p=h.map((function(e){var t="object"==typeof e?e:{value:e};return qr.createElement("option",Zl({},t,{key:t.value,children:t.label||t.value}))}));return qr.createElement("div",{className:u},qr.createElement("select",Zl({disabled:i,ref:s},d,{multiple:!1}),p,d.children),qr.createElement(bc,Zl({icon:"double-caret-vertical"},a)))},t=tc([gc.polyfill],t)}(dc),$c=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ql(t,e),t.prototype.render=function(){var e=this.props,t=e.className,n=e.title;return null==n?qr.createElement("li",{className:lc()(so,t)}):qr.createElement("li",{className:lc()(ro,t)},qr.createElement(Ec,null,n))},t.displayName="Blueprint3.MenuDivider",t}(qr.Component);function Ic(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Fc(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var jc=n(626),Bc=n.n(jc),Wc=n(1265),Gc=n.n(Wc),Uc=Gc()(),Kc=Gc()(),Xc=function(e){function t(){for(var t,n=arguments.length,i=new Array(n),s=0;s1?t-1:0),i=1;i=0)return 1;return 0}();var rh=ih&&window.Promise?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then((function(){t=!1,e()})))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout((function(){t=!1,e()}),sh))}};function ah(e){return e&&"[object Function]"==={}.toString.call(e)}function oh(e,t){if(1!==e.nodeType)return[];var n=e.ownerDocument.defaultView.getComputedStyle(e,null);return t?n[t]:n}function lh(e){return"HTML"===e.nodeName?e:e.parentNode||e.host}function ch(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var t=oh(e),n=t.overflow,i=t.overflowX,s=t.overflowY;return/(auto|scroll|overlay)/.test(n+s+i)?e:ch(lh(e))}function hh(e){return e&&e.referenceNode?e.referenceNode:e}var dh=ih&&!(!window.MSInputMethodContext||!document.documentMode),uh=ih&&/MSIE 10/.test(navigator.userAgent);function ph(e){return 11===e?dh:10===e?uh:dh||uh}function mh(e){if(!e)return document.documentElement;for(var t=ph(10)?document.body:null,n=e.offsetParent||null;n===t&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===oh(n,"position")?mh(n):n:e?e.ownerDocument.documentElement:document.documentElement}function fh(e){return null!==e.parentNode?fh(e.parentNode):e}function gh(e,t){if(!(e&&e.nodeType&&t&&t.nodeType))return document.documentElement;var n=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?e:t,s=n?t:e,r=document.createRange();r.setStart(i,0),r.setEnd(s,0);var a,o,l=r.commonAncestorContainer;if(e!==l&&t!==l||i.contains(s))return"BODY"===(o=(a=l).nodeName)||"HTML"!==o&&mh(a.firstElementChild)!==a?mh(l):l;var c=fh(e);return c.host?gh(c.host,t):gh(e,fh(t).host)}function vh(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===t?"scrollTop":"scrollLeft",i=e.nodeName;if("BODY"===i||"HTML"===i){var s=e.ownerDocument.documentElement,r=e.ownerDocument.scrollingElement||s;return r[n]}return e[n]}function yh(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=vh(t,"top"),s=vh(t,"left"),r=n?-1:1;return e.top+=i*r,e.bottom+=i*r,e.left+=s*r,e.right+=s*r,e}function bh(e,t){var n="x"===t?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(e["border"+n+"Width"])+parseFloat(e["border"+i+"Width"])}function _h(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],ph(10)?parseInt(n["offset"+e])+parseInt(i["margin"+("Height"===e?"Top":"Left")])+parseInt(i["margin"+("Height"===e?"Bottom":"Right")]):0)}function Mh(e){var t=e.body,n=e.documentElement,i=ph(10)&&getComputedStyle(n);return{height:_h("Height",t,n,i),width:_h("Width",t,n,i)}}var wh=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},Sh=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=ph(10),s="HTML"===t.nodeName,r=Ch(e),a=Ch(t),o=ch(e),l=oh(t),c=parseFloat(l.borderTopWidth),h=parseFloat(l.borderLeftWidth);n&&s&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var d=xh({top:r.top-a.top-c,left:r.left-a.left-h,width:r.width,height:r.height});if(d.marginTop=0,d.marginLeft=0,!i&&s){var u=parseFloat(l.marginTop),p=parseFloat(l.marginLeft);d.top-=c-u,d.bottom-=c-u,d.left-=h-p,d.right-=h-p,d.marginTop=u,d.marginLeft=p}return(i&&!n?t.contains(o):t===o&&"BODY"!==o.nodeName)&&(d=yh(d,t)),d}function Eh(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.ownerDocument.documentElement,i=Th(e,n),s=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),a=t?0:vh(n),o=t?0:vh(n,"left"),l={top:a-i.top+i.marginTop,left:o-i.left+i.marginLeft,width:s,height:r};return xh(l)}function zh(e){var t=e.nodeName;if("BODY"===t||"HTML"===t)return!1;if("fixed"===oh(e,"position"))return!0;var n=lh(e);return!!n&&zh(n)}function Ah(e){if(!e||!e.parentElement||ph())return document.documentElement;for(var t=e.parentElement;t&&"none"===oh(t,"transform");)t=t.parentElement;return t||document.documentElement}function Hh(e,t,n,i){var s=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},a=s?Ah(e):gh(e,hh(t));if("viewport"===i)r=Eh(a,s);else{var o=void 0;"scrollParent"===i?"BODY"===(o=ch(lh(t))).nodeName&&(o=e.ownerDocument.documentElement):o="window"===i?e.ownerDocument.documentElement:i;var l=Th(o,a,s);if("HTML"!==o.nodeName||zh(a))r=l;else{var c=Mh(e.ownerDocument),h=c.height,d=c.width;r.top+=l.top-l.marginTop,r.bottom=h+l.top,r.left+=l.left-l.marginLeft,r.right=d+l.left}}var u="number"==typeof(n=n||0);return r.left+=u?n:n.left||0,r.top+=u?n:n.top||0,r.right-=u?n:n.right||0,r.bottom-=u?n:n.bottom||0,r}function Dh(e){return e.width*e.height}function Ph(e,t,n,i,s){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var a=Hh(n,i,r,s),o={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(o).map((function(e){return kh({key:e},o[e],{area:Dh(o[e])})})).sort((function(e,t){return t.area-e.area})),c=l.filter((function(e){var t=e.width,i=e.height;return t>=n.clientWidth&&i>=n.clientHeight})),h=c.length>0?c[0].key:l[0].key,d=e.split("-")[1];return h+(d?"-"+d:"")}function Oh(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=i?Ah(t):gh(t,hh(n));return Th(n,s,i)}function Yh(e){var t=e.ownerDocument.defaultView.getComputedStyle(e),n=parseFloat(t.marginTop||0)+parseFloat(t.marginBottom||0),i=parseFloat(t.marginLeft||0)+parseFloat(t.marginRight||0);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function Rh(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,(function(e){return t[e]}))}function Vh(e,t,n){n=n.split("-")[0];var i=Yh(e),s={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",o=r?"left":"top",l=r?"height":"width",c=r?"width":"height";return s[a]=t[a]+t[l]/2-i[l]/2,s[o]=n===o?t[o]-i[c]:t[Rh(o)],s}function Nh(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function $h(e,t,n){return(void 0===n?e:e.slice(0,function(e,t,n){if(Array.prototype.findIndex)return e.findIndex((function(e){return e[t]===n}));var i=Nh(e,(function(e){return e[t]===n}));return e.indexOf(i)}(e,"name",n))).forEach((function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&ah(n)&&(t.offsets.popper=xh(t.offsets.popper),t.offsets.reference=xh(t.offsets.reference),t=n(t,e))})),t}function Ih(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=Oh(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=Ph(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=Vh(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=$h(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function Fh(e,t){return e.some((function(e){var n=e.name;return e.enabled&&n===t}))}function jh(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=td.indexOf(e),i=td.slice(n+1).concat(td.slice(0,n));return t?i.reverse():i}var id="flip",sd="clockwise",rd="counterclockwise";function ad(e,t,n,i){var s=[0,0],r=-1!==["right","left"].indexOf(i),a=e.split(/(\+|\-)/).map((function(e){return e.trim()})),o=a.indexOf(Nh(a,(function(e){return-1!==e.search(/,|\s/)})));a[o]&&-1===a[o].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==o?[a.slice(0,o).concat([a[o].split(l)[0]]),[a[o].split(l)[1]].concat(a.slice(o+1))]:[a];return c=c.map((function(e,i){var s=(1===i?!r:r)?"height":"width",a=!1;return e.reduce((function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)}),[]).map((function(e){return function(e,t,n,i){var s=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+s[1],a=s[2];if(!r)return e;if(0===a.indexOf("%")){return xh("%p"===a?n:i)[t]/100*r}if("vh"===a||"vw"===a)return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r;return r}(e,s,t,n)}))})),c.forEach((function(e,t){e.forEach((function(n,i){qh(n)&&(s[t]+=n*("-"===e[i-1]?-1:1))}))})),s}var od={shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var s=e.offsets,r=s.reference,a=s.popper,o=-1!==["bottom","top"].indexOf(n),l=o?"left":"top",c=o?"width":"height",h={start:Lh({},l,r[l]),end:Lh({},l,r[l]+r[c]-a[c])};e.offsets.popper=kh({},a,h[i])}return e}},offset:{order:200,enabled:!0,fn:function(e,t){var n=t.offset,i=e.placement,s=e.offsets,r=s.popper,a=s.reference,o=i.split("-")[0],l=void 0;return l=qh(+n)?[+n,0]:ad(n,r,a,o),"left"===o?(r.top+=l[0],r.left-=l[1]):"right"===o?(r.top+=l[0],r.left+=l[1]):"top"===o?(r.left+=l[0],r.top-=l[1]):"bottom"===o&&(r.left+=l[0],r.top+=l[1]),e.popper=r,e},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var n=t.boundariesElement||mh(e.instance.popper);e.instance.reference===n&&(n=mh(n));var i=jh("transform"),s=e.instance.popper.style,r=s.top,a=s.left,o=s[i];s.top="",s.left="",s[i]="";var l=Hh(e.instance.popper,e.instance.reference,t.padding,n,e.positionFixed);s.top=r,s.left=a,s[i]=o,t.boundaries=l;var c=t.priority,h=e.offsets.popper,d={primary:function(e){var n=h[e];return h[e]l[e]&&!t.escapeWithReference&&(i=Math.min(h[n],l[e]-("right"===e?h.width:h.height))),Lh({},n,i)}};return c.forEach((function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";h=kh({},h,d[t](e))})),e.offsets.popper=h,e},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,n=t.popper,i=t.reference,s=e.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(s),o=a?"right":"bottom",l=a?"left":"top",c=a?"width":"height";return n[o]r(i[o])&&(e.offsets.popper[l]=r(i[o])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){var n;if(!Zh(e.instance.modifiers,"arrow","keepTogether"))return e;var i=t.element;if("string"==typeof i){if(!(i=e.instance.popper.querySelector(i)))return e}else if(!e.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),e;var s=e.placement.split("-")[0],r=e.offsets,a=r.popper,o=r.reference,l=-1!==["left","right"].indexOf(s),c=l?"height":"width",h=l?"Top":"Left",d=h.toLowerCase(),u=l?"left":"top",p=l?"bottom":"right",m=Yh(i)[c];o[p]-ma[p]&&(e.offsets.popper[d]+=o[d]+m-a[p]),e.offsets.popper=xh(e.offsets.popper);var f=o[d]+o[c]/2-m/2,g=oh(e.instance.popper),v=parseFloat(g["margin"+h]),y=parseFloat(g["border"+h+"Width"]),b=f-e.offsets.popper[d]-v-y;return b=Math.max(Math.min(a[c]-m,b),0),e.arrowElement=i,e.offsets.arrow=(Lh(n={},d,Math.round(b)),Lh(n,u,""),n),e},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(e,t){if(Fh(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=Hh(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),i=e.placement.split("-")[0],s=Rh(i),r=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case id:a=[i,s];break;case sd:a=nd(i);break;case rd:a=nd(i,!0);break;default:a=t.behavior}return a.forEach((function(o,l){if(i!==o||a.length===l+1)return e;i=e.placement.split("-")[0],s=Rh(i);var c=e.offsets.popper,h=e.offsets.reference,d=Math.floor,u="left"===i&&d(c.right)>d(h.left)||"right"===i&&d(c.left)d(h.top)||"bottom"===i&&d(c.top)d(n.right),f=d(c.top)d(n.bottom),v="left"===i&&p||"right"===i&&m||"top"===i&&f||"bottom"===i&&g,y=-1!==["top","bottom"].indexOf(i),b=!!t.flipVariations&&(y&&"start"===r&&p||y&&"end"===r&&m||!y&&"start"===r&&f||!y&&"end"===r&&g),_=!!t.flipVariationsByContent&&(y&&"start"===r&&m||y&&"end"===r&&p||!y&&"start"===r&&g||!y&&"end"===r&&f),M=b||_;(u||v||M)&&(e.flipped=!0,(u||v)&&(i=a[l+1]),M&&(r=function(e){return"end"===e?"start":"start"===e?"end":e}(r)),e.placement=i+(r?"-"+r:""),e.offsets.popper=kh({},e.offsets.popper,Vh(e.instance.popper,e.offsets.reference,e.placement)),e=$h(e.instance.modifiers,e,"flip"))})),e},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,n=t.split("-")[0],i=e.offsets,s=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),o=-1===["top","left"].indexOf(n);return s[a?"left":"top"]=r[n]-(o?s[a?"width":"height"]:0),e.placement=Rh(t),e.offsets.popper=xh(s),e}},hide:{order:800,enabled:!0,fn:function(e){if(!Zh(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=Nh(e.instance.modifiers,(function(e){return"preventOverflow"===e.name})).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right2&&void 0!==arguments[2]?arguments[2]:{};wh(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=rh(this.update.bind(this)),this.options=kh({},e.Defaults,s),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(kh({},e.Defaults.modifiers,s.modifiers)).forEach((function(t){i.options.modifiers[t]=kh({},e.Defaults.modifiers[t]||{},s.modifiers?s.modifiers[t]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(e){return kh({name:e},i.options.modifiers[e])})).sort((function(e,t){return e.order-t.order})),this.modifiers.forEach((function(e){e.enabled&&ah(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)})),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return Sh(e,[{key:"update",value:function(){return Ih.call(this)}},{key:"destroy",value:function(){return Bh.call(this)}},{key:"enableEventListeners",value:function(){return Kh.call(this)}},{key:"disableEventListeners",value:function(){return Xh.call(this)}}]),e}();cd.Utils=("undefined"!=typeof window?window:n.g).PopperUtils,cd.placements=ed,cd.Defaults=ld;const hd=cd;var dd={position:"absolute",top:0,left:0,opacity:0,pointerEvents:"none"},ud={},pd=function(e){function t(){for(var t,n=arguments.length,i=new Array(n),s=0;s0},e.prototype.connect_=function(){vd&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Md?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){vd&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t,i=_d.some((function(e){return!!~n.indexOf(e)}));i&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Sd=function(e,t){for(var n=0,i=Object.keys(t);n0},e}(),Od="undefined"!=typeof WeakMap?new WeakMap:new gd,Yd=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=wd.getInstance(),i=new Pd(t,n,this);Od.set(this,i)};["observe","unobserve","disconnect"].forEach((function(e){Yd.prototype[e]=function(){var t;return(t=Od.get(this))[e].apply(t,arguments)}}));const Rd=void 0!==yd.ResizeObserver?yd.ResizeObserver:Yd;var Vd=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.element=null,t.observer=new Rd((function(e){var n,i;return null===(i=(n=t.props).onResize)||void 0===i?void 0:i.call(n,e)})),t}return Ql(t,e),t.prototype.render=function(){return qr.Children.only(this.props.children)},t.prototype.componentDidMount=function(){this.observeElement()},t.prototype.componentDidUpdate=function(e){this.observeElement(this.props.observeParents!==e.observeParents)},t.prototype.componentWillUnmount=function(){this.observer.disconnect()},t.prototype.observeElement=function(e){void 0===e&&(e=!1);var t=this.getElement();if(t instanceof Element){if((t!==this.element||e)&&(this.observer.disconnect(),this.element=t,this.observer.observe(t),this.props.observeParents))for(var n=t.parentElement;null!=n;)this.observer.observe(n),n=n.parentElement}else this.observer.disconnect()},t.prototype.getElement=function(){try{return(0,Jr.findDOMNode)(this)}catch(e){return null}},t.displayName="Blueprint3.ResizeSensor",t=tc([gc.polyfill],t)}(dc),Nd=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.popover=null,t}return Ql(t,e),t.prototype.render=function(){var e,t=this,n=this.props,i=n.children,s=n.intent,r=n.popoverClassName,a=ec(n,["children","intent","popoverClassName"]),o=lc()(Do,((e={})[Aa]=this.props.minimal,e),Ro(s),r);return qr.createElement(qd,Zl({interactionKind:Xd.HOVER_TARGET_ONLY,modifiers:{arrow:{enabled:!this.props.minimal}}},a,{autoFocus:!1,canEscapeKeyClose:!1,enforceFocus:!1,lazy:!0,popoverClassName:o,portalContainer:this.props.portalContainer,ref:function(e){return t.popover=e}}),i)},t.prototype.reposition=function(){null!=this.popover&&this.popover.reposition()},t.displayName="Blueprint3.Tooltip",t.defaultProps={hoverCloseDelay:0,hoverOpenDelay:100,minimal:!1,transitionDuration:100},t=tc([gc.polyfill],t)}(dc);function $d(e){return e.split("-")[0]}function Id(e){return-1!==["left","right"].indexOf(e)}function Fd(e){switch(e){case"top":return"bottom";case"left":return"right";case"bottom":return"top";default:return"left"}}function jd(e){switch(e.split("-")[1]){case"start":return"left";case"end":return"right";default:return"center"}}function Bd(e){var t=$d(e.placement);if(null==e.arrowElement)return Id(t)?Fd(t)+" "+jd(t):jd(t)+" "+Fd(t);var n=e.arrowElement.clientHeight/2,i=e.offsets.arrow;return Id(t)?Fd(t)+" "+(i.top+n)+"px":i.left+n+"px "+Fd(t)}var Wd=function(e){if(null==e.arrowElement)return e;var t=e.arrowElement.clientWidth,n=$d(e.placement),i=Id(n),s=i?"width":"height",r=i?"left":"top",a=Math.round(t/2/Math.sqrt(2));return"top"===n||"left"===n?(e.offsets.popper[r]-=a+4,e.offsets.arrow[r]=e.offsets.popper[s]-t+a):(e.offsets.popper[r]+=a+4,e.offsets.arrow[r]=-a),e};function Gd(e){if(null==e)return 0;switch($d(e)){case"top":return-90;case"left":return 180;case"bottom":return 90;default:return 0}}var Ud=function(e){var t=e.arrowProps,n=t.ref,i=t.style,s=e.placement;return qr.createElement("div",{className:mo,ref:n,style:null==i.left||isNaN(+i.left)?{}:i},qr.createElement("svg",{viewBox:"0 0 30 30",style:{transform:"rotate("+Gd(s)+"deg)"}},qr.createElement("path",{className:mo+"-border",d:"M8.11 6.302c1.015-.936 1.887-2.922 1.887-4.297v26c0-1.378-.868-3.357-1.888-4.297L.925 17.09c-1.237-1.14-1.233-3.034 0-4.17L8.11 6.302z"}),qr.createElement("path",{className:mo+"-fill",d:"M8.787 7.036c1.22-1.125 2.21-3.376 2.21-5.03V0v30-2.005c0-1.654-.983-3.9-2.21-5.03l-7.183-6.616c-.81-.746-.802-1.96 0-2.7l7.183-6.614z"})))};function Kd(e){switch(e){case _a:return"top-start";case ba:return"top";case Ma:return"top-end";case ya:return"right-start";case ga:return"right";case va:return"right-end";case ua:return"bottom-end";case ha:return"bottom";case da:return"bottom-start";case ma:return"left-end";case pa:return"left";case fa:return"left-start";case"auto":case"auto-start":case"auto-end":return e;default:return function(e){throw new Error("Unexpected position: "+e)}(e)}}Ud.displayName="Blueprint3.PopoverArrow";var Xd={CLICK:"click",CLICK_TARGET_ONLY:"click-target",HOVER:"hover",HOVER_TARGET_ONLY:"hover-target"},qd=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.popoverRef=fc(),t.popoverElement=null,t.targetElement=null,t.state={hasDarkParent:!1,isOpen:t.getIsOpen(t.props),transformOrigin:""},t.isMouseInTargetOrPopover=!1,t.lostFocusOnSamePage=!0,t.handlePopoverRef=ac(t,"popoverElement",t.props.popoverRef),t.handleTargetRef=function(e){return t.targetElement=e},t.reposition=function(){var e;return null===(e=t.popperScheduleUpdate)||void 0===e?void 0:e.call(t)},t.renderPopover=function(e){var n,i=t.props,s=i.usePortal,r=i.interactionKind,a=t.state.transformOrigin;t.popperScheduleUpdate=e.scheduleUpdate;var o={onClick:t.handlePopoverClick};(r===Xd.HOVER||!s&&r===Xd.HOVER_TARGET_ONLY)&&(o.onMouseEnter=t.handleMouseEnter,o.onMouseLeave=t.handleMouseLeave);var l=lc()(po,((n={})[xa]=t.props.inheritDarkTheme&&t.state.hasDarkParent,n[Aa]=t.props.minimal,n[go]=t.props.captureDismiss,n),t.props.popoverClassName);return qr.createElement("div",{className:So,ref:e.ref,style:e.style},qr.createElement(Vd,{onResize:t.reposition},qr.createElement("div",Zl({className:l,style:{transformOrigin:a},ref:t.popoverRef},o),t.isArrowEnabled()&&qr.createElement(Ud,{arrowProps:e.arrowProps,placement:e.placement}),qr.createElement("div",{className:vo},t.understandChildren().content))))},t.renderTarget=function(e){var n,i,s=t.props,r=s.fill,a=s.openOnTargetFocus,o=s.targetClassName,l=s.targetProps,c=void 0===l?{}:l,h=t.state.isOpen,d=t.isControlled(),u=t.isHoverInteractionKind(),p=t.props.targetTagName;r&&(p="div");var m=u?{onBlur:t.handleTargetBlur,onFocus:t.handleTargetFocus,onMouseEnter:t.handleMouseEnter,onMouseLeave:t.handleMouseLeave}:{onClick:t.handleTargetClick};m.className=lc()(Mo,((n={})[_o]=h,n),c.className,o),m.ref=e.ref;var f=pc(t.understandChildren().target);if(void 0===f)return null;var g=f.props.tabIndex,v=null==g&&a&&u?0:g,y=qr.cloneElement(f,{className:lc()(f.props.className,(i={},i[Sa]=h&&!d&&!u,i)),disabled:!(!h||!mc(f,Nd))||f.props.disabled,tabIndex:v}),b=qr.createElement(p,Zl(Zl({},c),m),y);return qr.createElement(Vd,{onResize:t.reposition},b)},t.isControlled=function(){return void 0!==t.props.isOpen},t.handleTargetFocus=function(e){var n,i;if(t.props.openOnTargetFocus&&t.isHoverInteractionKind()){if(null==e.relatedTarget&&!t.lostFocusOnSamePage)return;t.handleMouseEnter(e)}null===(i=null===(n=t.props.targetProps)||void 0===n?void 0:n.onFocus)||void 0===i||i.call(n,e)},t.handleTargetBlur=function(e){var n,i;t.props.openOnTargetFocus&&t.isHoverInteractionKind()&&(null==e.relatedTarget||t.isElementInPopover(e.relatedTarget)||t.handleMouseLeave(e)),t.lostFocusOnSamePage=null!=e.relatedTarget,null===(i=null===(n=t.props.targetProps)||void 0===n?void 0:n.onBlur)||void 0===i||i.call(n,e)},t.handleMouseEnter=function(e){var n,i;t.isMouseInTargetOrPopover=!0,t.props.usePortal||!t.isElementInPopover(e.target)||t.props.interactionKind!==Xd.HOVER_TARGET_ONLY||t.props.openOnTargetFocus?t.props.disabled||t.setOpenState(!0,e,t.props.hoverOpenDelay):t.handleMouseLeave(e),null===(i=null===(n=t.props.targetProps)||void 0===n?void 0:n.onMouseEnter)||void 0===i||i.call(n,e)},t.handleMouseLeave=function(e){var n,i;t.isMouseInTargetOrPopover=!1,t.setTimeout((function(){t.isMouseInTargetOrPopover||t.setOpenState(!1,e,t.props.hoverCloseDelay)})),null===(i=null===(n=t.props.targetProps)||void 0===n?void 0:n.onMouseLeave)||void 0===i||i.call(n,e)},t.handlePopoverClick=function(e){var n=e.target,i=n.closest("."+po),s=i===t.popoverRef.current,r=null==i?void 0:i.classList.contains(go),a=n.closest("."+yo+", ."+bo),o=null!=a&&a.classList.contains(yo),l=null!=n.closest(":disabled, ."+Ca);!o||l||r&&!s||t.setOpenState(!1,e)},t.handleOverlayClose=function(e){if(null!==t.targetElement&&void 0!==e){var n=e.target;(!fd(t.targetElement,n)||e.nativeEvent instanceof KeyboardEvent)&&t.setOpenState(!1,e)}},t.handleTargetClick=function(e){var n,i;t.props.disabled||t.isElementInPopover(e.target)||(null==t.props.isOpen?t.setState((function(e){return{isOpen:!e.isOpen}})):t.setOpenState(!t.props.isOpen,e)),null===(i=null===(n=t.props.targetProps)||void 0===n?void 0:n.onClick)||void 0===i||i.call(n,e)},t.updatePopoverState=function(e){return t.setState({transformOrigin:Bd(e)}),e},t}return Ql(t,e),t.prototype.render=function(){var e,t=this.props,n=t.className,i=t.disabled,s=t.fill,r=t.placement,a=t.position,o=void 0===a?"auto":a,l=this.state.isOpen,c=this.props.wrapperTagName;s&&(c="div");var h=null==pc(this.understandChildren().content);!h||i||!1===l||hc("production")||console.warn("[Blueprint] Disabling with empty/whitespace content...");var d=lc()(wo,n,((e={})[Ta]=s,e)),u=qr.createElement(c,{className:d},qr.createElement(eh,{innerRef:this.handleTargetRef},this.renderTarget),qr.createElement(Yc,{autoFocus:this.props.autoFocus,backdropClassName:fo,backdropProps:this.props.backdropProps,canEscapeKeyClose:this.props.canEscapeKeyClose,canOutsideClickClose:this.props.interactionKind===Xd.CLICK,className:this.props.portalClassName,enforceFocus:this.props.enforceFocus,hasBackdrop:this.props.hasBackdrop,isOpen:l&&!h,onClose:this.handleOverlayClose,onClosed:this.props.onClosed,onClosing:this.props.onClosing,onOpened:this.props.onOpened,onOpening:this.props.onOpening,transitionDuration:this.props.transitionDuration,transitionName:po,usePortal:this.props.usePortal,portalContainer:this.props.portalContainer},qr.createElement(md,{innerRef:this.handlePopoverRef,placement:null!=r?r:Kd(o),modifiers:this.getPopperModifiers()},this.renderPopover)));return qr.createElement(Xc,null,u)},t.prototype.componentDidMount=function(){this.updateDarkParent()},t.prototype.componentDidUpdate=function(t,n){e.prototype.componentDidUpdate.call(this,t,n),t.popoverRef!==this.props.popoverRef&&(rc(t.popoverRef,null),this.handlePopoverRef=ac(this,"popoverElement",this.props.popoverRef),rc(this.props.popoverRef,this.popoverElement)),this.updateDarkParent();var i=this.getIsOpen(this.props);null!=this.props.isOpen&&i!==this.state.isOpen?(this.setOpenState(i),this.setState({isOpen:i})):this.props.disabled&&this.state.isOpen&&null==this.props.isOpen&&this.setOpenState(!1)},t.prototype.validateProps=function(e){null==e.isOpen&&null!=e.onInteraction&&console.warn("[Blueprint] onInteraction is ignored when uncontrolled."),e.hasBackdrop&&!e.usePortal&&console.warn("[Blueprint] ignores hasBackdrop"),e.hasBackdrop&&e.interactionKind!==Xd.CLICK&&console.error("[Blueprint] requires interactionKind={PopoverInteractionKind.CLICK}."),void 0!==e.placement&&void 0!==e.position&&console.warn("[Blueprint] supports either placement or position prop, not both.");var t=qr.Children.count(e.children),n=void 0!==e.content,i=void 0!==e.target;0!==t||i||console.error("[Blueprint] requires target prop or at least one child element."),t>2&&console.warn("[Blueprint] supports one or two children; additional children are ignored. First child is the target, second child is the content. You may instead supply these two as props."),t>0&&i&&console.warn("[Blueprint] with children ignores target prop; use either prop or children."),2===t&&n&&console.warn("[Blueprint] with two children ignores content prop; use either prop or children.")},t.prototype.updateDarkParent=function(){if(this.props.usePortal&&this.state.isOpen){var e=null!=this.targetElement&&null!=this.targetElement.closest("."+xa);this.setState({hasDarkParent:e})}},t.prototype.understandChildren=function(){var e=this.props,t=e.children,n=e.content,i=e.target,s=qr.Children.toArray(t),r=s[0],a=s[1];return{content:null==a?n:a,target:null==r?i:r}},t.prototype.getIsOpen=function(e){return!e.disabled&&(null!=e.isOpen?e.isOpen:e.defaultIsOpen)},t.prototype.getPopperModifiers=function(){var e=this.props,t=e.boundary,n=e.modifiers,i=n,s=i.flip,r=void 0===s?{}:s,a=i.preventOverflow,o=void 0===a?{}:a;return Zl(Zl({},n),{arrowOffset:{enabled:this.isArrowEnabled(),fn:Wd,order:510},flip:Zl({boundariesElement:t},r),preventOverflow:Zl({boundariesElement:t},o),updatePopoverState:{enabled:!0,fn:this.updatePopoverState,order:900}})},t.prototype.setOpenState=function(e,t,n){var i,s,r,a,o,l=this;null===(i=this.cancelOpenTimeout)||void 0===i||i.call(this),void 0!==n&&n>0?this.cancelOpenTimeout=this.setTimeout((function(){return l.setOpenState(e,t)}),n):(null==this.props.isOpen?this.setState({isOpen:e}):null===(r=(s=this.props).onInteraction)||void 0===r||r.call(s,e,t),e||null===(o=(a=this.props).onClose)||void 0===o||o.call(a,t))},t.prototype.isArrowEnabled=function(){var e=this.props,t=e.minimal,n=e.modifiers;return!t&&(null==(null==n?void 0:n.arrow)||n.arrow.enabled)},t.prototype.isElementInPopover=function(e){var t;return null===(t=this.popoverElement)||void 0===t?void 0:t.contains(e)},t.prototype.isHoverInteractionKind=function(){return this.props.interactionKind===Xd.HOVER||this.props.interactionKind===Xd.HOVER_TARGET_ONLY},t.displayName="Blueprint3.Popover",t.defaultProps={boundary:"scrollParent",captureDismiss:!1,defaultIsOpen:!1,disabled:!1,fill:!1,hasBackdrop:!1,hoverCloseDelay:300,hoverOpenDelay:150,inheritDarkTheme:!0,interactionKind:Xd.CLICK,minimal:!1,modifiers:{},openOnTargetFocus:!0,targetTagName:"span",transitionDuration:300,usePortal:!0,wrapperTagName:"span"},t=tc([gc.polyfill],t)}(dc),Jd=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={isContentOverflowing:!1,textContent:""},t.textRef=null,t}return Ql(t,e),t.prototype.componentDidMount=function(){this.update()},t.prototype.componentDidUpdate=function(){this.update()},t.prototype.render=function(){var e,t=this,n=lc()(((e={})[Ra]=this.props.ellipsize,e),this.props.className),i=this.props,s=i.children,r=i.tagName,a=i.title;return qr.createElement(r,{className:n,ref:function(e){return t.textRef=e},title:null!=a?a:this.state.isContentOverflowing?this.state.textContent:void 0},s)},t.prototype.update=function(){var e;if(null!=(null===(e=this.textRef)||void 0===e?void 0:e.textContent)){var t={isContentOverflowing:this.props.ellipsize&&this.textRef.scrollWidth>this.textRef.clientWidth,textContent:this.textRef.textContent};this.setState(t)}},t.displayName="Blueprint3.Text",t.defaultProps={ellipsize:!1,tagName:"div"},t=tc([gc.polyfill],t)}(dc),Qd=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ql(t,e),t.prototype.render=function(){var e,t,n=this.props,i=n.active,s=n.className,r=n.children,a=n.disabled,o=n.icon,l=n.intent,c=(n.labelClassName,n.labelElement),h=n.multiline,d=(n.popoverProps,n.shouldDismissPopover),u=n.text,p=n.textClassName,m=n.tagName,f=void 0===m?"a":m,g=n.htmlTitle,v=ec(n,["active","className","children","disabled","icon","intent","labelClassName","labelElement","multiline","popoverProps","shouldDismissPopover","text","textClassName","tagName","htmlTitle"]),y=null!=r,b=Ro(l),_=lc()(to,b,((e={})[Sa]=i,e[Oa]=i&&null==b,e[Ca]=a,e[yo]=d&&!a&&!y,e),s),M=qr.createElement(f,Zl(Zl(Zl({},v),a?eu:{}),{className:_}),qr.createElement(bc,{icon:o}),qr.createElement(Jd,{className:lc()(Ta,p),ellipsize:!h,title:g},u),this.maybeRenderLabel(c),y?qr.createElement(bc,{icon:"caret-right"}):void 0),w=lc()(((t={})[io]=y,t));return qr.createElement("li",{className:w},this.maybeRenderPopover(M,r))},t.prototype.maybeRenderLabel=function(e){var t=this.props,n=t.label,i=t.labelClassName;return null==n&&null==e?null:qr.createElement("span",{className:lc()(no,i)},n,e)},t.prototype.maybeRenderPopover=function(e,t){if(null==t)return e;var n=this.props,i=n.disabled,s=n.popoverProps;return qr.createElement(qd,Zl({autoFocus:!1,captureDismiss:!1,disabled:i,enforceFocus:!1,hoverCloseDelay:0,interactionKind:Xd.HOVER,modifiers:Zd,position:ya,usePortal:!1},s,{content:qr.createElement(tu,null,t),minimal:!0,popoverClassName:lc()(io,null==s?void 0:s.popoverClassName),target:e}))},t.defaultProps={disabled:!1,multiline:!1,popoverProps:{},shouldDismissPopover:!0,text:""},t.displayName="Blueprint3.MenuItem",t=tc([gc.polyfill],t)}(dc),Zd={flip:{boundariesElement:"viewport",padding:20},offset:{offset:-5},preventOverflow:{boundariesElement:"viewport",padding:20}},eu={href:void 0,onClick:void 0,onMouseDown:void 0,onMouseEnter:void 0,onMouseLeave:void 0,tabIndex:-1},tu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ql(t,e),t.prototype.render=function(){var e,t=this.props,n=t.className,i=t.children,s=t.large,r=t.ulRef,a=ec(t,["className","children","large","ulRef"]),o=lc()(eo,((e={})[Ea]=s,e),n);return qr.createElement("ul",Zl({},a,{className:o,ref:r}),i)},t.displayName="Blueprint3.Menu",t.Divider=$c,t.Item=Qd,t=tc([gc.polyfill],t)}(dc),nu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ql(t,e),t.prototype.render=function(){var e,t=this.props,n=t.alignText,i=t.className,s=t.fill,r=t.minimal,a=t.large,o=t.vertical,l=ec(t,["alignText","className","fill","minimal","large","vertical"]),c=lc()(Ba,((e={})[Ta]=s,e[Ea]=a,e[Aa]=r,e[Pa]=o,e),Oo(n),i);return qr.createElement("div",Zl({},l,{className:c}),this.props.children)},t.displayName="Blueprint3.ButtonGroup",t=tc([gc.polyfill],t)}(dc),iu=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleActionClick=function(e){var n,i;null===(i=null===(n=t.props.action)||void 0===n?void 0:n.onClick)||void 0===i||i.call(n,e),t.triggerDismiss(!1)},t.handleCloseClick=function(){return t.triggerDismiss(!1)},t.startTimeout=function(){t.clearTimeouts(),t.props.timeout>0&&t.setTimeout((function(){return t.triggerDismiss(!0)}),t.props.timeout)},t}return Ql(t,e),t.prototype.render=function(){var e=this.props,t=e.className,n=e.icon,i=e.intent,s=e.message;return qr.createElement("div",{className:lc()(zo,Ro(i),t),onBlur:this.startTimeout,onFocus:this.clearTimeouts,onMouseEnter:this.clearTimeouts,onMouseLeave:this.startTimeout,tabIndex:0},qr.createElement(bc,{icon:n}),qr.createElement("span",{className:Ho},s),qr.createElement(nu,{minimal:!0},this.maybeRenderActionButton(),qr.createElement(kc,{icon:"cross",onClick:this.handleCloseClick})))},t.prototype.componentDidMount=function(){this.startTimeout()},t.prototype.componentDidUpdate=function(e){e.timeout!==this.props.timeout&&(this.props.timeout>0?this.startTimeout():this.clearTimeouts())},t.prototype.componentWillUnmount=function(){this.clearTimeouts()},t.prototype.maybeRenderActionButton=function(){var e=this.props.action;return null==e?void 0:qr.createElement(xc,Zl({},e,{intent:void 0,onClick:this.handleActionClick}))},t.prototype.triggerDismiss=function(e){var t,n;this.clearTimeouts(),null===(n=(t=this.props).onDismiss)||void 0===n||n.call(t,e)},t.defaultProps={className:"",message:"",timeout:5e3},t.displayName="Blueprint3.Toast",t=tc([gc.polyfill],t)}(dc),su=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={toasts:[]},t.toastId=0,t.renderToast=function(e){return qr.createElement(iu,Zl({},e,{onDismiss:t.getDismissHandler(e)}))},t.getDismissHandler=function(e){return function(n){t.dismiss(e.key,n)}},t.handleClose=function(e){27===e.which&&t.clear()},t}var n;return Ql(t,e),n=t,t.create=function(e,t){void 0===t&&(t=document.body),null==e||null==e.usePortal||hc("production")||console.warn("[Blueprint] Toaster.create() ignores inline prop as it always creates a new element.");var i=document.createElement("div");t.appendChild(i);var s=Jr.render(qr.createElement(n,Zl({},e,{usePortal:!1})),i);if(null==s)throw new Error("[Blueprint] Toaster.create() is not supported inside React lifecycle methods in React 16. See usage example on the docs site.");return s},t.prototype.show=function(e,t){this.props.maxToasts&&this.dismissIfAtLimit();var n=this.createToastOptions(e,t);return void 0===t||this.isNewToastKey(t)?this.setState((function(e){return{toasts:nc([n],e.toasts)}})):this.setState((function(e){return{toasts:e.toasts.map((function(e){return e.key===t?n:e}))}})),n.key},t.prototype.dismiss=function(e,t){void 0===t&&(t=!1),this.setState((function(n){return{toasts:n.toasts.filter((function(n){var i,s=n.key===e;return s&&(null===(i=n.onDismiss)||void 0===i||i.call(n,t)),!s}))}}))},t.prototype.clear=function(){this.state.toasts.forEach((function(e){var t;return null===(t=e.onDismiss)||void 0===t?void 0:t.call(e,!1)})),this.setState({toasts:[]})},t.prototype.getToasts=function(){return this.state.toasts},t.prototype.render=function(){var e=lc()(Ao,this.getPositionClasses(),this.props.className);return qr.createElement(Yc,{autoFocus:this.props.autoFocus,canEscapeKeyClose:this.props.canEscapeKeyClear,canOutsideClickClose:!1,className:e,enforceFocus:!1,hasBackdrop:!1,isOpen:this.state.toasts.length>0||null!=this.props.children,onClose:this.handleClose,transitionDuration:350,transitionName:zo,usePortal:this.props.usePortal},this.state.toasts.map(this.renderToast,this),this.props.children)},t.prototype.validateProps=function(e){var t=e.maxToasts;if(void 0!==t&&t<1)throw new Error("[Blueprint] maxToasts is set to an invalid number, must be greater than 0")},t.prototype.isNewToastKey=function(e){return this.state.toasts.every((function(t){return t.key!==e}))},t.prototype.dismissIfAtLimit=function(){this.state.toasts.length===this.props.maxToasts&&this.dismiss(this.state.toasts[this.state.toasts.length-1].key)},t.prototype.createToastOptions=function(e,t){return void 0===t&&(t="toast-"+this.toastId++),Zl(Zl({},e),{key:t})},t.prototype.getPositionClasses=function(){return nc(this.props.position.split("-").map((function(e){return Ao+"-"+e.toLowerCase()})),[Ao+"-"+(this.props.usePortal?"in-portal":"inline")])},t.displayName="Blueprint3.Toaster",t.defaultProps={autoFocus:!1,canEscapeKeyClear:!0,position:ba,usePortal:!0},t=n=tc([gc.polyfill],t)}(dc);let ru;function au(e,t){return void 0===t&&(t=5e3),ru.show({intent:oa,message:e,timeout:t})}function ou(e,t){return void 0===t&&(t=5e3),ru.show({intent:la,message:e,timeout:t})}function lu(e,t){return void 0===t&&(t=5e3),ru.show({intent:ca,message:e,timeout:t})}function cu(e,t,n){void 0===n&&(n=5e3);try{t=e.body.error_msg||t}catch(e){}return ru.show({intent:ca,message:t,timeout:n})}let hu="";let du=new Set,uu="dark";function pu(){uu="light",document.body.className="",du.forEach((e=>{e()}))}function mu(){uu="dark",document.body.className="bp3-dark",du.forEach((e=>{e()}))}function fu(){return"light"===uu?"rgba(0, 0, 0, 0.9)":"rgba(255, 255, 255, 1)"}function gu(){return"light"===uu?"rgba(0, 0, 0, 0.2)":"rgba(255, 255, 255, 0.2)"}var vu=n(6788);class yu extends vu.Dispatcher{}const bu=new yu;var _u=n(5939);class Mu extends _u.EventEmitter{emitDefer(e,...t){setTimeout((()=>{this.emit(e,...t)}))}}const wu="subscription.sync",Su="change";const Lu=new class extends Mu{constructor(){super(...arguments),this._token=bu.register(this._callback.bind(this))}get subscription(){return this._subscription}get subscriptionM(){if(this._subscription)return{...this._subscription}}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_sync(e){this._subscription=Object.freeze(e),this.emitChange()}_callback(e){if(e.type===wu)this._sync(e.data)}},ku="loading.add",xu="loading.done";const Cu=new class extends Mu{constructor(){super(...arguments),this._loaders=new Set,this._token=bu.register(this._callback.bind(this))}get loading(){return!!this._loaders.size}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_add(e){this._loaders.add(e),this.emitChange()}_done(e){this._loaders.delete(e),this.emitChange()}_callback(e){switch(e.type){case ku:this._add(e.data.id);break;case xu:this._done(e.data.id)}}},Tu={progress:{width:"100%",height:"4px",borderRadius:0},progressBar:{width:"50%",borderRadius:0}};class Eu extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({loading:Cu.loading})},this.state={loading:Cu.loading}}componentDidMount(){Cu.addChangeListener(this.onChange)}componentWillUnmount(){Cu.removeChangeListener(this.onChange)}render(){let e;if(this.state.loading){let t="bp3-progress-bar bp3-no-stripes bp3-no-animation ";this.props.intent&&(t+=" bp3-intent-"+this.props.intent),e=qr.createElement("div",{className:t,style:Tu.progress},qr.createElement("div",{className:"bp3-progress-meter bp3-loading-bar",style:Tu.progressBar}))}else e=qr.createElement("div",{style:Tu.progress});return qr.createElement("div",{style:this.props.style},e)}}var zu=n(2396);class Au extends vu.Dispatcher{}const Hu=new Au;function Du(){return(+new Date+Math.floor(999999*Math.random())).toString(36)}function Pu(e,t){return e12?(a="PM",r-=12):0===r&&(r=12),i.getDay()){case 0:t="Sun";break;case 1:t="Mon";break;case 2:t="Tue";break;case 3:t="Wed";break;case 4:t="Thu";break;case 5:t="Fri";break;case 6:t="Sat"}switch(i.getMonth()){case 0:n="Jan";break;case 1:n="Feb";break;case 2:n="Mar";break;case 3:n="Apr";break;case 4:n="May";break;case 5:n="Jun";break;case 6:n="Jul";break;case 7:n="Aug";break;case 8:n="Sep";break;case 9:n="Oct";break;case 10:n="Nov";break;case 11:n="Dec"}return s+=t+" ",s+=i.getDate()+" ",s+=n+" ",s+=i.getFullYear()+", ",s+=r+":",s+=Pu(i.getMinutes(),2)+":",s+=Pu(i.getSeconds(),2)+" ",s+=a,s}function Iu(e){if(!e||"0001-01-01T00:00:00Z"===e)return"";let t,n=new Date(e),i=new Date;switch(n.getMonth()){case 0:t="Jan";break;case 1:t="Feb";break;case 2:t="Mar";break;case 3:t="Apr";break;case 4:t="May";break;case 5:t="Jun";break;case 6:t="Jul";break;case 7:t="Aug";break;case 8:t="Sep";break;case 9:t="Oct";break;case 10:t="Nov";break;case 11:t="Dec"}let s=t+" "+n.getDate();return n.getFullYear()!==i.getFullYear()&&(s+=" "+n.getFullYear()),s}function Fu(e){if(!e||"0001-01-01T00:00:00Z"===e)return"";let t,n=new Date(e),i=new Date;switch(n.getMonth()){case 0:t="Jan";break;case 1:t="Feb";break;case 2:t="Mar";break;case 3:t="Apr";break;case 4:t="May";break;case 5:t="Jun";break;case 6:t="Jul";break;case 7:t="Aug";break;case 8:t="Sep";break;case 9:t="Oct";break;case 10:t="Nov";break;case 11:t="Dec"}let s=t+" "+n.getDate();if(n.getFullYear()!==i.getFullYear())s+=" "+n.getFullYear();else if(n.getMonth()===i.getMonth()&&n.getDate()===i.getDate()){let e=n.getHours(),t="AM";e>12?(t="PM",e-=12):0===e&&(e=12),s=e+":",s+=Pu(n.getMinutes(),2)+":",s+=Pu(n.getSeconds(),2)+" ",s+=t}return s}class ju{constructor(){this._id=Du()}loading(){return bu.dispatch({type:ku,data:{id:this._id}}),this}done(){return bu.dispatch({type:xu,data:{id:this._id}}),this}}let Bu;function Wu(e){let t=Du();Bu=t;let n=(new ju).loading();return new Promise(((i,s)=>{ql.get("/subscription"+(e?"/update":"")).set("Accept","application/json").set("Csrf-Token",hu).end(((e,r)=>{if(n.done(),r&&401===r.status)return window.location.href="/login",void i();if(t===Bu){if(e)return cu(r,"Failed to sync subscription"),s(e),void bu.dispatch({type:wu,data:{}});bu.dispatch({type:wu,data:r.body}),i()}else i()}))}))}function Gu(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/subscription").send({license:e}).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to activate subscription"),void i(e)):(bu.dispatch({type:wu,data:s.body}),void n()))))}))}Hu.register((e=>{if("subscription.change"===e.type)Wu(!1)}));const Uu=!!new(n(4741))(window.navigator.userAgent).mobile(),Ku={admin:"Admin",proxy:"Service",user:"User"},Xu={linux:"Linux",macos_1010:"macOS 10.10",macos_1011:"macOS 10.11",macos_1012:"macOS 10.12",macos_1013:"macOS 10.13",macos_1014:"macOS 10.14",macos_1015:"macOS 10.15",macos11:"macOS 11",macos12:"macOS 12",macos13:"macOS 13",macos14:"macOS 14",windows_xp:"Windows XP",windows_7:"Windows 7",windows_vista:"Windows Vista",windows_8:"Windows 8",windows_10:"Windows 10",windows_11:"Windows 11",chrome_os:"Chrome OS",ios_8:"iOS 8",ios_9:"iOS 9",ios_10:"iOS 10",ios_11:"iOS 11",ios_12:"iOS 12",ios_13:"iOS 13",ios_14:"iOS 14",ios_15:"iOS 15",ios_16:"iOS 16",ios_17:"iOS 17",ios_18:"iOS 18",android_4:"Android KitKat 4.4",android_5:"Android Lollipop 5",android_6:"Android Marshmallow 6",android_7:"Android Nougat 7",android_8:"Android Oreo 8",android_9:"Android Pie 9",android_10:"Android 10",android_11:"Android 11",android_12:"Android 12",android_13:"Android 13",android_14:"Android 14",blackberry_10:"Blackerry 10",windows_phone:"Windows Phone",firefox_os:"Firefox OS",kindle:"Kindle"},qu={chrome:"Chrome",chrome_mobile:"Chrome Mobile",safari:"Safari",safari_mobile:"Safari Mobile",firefox:"Firefox",firefox_mobile:"Firefox Mobile",edge:"Microsoft Edge",internet_explorer:"Internet Explorer",internet_explorer_mobile:"Internet Explorer Mobile",opera:"Opera",opera_mobile:"Opera Mobile"},Ju={US:"United States",US_AL:"Alabama, US",US_AK:"Alaska, US",US_AZ:"Arizona, US",US_AR:"Arkansas, US",US_CA:"California, US",US_CO:"Colorado, US",US_CT:"Connecticut, US",US_DE:"Delaware, US",US_FL:"Florida, US",US_GA:"Georgia, US",US_HI:"Hawaii, US",US_ID:"Idaho, US",US_IL:"Illinois, US",US_IN:"Indiana, US",US_IA:"Iowa, US",US_KS:"Kansas, US",US_KY:"Kentucky, US",US_LA:"Louisiana, US",US_ME:"Maine, US",US_MD:"Maryland, US",US_MA:"Massachusetts, US",US_MI:"Michigan, US",US_MN:"Minnesota, US",US_MS:"Mississippi, US",US_MO:"Missouri, US",US_MT:"Montana, US",US_NE:"Nebraska, US",US_NV:"Nevada, US",US_NH:"New Hampshire, US",US_NJ:"New Jersey, US",US_NM:"New Mexico, US",US_NY:"New York, US",US_NC:"North Carolina, US",US_ND:"North Dakota, US",US_OH:"Ohio, US",US_OK:"Oklahoma, US",US_OR:"Oregon, US",US_PA:"Pennsylvania, US",US_RI:"Rhode Island, US",US_SC:"South Carolina, US",US_SD:"South Dakota, US",US_TN:"Tennessee, US",US_TX:"Texas, US",US_UT:"Utah, US",US_VT:"Vermont, US",US_VA:"Virginia, US",US_WA:"Washington, US",US_DC:"Washington DC, US",US_WV:"West Virginia, US",US_WI:"Wisconsin, US",US_WY:"Wyoming, US",AF:"Afghanistan",AX:"Åland Islands",AL:"Albania",DZ:"Algeria",AS:"American Samoa",AD:"Andorra",AO:"Angola",AI:"Anguilla",AQ:"Antarctica",AG:"Antigua and Barbuda",AR:"Argentina",AM:"Armenia",AW:"Aruba",AU:"Australia",AT:"Austria",AZ:"Azerbaijan",BS:"Bahamas",BH:"Bahrain",BD:"Bangladesh",BB:"Barbados",BY:"Belarus",BE:"Belgium",BZ:"Belize",BJ:"Benin",BM:"Bermuda",BT:"Bhutan",BO:"Bolivia",BQ:"Bonaire",BA:"Bosnia and Herzegovina",BW:"Botswana",BV:"Bouvet Island",BR:"Brazil",IO:"British Indian Ocean Territory",BN:"Brunei Darussalam",BG:"Bulgaria",BF:"Burkina Faso",BI:"Burundi",CV:"Cabo Verde",KH:"Cambodia",CM:"Cameroon",CA:"Canada",KY:"Cayman Islands",CF:"Central African Republic",TD:"Chad",CL:"Chile",CN:"China",CX:"Christmas Island",CC:"Cocos Islands",CO:"Colombia",KM:"Comoros",CG:"Congo",CD:"Congo Democratic Republic",CK:"Cook Islands",CR:"Costa Rica",CI:"Côte dIvoire",HR:"Croatia",CU:"Cuba",CW:"Curaçao",CY:"Cyprus",CZ:"Czechia",DK:"Denmark",DJ:"Djibouti",DM:"Dominica",DO:"Dominican Republic",EC:"Ecuador",EG:"Egypt",SV:"El Salvador",GQ:"Equatorial Guinea",ER:"Eritrea",EE:"Estonia",ET:"Ethiopia",FK:"Falkland Islands",FO:"Faroe Islands",FJ:"Fiji",FI:"Finland",FR:"France",GF:"French Guiana",PF:"French Polynesia",TF:"French Southern Territories",GA:"Gabon",GM:"Gambia",GE:"Georgia",DE:"Germany",GH:"Ghana",GI:"Gibraltar",GR:"Greece",GL:"Greenland",GD:"Grenada",GP:"Guadeloupe",GU:"Guam",GT:"Guatemala",GG:"Guernsey",GN:"Guinea",GW:"Guinea-Bissau",GY:"Guyana",HT:"Haiti",HM:"Heard Island and McDonald Islands",VA:"Holy See",HN:"Honduras",HK:"Hong Kong",HU:"Hungary",IS:"Iceland",IN:"India",ID:"Indonesia",IR:"Iran",IQ:"Iraq",IE:"Ireland",IM:"Isle of Man",IL:"Israel",IT:"Italy",JM:"Jamaica",JP:"Japan",JE:"Jersey",JO:"Jordan",KZ:"Kazakhstan",KE:"Kenya",KI:"Kiribati",KP:"North Korea",KR:"South Korea",KW:"Kuwait",KG:"Kyrgyzstan",LA:"Lao Peoples",LV:"Latvia",LB:"Lebanon",LS:"Lesotho",LR:"Liberia",LY:"Libya",LI:"Liechtenstein",LT:"Lithuania",LU:"Luxembourg",MO:"Macao",MK:"Macedonia",MG:"Madagascar",MW:"Malawi",MY:"Malaysia",MV:"Maldives",ML:"Mali",MT:"Malta",MH:"Marshall Islands",MQ:"Martinique",MR:"Mauritania",MU:"Mauritius",YT:"Mayotte",MX:"Mexico",FM:"Micronesia",MD:"Moldova",MC:"Monaco",MN:"Mongolia",ME:"Montenegro",MS:"Montserrat",MA:"Morocco",MZ:"Mozambique",MM:"Myanmar",NA:"Namibia",NR:"Nauru",NP:"Nepal",NL:"Netherlands",NC:"New Caledonia",NZ:"New Zealand",NI:"Nicaragua",NE:"Niger",NG:"Nigeria",NU:"Niue",NF:"Norfolk Island",MP:"Northern Mariana Islands",NO:"Norway",OM:"Oman",PK:"Pakistan",PW:"Palau",PS:"Palestine, State of",PA:"Panama",PG:"Papua New Guinea",PY:"Paraguay",PE:"Peru",PH:"Philippines",PN:"Pitcairn",PL:"Poland",PT:"Portugal",PR:"Puerto Rico",QA:"Qatar",RE:"Réunion",RO:"Romania",RU:"Russian Federation",RW:"Rwanda",BL:"Saint Barthélemy",SH:"Saint Helena",KN:"Saint Kitts and Nevis",LC:"Saint Lucia",MF:"Saint Martin",PM:"Saint Pierre and Miquelon",VC:"Saint Vincent and the Grenadines",WS:"Samoa",SM:"San Marino",ST:"Sao Tome and Principe",SA:"Saudi Arabia",SN:"Senegal",RS:"Serbia",SC:"Seychelles",SL:"Sierra Leone",SG:"Singapore",SX:"Sint Maarten",SK:"Slovakia",SI:"Slovenia",SB:"Solomon Islands",SO:"Somalia",ZA:"South Africa",GS:"South Georgia and the South Sandwich Islands",SS:"South Sudan",ES:"Spain",LK:"Sri Lanka",SD:"Sudan",SR:"Suriname",SJ:"Svalbard and Jan Mayen",SZ:"Swaziland",SE:"Sweden",CH:"Switzerland",SY:"Syrian Arab Republic",TW:"Taiwan",TJ:"Tajikistan",TZ:"Tanzania",TH:"Thailand",TL:"Timor-Leste",TG:"Togo",TK:"Tokelau",TO:"Tonga",TT:"Trinidad and Tobago",TN:"Tunisia",TR:"Turkey",TM:"Turkmenistan",TC:"Turks and Caicos Islands",TV:"Tuvalu",UG:"Uganda",UA:"Ukraine",AE:"United Arab Emirates",GB:"United Kingdom",UM:"United States Minor Outlying Islands",UY:"Uruguay",UZ:"Uzbekistan",VU:"Vanuatu",VE:"Venezuela",VN:"Viet Nam",VG:"British Virgin Islands",VI:"US Virgin Islands",WF:"Wallis and Futuna",EH:"Western Sahara",YE:"Yemen",ZM:"Zambia",ZW:"Zimbabwe"},Qu={box:{display:"inline-flex",verticalAlign:"middle"},actionProgress:{position:"absolute",bottom:0,left:0,borderRadius:0,borderBottomLeftRadius:"3px",borderBottomRightRadius:"3px",width:"100%",height:"4px"},squareActionProgress:{position:"absolute",bottom:0,left:0,borderRadius:0,borderBottomLeftRadius:"1px",borderBottomRightRadius:"3px",width:"100%",height:"4px"},dialog:{width:"340px",position:"absolute"},label:{width:"100%",maxWidth:"220px",margin:"18px 0 0 0"},input:{width:"100%"}};class Zu extends qr.Component{constructor(e,t){super(e,t),this.openDialog=()=>{this.setState({...this.state,dialog:!0})},this.closeDialog=()=>{this.setState({...this.state,dialog:!1})},this.closeDialogConfirm=()=>{this.setState({...this.state,dialog:!1}),this.props.onConfirm&&this.props.onConfirm()},this.confirm=e=>{let t=Du();if(e.shiftKey)return void(this.props.onConfirm&&this.props.onConfirm());this.setState({...this.state,confirming:t});let n=10,i=setInterval((()=>n>100?(clearInterval(i),void setTimeout((()=>{this.state.confirming===t&&(this.setState({...this.state,confirm:0,confirming:null}),this.props.onConfirm&&this.props.onConfirm())}),250)):this.state.confirming?(n%10==0&&this.setState({...this.state,confirm:n/10}),void(n+=2)):(clearInterval(i),void this.setState({...this.state,confirm:0,confirming:null}))),8)},this.clearConfirm=()=>{this.setState({...this.state,confirm:0,confirming:null})},this.state={input:"",dialog:!1,confirm:0,confirming:null}}render(){let e=Uu||this.props.safe,t={...this.props.style};t.position="relative";let n=this.props.className||"";this.props.label||(n+=" bp3-button-empty");let i,s=this.props.dialogClassName||this.props.className||"";if(this.props.label||this.props.dialogLabel||(s+=" bp3-button-empty"),this.props.confirmInput&&(i=qr.createElement("label",{className:"bp3-label",style:Qu.label},'Enter "delete" to confirm:',qr.createElement("input",{className:"bp3-input",style:Qu.input,disabled:this.props.disabled,autoCapitalize:"off",spellCheck:!1,placeholder:'Enter "delete" to confirm',value:this.state.input,onKeyDown:e=>{"Enter"===e.key&&"delete"===this.state.input&&this.closeDialogConfirm()},onChange:e=>{this.setState({...this.state,input:e.target.value})}}))),e){let r,a=this.props.confirmMsg?this.props.confirmMsg:"Confirm "+(this.props.label||"");if(this.props.items){let e=[];for(let t of this.props.items)e.push(qr.createElement("li",null,t));r=qr.createElement("ul",null,e)}return qr.createElement("div",{style:Qu.box},qr.createElement("button",{className:"bp3-button "+n,style:t,type:"button",hidden:this.props.hidden,disabled:this.props.disabled,onMouseDown:e?void 0:this.confirm,onMouseUp:e?void 0:this.clearConfirm,onMouseLeave:e?void 0:this.clearConfirm,onClick:e?this.openDialog:void 0},this.props.label),qr.createElement(Rc,{title:"Confirm",style:Qu.dialog,isOpen:this.state.dialog,usePortal:!0,portalContainer:document.body,onClose:this.closeDialog},qr.createElement("div",{className:"bp3-dialog-body"},a,r,i),qr.createElement("div",{className:"bp3-dialog-footer"},qr.createElement("div",{className:"bp3-dialog-footer-actions"},qr.createElement("button",{className:"bp3-button",type:"button",onClick:this.closeDialog},"Cancel"),qr.createElement("button",{className:"bp3-button "+s,type:"button",disabled:this.props.confirmInput&&"delete"!==this.state.input,onClick:this.closeDialogConfirm},this.props.dialogLabel||this.props.label)))))}{let i;if(this.state.confirming){let e,n={width:10*this.state.confirm+"%",backgroundColor:t.color,borderRadius:0,left:0};e=this.props.grouped?Qu.squareActionProgress:Qu.actionProgress,i=qr.createElement("div",{className:"bp3-progress-bar bp3-no-stripes "+(this.props.progressClassName||""),style:e},qr.createElement("div",{className:"bp3-progress-meter",style:n}))}return qr.createElement("button",{className:"bp3-button "+n,style:t,type:"button",hidden:this.props.hidden,disabled:this.props.disabled,onMouseDown:e?void 0:this.confirm,onMouseUp:e?void 0:this.clearConfirm,onMouseLeave:e?void 0:this.clearConfirm,onClick:e?this.openDialog:void 0},this.props.label,i)}}}const ep={card:{padding:"10px",minWidth:"310px",maxWidth:"350px",width:"calc(100% - 20px)",margin:"30px auto"},card2:{padding:"5px",minWidth:"310px",maxWidth:"380px",width:"calc(100% - 20px)",margin:"30px auto"},status:{width:"180px",margin:"20px auto",fontSize:"16px"},item:{margin:"2px 0"},message:{margin:"0 0 10px 0"},license:{width:"100%",height:"130px",margin:"0 0 10px 0",resize:"none",fontFamily:'"Lucida Console", Monaco, monospace'},button:{width:"150px",margin:"5px"},button2:{width:"160px",margin:"5px"},button3:{width:"195px",margin:"5px"},buttons:{margin:"0 auto"}};class tp extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,subscription:Lu.subscription})},this.state={subscription:Lu.subscription,update:!1,message:"",license:"",disabled:!1}}componentDidMount(){Lu.addChangeListener(this.onChange),this.state.subscription.active||Wu(!0)}componentWillUnmount(){Lu.removeChangeListener(this.onChange)}update(){return qr.createElement("div",null,qr.createElement("div",{className:"bp3-card bp3-elevation-2",style:ep.card},qr.createElement("div",{className:"bp3-callout bp3-intent-success",style:ep.message,hidden:!this.state.message},this.state.message),qr.createElement("textarea",{className:"bp3-input",style:ep.license,disabled:this.state.disabled,placeholder:"New License Key",value:this.state.license,onChange:e=>{this.setState({...this.state,license:e.target.value})}}),qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-intent-danger bp3-icon-cross",style:ep.button,disabled:this.state.disabled,onClick:()=>{this.setState({...this.state,update:!1,license:""})}},"Cancel"),qr.createElement("button",{className:"bp3-button bp3-intent-primary bp3-icon-endorsed",style:ep.button,disabled:this.state.disabled,onClick:()=>{this.setState({...this.state,disabled:!0}),Gu(this.state.license).then((()=>{this.setState({...this.state,disabled:!1,update:!1,license:""})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"Update License"))))}activate(){return qr.createElement("div",null,qr.createElement("div",{className:"bp3-card bp3-elevation-2",style:ep.card},qr.createElement("div",{className:"bp3-callout bp3-intent-success",style:ep.message,hidden:!this.state.message},this.state.message),qr.createElement("textarea",{className:"bp3-input",style:ep.license,disabled:this.state.disabled,placeholder:"License Key",value:this.state.license,onChange:e=>{this.setState({...this.state,license:e.target.value})}}),qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-intent-primary bp3-icon-endorsed",style:ep.button,disabled:this.state.disabled,onClick:()=>{this.setState({...this.state,disabled:!0}),Gu(this.state.license).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"Activate License"),qr.createElement(zu.Z,{label:"Pritunl Zero",image:"https://objectstorage.us-ashburn-1.oraclecloud.com/n/pritunl8472/b/pritunl-static/o/logo_stripe.png",allowRememberMe:!1,zipCode:!0,amount:5e3,name:"Pritunl Zero",description:"Subscribe to Zero ($50/month)",panelLabel:"Subscribe",token:e=>{this.setState({...this.state,disabled:!0}),function(e,t,n){let i=(new ju).loading();return new Promise(((s,r)=>{ql.post("https://app.pritunl.com/subscription").send({plan:e,card:t,email:n}).set("Accept","application/json").end(((e,t)=>(i.done(),t&&401===t.status?(window.location.href="/login",void s("")):e?(cu(t,"Failed to checkout"),void r(e)):(s(t.body.msg),void Wu(!0)))))}))}("zero",e.id,e.email).then((e=>{this.setState({...this.state,disabled:!1,message:e})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},onScriptError:e=>{lu("Failed to load Stripe Checkout")},stripeKey:"pk_live_plmoOl3lS3k5dMNQViZWGfVR"},qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-credit-card",style:ep.button,disabled:this.state.disabled},"Subscribe")))))}reactivate(){let e,t,n=this.state.subscription,i=n.cancel_at_period_end||"canceled"===n.status,s=n.cancel_at_period_end?"canceled":n.status,r=Iu(n.period_end),a=Iu(n.trial_end);return n.balance<0?(e=Yu(-1*n.balance),t="Credit"):(e=Yu(n.balance),t="Balance"),qr.createElement("div",null,qr.createElement("div",{className:"bp3-card bp3-elevation-2",style:ep.card2},qr.createElement("div",{className:"bp3-callout bp3-intent-success",style:ep.message,hidden:!this.state.message},this.state.message),qr.createElement("div",{className:"layout vertical",style:ep.status},qr.createElement("div",{className:"layout horizontal"},qr.createElement("div",{className:"flex"},"Status:"),qr.createElement("div",null,Ou(s))),qr.createElement("div",{className:"layout horizontal",style:ep.item},qr.createElement("div",{className:"flex"},"Plan:"),qr.createElement("div",null,Ou(n.plan))),qr.createElement("div",{className:"layout horizontal",style:ep.item},qr.createElement("div",{className:"flex"},"Amount:"),qr.createElement("div",null,Yu(n.amount))),qr.createElement("div",{className:"layout horizontal",style:ep.item},qr.createElement("div",{className:"flex"},"Quantity:"),qr.createElement("div",null,n.quantity)),qr.createElement("div",{className:"layout horizontal",style:ep.item,hidden:!n.balance},qr.createElement("div",{className:"flex"},t,":"),qr.createElement("div",null,e)),qr.createElement("div",{className:"layout horizontal",style:ep.item,hidden:""===r},qr.createElement("div",{className:"flex"},i?"Ends":"Renew",":"),qr.createElement("div",null,r)),qr.createElement("div",{className:"layout horizontal",style:ep.item,hidden:""===a},qr.createElement("div",{className:"flex"},"Trial Ends:"),qr.createElement("div",null,a))),qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement(Zu,{className:"bp3-intent-danger bp3-icon-disable",progressClassName:"bp3-intent-danger",style:ep.button2,disabled:this.state.disabled,hidden:i,label:"End Subscription",onConfirm:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("https://app.pritunl.com/subscription").send({key:e}).set("Accept","application/json").end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to cancel subscription"),void i(e)):(n(),void Wu(!0)))))}))}(this.state.subscription.url_key).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}}),qr.createElement(zu.Z,{label:"Pritunl Zero",image:"https://objectstorage.us-ashburn-1.oraclecloud.com/n/pritunl8472/b/pritunl-static/o/logo_stripe.png",allowRememberMe:!1,zipCode:!0,amount:i&&"active"!==n.status?5e3:0,name:"Pritunl Zero",description:i?"Reactivate Subscription ($50/month)":"Update Payment Information",panelLabel:i?"Reactivate":"Update",token:e=>{this.setState({...this.state,disabled:!0}),function(e,t,n,i){let s=(new ju).loading();return new Promise(((r,a)=>{ql.put("https://app.pritunl.com/subscription").send({key:e,plan:t,card:n,email:i}).set("Accept","application/json").end(((e,t)=>(s.done(),t&&401===t.status?(window.location.href="/login",void r()):e?(cu(t,"Failed to update payment"),void a(e)):(r(),void Wu(!0)))))}))}(this.state.subscription.url_key,"zero",e.id,e.email).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},onScriptError:e=>{lu("Failed to load Stripe Checkout")},stripeKey:"pk_live_plmoOl3lS3k5dMNQViZWGfVR"},qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-credit-card",style:i?ep.button3:ep.button2,disabled:this.state.disabled},i?"Reactivate Subscription":"Update Payment"))),qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement(Zu,{className:"bp3-intent-danger bp3-icon-delete",progressClassName:"bp3-intent-danger",style:ep.button2,disabled:this.state.disabled,label:"Remove License",onConfirm:()=>{this.setState({...this.state,disabled:!0}),Gu("").then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}}),qr.createElement("button",{className:"bp3-button bp3-intent-primary bp3-icon-endorsed",style:ep.button2,disabled:this.state.disabled,onClick:()=>{this.setState({...this.state,update:!0})}},"Update License"))))}render(){return this.state.update?this.update():this.state.subscription.status?this.reactivate():this.activate()}}const np="user.sync",ip="user.traverse",sp="user.filter",rp="user.load",ap="user.unload";const op=new class extends Mu{constructor(){super(...arguments),this._users=Object.freeze([]),this._filter=null,this._map={},this._token=bu.register(this._callback.bind(this))}get users(){return this._users}get usersM(){let e=[];return this._users.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||50}get pages(){return Math.ceil(this.count/this.pageCount)}get filter(){return this._filter}get count(){return this._count||0}user(e){let t=this._map[e];return void 0===t?null:this._users[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_filterCallback(e){(null!==this._filter&&null===e||this._filter==={}&&null!==e||e&&this._filter&&(e.type!==this._filter.type||e.administrator!==this._filter.administrator||e.disabled!==this._filter.disabled||e.role!==this._filter.role))&&this._traverse(0),this._filter=e,this.emitChange()}_sync(e,t){this._map={};for(let t=0;t{ql.get("/user/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to load user"),void i(e)):(bu.dispatch({type:rp,data:{user:s.body}}),void n()))))}))}function dp(){let e=Du();cp=e;let t=(new ju).loading();return new Promise(((n,i)=>{ql.get("/user").query({...op.filter,page:op.page,page_count:op.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===cp){if(s)return cu(r,"Failed to load users"),void i(s);bu.dispatch({type:np,data:{users:r.body.users,count:r.body.count}}),n()}else n()}))}))}function up(e){return bu.dispatch({type:ip,data:{page:e}}),dp()}function pp(e){return bu.dispatch({type:sp,data:{filter:e}}),dp()}function mp(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/user").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete users"),void i(e)):void n())))}))}Hu.register((e=>{if("user.change"===e.type)dp()}));const fp="audit.sync",gp="audit.traverse";const vp=new class extends Mu{constructor(){super(...arguments),this._audits=Object.freeze([]),this._token=bu.register(this._callback.bind(this))}get userId(){return this._userId}get audits(){return this._audits}get auditsM(){let e=[];return this._audits.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||10}get pages(){return Math.ceil(this.count/this.pageCount)}get count(){return this._count||0}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_sync(e,t,n){this._userId=e;for(let e=0;e{ql.get("/audit/"+e).query({page:vp.page,page_count:vp.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((r,a)=>{if(n.done(),a&&401===a.status)return window.location.href="/login",void i();if(t===yp){if(r)return cu(a,"Failed to load audits"),void s(r);bu.dispatch({type:fp,data:{userId:e,audits:a.body.audits,count:a.body.count}}),i()}else i()}))}))}function _p(){return bp(vp.userId)}function Mp(e){return bu.dispatch({type:gp,data:{page:e}}),_p()}Hu.register((e=>{if("audit.change"===e.type)_p()}));const wp={card:{display:"table-row",width:"100%",padding:0,boxShadow:"none"},select:{margin:"2px 0 0 0",paddingTop:"3px",minHeight:"18px"},name:{verticalAlign:"top",display:"table-cell",padding:"8px"},type:{verticalAlign:"top",display:"table-cell",padding:"9px"},lastActivity:{verticalAlign:"top",display:"table-cell",padding:"9px",whiteSpace:"nowrap"},roles:{verticalAlign:"top",display:"table-cell",padding:"0 8px 8px 8px"},tag:{margin:"8px 5px 0 5px",height:"20px"},nameLink:{margin:"0 5px 0 0"}};class Sp extends qr.Component{render(){let e=this.props.user,t=[];for(let n of e.roles)t.push(qr.createElement("div",{className:"bp3-tag bp3-intent-primary",style:wp.tag,key:n},n));let n,i={...wp.card};switch(e.disabled&&(i.opacity=.6),e.type){case"local":n="Local";break;case"google":n="Google";break;case"onelogin":n="OneLogin";break;case"okta":n="Okta";break;case"authzero":n="Auth0";break;case"azure":n="Azure";break;case"api":n="API";break;default:n=e.type}return qr.createElement("div",{className:"bp3-card bp3-row",style:i},qr.createElement("div",{className:"bp3-cell",style:wp.name},qr.createElement("div",{className:"layout horizontal"},qr.createElement("label",{className:"bp3-control bp3-checkbox",style:wp.select},qr.createElement("input",{type:"checkbox",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator"})),qr.createElement(Ul,{to:"/user/"+e.id,style:wp.nameLink},e.username))),qr.createElement("div",{className:"bp3-cell",style:wp.type},n),qr.createElement("div",{className:"bp3-cell",style:wp.lastActivity},Fu(e.last_active)||"Inactive"),qr.createElement("div",{className:"flex bp3-cell",style:wp.roles},qr.createElement("span",{className:"bp3-tag bp3-intent-danger",style:wp.tag,hidden:!e.administrator},"admin"),t))}}class Lp extends qr.Component{render(){return qr.createElement("div",{className:"bp3-input-group",style:this.props.style},qr.createElement("span",{className:"bp3-icon bp3-icon-search"}),qr.createElement("input",{className:"bp3-input bp3-round",type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:this.props.placeholder,value:this.props.value||"",onChange:e=>{this.props.onChange(e.target.value)}}))}}class kp extends qr.Component{render(){let e={...this.props.style};return null!==this.props.checked&&void 0!==this.props.checked||(e.opacity=.5),qr.createElement("label",{className:"bp3-control bp3-switch",style:e},qr.createElement("input",{type:"checkbox",checked:!!this.props.checked,onChange:this.props.onToggle}),qr.createElement("span",{className:"bp3-control-indicator"}),this.props.label)}}const xp={filters:{margin:"-15px 0 5px 0"},input:{width:"200px",margin:"5px"},role:{width:"150px",margin:"5px"},type:{margin:"5px"},check:{margin:"12px 5px 8px 5px"}};class Cp extends qr.Component{constructor(e,t){super(e,t),this.state={menu:!1}}render(){return null===this.props.filter?qr.createElement("div",null):qr.createElement("div",{className:"layout horizontal wrap",style:xp.filters},qr.createElement(Lp,{style:xp.input,placeholder:"Username",value:this.props.filter.username,onChange:e=>{let t={...this.props.filter};e?t.username=e:delete t.username,this.props.onFilter(t)}}),qr.createElement(Lp,{style:xp.role,placeholder:"Role",value:this.props.filter.role,onChange:e=>{let t={...this.props.filter};e?t.role=e:delete t.role,this.props.onFilter(t)}}),qr.createElement("div",{className:"bp3-select",style:xp.type},qr.createElement("select",{value:this.props.filter.type||"any",onChange:e=>{let t={...this.props.filter},n=e.target.value;"any"===n?delete t.type:t.type=n,this.props.onFilter(t)}},qr.createElement("option",{value:"any"},"Any"),qr.createElement("option",{value:"local"},"Local"),qr.createElement("option",{value:"azure"},"Azure"),qr.createElement("option",{value:"google"},"Google"),qr.createElement("option",{value:"onelogin"},"OneLogin"),qr.createElement("option",{value:"okta"},"Okta"),qr.createElement("option",{value:"api"},"API"))),qr.createElement(kp,{style:xp.check,label:"Administrator",checked:this.props.filter.administrator,onToggle:()=>{let e={...this.props.filter};void 0===e.administrator?e.administrator=!0:!0===e.administrator?e.administrator=!1:delete e.administrator,this.props.onFilter(e)}}),qr.createElement(kp,{style:xp.check,label:"Disabled",checked:this.props.filter.disabled,onToggle:()=>{let e={...this.props.filter};void 0===e.disabled?e.disabled=!0:!0===e.disabled?e.disabled=!1:delete e.disabled,this.props.onFilter(e)}}))}}const Tp={page:{margin:"0 auto",padding:"30px 20px",minWidth:"200px",maxWidth:"1100px"},pageWide:{margin:"0 auto",padding:"30px 20px",minWidth:"200px",maxWidth:"1250px"}};class Ep extends qr.Component{render(){return qr.createElement("div",{style:this.props.wide?Tp.pageWide:Tp.page},this.props.children)}}const zp={header:{fontSize:"24px",paddingBottom:"8px",marginBottom:"20px",borderBottomStyle:"solid"},label:{margin:0}};class Ap extends qr.Component{render(){let e;return this.props.label&&(e=qr.createElement("h2",{style:zp.label},this.props.label)),qr.createElement("div",{className:"bp3-border",style:zp.header},e,this.props.children)}}const Hp={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class Dp extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:op.page,pageCount:op.pageCount,pages:op.pages,count:op.count})},this.state={page:op.page,pageCount:op.pageCount,pages:op.pages,count:op.count}}componentDidMount(){op.addChangeListener(this.onChange)}componentWillUnmount(){op.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{up(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{up(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:Hp.button,disabled:0===e,type:"button",onClick:()=>{up(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:Hp.button,disabled:e===t-1,type:"button",onClick:()=>{up(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{up(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const Pp={users:{width:"100%",marginTop:"-5px",display:"table",borderSpacing:"0 5px"},usersBox:{width:"100%",overflowY:"auto"},header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"}};class Op extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{let e=op.users,t={},n=this.state.selected;e.forEach((e=>{n[e.id]&&(t[e.id]=!0)})),this.setState({...this.state,users:e,filter:op.filter,selected:t})},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),mp(Object.keys(this.state.selected)).then((()=>{this.setState({...this.state,selected:{},disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={users:op.users,filter:op.filter,selected:{},lastSelected:null,disabled:!1}}get selected(){for(let e in this.state.selected)if(this.state.selected[e])return!0;return!1}componentDidMount(){op.addChangeListener(this.onChange),Mp(0),dp()}componentWillUnmount(){op.removeChangeListener(this.onChange)}render(){let e=[];this.state.users.forEach((t=>{e.push(qr.createElement(Sp,{key:t.id,user:t,selected:!!this.state.selected[t.id],onSelect:e=>{let n={...this.state.selected};if(e){let e,i,s=this.state.users;for(let n=0;ni&&(i=[e,e=i][0]);for(let t=e;t<=i;t++)n[s[t].id]=!0;return void this.setState({...this.state,lastSelected:t.id,selected:n})}}n[t.id]?delete n[t.id]:n[t.id]=!0,this.setState({...this.state,lastSelected:t.id,selected:n})}}))}));let t="bp3-button bp3-intent-primary bp3-icon-filter ";this.state.filter&&(t+="bp3-active");let n=[];for(let e of Object.keys(this.state.selected)){let t=op.user(e);t?n.push(t.username||e):n.push(e)}return qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Pp.header},qr.createElement("h2",{style:Pp.heading},"Users"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Pp.buttons},qr.createElement("button",{className:t,style:Pp.button,type:"button",onClick:()=>{null===this.state.filter?pp({}):pp(null)}},"Filters"),qr.createElement(Zu,{label:"Delete Selected",className:"bp3-intent-danger bp3-icon-delete",progressClassName:"bp3-intent-danger",safe:!0,style:Pp.button,confirmMsg:"Permanently delete the selected users",confirmInput:!0,items:n,disabled:!this.selected||this.state.disabled,onConfirm:this.onDelete}),qr.createElement(Ul,{className:"bp3-button bp3-intent-success bp3-icon-add",style:Pp.button,to:"/user"},"New")))),qr.createElement(Cp,{filter:this.state.filter,onFilter:e=>{pp(e)}}),qr.createElement("div",{style:Pp.usersBox},qr.createElement("div",{style:Pp.users},e)),qr.createElement(Dp,{onPage:()=>{this.setState({...this.state,selected:{},lastSelected:null})}}))}}const Yp="session.sync",Rp="session.show_removed";const Vp=new class extends Mu{constructor(){super(...arguments),this._sessions=Object.freeze([]),this._token=bu.register(this._callback.bind(this))}get userId(){return this._userId}get sessions(){return this._sessions}get sessionsM(){let e=[];return this._sessions.forEach((t=>{e.push({...t})})),e}get showRemoved(){return this._showRemoved}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_sync(e,t){this._userId=e;for(let e=0;e{ql.get("/session/"+e).query({show_removed:Vp.showRemoved}).set("Accept","application/json").set("Csrf-Token",hu).end(((r,a)=>{if(n.done(),a&&401===a.status)return window.location.href="/login",void i();if(t===Np){if(r)return cu(a,"Failed to load sessions"),void s(r);bu.dispatch({type:Yp,data:{userId:e,sessions:a.body}}),i()}else i()}))}))}function Ip(){return $p(Vp.userId)}Hu.register((e=>{if("session.change"===e.type)Ip()}));const Fp={state:{height:"auto"}};class jp extends qr.Component{constructor(e,t){super(e,t),this.state={initialized:!1}}componentDidMount(){this.timeout=window.setTimeout((()=>{this.setState({...this.state,initialized:!0})}),700)}componentWillUnmount(){this.timeout&&window.clearTimeout(this.timeout)}render(){let e;return this.props.description&&(e=qr.createElement("div",{className:"bp3-non-ideal-state-description"},this.props.description)),qr.createElement("div",{className:"bp3-non-ideal-state",style:Fp.state,hidden:this.props.hidden||!this.state.initialized},qr.createElement("div",{className:"bp3-non-ideal-state-visual bp3-non-ideal-state-icon"},qr.createElement("span",{className:"bp3-icon "+this.props.iconClass})),qr.createElement("h4",{className:"bp3-non-ideal-state-title"},this.props.title),e)}}function Bp(e){return e.continent&&e.continent_code?e.continent+(e.continent_code&&"XX"!==e.continent_code?" ("+e.continent_code+")":""):e.continent||e.continent_code||"Unknown"}function Wp(e){return(e.city&&"Unknown"!==e.city?e.city+", ":"")+(e.region||"Unknown")+(e.region_code&&"XX"!==e.region_code?" ("+e.region_code+")":"")}function Gp(e){return(e.country||"Unknown")+(e.country_code&&"XX"!==e.country_code?" ("+e.country_code+")":"")}function Up(e){return e.latitude&&e.longitude?e.latitude+", "+e.longitude:"Unknown"}const Kp={label:{width:"100%",maxWidth:"280px"},value:{wordWrap:"break-word"},item:{marginBottom:"5px"}};class Xp extends qr.Component{render(){let e,t=[],n=[];for(let e of this.props.fields||[]){if(null==e)continue;let n;if("string"==typeof e.value)n=e.value;else if("number"==typeof e.value)n=e.value.toString();else{n=[];for(let t=0;t{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/session/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete session"),void i(e)):void n())))}))}(this.props.session.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={disabled:!1}}render(){let e=this.props.session,t=e.agent||{},n={...qp.card};return e.removed&&(n.opacity=.6),qr.createElement("div",{className:"bp3-card",style:n},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:qp.group},qr.createElement("div",{style:qp.remove},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-intent-danger bp3-icon-trash",type:"button",hidden:e.removed,disabled:this.state.disabled,onClick:this.onDelete})),qr.createElement(Xp,{style:qp.info,fields:[{label:"ID",value:e.id||"None"},{label:"Created",value:$u(e.timestamp)||"Unknown"},{label:"Last Active",value:$u(e.last_active)||"Unknown"}]})),qr.createElement("div",{style:qp.group},qr.createElement(Xp,{style:qp.info,fields:[{label:"Session Type",value:Ku[e.type]||"Unknown"},{label:"Browser",value:(Xu[t.operating_system]||"Unknown")+" "+(qu[t.browser]||"Unknown")},{label:"ISP",value:t.isp||"Unknown"}]})),qr.createElement("div",{style:qp.group},qr.createElement(Xp,{style:qp.info,fields:[{label:"Location",value:[Wp(t),Gp(t),Bp(t)]},{label:"Coordinates",value:Up(t)},{label:"IP Address",value:t.ip||"Unknown"}]}))))}}const Qp={header:{marginTop:"5px"},heading:{margin:"19px 0 0 0"},button:{margin:"15px 0 -5px 0"}};class Zp extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,sessions:Vp.sessions})},this.state={sessions:Vp.sessions,showEnded:!1,disabled:!1}}componentDidMount(){var e;Vp.addChangeListener(this.onChange),this.props.userId&&(e=this.props.userId,bu.dispatch({type:Rp,data:{showRemoved:!1}}),$p(e))}componentWillUnmount(){Vp.removeChangeListener(this.onChange)}render(){if(!this.props.userId)return qr.createElement("div",null);let e=[];return this.state.sessions.forEach((t=>{t.removed&&!this.state.showEnded||e.push(qr.createElement(Jp,{key:t.id,session:t}))})),qr.createElement("div",null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Qp.header},qr.createElement("h2",{style:Qp.heading},"User Sessions"),qr.createElement("div",{className:"flex"}),qr.createElement("div",null,qr.createElement("button",{className:"bp3-button bp3-minimal",style:Qp.button,type:"button",onClick:()=>{var e;this.setState({...this.state,showEnded:!this.state.showEnded}),e=!this.state.showEnded,bu.dispatch({type:Rp,data:{showRemoved:e}}),Ip()}},(this.state.showEnded?"Hide":"Show")+" ended sessions")))),qr.createElement("div",null,e),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-user",title:"No sessions"}))}}function em(e){const t="==".slice(0,(4-e.length%4)%4),n=e.replace(/-/g,"+").replace(/_/g,"/")+t,i=atob(n),s=new ArrayBuffer(i.length),r=new Uint8Array(s);for(let e=0;esm(e,t[0],n)));if(t instanceof Object){const i={};for(const[s,r]of Object.entries(t)){if(r.deriveFn){const e=r.deriveFn(n);void 0!==e&&(n[s]=e)}if(s in n)null!=n[s]?i[s]=sm(e,r.schema,n[s]):i[s]=null;else if(r.required)throw new Error(`Missing key: ${s}`)}return i}}function rm(e,t){return{required:!0,schema:e,deriveFn:t}}function am(e){return{required:!0,schema:e}}function om(e){return{required:!1,schema:e}}var lm={type:am(nm),id:am(im),transports:om(nm)},cm={appid:om(nm),appidExclude:om(nm),credProps:om(nm)},hm={appid:om(nm),appidExclude:om(nm),credProps:om(nm)},dm={publicKey:am({rp:am(nm),user:am({id:am(im),name:am(nm),displayName:am(nm)}),challenge:am(im),pubKeyCredParams:am(nm),timeout:om(nm),excludeCredentials:om([lm]),authenticatorSelection:om(nm),attestation:om(nm),extensions:om(cm)}),signal:om(nm)},um={type:am(nm),id:am(nm),rawId:am(im),response:am({clientDataJSON:am(im),attestationObject:am(im),transports:rm(nm,(e=>e.getTransports?.()||[]))}),clientExtensionResults:rm(hm,(e=>e.getClientExtensionResults()))};om(nm),am({challenge:am(im),timeout:om(nm),rpId:om(nm),allowCredentials:om([lm]),userVerification:om(nm),extensions:om(cm)}),om(nm),am(nm),am(nm),am(im),am({clientDataJSON:am(im),authenticatorData:am(im),signature:am(im),userHandle:am(im)}),rm(hm,(e=>e.getClientExtensionResults()));async function pm(e){const t=await navigator.credentials.create(function(e){return sm(em,dm,e)}(e));return function(e){return sm(tm,um,e)}(t)}const mm="device.sync";const fm=new class extends Mu{constructor(){super(...arguments),this._devices=Object.freeze([]),this._token=bu.register(this._callback.bind(this))}get userId(){return this._userId}get devices(){return this._devices}get devicesM(){let e=[];return this._devices.forEach((t=>{e.push({...t})})),e}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_sync(e,t){this._userId=e;for(let e=0;e{ql.get("/device/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((r,a)=>{if(n.done(),a&&401===a.status)return window.location.href="/login",void i();if(t===gm){if(r)return cu(a,"Failed to load devices"),void s(r);bu.dispatch({type:mm,data:{userId:e,devices:a.body}}),i()}else i()}))}))}function ym(){return vm(fm.userId)}function bm(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/device").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create device"),void i(e)):void n())))}))}Hu.register((e=>{if("device.change"===e.type)ym()}));const _m={box:{position:"relative",display:"inline"},content:{padding:"20px"},button:{position:"absolute",top:"-7px",left:"-2px",padding:"7px",background:"none",opacity:.3},popover:{width:"230px"},popoverTarget:{top:"9px",left:"18px"},dialog:{maxWidth:"400px",margin:"30px 20px"}};class Mm extends qr.Component{constructor(e,t){super(e,t),this.state={popover:!1}}render(){let e;return this.state.popover&&(e=qr.createElement(Rc,{title:this.props.title,style:_m.dialog,isOpen:this.state.popover,usePortal:!0,portalContainer:document.body,onClose:()=>{this.setState({...this.state,popover:!1})}},qr.createElement("div",{className:"bp3-dialog-body"},this.props.content),qr.createElement("div",{className:"bp3-dialog-footer"},qr.createElement("div",{className:"bp3-dialog-footer-actions"},qr.createElement("button",{className:"bp3-button",type:"button",onClick:()=>{this.setState({...this.state,popover:!this.state.popover})}},"Close"))))),qr.createElement("div",{style:_m.box},qr.createElement("div",{className:"bp3-button bp3-minimal bp3-icon-help",style:_m.button,onClick:()=>{this.setState({...this.state,popover:!this.state.popover})}}),e)}}const wm={label:{display:"inline-block"}};class Sm extends qr.Component{render(){return qr.createElement("div",{hidden:this.props.hidden},qr.createElement("label",{className:"bp3-control bp3-switch",style:wm.label},qr.createElement("input",{type:"checkbox",disabled:this.props.disabled,checked:!!this.props.checked,onChange:this.props.onToggle}),qr.createElement("span",{className:"bp3-control-indicator"}),this.props.label),qr.createElement(Mm,{title:this.props.label,content:this.props.help}))}}const Lm={message:{marginTop:"6px"},box:{marginTop:"15px"},button:{marginLeft:"10px"},buttons:{flexShrink:0}};class km extends qr.Component{render(){let e=this.props.light?null:Lm.box;return this.props.style&&(e={...e,...this.props.style}),qr.createElement("div",{className:"layout horizontal",style:e,hidden:this.props.hidden&&!this.props.children},this.props.children,qr.createElement("div",{className:"flex"}),qr.createElement("div",{className:"layout horizontal"},qr.createElement("span",{style:Lm.message,hidden:!this.props.message},this.props.message),qr.createElement("div",{style:Lm.buttons},qr.createElement("button",{className:"bp3-button bp3-icon-cross",style:Lm.button,hidden:this.props.hidden,type:"button",disabled:!this.props.changed||this.props.disabled,onClick:this.props.onCancel},"Cancel"),qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-tick",style:Lm.button,hidden:this.props.hidden,type:"button",disabled:!this.props.changed||this.props.disabled,onClick:this.props.onSave},"Save"))))}}const xm={label:{width:"100%",maxWidth:"280px"},labelNarrow:{width:"100%",maxWidth:"220px"},input:{width:"100%"}};class Cm extends qr.Component{constructor(){super(...arguments),this.autoSelect=e=>{e.currentTarget.select()}}render(){let e=this.props.value;return e=isNaN(e)?this.props.value||"":this.props.value,qr.createElement("label",{className:"bp3-label",style:this.props.narrow?xm.labelNarrow:xm.label,hidden:this.props.hidden},this.props.label,qr.createElement(Mm,{title:this.props.label,content:this.props.help}),qr.createElement("input",{className:"bp3-input",style:xm.input,type:this.props.type,disabled:this.props.disabled,readOnly:this.props.readOnly,autoCapitalize:"off",spellCheck:!1,placeholder:this.props.placeholder,value:e,onClick:this.props.autoSelect?this.autoSelect:null,onChange:e=>{this.props.onChange&&this.props.onChange(e.target.value)}}))}}const Tm={card:{position:"relative",padding:"10px",marginBottom:"5px"},info:{marginBottom:"-5px"},group:{flex:1,minWidth:"250px"},inputGroup:{marginBottom:"11px",width:"100%",maxWidth:"280px"},remove:{position:"absolute",top:"5px",right:"5px"},controlButton:{marginRight:"10px"},save:{paddingTop:"10px"}};class Em extends qr.Component{constructor(e,t){super(e,t),this.onTestAlert=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/device/"+e+"/alert").set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to send test alert"),void i(e)):void n())))}))}(this.props.device.id).then((()=>{au("Test alert sent"),this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/device/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save device"),void i(e)):void n())))}))}(this.state.device).then((()=>{au("Device name updated"),this.setState({...this.state,disabled:!1,changed:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,changed:!1,device:null})}),1e3)})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/device/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete device"),void i(e)):void n())))}))}(this.props.device.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={disabled:!1,changed:!1,message:"",device:null}}set(e,t){let n;n=this.state.changed?{...this.state.device}:{...this.props.device},n[e]=t,this.setState({...this.state,changed:!0,device:n})}toggleLevel(e){let t;t=this.state.changed?{...this.state.device}:{...this.props.device};let n=Object.assign([],t.alert_levels||[]),i=n.indexOf(e);-1!==i?n.splice(i,1):n.push(e),t.alert_levels=n,this.setState({...this.state,changed:!0,device:t})}render(){let e=this.state.device||this.props.device,t="phone"===this.props.device.mode,n="Unknown";switch(e.type){case"webauthn":n="WebAuthn";break;case"u2f":n="U2F";break;case"smart_card":n="Smart Card";break;case"call":n="Call";break;case"message":n="SMS"}let i,s="Unknown";switch(e.mode){case"secondary":s="Secondary";break;case"ssh":s="SSH";break;case"phone":s="Phone"}e.wan_rp_id?i={label:"WebAuthn Domain",value:e.wan_rp_id}:"smart_card"===e.type?i={label:"SSH Public Key",value:e.ssh_public_key}:"call"!==e.type&&"message"!==e.type||(i={label:"Phone Number",value:e.number});let r="bp3-icon-phone";"message"===e.type&&(r="bp3-icon-mobile-phone");let a,o,l,c={...Tm.card};return e.disabled&&(c.opacity=.6),t?(a=[{label:"ID",value:e.id||"None"}],o=[{label:"Type",value:n},{label:"Mode",value:s},i,{label:"Registered",value:$u(e.timestamp)||"Unknown"},{label:"Last Active",value:$u(e.last_active)||"Unknown"}]):(a=[{label:"ID",value:e.id||"None"},{label:"Type",value:n},i],o=[{label:"Mode",value:s},{label:"Registered",value:$u(e.timestamp)||"Unknown"},{label:"Last Active",value:$u(e.last_active)||"Unknown"}]),t&&(l=qr.createElement(Zu,{label:"Send Test Alert",className:"bp3-intent-success "+r,progressClassName:"bp3-intent-success",style:Tm.controlButton,disabled:this.state.disabled,onConfirm:()=>{this.onTestAlert()}})),qr.createElement("div",{className:"bp3-card",style:c},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Tm.group},qr.createElement("div",{style:Tm.remove},qr.createElement(Zu,{className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",confirmMsg:"Confirm device remove",disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{label:"Device Name",help:"Name of device.",type:"text",placeholder:"Enter name",disabled:this.state.disabled,value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement(Sm,{label:"Low alerts",help:"Recieve low level alerts on this device.",hidden:!t,disabled:this.state.disabled,checked:-1!==(e.alert_levels||[]).indexOf(1),onToggle:()=>{this.toggleLevel(1)}}),qr.createElement(Sm,{label:"Medium alerts",help:"Recieve medium level alerts on this device.",hidden:!t,disabled:this.state.disabled,checked:-1!==(e.alert_levels||[]).indexOf(5),onToggle:()=>{this.toggleLevel(5)}}),qr.createElement(Sm,{label:"High alerts",help:"Recieve high level alerts on this device.",hidden:!t,disabled:this.state.disabled,checked:-1!==(e.alert_levels||[]).indexOf(10),onToggle:()=>{this.toggleLevel(10)}}),qr.createElement(Xp,{style:Tm.info,fields:a})),qr.createElement("div",{style:Tm.group},qr.createElement(Xp,{style:Tm.info,fields:o}))),qr.createElement(km,{style:Tm.save,hidden:!this.state.device&&!this.state.message,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,device:null})},onSave:this.onSave},l))}}const zm={header:{marginTop:"5px"},heading:{margin:"19px 0 0 0"},button:{margin:"15px 0 -5px 0"},group:{marginTop:"18px"},groupBox:{},inputBox:{flex:"1"}};class Am extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,devices:fm.devices})},this.wanRegister=()=>{this.setState({...this.state,disabled:!0});let e=(new ju).loading();ql.get("/device/"+fm.userId+"/webauthn/register").set("Accept","application/json").set("Csrf-Token",hu).end(((t,n)=>{e.done(),t?cu(n,"Failed to request device registration"):this.wanCreate(n.body.token,n.body.options)}))},this.wanCreate=(e,t)=>{pm(t).then((t=>{t.name=this.state.deviceName,t.token=e,this.wanRespond(t)})).catch((e=>{cu(e,"Failed to register device"),this.setState({...this.state,disabled:!1})}))},this.wanRespond=e=>{let t=(new ju).loading();ql.post("/device/"+fm.userId+"/webauthn/register").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,n)=>{t.done(),this.setState({...this.state,disabled:!1,deviceName:""}),e?cu(n,"Failed to register device"):au("Successfully registered device")}))},this.addDevice=()=>{if("smart_card"===this.state.deviceType)this.setState({...this.state,disabled:!0}),bm({id:null,user:this.props.userId,name:this.state.deviceName,type:this.state.deviceType,mode:"ssh",ssh_public_key:this.state.devicePubKey}).then((()=>{this.setState({...this.state,disabled:!1,deviceName:"",devicePubKey:"",devicePhoneNumber:""}),au("Successfully registered device")})).catch((()=>{this.setState({...this.state,disabled:!1})}));else if("phone_call"===this.state.deviceType||"phone_message"===this.state.deviceType){this.setState({...this.state,disabled:!0});let e=this.state.deviceType.split("_"),t=e[0],n=e[1];bm({id:null,user:this.props.userId,name:this.state.deviceName,type:n,mode:t,number:this.state.devicePhoneNumber}).then((()=>{this.setState({...this.state,disabled:!1,deviceName:"",devicePubKey:"",devicePhoneNumber:""}),au("Successfully registered device")})).catch((()=>{this.setState({...this.state,disabled:!1})}))}else this.wanRegister()},this.state={devices:fm.devices,deviceName:"",deviceType:"",devicePubKey:"",devicePhoneNumber:"",showEnded:!1,disabled:!1}}componentDidMount(){fm.addChangeListener(this.onChange),this.props.userId&&vm(this.props.userId)}componentWillUnmount(){fm.removeChangeListener(this.onChange)}render(){if(!this.props.userId)return qr.createElement("div",null);let e=[];return this.state.devices.forEach((t=>{e.push(qr.createElement(Em,{key:t.id,device:t}))})),qr.createElement("div",null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:zm.header},qr.createElement("h2",{style:zm.heading},"User Devices"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:zm.groupBox,className:"layout horizontal"},qr.createElement("div",{className:"bp3-control-group",style:zm.group},qr.createElement("div",{className:"bp3-select"},qr.createElement("select",{value:this.state.deviceType,onChange:e=>{this.setState({...this.state,deviceType:e.target.value,devicePubKey:""})}},qr.createElement("option",{value:"webauthn"},"WebAuthn"),qr.createElement("option",{value:"smart_card"},"Smart Card"),qr.createElement("option",{value:"phone_call"},"Phone (Call)"),qr.createElement("option",{value:"phone_message"},"Phone (SMS)"))),qr.createElement("div",{className:"layout horizontal",style:zm.inputBox},qr.createElement("input",{className:"bp3-input",type:"text",placeholder:"Device name",value:this.state.deviceName,onChange:e=>{this.setState({...this.state,deviceName:e.target.value})},onKeyPress:e=>{"smart_card"!==this.state.deviceType&&"Enter"===e.key&&this.addDevice()}}),qr.createElement("input",{className:"bp3-input",hidden:"smart_card"!==this.state.deviceType,type:"text",placeholder:"Device SSH public key",value:this.state.devicePubKey,onChange:e=>{this.setState({...this.state,devicePubKey:e.target.value})},onKeyPress:e=>{"Enter"===e.key&&this.addDevice()}}),qr.createElement("input",{className:"bp3-input",hidden:"phone_call"!==this.state.deviceType&&"phone_message"!==this.state.deviceType,type:"text",placeholder:"Device phone number",value:this.state.devicePhoneNumber,onChange:e=>{this.setState({...this.state,devicePhoneNumber:e.target.value})},onKeyPress:e=>{"Enter"===e.key&&this.addDevice()}})),qr.createElement("div",null,qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",disabled:this.state.disabled,onClick:this.addDevice},"Add Device")))))),qr.createElement("div",null,e),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-id-number",title:"No devices"}))}}const Hm={card:{position:"relative",padding:"10px",marginBottom:"5px"},info:{marginBottom:"-5px"},group:{flex:1,minWidth:"290px"}};class Dm extends qr.Component{render(){let e=this.props.audit,t=e.agent||{},n=[];for(let t in e.fields)e.fields.hasOwnProperty(t)&&n.push(t+": "+e.fields[t]);return qr.createElement("div",{className:"bp3-card",style:Hm.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Hm.group},qr.createElement(Xp,{style:Hm.info,fields:[{label:"ID",value:e.id||"None"},{label:"Timestamp",value:$u(e.timestamp)||"Unknown"},{label:"Fields",value:n}]})),qr.createElement("div",{style:Hm.group},qr.createElement(Xp,{style:Hm.info,fields:[{label:"Type",value:e.type},{label:"Operating System",value:Xu[t.operating_system]||"Unknown"},{label:"Browser",value:qu[t.browser]||"Unknown"},{label:"ISP",value:t.isp||"Unknown"}]})),qr.createElement("div",{style:Hm.group},qr.createElement(Xp,{style:Hm.info,fields:[{label:"Location",value:[Wp(t),Gp(t),Bp(t)]},{label:"Coordinates",value:Up(t)},{label:"IP Address",value:t.ip||"Unknown"}]}))))}}const Pm={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class Om extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:vp.page,pageCount:vp.pageCount,pages:vp.pages,count:vp.count})},this.state={page:vp.page,pageCount:vp.pageCount,pages:vp.pages,count:vp.count}}componentDidMount(){vp.addChangeListener(this.onChange)}componentWillUnmount(){vp.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{Mp(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{Mp(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:Pm.button,disabled:0===e,type:"button",onClick:()=>{Mp(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:Pm.button,disabled:e===t-1,type:"button",onClick:()=>{Mp(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{Mp(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const Ym={header:{marginTop:"5px"},heading:{margin:"19px 0 0 0"},button:{margin:"10px 0 0 0"}};class Rm extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,audits:vp.audits})},this.state={audits:vp.audits,disabled:!1}}componentDidMount(){vp.addChangeListener(this.onChange),this.props.userId&&bp(this.props.userId)}componentWillUnmount(){vp.removeChangeListener(this.onChange)}render(){if(!this.props.userId)return qr.createElement("div",null);let e=[];return this.state.audits.forEach((t=>{e.push(qr.createElement(Dm,{key:t.id,audit:t}))})),qr.createElement("div",null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Ym.header},qr.createElement("h2",{style:Ym.heading},"User Audit Events"),qr.createElement("div",{className:"flex"}))),qr.createElement("div",null,e),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-search-template",title:"No audit events"}),qr.createElement(Om,null))}}const Vm="sshcertificate.sync",Nm="sshcertificate.traverse";const $m=new class extends Mu{constructor(){super(...arguments),this._sshcertificates=Object.freeze([]),this._token=bu.register(this._callback.bind(this))}get userId(){return this._userId}get sshcertificates(){return this._sshcertificates}get sshcertificatesM(){let e=[];return this._sshcertificates.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||10}get pages(){return Math.ceil(this.count/this.pageCount)}get count(){return this._count||0}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_sync(e,t,n){this._userId=e;for(let e=0;e{ql.get("/sshcertificate/"+e).query({page:$m.page,page_count:$m.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((r,a)=>{if(n.done(),a&&401===a.status)return window.location.href="/login",void i();if(t===Im){if(r)return cu(a,"Failed to load SSH certificates"),void s(r);bu.dispatch({type:Vm,data:{userId:e,certificates:a.body.certificates,count:a.body.count}}),i()}else i()}))}))}function jm(){return Fm($m.userId)}function Bm(e){return bu.dispatch({type:Nm,data:{page:e}}),jm()}Hu.register((e=>{if("sshcertificate.change"===e.type)jm()}));const Wm={card:{position:"relative",padding:"10px",marginBottom:"5px"},info:{marginBottom:"-5px"},group:{flex:1,minWidth:"290px"}};class Gm extends qr.Component{render(){let e=this.props.sshcertificate,t=e.agent||{},n=[];for(let t of e.certificates_info)n.push(t.serial+": "+Fu(t.expires));return qr.createElement("div",{className:"bp3-card",style:Wm.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Wm.group},qr.createElement(Xp,{style:Wm.info,fields:[{label:"ID",value:e.id||"None"},{label:"Timestamp",value:$u(e.timestamp)||"Unknown"},{label:"Authority IDs",value:e.authority_ids}]})),qr.createElement("div",{style:Wm.group},qr.createElement(Xp,{style:Wm.info,fields:[{label:"ISP",value:t.isp||"Unknown"},{label:"Certificate Expirations",value:n}]})),qr.createElement("div",{style:Wm.group},qr.createElement(Xp,{style:Wm.info,fields:[{label:"Location",value:[Wp(t),Gp(t),Bp(t)]},{label:"Coordinates",value:Up(t)},{label:"IP Address",value:t.ip||"Unknown"}]}))))}}const Um={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class Km extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:$m.page,pageCount:$m.pageCount,pages:$m.pages,count:$m.count})},this.state={page:$m.page,pageCount:$m.pageCount,pages:$m.pages,count:$m.count}}componentDidMount(){$m.addChangeListener(this.onChange)}componentWillUnmount(){$m.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{Bm(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{Bm(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:Um.button,disabled:0===e,type:"button",onClick:()=>{Bm(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:Um.button,disabled:e===t-1,type:"button",onClick:()=>{Bm(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{Bm(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const Xm={header:{marginTop:"5px"},heading:{margin:"19px 0 0 0"},button:{margin:"15px 0 0 0"}};class qm extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,sshcertificates:$m.sshcertificates})},this.state={sshcertificates:$m.sshcertificates,disabled:!1}}componentDidMount(){$m.addChangeListener(this.onChange),this.props.userId&&Fm(this.props.userId)}componentWillUnmount(){$m.removeChangeListener(this.onChange)}render(){if(!this.props.userId)return qr.createElement("div",null);let e=[];return this.state.sshcertificates.forEach((t=>{e.push(qr.createElement(Gm,{key:t.id,sshcertificate:t}))})),qr.createElement("div",null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Xm.header},qr.createElement("h2",{style:Xm.heading},"User SSH Certificates"),qr.createElement("div",{className:"flex"}))),qr.createElement("div",null,e),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-endorsed",title:"No SSH certificates"}),qr.createElement(Km,null))}}const Jm={panel:{flex:1,minWidth:"250px",padding:"0 10px"}};class Qm extends qr.Component{render(){return qr.createElement("div",{className:this.props.className,style:Jm.panel,hidden:this.props.hidden},this.props.children)}}class Zm extends qr.Component{render(){return qr.createElement("div",{className:"layout horizontal wrap"},this.props.children)}}const ef={group:{marginBottom:"15px",width:"100%",maxWidth:"280px"},groupList:{marginTop:"5px",width:"100%",maxWidth:"280px"},groupTop:{width:"100%",maxWidth:"280px"},label:{width:"100%",maxWidth:"280px"},input:{width:"100%"},inputBox:{flex:"1"},buttonTop:{marginTop:"5px"}};class tf extends qr.Component{constructor(){super(...arguments),this.autoSelect=e=>{e.currentTarget.select()}}render(){let e="bp3-button";this.props.buttonClass&&(e+=" "+this.props.buttonClass);let t,n,i="";return this.props.labelTop?t=ef.buttonTop:i=this.props.label||"",n=this.props.buttonConfirm?qr.createElement(Zu,{className:e,style:t,progressClassName:"bp3-intent-danger",disabled:this.props.disabled||this.props.buttonDisabled,grouped:!0,onConfirm:this.props.onSubmit,label:i}):qr.createElement("button",{className:e,style:t,disabled:this.props.disabled||this.props.buttonDisabled,onClick:this.props.onSubmit},i),this.props.labelTop?qr.createElement("label",{className:"bp3-label",style:ef.label,hidden:this.props.hidden},this.props.label,qr.createElement(Mm,{title:this.props.label,content:this.props.help}),qr.createElement("div",{className:"bp3-control-group",style:ef.groupTop,hidden:this.props.hidden},qr.createElement("div",{style:ef.inputBox},qr.createElement("input",{className:"bp3-input",style:ef.input,type:this.props.type,disabled:this.props.disabled,readOnly:this.props.readOnly,autoCapitalize:"off",spellCheck:!1,placeholder:this.props.placeholder,value:this.props.value||"",onClick:this.props.autoSelect?this.autoSelect:null,onChange:e=>{this.props.onChange&&this.props.onChange(e.target.value)},onKeyPress:e=>{"Enter"===e.key&&this.props.onSubmit()}})),qr.createElement("div",null,n))):qr.createElement("div",{className:"bp3-control-group",style:this.props.listStyle?ef.groupList:ef.group,hidden:this.props.hidden},qr.createElement("div",{style:ef.inputBox},qr.createElement("input",{className:"bp3-input",style:ef.input,type:this.props.type,disabled:this.props.disabled,readOnly:this.props.readOnly,autoCapitalize:"off",spellCheck:!1,placeholder:this.props.placeholder||"",value:this.props.value||"",onChange:e=>{this.props.onChange&&this.props.onChange(e.target.value)},onKeyPress:e=>{"Enter"===e.key&&this.props.onSubmit()}})),qr.createElement("div",null,n))}}const nf={label:{display:"inline-block"}};class sf extends qr.Component{render(){return qr.createElement("div",{hidden:this.props.hidden},qr.createElement("label",{className:"bp3-label",style:nf.label},this.props.label,qr.createElement(Mm,{title:this.props.label,content:this.props.help}),qr.createElement("div",{className:"bp3-select"},qr.createElement("select",{disabled:this.props.disabled,value:this.props.value||"",onChange:e=>{this.props.onChange(e.target.value)}},this.props.children))))}}var rf=wa+"-datepicker",af=rf+"-caption",of=af+"-measure",lf=rf+"-day-wrapper",cf=rf+"-footer",hf=rf+"-month-select",df=rf+"-year-select",uf=rf+"-navbar",pf=rf+"-timepicker-wrapper",mf=wa+"-daterangepicker",ff=mf+"-shortcuts",gf=wa+"-datetimepicker",vf=wa+"-timepicker",yf=vf+"-arrow-button",bf=vf+"-arrow-row",_f=vf+"-divider-text",Mf=vf+"-hour",wf=vf+"-input",Sf=vf+"-input-row",Lf=vf+"-millisecond",kf=vf+"-minute",xf=vf+"-second",Cf=vf+"-ampm-select";function Tf(e,t){return Ef(e,t)&&e.getDate()===t.getDate()}function Ef(e,t){return null!=e&&null!=t&&e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}function zf(e,t){return null!=e&&null!=t&&e.getHours()===t.getHours()&&e.getMinutes()===t.getMinutes()&&e.getSeconds()===t.getSeconds()&&e.getMilliseconds()===t.getMilliseconds()}function Af(e){return new Date(e.getTime())}function Hf(e,t,n){if(void 0===n&&(n=!1),null==e)return!1;var i=Af(e),s=Af(t[0]),r=Af(t[1]);return i.setHours(0,0,0,0),s.setHours(0,0,0,0),r.setHours(0,0,0,0),s<=i&&i<=r&&(!n||!Tf(s,i)&&!Tf(i,r))}function Df(e,t){return(null==e[0]||Hf(e[0],t))&&(null==e[1]||Hf(e[1],t))}var Pf=function(e,t){return e.getTime()>=t.getTime()},Of=function(e,t){return e.getTime()<=t.getTime()};function Yf(e,t,n){var i=Nf(e),s=Nf(t),r=Nf(n),a=Pf(i,s),o=Of(i,r);return Of(r,s)?a||o:a&&o}function Rf(e,t,n){return zf(t,n)?n:Yf(e,t,n)?e:function(e,t){var n=Nf(e),i=Nf(t);return Pf(n,i)}(e,n)?n:t}function Vf(e,t){return null==e?null:null==t?new Date(e.getFullYear(),e.getMonth(),e.getDate(),0,0,0,0):new Date(e.getFullYear(),e.getMonth(),e.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds())}function Nf(e){return new Date(0,0,0,e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())}function $f(e){if(e<0||e>23)throw new Error("hour must be between [0,23] inclusive: got "+e);return e>=12}function If(e){if(e<0||e>23)throw new Error("hour must be between [0,23] inclusive: got "+e);var t=e%12;return 0===t?12:t}var Ff=n(5727),jf="[Blueprint]",Bf=jf+" defaultValue must be within minDate and maxDate bounds.",Wf=jf+" initialMonth must be within minDate and maxDate bounds.",Gf=jf+" maxDate must be later than minDate.",Uf=jf+" value prop must be within minDate and maxDate bounds.";Bf.replace("DatePicker","DateRangePicker"),Wf.replace("DatePicker","DateRangePicker"),Gf.replace("DatePicker","DateRangePicker"),Uf.replace("DatePicker","DateRangePicker");function Kf(e,t){return e.lengthh&&g.push({value:u,disabled:!0}),this.displayedMonthText=l[d];var y=qr.createElement(Nc,{iconProps:{style:{right:this.state.monthRightOffset}},className:hf,key:"month",minimal:!0,onChange:this.handleMonthSelectChange,value:d,options:f}),b=qr.createElement(Nc,{className:df,key:"year",minimal:!0,onChange:this.handleYearSelectChange,value:u,options:g}),_=this.props.reverseMonthAndYearMenus?[b,y]:[y,b];return qr.createElement("div",{className:this.props.classNames.caption},qr.createElement("div",{className:af,ref:function(t){return e.containerElement=t}},_),qr.createElement(Vc,null))},t.prototype.componentDidMount=function(){var e=this;this.requestAnimationFrame((function(){return e.positionArrows()}))},t.prototype.componentDidUpdate=function(){this.positionArrows()},t.prototype.positionArrows=function(){var e=function(e,t,n){if(void 0===t&&(t=""),void 0===n&&(n=document.body),null==n)return 0;var i=document.createElement("span");i.classList.add(t),i.textContent=e,n.appendChild(i);var s=i.offsetWidth;return i.remove(),s}(this.displayedMonthText,of,this.containerElement),t=null==this.containerElement?0:this.containerElement.firstElementChild.clientWidth,n=Math.max(2,t-e-bc.SIZE_STANDARD-2);this.setState({monthRightOffset:n})},t.prototype.dateChangeHandler=function(e,t){var n=this;return function(i){var s,r,a=parseInt(i.target.value,10);if(!isNaN(a)){var o=Af(n.props.date);e(o,a),null===(r=(s=n.props).onDateChange)||void 0===r||r.call(s,o),null==t||t(a)}}},t=tc([gc.polyfill],t)}(dc);!function(e){e[e.JANUARY=0]="JANUARY",e[e.FEBRUARY=1]="FEBRUARY",e[e.MARCH=2]="MARCH",e[e.APRIL=3]="APRIL",e[e.MAY=4]="MAY",e[e.JUNE=5]="JUNE",e[e.JULY=6]="JULY",e[e.AUGUST=7]="AUGUST",e[e.SEPTEMBER=8]="SEPTEMBER",e[e.OCTOBER=9]="OCTOBER",e[e.NOVEMBER=10]="NOVEMBER",e[e.DECEMBER=11]="DECEMBER"}(Xf||(Xf={}));function Jf(){var e=new Date;return e.setFullYear(e.getFullYear()-20),e.setMonth(Xf.JANUARY,1),e}var Qf,Zf,eg=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleNextClick=function(){return t.props.onNextClick()},t.handlePreviousClick=function(){return t.props.onPreviousClick()},t}return Ql(t,e),t.prototype.render=function(){var e=this.props,t=e.classNames,n=e.month,i=e.maxDate,s=e.minDate;return qr.createElement("div",{className:lc()(uf,t.navBar)},this.props.hideLeftNavButton||qr.createElement(kc,{className:t.navButtonPrev,disabled:Ef(n,s),icon:"chevron-left",minimal:!0,onClick:this.handlePreviousClick}),this.props.hideRightNavButton||qr.createElement(kc,{className:t.navButtonNext,disabled:Ef(n,i),icon:"chevron-right",minimal:!0,onClick:this.handleNextClick}))},t}(qr.PureComponent),tg=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.getShorcutClickHandler=function(e,n){return function(){(0,t.props.onShortcutClick)(e,n)}},t.isShortcutInRange=function(e){var n=t.props;return Df(e,[n.minDate,n.maxDate])},t}return Ql(t,e),t.prototype.render=function(){var e,t,n,i,s,r,a,o,l,c,h,d,u,p=this,m=(!0===this.props.shortcuts?(e=this.props.allowSingleDayRange,t=void 0!==this.props.timePrecision,n=!0===this.props.useSingleDateShortcuts,i=new Date,r=(s=function(e){var t=Af(i);return e(t),t.setDate(t.getDate()+1),t})((function(){return null})),a=s((function(e){return e.setDate(e.getDate()-2)})),o=s((function(e){return e.setDate(e.getDate()-7)})),l=s((function(e){return e.setMonth(e.getMonth()-1)})),c=s((function(e){return e.setMonth(e.getMonth()-3)})),h=s((function(e){return e.setMonth(e.getMonth()-6)})),d=s((function(e){return e.setFullYear(e.getFullYear()-1)})),u=s((function(e){return e.setFullYear(e.getFullYear()-2)})),nc(e||n?[ng("Today",[i,t?r:i]),ng("Yesterday",[a,t?i:a])]:[],[ng(n?"1 week ago":"Past week",[o,i]),ng(n?"1 month ago":"Past month",[l,i]),ng(n?"3 months ago":"Past 3 months",[c,i])],n?[]:[ng("Past 6 months",[h,i])],[ng(n?"1 year ago":"Past year",[d,i])],n?[]:[ng("Past 2 years",[u,i])])):this.props.shortcuts).map((function(e,t){return qr.createElement(Qd,{active:p.props.selectedShortcutIndex===t,className:bo,disabled:!p.isShortcutInRange(e.dateRange),key:t,onClick:p.getShorcutClickHandler(e,t),text:e.label})}));return qr.createElement(tu,{className:ff,tabIndex:0},m)},t.defaultProps={selectedShortcutIndex:-1},t}(qr.PureComponent);function ng(e,t){return{dateRange:t,label:e}}function ig(e,t,n,i){switch(e){case Zf.HOUR_24:n.setHours(t);break;case Zf.HOUR_12:n.setHours(function(e,t){if(e<1||e>12)throw new Error("hour must be between [1,12] inclusive: got "+e);var n=12===e?0:e;return t?n+12:n}(t,i));break;case Zf.MINUTE:n.setMinutes(t);break;case Zf.SECOND:n.setSeconds(t);break;case Zf.MS:n.setMilliseconds(t);break;default:throw Error("Invalid TimeUnit")}return n}function sg(e,t){return null!=t&&!isNaN(t)&&ag(e)<=t&&t<=rg(e)}function rg(e){return fg[e].max}function ag(e){return fg[e].min}!function(e){e.HOUR_24="hour24",e.HOUR_12="hour12",e.MINUTE="minute",e.SECOND="second",e.MS="ms"}(Zf||(Zf={}));var og=0,lg=0,cg=0,hg=0,dg=23,ug=59,pg=59,mg=999,fg=((Qf={})[Zf.HOUR_24]={className:Mf,max:dg,min:og},Qf[Zf.HOUR_12]={className:Mf,max:12,min:1},Qf[Zf.MINUTE]={className:kf,max:ug,min:lg},Qf[Zf.SECOND]={className:xf,max:pg,min:cg},Qf[Zf.MS]={className:Lf,max:mg,min:hg},Qf),gg="millisecond",vg="minute",yg="second",bg=function(e){function t(t,n){var i=e.call(this,t,n)||this;i.getInputChangeHandler=function(e){return function(t){var n=Mg(t);switch(e){case Zf.HOUR_12:case Zf.HOUR_24:i.setState({hourText:n});break;case Zf.MINUTE:i.setState({minuteText:n});break;case Zf.SECOND:i.setState({secondText:n});break;case Zf.MS:i.setState({millisecondText:n})}}},i.getInputBlurHandler=function(e){return function(t){var n,s,r=Mg(t);i.updateTime(parseInt(r,10),e),null===(s=(n=i.props).onBlur)||void 0===s||s.call(n,t,e)}},i.getInputFocusHandler=function(e){return function(t){var n,s;i.props.selectAllOnFocus&&t.currentTarget.select(),null===(s=(n=i.props).onFocus)||void 0===s||s.call(n,t,e)}},i.getInputKeyDownHandler=function(e){return function(t){var n,s,r;!function(e,t,n){void 0===n&&(n=!0);for(var i=0,s=Object.keys(t);i23)throw new Error("hour must be between [0,23] inclusive: got "+e);return t?e%12+12:e%12}(i.state.value.getHours(),t);i.setState({isPm:t},(function(){return i.updateTime(n,Zf.HOUR_24)}))}},i.incrementTime=function(e){return i.shiftTime(e,1)},i.decrementTime=function(e){return i.shiftTime(e,-1)};var s=t.minTime;return null!=t.value?s=t.value:null!=t.defaultValue&&(s=t.defaultValue),i.state=i.getFullStateFromValue(s,t.useAmPm),i}return Ql(t,e),t.prototype.render=function(){var e,t=this.props.precision===gg,n=t||this.props.precision===yg,i=this.props.useAmPm?Zf.HOUR_12:Zf.HOUR_24,s=lc()(vf,this.props.className,((e={})[Ca]=this.props.disabled,e));return qr.createElement("div",{className:s},qr.createElement("div",{className:bf},this.maybeRenderArrowButton(!0,i),this.maybeRenderArrowButton(!0,Zf.MINUTE),n&&this.maybeRenderArrowButton(!0,Zf.SECOND),t&&this.maybeRenderArrowButton(!0,Zf.MS)),qr.createElement("div",{className:Sf},this.renderInput(Mf,i,this.state.hourText),this.renderDivider(),this.renderInput(kf,Zf.MINUTE,this.state.minuteText),n&&this.renderDivider(),n&&this.renderInput(xf,Zf.SECOND,this.state.secondText),t&&this.renderDivider("."),t&&this.renderInput(Lf,Zf.MS,this.state.millisecondText)),this.maybeRenderAmPm(),qr.createElement("div",{className:bf},this.maybeRenderArrowButton(!1,i),this.maybeRenderArrowButton(!1,Zf.MINUTE),n&&this.maybeRenderArrowButton(!1,Zf.SECOND),t&&this.maybeRenderArrowButton(!1,Zf.MS)))},t.prototype.componentDidUpdate=function(e){var t=e.minTime!==this.props.minTime,n=e.maxTime!==this.props.maxTime,i=t||n,s=e.value!==this.props.value,r=t||n||i||s,a=this.state.value;i&&(a=Rf(this.state.value,this.props.minTime,this.props.maxTime)),null==this.props.value||zf(this.props.value,e.value)||(a=this.props.value),r&&this.setState(this.getFullStateFromValue(a,this.props.useAmPm))},t.prototype.maybeRenderArrowButton=function(e,t){var n=this;if(!this.props.showArrowButtons)return null;var i=lc()(yf,fg[t].className);return qr.createElement("span",{tabIndex:-1,className:i,onClick:function(){return(e?n.incrementTime:n.decrementTime)(t)}},qr.createElement(bc,{icon:e?"chevron-up":"chevron-down"}))},t.prototype.renderDivider=function(e){return void 0===e&&(e=":"),qr.createElement("span",{className:_f},e)},t.prototype.renderInput=function(e,t,n){var i,s=sg(t,parseInt(n,10)),r=t===Zf.HOUR_12||t===Zf.HOUR_24;return qr.createElement("input",{className:lc()(wf,(i={},i[Ro(ca)]=!s,i),e),onBlur:this.getInputBlurHandler(t),onChange:this.getInputChangeHandler(t),onFocus:this.getInputFocusHandler(t),onKeyDown:this.getInputKeyDownHandler(t),onKeyUp:this.getInputKeyUpHandler(t),value:n,disabled:this.props.disabled,autoFocus:r&&this.props.autoFocus})},t.prototype.maybeRenderAmPm=function(){return this.props.useAmPm?qr.createElement(Nc,{className:Cf,disabled:this.props.disabled,onChange:this.handleAmPmChange,value:this.state.isPm?"pm":"am"},qr.createElement("option",{value:"am"},"AM"),qr.createElement("option",{value:"pm"},"PM")):null},t.prototype.getFullStateFromValue=function(e,t){var n=Rf(e,this.props.minTime,this.props.maxTime),i=t?Zf.HOUR_12:Zf.HOUR_24;return{hourText:_g(n.getHours(),i),minuteText:_g(n.getMinutes(),Zf.MINUTE),secondText:_g(n.getSeconds(),Zf.SECOND),millisecondText:_g(n.getMilliseconds(),Zf.MS),value:n,isPm:$f(n.getHours())}},t.prototype.shiftTime=function(e,t){if(!this.props.disabled){var n=function(e,t){switch(e){case Zf.HOUR_24:return t.getHours();case Zf.HOUR_12:return If(t.getHours());case Zf.MINUTE:return t.getMinutes();case Zf.SECOND:return t.getSeconds();case Zf.MS:return t.getMilliseconds();default:throw Error("Invalid TimeUnit")}}(e,this.state.value)+t;this.updateTime(function(e,t){var n=rg(e),i=ag(e);return t>n?i:ts?s:l},t.prototype.updateValue=function(e,t,n){var i,s;void 0===n&&(n=!1),n||null===(s=(i=this.props).onChange)||void 0===s||s.call(i,e,t),void 0===this.props.value&&this.setState({value:e})},t.defaultProps={canClearSelection:!0,clearButtonText:"Clear",dayPickerProps:{},highlightCurrentDay:!1,maxDate:(i=new Date,i.setFullYear(i.getFullYear()),i.setMonth(Xf.DECEMBER,31),i),minDate:Jf(),reverseMonthAndYearMenus:!1,shortcuts:!1,showActionsBar:!1,timePickerProps:{},todayButtonText:"Today"},t.displayName="Blueprint3.DatePicker",t=n=tc([gc.polyfill],t)}(dc);var Sg=function(e){function t(t,n){var i=e.call(this,t,n)||this;i.handleDateChange=function(e,t){var n,s;void 0===i.props.value&&i.setState({dateValue:e});var r=Vf(e,i.state.timeValue);null===(s=(n=i.props).onChange)||void 0===s||s.call(n,r,t)},i.handleTimeChange=function(e){var t,n;void 0===i.props.value&&i.setState({timeValue:e});var s=Vf(i.state.dateValue,e);null===(n=(t=i.props).onChange)||void 0===n||n.call(t,s,!0)};var s=void 0!==i.props.value?i.props.value:i.props.defaultValue;return i.state={dateValue:s,timeValue:s},i}return Ql(t,e),t.prototype.render=function(){var e=Vf(this.state.dateValue,this.state.timeValue);return qr.createElement("div",{className:lc()(gf,this.props.className)},qr.createElement(wg,Zl({},this.props.datePickerProps,{canClearSelection:this.props.canClearSelection,onChange:this.handleDateChange,value:e})),qr.createElement(bg,Zl({},this.props.timePickerProps,{onChange:this.handleTimeChange,value:e})))},t.prototype.componentDidUpdate=function(e){this.props.value!==e.value&&(null!=this.props.value?this.setState({dateValue:this.props.value,timeValue:this.props.value}):this.setState({dateValue:null}))},t.defaultProps={canClearSelection:!0,defaultValue:new Date},t.displayName="Blueprint3.DateTimePicker",t=tc([gc.polyfill],t)}(dc);const Lg=new Date(2018,0,1),kg=new Date((new Date).getFullYear()+3,0,0),xg={group:{display:"inline-block"},label:{marginBottom:"5px"}};class Cg extends qr.Component{render(){let e={},t=new Date(this.props.value);return(!this.props.value||this.props.value.includes("0000-12-31")||this.props.value.includes("0001-01-01"))&&(t=null),t&&!this.props.disabled||(e.opacity=.5),qr.createElement("div",{hidden:this.props.hidden},qr.createElement("div",{style:xg.group},qr.createElement("label",{className:"bp3-label",style:xg.label},this.props.label,qr.createElement(Mm,{title:this.props.label,content:this.props.help})),qr.createElement("div",{style:e},qr.createElement(Sg,{value:this.props.disabled?null:t,timePickerProps:{showArrowButtons:!0},datePickerProps:{showActionsBar:!0,minDate:Lg,maxDate:kg},onChange:e=>{this.props.disabled||(e?this.props.onChange(e.toJSON()):this.props.onChange(null))}}))))}}const Tg={message:{marginTop:"6px"},box:{marginTop:"15px"},button:{marginLeft:"10px"},buttons:{flexShrink:0}};class Eg extends qr.Component{render(){return qr.createElement("div",{className:"layout horizontal",style:Tg.box},qr.createElement("div",{className:"flex"}),qr.createElement("div",{className:"layout horizontal"},qr.createElement("span",{style:Tg.message,hidden:!this.props.message},this.props.message),qr.createElement("div",{style:Tg.buttons},qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Tg.button,type:"button",disabled:!this.props.changed||this.props.disabled,onClick:this.props.onSave},"New"))))}}const zg={header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"10px 0 0 0"},role:{margin:"9px 5px 0 5px",height:"20px"}};class Ag extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,user:lp.userM})},this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/user/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save user"),void i(e)):(bu.dispatch({type:rp,data:{user:s.body}}),void n()))))}))}(this.state.user).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1})})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onNew=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/user").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create user"),void i(e)):void n())))}))}(this.state.user).then((()=>{this.setState({...this.state,message:"User has been created",changed:!1,disabled:!1,locked:!0})})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.set=(e,t)=>{let n={...this.state.user};n[e]=t,this.setState({...this.state,changed:!0,message:"",user:n})},this.onAddRole=()=>{let e=[...this.state.user.roles];this.state.addRole&&(-1===e.indexOf(this.state.addRole)&&e.push(this.state.addRole),e.sort(),this.setState({...this.state,changed:!0,message:"",addRole:"",user:{...this.state.user,roles:e}}))},this.onRemoveRole=e=>{let t=[...this.state.user.roles],n=t.indexOf(e);-1!==n&&(t.splice(n,1),this.setState({...this.state,changed:!0,message:"",addRole:"",user:{...this.state.user,roles:t}}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),mp([this.props.userId]).then((()=>{this.setState({...this.state,message:"User has been deleted",changed:!1,disabled:!1,locked:!0})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={changed:!1,disabled:!1,locked:!1,message:"",addRole:"",user:lp.userM}}componentDidMount(){lp.addChangeListener(this.onChange),hp(this.props.userId)}componentWillUnmount(){lp.removeChangeListener(this.onChange),bu.dispatch({type:ap})}render(){let e=this.props.userId,t=this.state.user;if(!t)return qr.createElement("div",null);let n=[];for(let e of t.roles)n.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:zg.role,key:e},e,qr.createElement("button",{className:"bp3-tag-remove",disabled:this.state.locked,onMouseUp:()=>{this.onRemoveRole(e)}})));return qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:zg.header},qr.createElement("h2",{style:zg.heading},e?"User Info":"New User"),qr.createElement("div",{className:"flex"}),qr.createElement("div",null,qr.createElement(Zu,{className:"bp3-minimal bp3-intent-danger bp3-icon-trash",style:zg.button,safe:!0,progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete User",confirmMsg:"Permanently delete this user",confirmInput:!0,items:[t.username],disabled:this.state.disabled,onConfirm:this.onDelete})))),qr.createElement(Zm,null,qr.createElement(Qm,{className:"layout vertical"},qr.createElement(Cm,{disabled:this.state.locked,label:"Username",help:"Username, if using single sign-on username must match",type:"text",placeholder:"Enter username",value:t.username,onChange:e=>{this.set("username",e)}}),qr.createElement(Cm,{hidden:"local"!==t.type,disabled:this.state.locked,label:"Password",help:"Password, leave blank to keep current password",type:"password",placeholder:"Change password",value:t.password,onChange:e=>{this.set("password",e)}}),qr.createElement(Cm,{hidden:"api"!==t.type,disabled:this.state.locked,readOnly:!0,autoSelect:!0,label:"Token",help:"API token",type:"text",placeholder:"Save to generate token",value:t.token}),qr.createElement(Cm,{hidden:"api"!==t.type||!t.token||!t.secret,disabled:this.state.locked,readOnly:!0,autoSelect:!0,label:"Secret",help:"API secret, will only be shown once",type:"text",placeholder:"",value:t.secret}),qr.createElement(Sm,{hidden:"api"!==t.type||!t.token||!!t.secret,label:"Generate new token and secret",help:"Enable to generate a new token and secret on save. Secret can only be shown by generating new credentials.",disabled:this.state.locked,checked:t.generate_secret,onToggle:()=>{this.set("generate_secret",!t.generate_secret)}}),qr.createElement(sf,{disabled:this.state.locked,label:"Type",help:"A local user is a user that is created on the Pritunl Zero database that has a username and password. The other user types can be used to create users for single sign-on services. Generally single sign-on users will be created automatically when the user authenticates for the first time. It can sometimes be desired to manaully create a single sign-on user to provide roles in advanced of the first login.",value:t.type,onChange:e=>{this.set("type",e)}},qr.createElement("option",{value:"local"},"Local"),qr.createElement("option",{value:"authzero"},"Auth0"),qr.createElement("option",{value:"azure"},"Azure"),qr.createElement("option",{value:"google"},"Google"),qr.createElement("option",{value:"onelogin"},"OneLogin"),qr.createElement("option",{value:"okta"},"Okta"),qr.createElement("option",{value:"api"},"API")),qr.createElement("label",{className:"bp3-label"},"Roles",qr.createElement(Mm,{title:"Roles",content:"User roles will be used to match with service roles. A user must have a matching role to access a service."}),qr.createElement("div",null,n)),qr.createElement(tf,{disabled:this.state.locked,buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add role",value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement(Sm,{label:"Administrator",help:"Enable to give user administrator access to the management console",disabled:this.state.locked,checked:"super"===t.administrator,onToggle:()=>{"super"===this.state.user.administrator?this.set("administrator",""):this.set("administrator","super")}}),qr.createElement(Sm,{label:"Disabled",help:"Disables the user ending all active sessions and prevents new authentications",disabled:this.state.locked,checked:t.disabled,onToggle:()=>{this.set("disabled",!this.state.user.disabled)}})),qr.createElement(Qm,null,qr.createElement(Xp,{fields:[{label:"ID",value:t.id||"None"},{label:"Last Active",value:$u(t.last_active)||"Inactive"}]}),qr.createElement(Cg,{label:"Active Until",help:"Set this to schedule the user to be disabled at the set date and time. This is useful to give a user temporary access to a service.",value:t.active_until,disabled:t.disabled||this.state.locked,onChange:e=>{this.set("active_until",e)}}))),e?qr.createElement(km,{message:this.state.message,changed:this.state.changed,disabled:this.state.disabled||this.state.locked,onCancel:()=>{this.setState({...this.state,changed:!1,message:"Your changes have been discarded",addRole:"",user:lp.userM})},onSave:this.onSave}):qr.createElement(Eg,{message:this.state.message,changed:this.state.changed,disabled:this.state.disabled||this.state.locked,onSave:this.onNew}),this.state.locked?null:qr.createElement(Zp,{userId:e}),this.state.locked?null:qr.createElement(Am,{userId:e}),this.state.locked?null:qr.createElement(qm,{userId:e}),this.state.locked?null:qr.createElement(Rm,{userId:e}))}}const Hg="node.sync";const Dg=new class extends Mu{constructor(){super(...arguments),this._nodes=Object.freeze([]),this._map={},this._token=bu.register(this._callback.bind(this))}get nodes(){return this._nodes}get nodesM(){let e=[];return this._nodes.forEach((t=>{e.push({...t})})),e}node(e){let t=this._map[e];return void 0===t?null:this._nodes[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_sync(e){this._map={};for(let t=0;t{e.push({...t})})),e}get servicesName(){return this._services_name}get servicesNameM(){let e=[];return this._services_name.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||20}get pages(){return Math.ceil(this.count/this.pageCount)}get filter(){return this._filter}get count(){return this._count||0}service(e){let t=this._map[e];return void 0===t?null:this._services[t]}serviceName(e){let t=this._map_name[e];return void 0===t?null:this._services_name[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_filterCallback(e){(null!==this._filter&&null===e||this._filter==={}&&null!==e||e&&this._filter&&e.name!==this._filter.name)&&this._traverse(0),this._filter=e,this.emitChange()}_sync(e,t){this._map={};for(let t=0;t{e.push({...t})})),e}authority(e){let t=this._map[e];return void 0===t?null:this._authorities[t]}authoritySecret(e){return this._secrets[e]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_sync(e){this._map={};for(let t=0;t{e.push({...t})})),e}certificate(e){let t=this._map[e];return void 0===t?null:this._certificates[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_sync(e){this._map={};for(let t=0;t{ql.get("/node").set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===Bg){if(s)return cu(r,"Failed to load nodes"),void i(s);bu.dispatch({type:Hg,data:{nodes:r.body}}),n()}else n()}))}))}function qg(){let e=Du();Wg=e;let t=(new ju).loading();return new Promise(((n,i)=>{ql.get("/service").query({...Vg.filter,page:Vg.page,page_count:Vg.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===Wg){if(s)return cu(r,"Failed to load services"),void i(s);bu.dispatch({type:Pg,data:{services:r.body.services,count:r.body.count}}),n()}else n()}))}))}function Jg(e){return bu.dispatch({type:Yg,data:{page:e}}),qg()}function Qg(e){return bu.dispatch({type:Rg,data:{filter:e}}),qg()}function Zg(){let e=Du();Gg=e;let t=(new ju).loading();return new Promise(((n,i)=>{ql.get("/service").query({service_names:"true"}).set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===Gg){if(s)return cu(r,"Failed to load service names"),void i(s);bu.dispatch({type:Og,data:{services:r.body}}),n()}else n()}))}))}function ev(){let e=Du();Ug=e;let t=(new ju).loading();return new Promise(((n,i)=>{ql.get("/authority").set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===Ug){if(s)return cu(r,"Failed to load authorities"),void i(s);bu.dispatch({type:Ng,data:{authorities:r.body}}),n()}else n()}))}))}function tv(e,t){let n=(new ju).loading();return new Promise(((i,s)=>{ql.delete("/authority/"+e+"/token/"+t).set("Csrf-Token",hu).end(((e,t)=>(n.done(),t&&401===t.status?(window.location.href="/login",void i()):e?(cu(t,"Failed to delete authority token"),void s(e)):void i())))}))}function nv(){let e=Du();Kg=e;let t=(new ju).loading();return new Promise(((n,i)=>{ql.get("/certificate").set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===Kg){if(s)return cu(r,"Failed to load certificates"),void i(s);bu.dispatch({type:Fg,data:{certificates:r.body}}),n()}else n()}))}))}Hu.register((e=>{if("node.change"===e.type)Xg()})),Hu.register((e=>{if("service.change"===e.type)qg()})),Hu.register((e=>{if("authority.change"===e.type)ev()})),Hu.register((e=>{if("certificate.change"===e.type)nv()}));const iv={switchLabel:{display:"inline-block",marginBottom:0},inputLabel:{width:"100%",maxWidth:"280px"},input:{width:"100%"}};class sv extends qr.Component{render(){return qr.createElement("div",{hidden:this.props.hidden},qr.createElement("label",{className:"bp3-control bp3-switch",style:iv.switchLabel},qr.createElement("input",{type:"checkbox",checked:!!this.props.value||this.props.checked,onChange:()=>{this.props.value||this.props.checked?this.props.onChange(!1,null):this.props.onChange(!0,this.props.defaultValue)}}),qr.createElement("span",{className:"bp3-control-indicator"}),this.props.label),qr.createElement(Mm,{title:this.props.label,content:this.props.help}),qr.createElement("label",{className:"bp3-label",style:iv.inputLabel},qr.createElement("input",{className:"bp3-input",style:iv.input,hidden:!this.props.value&&!this.props.checked,type:this.props.type,autoCapitalize:"off",spellCheck:!1,placeholder:this.props.placeholder,value:this.props.value||"",onChange:e=>{this.props.onChange(!0,e.target.value)}})))}}const rv={group:{marginBottom:"15px",width:"100%",maxWidth:"280px"},select:{width:"100%",borderTopLeftRadius:"3px",borderBottomLeftRadius:"3px"},selectInner:{width:"100%"},selectBox:{flex:"1"}};class av extends qr.Component{render(){let e="bp3-button";return this.props.buttonClass&&(e+=" "+this.props.buttonClass),qr.createElement("div",{className:"bp3-control-group",style:rv.group,hidden:this.props.hidden},qr.createElement("div",{style:rv.selectBox},qr.createElement("div",{className:"bp3-select",style:rv.select},qr.createElement("select",{style:rv.selectInner,disabled:this.props.disabled,value:this.props.value||"",onChange:e=>{this.props.onChange(e.target.value)}},this.props.children))),qr.createElement("button",{className:e,disabled:this.props.disabled,onClick:this.props.onSubmit},this.props.label))}}const ov={card:{position:"relative",padding:"10px 10px 0 10px",marginBottom:"5px"},remove:{position:"absolute",top:"5px",right:"5px"},item:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px"},save:{paddingBottom:"10px"},label:{width:"100%",maxWidth:"280px"},inputGroup:{width:"100%"},protocol:{minWidth:"90px",flex:"0 1 auto"},port:{minWidth:"120px",flex:"1"}};class lv extends qr.Component{constructor(e,t){super(e,t),this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/node/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save node"),void i(e)):void n())))}))}(this.state.node).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,node:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/node/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete nodes"),void i(e)):void n())))}))}(this.props.node.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddService=()=>{let e;if(!this.state.addService&&!this.props.services.length)return;let t=this.state.addService||this.props.services[0].id;e=this.state.changed?{...this.state.node}:{...this.props.node};let n=[...e.services||[]];-1===n.indexOf(t)&&n.push(t),n.sort(),e.services=n,this.setState({...this.state,changed:!0,node:e})},this.onRemoveService=e=>{let t;t=this.state.changed?{...this.state.node}:{...this.props.node};let n=[...t.services||[]],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.services=n,this.setState({...this.state,changed:!0,node:t}))},this.onAddAuthority=()=>{let e;if(!this.state.addAuthority&&!this.props.authorities.length)return;let t=this.state.addAuthority;if(!t)for(let e of this.props.authorities)if(e.proxy_hosting){t=e.id;break}e=this.state.changed?{...this.state.node}:{...this.props.node};let n=[...e.authorities||[]];-1===n.indexOf(t)&&n.push(t),n.sort(),e.authorities=n,this.setState({...this.state,changed:!0,node:e})},this.onRemoveAuthority=e=>{let t;t=this.state.changed?{...this.state.node}:{...this.props.node};let n=[...t.authorities||[]],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.authorities=n,this.setState({...this.state,changed:!0,node:t}))},this.onAddCert=()=>{let e;if(!this.state.addCert&&!this.props.certificates.length)return;let t=this.state.addCert||this.props.certificates[0].id;e=this.state.changed?{...this.state.node}:{...this.props.node};let n=[...e.certificates||[]];-1===n.indexOf(t)&&n.push(t),n.sort(),e.certificates=n,this.setState({...this.state,changed:!0,node:e})},this.onRemoveCert=e=>{let t;t=this.state.changed?{...this.state.node}:{...this.props.node};let n=[...t.certificates||[]],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.certificates=n,this.setState({...this.state,changed:!0,node:t}))},this.state={disabled:!1,changed:!1,message:"",node:null,addService:null,addAuthority:null,addCert:null,forwardedChecked:!1,forwardedProtoChecked:!1}}set(e,t){let n;n=this.state.changed?{...this.state.node}:{...this.props.node},n[e]=t,this.setState({...this.state,changed:!0,node:n})}toggleType(e){let t=((this.state.node||this.props.node).type||"").split("_"),n=t.indexOf(e);-1===n?t.push(e):t.splice(n,1),t=t.filter((e=>!!e)),t.sort();let i=t.join("_");""===i&&(i="management"),this.set("type",i)}render(){let e=this.state.node||this.props.node,t=0!==e.requests_min||0!==e.memory||0!==e.load1||0!==e.load5||0!==e.load15,n=[];for(let t of e.services||[]){let e=Vg.serviceName(t);e&&n.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:ov.item,key:e.id},e.name,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveService(e.id)}})))}let i=[];if(this.props.services.length)for(let e of this.props.services)i.push(qr.createElement("option",{key:e.id,value:e.id},e.name));else i.push(qr.createElement("option",{key:"null",value:""},"None"));let s=[];for(let t of e.authorities||[]){let e=Ig.authority(t);e&&e.proxy_hosting&&s.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:ov.item,key:e.id},e.name,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveAuthority(e.id)}})))}let r=[];if(this.props.authorities.length)for(let e of this.props.authorities)e.proxy_hosting&&r.push(qr.createElement("option",{key:e.id,value:e.id},e.name));r.length||r.push(qr.createElement("option",{key:"null",value:""},"None"));let a=[];for(let t of e.certificates||[]){let e=jg.certificate(t);e&&a.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:ov.item,key:e.id},e.name,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveCert(e.id)}})))}let o=!1,l=[];if(this.props.certificates.length)for(let e of this.props.certificates)o=!0,l.push(qr.createElement("option",{key:e.id,value:e.id},e.name));return o||(l=[qr.createElement("option",{key:"null",value:""},"No Certificates")]),qr.createElement("div",{className:"bp3-card",style:ov.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:ov.group},qr.createElement("div",{style:ov.remove},qr.createElement(Zu,{className:"bp3-minimal bp3-intent-danger bp3-icon-trash",safe:!0,progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Node",confirmMsg:"Permanently delete this node",confirmInput:!0,items:[e.name],disabled:t||this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{label:"Name",help:"Name of node",type:"text",placeholder:"Enter name",value:e.name,disabled:this.state.disabled,onChange:e=>{this.set("name",e)}}),qr.createElement(Sm,{disabled:this.state.disabled,label:"Management",help:"Provides access to the admin console.",checked:-1!==e.type.indexOf("management"),onToggle:()=>{this.toggleType("management")}}),qr.createElement(Sm,{disabled:this.state.disabled,label:"User",help:"Provides access to the user console for SSH certificates.",checked:-1!==e.type.indexOf("user"),onToggle:()=>{this.toggleType("user")}}),qr.createElement(Sm,{disabled:this.state.disabled,label:"Proxy",help:"Provides access to the services added to the node.",checked:-1!==e.type.indexOf("proxy"),onToggle:()=>{this.toggleType("proxy")}}),qr.createElement(Sm,{disabled:this.state.disabled,label:"Bastion",help:"Host bastion servers on this node.",checked:-1!==e.type.indexOf("bastion"),onToggle:()=>{this.toggleType("bastion")}}),qr.createElement(Cm,{hidden:-1===e.type.indexOf("_")||-1===e.type.indexOf("management"),disabled:this.state.disabled,label:"Management Domain",help:"Domain that will be used to access the management interface.",type:"text",placeholder:"Enter management domain",value:e.management_domain,onChange:e=>{this.set("management_domain",e)}}),qr.createElement(Cm,{hidden:-1===e.type.indexOf("_")||-1===e.type.indexOf("user"),label:"User Domain",help:"Domain that will be used to access the user interface. When using U2F domain must be the same on all nodes with user active. Changing this will invalidate any existing U2F devices.",type:"text",placeholder:"Enter user domain",value:e.user_domain,disabled:this.state.disabled,onChange:e=>{this.set("user_domain",e)}}),qr.createElement(Cm,{disabled:this.state.disabled,hidden:-1===e.type.indexOf("admin")&&-1===e.type.indexOf("user"),label:"WebAuthn Domain",help:"Domain that will be used for WebAuthn relying party identifier. This domain should be the highest level domain for the relevant resources. All other Pritunl Cloud domains handling WebAuthn authentication must be a sub-domain of this domain. Changing this domain will invalidate all existing WebAuthn devices.",type:"text",placeholder:"Enter WebAuthn domain",value:e.webauthn_domain,onChange:e=>{this.set("webauthn_domain",e)}}),qr.createElement("label",{className:"bp3-label",style:ov.label},"Protocol and Port",qr.createElement("div",{className:"bp3-control-group",style:ov.inputGroup},qr.createElement("div",{className:"bp3-select",style:ov.protocol},qr.createElement("select",{value:e.protocol||"https",onChange:e=>{this.set("protocol",e.target.value)}},qr.createElement("option",{value:"http"},"HTTP"),qr.createElement("option",{value:"https"},"HTTPS"))),qr.createElement("input",{className:"bp3-input",style:ov.port,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Port",value:e.port||443,onChange:e=>{this.set("port",parseInt(e.target.value,10))}}))),qr.createElement(Sm,{disabled:this.state.disabled,label:"Web redirect server",help:"Enable redirect server for HTTP requests to HTTPS. Required for Lets Encrypt certificates.",checked:!e.no_redirect_server,onToggle:()=>{this.set("no_redirect_server",!e.no_redirect_server)}}),qr.createElement("label",{className:"bp3-label",style:ov.label,hidden:-1===e.type.indexOf("proxy")},"Services",qr.createElement(Mm,{title:"Services",content:"Services that can be accessed from this node. The nodes certificate must be valid for all the service domains. The node also needs to be able to access all the interal servers of the services."}),qr.createElement("div",null,n)),qr.createElement(av,{hidden:-1===e.type.indexOf("proxy"),label:"Add Service",value:this.state.addService,disabled:this.state.disabled||!this.props.services.length,buttonClass:"bp3-intent-success",onChange:e=>{this.setState({...this.state,addService:e})},onSubmit:this.onAddService},i),qr.createElement("label",{className:"bp3-label",style:ov.label,hidden:-1===e.type.indexOf("bastion")},"Authority Bastions",qr.createElement(Mm,{title:"Authority Bastions",content:"Authorities that will be served with a bastion server."}),qr.createElement("div",null,s)),qr.createElement(av,{label:"Add Authority",hidden:-1===e.type.indexOf("bastion"),value:this.state.addAuthority,disabled:this.state.disabled||!this.props.authorities.length,buttonClass:"bp3-intent-success",onChange:e=>{this.setState({...this.state,addAuthority:e})},onSubmit:this.onAddAuthority},r)),qr.createElement("div",{style:ov.group},qr.createElement(Xp,{fields:[{label:"ID",value:e.id||"None"},{label:"Version",value:e.software_version||"Unknown"},{valueClass:t?"":"bp3-text-intent-danger",label:"Timestamp",value:$u(e.timestamp)||"Inactive"},{label:"Requests",value:e.requests_min+"/min"},{label:"Hostname",value:e.hostname||"Unknown"}],bars:[{progressClass:"bp3-no-stripes bp3-intent-primary",label:"Memory",value:e.memory},{progressClass:"bp3-no-stripes bp3-intent-success",label:"Load1",value:e.load1},{progressClass:"bp3-no-stripes bp3-intent-warning",label:"Load5",value:e.load5},{progressClass:"bp3-no-stripes bp3-intent-danger",label:"Load15",value:e.load15}]}),qr.createElement("label",{className:"bp3-label",style:ov.label,hidden:"http"===e.protocol},"Certificates",qr.createElement(Mm,{title:"Certificates",content:"The certificates to use for this nodes web server. The certificates must be valid for all the domains that this node provides access to. This includes the management domain and any service domains."}),qr.createElement("div",null,a)),qr.createElement(av,{hidden:"http"===e.protocol,label:"Add Certificate",value:this.state.addCert,disabled:this.state.disabled||!o,buttonClass:"bp3-intent-success",onChange:e=>{this.setState({...this.state,addCert:e})},onSubmit:this.onAddCert},l),qr.createElement(sv,{label:"Forwarded for header",help:"Enable when using a load balancer. This header value will be used to get the users IP address. It is important to only enable this when a load balancer is used. If it is enabled without a load balancer users can spoof their IP address by providing a value for the header that will not be overwritten by a load balancer. Additionally the nodes firewall should be configured to only accept requests from the load balancer to prevent requests being sent directly to the node bypassing the load balancer.",type:"text",placeholder:"Forwarded for header",value:e.forwarded_for_header,checked:this.state.forwardedChecked,defaultValue:"X-Forwarded-For",onChange:(e,t)=>{let n;n=this.state.changed?{...this.state.node}:{...this.props.node},n.forwarded_for_header=t,this.setState({...this.state,changed:!0,forwardedChecked:e,node:n})}}),qr.createElement(sv,{label:"Forwarded proto header",help:"Enable when using a load balancer. This header value will be used to get the users protocol. This will redirect users to https when the forwarded protocol is http.",type:"text",placeholder:"Forwarded proto header",value:e.forwarded_proto_header,checked:this.state.forwardedProtoChecked,defaultValue:"X-Forwarded-Proto",onChange:(e,t)=>{let n;n=this.state.changed?{...this.state.node}:{...this.props.node},n.forwarded_proto_header=t,this.setState({...this.state,changed:!0,forwardedProtoChecked:e,node:n})}}))),qr.createElement(km,{style:ov.save,hidden:!this.state.node,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,forwardedChecked:!1,forwardedProtoChecked:!1,node:null})},onSave:this.onSave}))}}const cv={header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"}};class hv extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,nodes:Dg.nodes,services:Vg.servicesName,authorities:Ig.authorities,certificates:jg.certificates})},this.state={nodes:Dg.nodes,services:Vg.servicesName,authorities:Ig.authorities,certificates:jg.certificates,disabled:!1}}componentDidMount(){Dg.addChangeListener(this.onChange),Vg.addChangeListener(this.onChange),Ig.addChangeListener(this.onChange),jg.addChangeListener(this.onChange),Xg(),Zg(),ev(),nv()}componentWillUnmount(){Dg.removeChangeListener(this.onChange),Vg.removeChangeListener(this.onChange),Ig.removeChangeListener(this.onChange),jg.removeChangeListener(this.onChange)}render(){let e=[];return this.state.nodes.forEach((t=>{e.push(qr.createElement(lv,{key:t.id,node:t,services:this.state.services,authorities:this.state.authorities,certificates:this.state.certificates}))})),qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:cv.header},qr.createElement("h2",{style:cv.heading},"Nodes"),qr.createElement("div",{className:"flex"}))),qr.createElement("div",null,e))}}const dv="policy.sync";const uv=new class extends Mu{constructor(){super(...arguments),this._policies=Object.freeze([]),this._map={},this._token=bu.register(this._callback.bind(this))}get policies(){return this._policies}get policiesM(){let e=[];return this._policies.forEach((t=>{e.push({...t})})),e}policy(e){let t=this._map[e];return void 0===t?null:this._policies[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_sync(e){this._map={};for(let t=0;t{ql.get("/policy").set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===fv){if(s)return cu(r,"Failed to load policies"),void i(s);bu.dispatch({type:dv,data:{policies:r.body}}),n()}else n()}))}))}function yv(){let e=Du();gv=e;let t=(new ju).loading();return new Promise(((n,i)=>{ql.get("/settings").set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===gv){if(s)return cu(r,"Failed to sync builds"),void i(s);bu.dispatch({type:pv,data:r.body}),n()}else n()}))}))}Hu.register((e=>{if("policy.change"===e.type)vv()})),Hu.register((e=>{if("settings.change"===e.type)yv()}));const bv={item:{margin:"9px 5px 0 5px",height:"20px"}};class _v extends qr.Component{constructor(e,t){super(e,t),this.onAddValue=e=>{if(!e)return;let t=this.clone(),n=[...t.values];-1===n.indexOf(e)&&n.push(e),n.sort(),t.values=n,this.props.onChange(t)},this.state={addValue:""}}clone(){return{...this.props.rule}}onRemoveValue(e){let t=this.clone(),n=[...t.values],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.values=n,this.props.onChange(t))}render(){let e,t,n,i,s,r=this.props.rule;switch(this.props.rule.type){case"operating_system":t="Permitted Operating Systems",n="Operating system policies",s=Xu;break;case"browser":t="Permitted Browsers",n="Browser policies",s=qu;break;case"location":t="Permitted Locations",n="Location policies",s=Ju;break;case"whitelist_networks":t="Permitted Networks",n="Permitted network policies",i="Add network";break;case"blacklist_networks":t="Blocked Networks",n="Blocked network policies",i="Add network"}let a=[];for(let t in s)s.hasOwnProperty(t)&&(e||(e=t),a.push(qr.createElement("option",{key:t,value:t},s[t])));let o,l=[];for(let e of r.values||[])l.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:bv.item,key:e},s&&s[e]||e,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveValue(e)}})));return o=s?qr.createElement(av,{hidden:null==r.values,buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",value:this.state.addValue,onChange:e=>{this.setState({...this.state,addValue:e})},onSubmit:()=>{this.onAddValue(this.state.addValue||e)}},a):qr.createElement(tf,{hidden:null==r.values,buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:i,value:this.state.addValue,onChange:e=>{this.setState({...this.state,addValue:e})},onSubmit:()=>{this.onAddValue(this.state.addValue),this.setState({...this.state,addValue:null})}}),qr.createElement("div",null,qr.createElement(Sm,{label:n,help:"Turn on to enable policy.",checked:null!=r.values,onToggle:()=>{let e=this.clone();e.values=null==r.values?[]:null,this.props.onChange(e)}}),qr.createElement(Sm,{label:"Disabled user on failure",help:"This will disable the user when the policy check fails. It is generally only useful for the location check to disable a user account when an authentication occurs from a foreign country. It is important to consider that the policy check is the last check that occurs during authentication. An authentication attempt with an incorrect password from a foreign country would not trigger a policy failure or disable the user.",checked:r.disable,hidden:null==r.values,onToggle:()=>{let e=this.clone();e.disable=!e.disable,this.props.onChange(e)}}),qr.createElement("label",{className:"bp3-label",hidden:null==r.values},t,qr.createElement(Mm,{title:t,content:"One of the values must match for the check to pass."}),qr.createElement("div",null,l)),o)}}const Mv={card:{position:"relative",padding:"10px 10px 0 10px",marginBottom:"5px"},remove:{position:"absolute",top:"5px",right:"5px"},item:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px"},save:{paddingBottom:"10px"},label:{width:"100%",maxWidth:"280px"},inputGroup:{width:"100%"},protocol:{flex:"0 1 auto"},port:{flex:"1"}};class wv extends qr.Component{constructor(e,t){super(e,t),this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/policy/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save policy"),void i(e)):void n())))}))}(this.state.policy).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,policy:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/policy/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete policies"),void i(e)):void n())))}))}(this.props.policy.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddService=()=>{let e;if(!this.state.addService&&!this.props.services.length)return;let t=this.state.addService||this.props.services[0].id;e=this.state.changed?{...this.state.policy}:{...this.props.policy};let n=[...e.services];-1===n.indexOf(t)&&n.push(t),n.sort(),e.services=n,this.setState({...this.state,changed:!0,policy:e})},this.onRemoveService=e=>{let t;t=this.state.changed?{...this.state.policy}:{...this.props.policy};let n=[...t.services],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.services=n,this.setState({...this.state,changed:!0,policy:t}))},this.onAddAuthority=()=>{let e;if(!this.state.addAuthority&&!this.props.authorities.length)return;let t=this.state.addAuthority||this.props.authorities[0].id;e=this.state.changed?{...this.state.policy}:{...this.props.policy};let n=[...e.authorities];-1===n.indexOf(t)&&n.push(t),n.sort(),e.authorities=n,this.setState({...this.state,changed:!0,policy:e})},this.onRemoveAuthority=e=>{let t;t=this.state.changed?{...this.state.policy}:{...this.props.policy};let n=[...t.authorities],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.authorities=n,this.setState({...this.state,changed:!0,policy:t}))},this.onAddRole=()=>{let e;e=this.state.changed?{...this.state.policy}:{...this.props.policy};let t=[...e.roles];this.state.addRole&&(-1===t.indexOf(this.state.addRole)&&t.push(this.state.addRole),t.sort(),e.roles=t,this.setState({...this.state,changed:!0,message:"",addRole:"",policy:e}))},this.state={disabled:!1,changed:!1,message:"",policy:null,addService:null,addAuthority:null,addRole:null}}set(e,t){let n;n=this.state.changed?{...this.state.policy}:{...this.props.policy},n[e]=t,this.setState({...this.state,changed:!0,policy:n})}setRule(e,t){let n;n=this.state.changed?{...this.state.policy}:{...this.props.policy};let i={...n.rules};null==t.values?delete i[e]:i[e]=t,n.rules=i,this.setState({...this.state,changed:!0,policy:n})}onRemoveRole(e){let t;t=this.state.changed?{...this.state.policy}:{...this.props.policy};let n=[...t.roles],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.roles=n,this.setState({...this.state,changed:!0,message:"",addRole:"",policy:t}))}render(){let e=this.state.policy||this.props.policy,t=[];for(let n of e.services||[]){let e=Vg.serviceName(n);e&&t.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Mv.item,key:e.id},e.name,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveService(e.id)}})))}let n=[];if(this.props.services.length)for(let e of this.props.services)n.push(qr.createElement("option",{key:e.id,value:e.id},e.name));else n.push(qr.createElement("option",{key:"null",value:""},"None"));let i=[];for(let t of e.authorities||[]){let e=Ig.authority(t);e&&i.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Mv.item,key:e.id},e.name,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveAuthority(e.id)}})))}let s=[];if(this.props.authorities.length)for(let e of this.props.authorities)s.push(qr.createElement("option",{key:e.id,value:e.id},e.name));else s.push(qr.createElement("option",{key:"null",value:""},"None"));let r=[];for(let t of e.roles)r.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Mv.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveRole(t)}})));let a=e.rules.operating_system||{type:"operating_system"},o=e.rules.browser||{type:"browser"},l=e.rules.location||{type:"location"},c=e.rules.whitelist_networks||{type:"whitelist_networks"},h=e.rules.blacklist_networks||{type:"blacklist_networks"},d=[],u=[],p=[],m=[],f=[];if(this.props.providers.length)for(let e of this.props.providers)d.push(e.id),u.push(qr.createElement("option",{key:e.id,value:e.id},e.name)),p.push(qr.createElement("option",{key:e.id,value:e.id},e.name)),m.push(qr.createElement("option",{key:e.id,value:e.id},e.name)),f.push(qr.createElement("option",{key:e.id,value:e.id},e.name));else u.push(qr.createElement("option",{key:"null",value:""},"None")),p.push(qr.createElement("option",{key:"null",value:""},"None")),m.push(qr.createElement("option",{key:"null",value:""},"None")),f.push(qr.createElement("option",{key:"null",value:""},"None"));let g=e.admin_secondary&&-1!==d.indexOf(e.admin_secondary),v=e.user_secondary&&-1!==d.indexOf(e.user_secondary),y=e.proxy_secondary&&-1!==d.indexOf(e.proxy_secondary),b=e.authority_secondary&&-1!==d.indexOf(e.authority_secondary);return qr.createElement("div",{className:"bp3-card",style:Mv.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Mv.group},qr.createElement("div",{style:Mv.remove},qr.createElement(Zu,{safe:!0,className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Policy",confirmMsg:"Permanently delete this policy",confirmInput:!0,items:[e.name],disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{label:"Name",help:"Name of policy",type:"text",placeholder:"Enter name",value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement("label",{className:"bp3-label"},"Roles",qr.createElement(Mm,{title:"Roles",content:"Roles associated with this policy. All requests from users with associated roles must pass this policy check."}),qr.createElement("div",null,r)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add role",value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement("label",{className:"bp3-label",style:Mv.label},"Services",qr.createElement(Mm,{title:"Services",content:"Services associated with this policy. All requests to the associated services must pass this policy check."}),qr.createElement("div",null,t)),qr.createElement(av,{label:"Add Service",value:this.state.addService,disabled:!this.props.services.length,buttonClass:"bp3-intent-success",onChange:e=>{this.setState({...this.state,addService:e})},onSubmit:this.onAddService},n),qr.createElement("label",{className:"bp3-label",style:Mv.label},"Authorities",qr.createElement(Mm,{title:"Authorities",content:"Authorities associated with this policy. All certificate requests to the associated authority must pass this policy check."}),qr.createElement("div",null,i)),qr.createElement(av,{label:"Add Authority",value:this.state.addAuthority,disabled:!this.props.authorities.length,buttonClass:"bp3-intent-success",onChange:e=>{this.setState({...this.state,addAuthority:e})},onSubmit:this.onAddAuthority},s),qr.createElement(Sm,{label:"Admin two-factor authentication",help:"Require admins to use two-factor authentication.",checked:g,onToggle:()=>{if(g)this.set("admin_secondary",null);else{if(0===this.props.providers.length)return void ou("No two-factor authentication providers exist");this.set("admin_secondary",this.props.providers[0].id)}}}),qr.createElement(sf,{disabled:this.state.disabled,label:"Admin Two-Factor Provider",help:"Two-factor authentication provider that will be used. For users matching multiple policies the first provider will be used.",hidden:!g,value:e.admin_secondary,onChange:e=>{this.set("admin_secondary",e)}},u),qr.createElement(Sm,{label:"User two-factor authentication",help:"Require users to use two-factor authentication.",checked:v,onToggle:()=>{if(v)this.set("user_secondary",null);else{if(0===this.props.providers.length)return void ou("No two-factor authentication providers exist");this.set("user_secondary",this.props.providers[0].id)}}}),qr.createElement(sf,{disabled:this.state.disabled,label:"User Two-Factor Provider",help:"Two-factor authentication provider that will be used. For users matching multiple policies the first provider will be used.",hidden:!v,value:e.user_secondary,onChange:e=>{this.set("user_secondary",e)}},p),qr.createElement(Sm,{label:"Service two-factor authentication",help:"Require service users to use two-factor authentication.",checked:y,onToggle:()=>{if(y)this.set("proxy_secondary",null);else{if(0===this.props.providers.length)return void ou("No two-factor authentication providers exist");this.set("proxy_secondary",this.props.providers[0].id)}}}),qr.createElement(sf,{disabled:this.state.disabled,label:"Service Two-Factor Provider",help:"Two-factor authentication provider that will be used. For users matching multiple policies the first provider will be used.",hidden:!y,value:e.proxy_secondary,onChange:e=>{this.set("proxy_secondary",e)}},m),qr.createElement(Sm,{label:"Authority two-factor authentication",help:"Require users retrieving SSH certificates from an authority to use two-factor authentication.",checked:b,onToggle:()=>{if(b)this.set("authority_secondary",null);else{if(0===this.props.providers.length)return void ou("No two-factor authentication providers exist");this.set("authority_secondary",this.props.providers[0].id)}}}),qr.createElement(sf,{disabled:this.state.disabled,label:"Authority Two-Factor Provider",help:"Two-factor authentication provider that will be used. For users matching multiple policies the first provider will be used.",hidden:!b,value:e.authority_secondary,onChange:e=>{this.set("authority_secondary",e)}},f)),qr.createElement("div",{style:Mv.group},qr.createElement(Xp,{fields:[{label:"ID",value:e.id||"None"}]}),qr.createElement(Sm,{label:"Enabled",help:"Enable or disable policy.",checked:!e.disabled,onToggle:()=>{this.set("disabled",!e.disabled)}}),qr.createElement(_v,{rule:c,onChange:e=>{this.setRule("whitelist_networks",e)}}),qr.createElement(_v,{rule:h,onChange:e=>{this.setRule("blacklist_networks",e)}}),qr.createElement(_v,{rule:l,onChange:e=>{this.setRule("location",e)}}),qr.createElement(_v,{rule:a,onChange:e=>{this.setRule("operating_system",e)}}),qr.createElement(_v,{rule:o,onChange:e=>{this.setRule("browser",e)}}),qr.createElement(Sm,{label:"Admin WebAuthn device authentication",help:"Require admins to use WebAuthn device authentication.",checked:e.admin_device_secondary,onToggle:()=>{this.set("admin_device_secondary",!e.admin_device_secondary)}}),qr.createElement(Sm,{label:"User WebAuthn device authentication",help:"Require users to use WebAuthn device authentication.",checked:e.user_device_secondary,onToggle:()=>{this.set("user_device_secondary",!e.user_device_secondary)}}),qr.createElement(Sm,{label:"Service WebAuthn device authentication",help:"Require service users to use WebAuthn device authentication.",checked:e.proxy_device_secondary,onToggle:()=>{this.set("proxy_device_secondary",!e.proxy_device_secondary)}}),qr.createElement(Sm,{label:"Authority WebAuthn device authentication",help:"Require users retrieving SSH certificates from an authority to use WebAuthn device authentication.",checked:e.authority_device_secondary,onToggle:()=>{this.set("authority_device_secondary",!e.authority_device_secondary)}}),qr.createElement(Sm,{label:"Authority require Smart Card",help:"Require users retrieving SSH certificates to use a Smart Card.",checked:e.authority_require_smart_card,onToggle:()=>{this.set("authority_require_smart_card",!e.authority_require_smart_card)}}))),qr.createElement(km,{style:Mv.save,hidden:!this.state.policy,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,policy:null})},onSave:this.onSave}))}}const Sv={header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"}};class Lv extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,policies:uv.policies,services:Vg.servicesName,authorities:Ig.authorities,providers:mv.settings?mv.settings.auth_secondary_providers:[]})},this.state={policies:uv.policies,services:Vg.servicesName,authorities:Ig.authorities,providers:mv.settings?mv.settings.auth_secondary_providers:[],disabled:!1}}componentDidMount(){uv.addChangeListener(this.onChange),Vg.addChangeListener(this.onChange),Ig.addChangeListener(this.onChange),mv.addChangeListener(this.onChange),vv(),Zg(),ev(),yv()}componentWillUnmount(){uv.removeChangeListener(this.onChange),Vg.removeChangeListener(this.onChange),Ig.removeChangeListener(this.onChange),mv.removeChangeListener(this.onChange)}render(){let e=[];return this.state.policies.forEach((t=>{e.push(qr.createElement(wv,{key:t.id,policy:t,services:this.state.services,authorities:this.state.authorities,providers:this.state.providers}))})),qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Sv.header},qr.createElement("h2",{style:Sv.heading},"Policies"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Sv.buttons},qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Sv.button,disabled:this.state.disabled,type:"button",onClick:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/policy").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create policy"),void i(e)):void n())))}))}(null).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"New")))),qr.createElement("div",null,e),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-filter",title:"No policies",description:"Add a new policy to get started."}))}}const kv={box:{marginBottom:"15px"},button:{},item:{margin:"9px 5px 0 5px",height:"20px"},callout:{marginBottom:"15px"},popover:{width:"230px"},popoverTarget:{top:"9px",left:"18px"},dialog:{maxWidth:"480px",margin:"30px 20px"},textarea:{width:"100%",resize:"none",fontSize:"12px",fontFamily:'"Lucida Console", Monaco, monospace'}};class xv extends qr.Component{constructor(e,t){super(e,t),this.onAddRole=()=>{let e=[...this.state.roles];this.state.addRole&&(-1===e.indexOf(this.state.addRole)&&e.push(this.state.addRole),e.sort(),this.setState({...this.state,addRole:"",roles:e}))},this.state={popover:!1,route53:!1,awsAccessKey:"",awsSecretKey:"",hostCertificate:null,hostname:"",server:null,addRole:"",roles:[]}}onRemoveRole(e){let t=[...this.state.roles],n=t.indexOf(e);-1!==n&&(t.splice(n,1),this.setState({...this.state,addRole:"",roles:t}))}render(){let e;if(this.state.popover){let t,n="",i="Use the startup script below to provision a Pritunl Zero host.",s="",r=this.state.hostCertificate,a=!1;null===r&&(r=this.props.authority.host_certificates);let o=new Set,l=null,c=[];if(this.props.nodes)for(let e of this.props.nodes)e.user_domain&&o.add(e.user_domain);this.props.authority.host_tokens.length&&0!==o.size||(r=!1,a=!0),o.forEach((e=>{l||(l=e),c.push(qr.createElement("option",{value:e},e))})),1===o.size&&(c=[]);let h="",d="";if(this.props.proxy){let e=this.props.authority.host_proxy.split("@");2===e.length&&(h=this.props.authority.host_proxy.split("@")[0],-1!==e[1].indexOf(this.props.authority.host_domain)&&(d=e[1].replace("."+this.props.authority.host_domain,""))),h?d||(s="Bastion hostname is not a subdomain of host domain."):s="Bastion host is missing username."}let u="",p="",m="";this.state.route53&&r&&(u="\nsudo yum -y install epel-release || sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm",p=" python2-boto3 python27-boto3",this.state.awsAccessKey&&(m+="\nsudo pritunl-ssh-host config aws-access-key "+this.state.awsAccessKey),this.state.awsSecretKey&&(m+="\nsudo pritunl-ssh-host config aws-secret-key "+this.state.awsSecretKey),m+="\nsudo pritunl-ssh-host config route-53-zone "+this.props.authority.host_domain);let f=[];for(let e of this.state.roles)f.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:kv.item,key:e},e,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveRole(e)}})));this.props.proxy?(i="Open port 9748 and use the startup script below to provision a Pritunl Zero host. Provisioning may take several minutes if the servers DNS record was created recently.",n=`#!/bin/bash\nsudo sed -i '/^TrustedUserCAKeys/d' /etc/ssh/sshd_config\nsudo sed -i '/^AuthorizedPrincipalsFile/d' /etc/ssh/sshd_config\nsudo tee -a /etc/ssh/sshd_config << EOF\n\nMatch User ${h}\n\tAllowAgentForwarding no\n\tAllowTcpForwarding yes\n\tPermitOpen *:22\n\tGatewayPorts no\n\tX11Forwarding no\n\tPermitTunnel no\n\tForceCommand echo 'Pritunl Zero Bastion Host'\n\tTrustedUserCAKeys /etc/ssh/trusted\n\tAuthorizedPrincipalsFile /etc/ssh/principals\nMatch all\nEOF\nsudo tee /etc/ssh/principals << EOF\nbastion\nEOF\nsudo tee /etc/ssh/trusted << EOF\n${this.props.authority.public_key}\nEOF\n\nsudo tee -a /etc/yum.repos.d/pritunl.repo << EOF\n[pritunl]\nname=Pritunl Repository\nbaseurl=https://repo.pritunl.com/stable/yum/centos/7/\ngpgcheck=1\nenabled=1\nEOF\n\ngpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A\ngpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp\nsudo rpm --import key.tmp\nrm -f key.tmp${u}\nsudo yum -y install pritunl-ssh-host${p}\n${m}\nsudo pritunl-ssh-host config add-token ${this.props.authority.host_tokens.length?this.props.authority.host_tokens[0]:"HOST_TOKEN_UNAVAILABLE"}\nsudo pritunl-ssh-host config hostname ${d}\nsudo pritunl-ssh-host config server ${this.state.server||l}\nsudo useradd ${h} || true\n\nsudo systemctl restart sshd || true\nsudo service sshd restart || true`):r?(i="Open port 9748 and use the startup script below to provision a Pritunl Zero host. Provisioning may take several minutes if the servers DNS record was created recently.",n=`#!/bin/bash\nsudo sed -i '/^TrustedUserCAKeys/d' /etc/ssh/sshd_config\nsudo sed -i '/^AuthorizedPrincipalsFile/d' /etc/ssh/sshd_config\nsudo tee -a /etc/ssh/sshd_config << EOF\n\nTrustedUserCAKeys /etc/ssh/trusted\nAuthorizedPrincipalsFile /etc/ssh/principals\nEOF\nsudo tee /etc/ssh/principals << EOF\nemergency\n${this.state.roles.length?this.state.roles.join("\n")+"\n":""}EOF\nsudo tee /etc/ssh/trusted << EOF\n${this.props.authority.public_key}\nEOF\n\nsudo tee -a /etc/yum.repos.d/pritunl.repo << EOF\n[pritunl]\nname=Pritunl Repository\nbaseurl=https://repo.pritunl.com/stable/yum/centos/7/\ngpgcheck=1\nenabled=1\nEOF\n\ngpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A\ngpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp\nsudo rpm --import key.tmp\nrm -f key.tmp${u}\nsudo yum -y install pritunl-ssh-host${p}\n${m}\nsudo pritunl-ssh-host config add-token ${this.props.authority.host_tokens.length?this.props.authority.host_tokens[0]:"HOST_TOKEN_UNAVAILABLE"}\nsudo pritunl-ssh-host config hostname ${this.state.hostname}\nsudo pritunl-ssh-host config server ${this.state.server||l}\n\nsudo systemctl restart sshd || true\nsudo service sshd restart || true`):n=`#!/bin/bash\nsudo sed -i '/^TrustedUserCAKeys/d' /etc/ssh/sshd_config\nsudo sed -i '/^AuthorizedPrincipalsFile/d' /etc/ssh/sshd_config\nsudo tee -a /etc/ssh/sshd_config << EOF\n\nTrustedUserCAKeys /etc/ssh/trusted\nAuthorizedPrincipalsFile /etc/ssh/principals\nEOF\nsudo tee /etc/ssh/principals << EOF\nemergency\n${this.state.roles.length?this.state.roles.join("\n")+"\n":""}EOF\nsudo tee /etc/ssh/trusted << EOF\n${this.props.authority.public_key}\nEOF\n\nsudo systemctl restart sshd || true\nsudo service sshd restart || true`,s&&(t=qr.createElement("div",{className:"bp3-dialog-body"},qr.createElement("div",{className:"bp3-callout bp3-intent-danger bp3-icon-ban-circle",style:kv.callout},s)));let g="";g=this.props.proxy?"Generate Bastion Deploy Script":"Generate Deploy Script",e=qr.createElement(Rc,{title:g,style:kv.dialog,isOpen:this.state.popover,usePortal:!0,portalContainer:document.body,onClose:()=>{this.setState({...this.state,popover:!1})}},t,qr.createElement("div",{className:"bp3-dialog-body",hidden:!!t},qr.createElement("div",{className:"bp3-callout bp3-intent-primary bp3-icon-info-sign",style:kv.callout},i),qr.createElement(Sm,{label:"Host certificate",hidden:!this.props.authority.host_certificates||this.props.proxy,disabled:a,help:"Provision a host certificate to this server, requires installing Pritunl Zero host client. Authority must have at least one host token and at least one node must have a user domain.",checked:r,onToggle:()=>{this.setState({...this.state,hostCertificate:!r})}}),qr.createElement(sf,{hidden:!r||0===c.length||this.props.proxy,label:"Pritunl Zero Server",help:"The Pritunl Zero server hostname that the client will authenticate from.",value:this.state.server||l,onChange:e=>{this.setState({...this.state,server:e})}},c),qr.createElement(Cm,{label:"Server Hostname",hidden:!r||this.props.proxy,help:"Hostname portion of the server domain. The Pritunl Zero server must be able to resolve the server using this hostname to provision the host certificate. The hostname will be combined with the authority domain to form the servers domain.",type:"text",placeholder:"Server hostname",value:this.state.hostname,onChange:e=>{this.setState({...this.state,hostname:e})}}),qr.createElement(Sm,{label:"Auto Route53 configuration",hidden:!r,help:"Automatically update a Route53 record for this servers hostname. The authority domain must be hosted in Route53.",checked:this.state.route53,onToggle:()=>{this.setState({...this.state,route53:!this.state.route53})}}),qr.createElement(Cm,{label:"AWS Access Key",hidden:!r||!this.state.route53,help:"AWS access key for auto Route53 configuration. Leave blank if the instance is configured with an instance role.",type:"text",placeholder:"Leave blank to use instance role",value:this.state.awsAccessKey,onChange:e=>{this.setState({...this.state,awsAccessKey:e})}}),qr.createElement(Cm,{label:"AWS Secret Key",hidden:!r||!this.state.route53,help:"AWS secret key for auto Route53 configuration. Leave blank if the instance is configured with an instance role.",type:"text",placeholder:"Leave blank to use instance role",value:this.state.awsSecretKey,onChange:e=>{this.setState({...this.state,awsSecretKey:e})}}),qr.createElement("label",{className:"bp3-label",hidden:this.props.proxy},"Roles",qr.createElement(Mm,{title:"Roles",content:"Roles associated with this server. The user must have at least one matching role to access this server."}),qr.createElement("div",null,f)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",hidden:this.props.proxy,label:"Add",type:"text",placeholder:"Add role",value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement("textarea",{className:"bp3-input",style:kv.textarea,readOnly:!0,autoCapitalize:"off",spellCheck:!1,rows:18,value:n,onClick:e=>{e.currentTarget.select()}})),qr.createElement("div",{className:"bp3-dialog-footer"},qr.createElement("div",{className:"bp3-dialog-footer-actions"},qr.createElement("button",{className:"bp3-button",type:"button",onClick:()=>{this.setState({...this.state,popover:!this.state.popover})}},"Close"))))}let t="";return t=this.props.proxy?"Generate Bastion Deploy Script":"Generate Deploy Script",qr.createElement("div",{hidden:this.props.hidden,style:kv.box},qr.createElement("button",{className:"bp3-button bp3-icon-cloud-upload bp3-intent-primary",style:kv.button,type:"button",disabled:this.props.disabled||this.props.proxy&&(!this.props.authority.host_proxy||!this.props.authority.host_certificates),onClick:()=>{this.setState({...this.state,popover:!this.state.popover})}},t),e)}}const Cv={label:{width:"100%",maxWidth:"280px"},textarea:{width:"100%",resize:"none",fontSize:"12px",fontFamily:'"Lucida Console", Monaco, monospace'},tab:{fontSize:"12px",lineHeight:"24px",userSelect:"none"}};class Tv extends qr.Component{constructor(e,t){super(e,t),this.state={activeIndex:0}}render(){let e=this.state.activeIndex||0,t=[];for(let n=0;n<(this.props.tabs||[]).length;n++){let i=this.props.tabs[n],s=n;t.push(qr.createElement("li",{key:n,className:"bp3-tab",style:Cv.tab,role:"tab","aria-selected":n==e,onClick:()=>{this.setState({...this.state,activeIndex:s})}},i))}return qr.createElement("label",{className:"bp3-label",style:Cv.label,hidden:this.props.hidden},this.props.label,qr.createElement(Mm,{title:this.props.label,content:this.props.help}),qr.createElement("div",{className:"bp3-tabs"},qr.createElement("ul",{className:"bp3-tab-list .modifier",role:"tablist"},t)),qr.createElement("textarea",{className:"bp3-input",style:Cv.textarea,disabled:this.props.disabled,readOnly:this.props.readOnly,autoCapitalize:"off",spellCheck:!1,placeholder:this.props.placeholder,rows:this.props.rows,value:this.props.values[e]||"",onChange:e=>{this.props.onChange(this.props.tabs[this.state.activeIndex],e.target.value)}}))}}const Ev={card:{position:"relative",padding:"10px 10px 0 10px",marginBottom:"5px"},remove:{position:"absolute",top:"5px",right:"5px"},item:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px"},save:{paddingBottom:"10px"},label:{width:"100%",maxWidth:"280px"},inputGroup:{width:"100%"},hostname:{flex:"1",minWidth:"160px"},port:{width:"60px",flex:"0 1 auto"}};class zv extends qr.Component{constructor(e,t){super(e,t),this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/authority/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save authority"),void i(e)):(s.body&&s.body.hsm_secret&&bu.dispatch({type:$g,data:{id:s.body.id,secret:s.body.hsm_secret}}),void n()))))}))}(this.state.authority).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,authority:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/authority/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete authorities"),void i(e)):void n())))}))}(this.props.authority.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddRole=()=>{let e;e=this.state.changed?{...this.state.authority}:{...this.props.authority};let t=[...e.roles];this.state.addRole&&(-1===t.indexOf(this.state.addRole)&&t.push(this.state.addRole),t.sort(),e.roles=t,this.setState({...this.state,changed:!0,message:"",addRole:"",authority:e}))},this.onAddMatch=()=>{let e;e=this.state.changed?{...this.state.authority}:{...this.props.authority};let t=[...e.host_matches||[]];this.state.addMatch&&(-1===t.indexOf(this.state.addMatch)&&t.push(this.state.addMatch),t.sort(),e.host_matches=t,this.setState({...this.state,changed:!0,message:"",addMatch:"",authority:e}))},this.onAddSubnet=()=>{let e;e=this.state.changed?{...this.state.authority}:{...this.props.authority};let t=[...e.host_subnets||[]];this.state.addSubnet&&(-1===t.indexOf(this.state.addSubnet)&&t.push(this.state.addSubnet),t.sort(),e.host_subnets=t,this.setState({...this.state,changed:!0,message:"",addSubnet:"",authority:e}))},this.state={disabled:!1,changed:!1,message:"",authority:null,addRole:null,addMatch:null,addSubnet:null}}componentWillUnmount(){var e;this.props.authority&&(e=this.props.authority.id,bu.dispatch({type:$g,data:{id:e,secret:null}}))}set(e,t){let n;n=this.state.changed?{...this.state.authority}:{...this.props.authority},n[e]=t,this.setState({...this.state,changed:!0,authority:n})}toggle(e){let t;t=this.state.changed?{...this.state.authority}:{...this.props.authority},t[e]=!t[e],this.setState({...this.state,changed:!0,authority:t})}onRemoveRole(e){let t;t=this.state.changed?{...this.state.authority}:{...this.props.authority};let n=[...t.roles],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.roles=n,this.setState({...this.state,changed:!0,message:"",addRole:"",authority:t}))}onRemoveMatch(e){let t;t=this.state.changed?{...this.state.authority}:{...this.props.authority};let n=[...t.host_matches],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.host_matches=n,this.setState({...this.state,changed:!0,message:"",addMatch:"",authority:t}))}onRemoveSubnet(e){let t;t=this.state.changed?{...this.state.authority}:{...this.props.authority};let n=[...t.host_subnets],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.host_subnets=n,this.setState({...this.state,changed:!0,message:"",addSubnet:"",authority:t}))}render(){let e=this.state.authority||this.props.authority,t=e.info||{},n=window.location.protocol+"//"+window.location.host+"/ssh_public_key/"+e.id,i="pritunl_hsm"===e.type,s=Ig.authoritySecret(e.id),r=[];for(let t of e.roles)r.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Ev.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveRole(t)}})));let a=[];for(let t of e.host_matches||[])a.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Ev.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveMatch(t)}})));let o=[];for(let t of e.host_subnets||[])o.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Ev.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveSubnet(t)}})));let l=[];for(let t of this.props.authority.host_tokens||[])l.push(qr.createElement(tf,{key:t,buttonClass:"bp3-minimal bp3-intent-danger bp3-icon-remove",type:"text",hidden:!e.host_certificates,readOnly:!0,autoSelect:!0,listStyle:!0,buttonDisabled:this.state.changed,buttonConfirm:!0,value:t,onSubmit:()=>{tv(this.props.authority.id,t).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}}));let c=[{label:"ID",value:e.id||"None"},{label:"Algorithm",value:t.key_alg||"None"}];if(e.proxy_hosting&&c.push({label:"Bastion Host",value:this.props.authority.proxy_jump}),i){let e=this.props.authority.hsm_status||"disconnected";c.push({valueClass:"connected"===e?"":"bp3-text-intent-danger",label:"Status",value:e.charAt(0).toUpperCase()+e.substr(1)}),c.push({label:"Timestamp",value:$u(this.props.authority.hsm_timestamp)||"Inactive"})}return qr.createElement("div",{className:"bp3-card",style:Ev.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Ev.group},qr.createElement("div",{style:Ev.remove},qr.createElement(Zu,{safe:!0,className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Authority",confirmMsg:"Permanently delete this authority",confirmInput:!0,items:[e.name],disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{label:"Name",help:"Name of authority",type:"text",placeholder:"Enter name",value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement(sf,{label:"Type",help:"Authority type",value:e.type,onChange:e=>{this.set("type",e)}},qr.createElement("option",{value:"local"},"Local")),qr.createElement(Tv,{readOnly:!0,label:"Public Key",help:"Certificate authority public key in SSH format",placeholder:"Public key",rows:10,tabs:["SSH Format","PEM Format","Root Certificate"],values:[this.props.authority.public_key,this.props.authority.public_key_pem,this.props.authority.root_certificate],onChange:e=>{this.set("key",e)}}),qr.createElement(Sm,{label:"Host certificates",help:"Allow servers to validate and sign SSH host keys. This should be disabled for most configurations.",checked:e.host_certificates,onToggle:()=>{this.toggle("host_certificates")}}),qr.createElement(Sm,{label:"Strict host checking",help:"Enable strict host checking for SSH clients connecting to servers in this domain.",hidden:!e.host_certificates,checked:e.strict_host_checking,onToggle:()=>{this.toggle("strict_host_checking")}}),qr.createElement(Cm,{label:"Host Domain",help:"Domain that will be used for SSH host certificates. All servers must have a subdomain registered on this domain. This should be empty for most configurations.",type:"text",placeholder:"Host domain",value:e.host_domain,onChange:e=>{let t;t=this.state.changed?{...this.state.authority}:{...this.props.authority},t.host_domain=e,this.setState({...this.state,changed:!0,authority:t})}}),qr.createElement(Sm,{label:"Automatic bastion server",help:"Enable automatic bastion servers on nodes using Docker containers. This should be disabled for most configurations.",checked:e.proxy_hosting,onToggle:()=>{this.toggle("proxy_hosting")}}),qr.createElement("label",{className:"bp3-label",style:Ev.label,hidden:!e.proxy_hosting},"Bastion Hostname and Port",qr.createElement(Mm,{title:"Bastion Hostname and Port",content:"Hostname of bastion server and port that SSH nodes will run on. This port cannot be 22 or conflict with existing services on the Pritunl Zero node. Each authority must have a unique bastion port. The bastion hostname will need to point to a Pritunl Zero bastion node or network load balancer in front of Pritunl Zero bastion nodes."}),qr.createElement("div",{className:"bp3-control-group",style:Ev.inputGroup},qr.createElement("input",{className:"bp3-input",style:Ev.hostname,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Hostname",value:e.proxy_hostname,onChange:e=>{this.set("proxy_hostname",e.target.value)}}),qr.createElement("input",{className:"bp3-input",style:Ev.port,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Port",value:e.proxy_port||"",onChange:e=>{e.target.value?this.set("proxy_port",parseInt(e.target.value,10)):this.set("proxy_port",0)}}))),qr.createElement(Cm,{hidden:e.proxy_hosting,label:"Bastion Host",help:"Optional username and hostname of bastion host to proxy client connections for this domain. If the bastion station requires a specific username it must be included such as 'ec2-user@server.domain.com'. Bastion hostname does not need to be in host domain. If strict host checking is enabled bastion host must have a valid certificate. This should be empty for most configurations.",type:"text",placeholder:"Bastion host",value:e.host_proxy,onChange:e=>{this.set("host_proxy",e)}}),qr.createElement(xv,{disabled:this.state.disabled,nodes:this.props.nodes,authority:e,proxy:!1}),qr.createElement(xv,{hidden:e.proxy_hosting||!e.host_proxy,disabled:this.state.disabled||!e.host_proxy,nodes:this.props.nodes,authority:e,proxy:!0})),qr.createElement("div",{style:Ev.group},qr.createElement(Xp,{fields:c}),qr.createElement(Cm,{hidden:"pritunl_hsm"!==e.type,label:"HSM YubiKey Serial",help:"Serial number of YubiKey that will be used to sign certificates. This number can be found on the back of the key.",type:"text",placeholder:"HSM serial",value:e.hsm_serial,onChange:e=>{this.set("hsm_serial",e)}}),qr.createElement(Cm,{hidden:!i,readOnly:!0,label:"HSM Token",help:"Pritunl HSM token.",type:"text",placeholder:"Save to generate token",value:this.props.authority.hsm_token}),qr.createElement(Cm,{hidden:!i||!this.props.authority.hsm_token||!s,readOnly:!0,label:"HSM Secret",help:"Pritunl HSM secret, will only be shown once.",type:"text",placeholder:"",value:s}),qr.createElement(Sm,{hidden:!i,label:"Generate new HSM token and secret",help:"Enable to generate a new token and secret on save. Secret can only be shown by generating new credentials.",checked:e.hsm_generate_secret,onToggle:()=>{this.set("hsm_generate_secret",!e.hsm_generate_secret)}}),qr.createElement(Cm,{label:"Download URL",help:"Public download url for the authority public key. Can be used to wget public key onto servers. Multiple public keys can be downloaded by seperating the IDs with a comma.",type:"text",placeholder:"Enter download URL",readOnly:!0,autoSelect:!0,value:n}),qr.createElement(Cm,{label:"Certificate Expire Minutes",help:"Number of minutes until certificates expire. The certificate only needs to be active when initiating the SSH connection. The SSH connection will stay connected after the certificate expires. Must be greater then 1 and no more then 1440.",type:"text",placeholder:"Certificate expire minutes",value:e.expire,onChange:e=>{this.set("expire",parseInt(e,10))}}),qr.createElement(Cm,{label:"Host Certificate Expire Minutes",help:"Number of minutes until host certificates expire. Must be greater then 14 and no more then 1440.",type:"text",placeholder:"Host certificate expire minutes",hidden:!e.host_certificates,value:e.host_expire,onChange:e=>{this.set("host_expire",parseInt(e,10))}}),qr.createElement(Sm,{label:"Match roles",help:"Require a matching role with the user before giving a certificate. If disabled all users will be given a certificate from this authority. The certificate principles will only contain the users roles.",checked:e.match_roles,onToggle:()=>{this.toggle("match_roles")}}),qr.createElement("label",{className:"bp3-label",hidden:!e.match_roles},"Roles",qr.createElement(Mm,{title:"Roles",content:"Roles associated with this authority. If at least one role matches the user will be given a certificate from this authority. The certificate principles will only contain the users roles."}),qr.createElement("div",null,r)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add role",hidden:!e.match_roles,value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement("label",{className:"bp3-label"},"Custom Matches",qr.createElement(Mm,{title:"Custom Matches",content:"Custom domains that will be proxied through the bastion host. This should be empty for most configurations."}),qr.createElement("div",null,a)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add match",value:this.state.addMatch,onChange:e=>{this.setState({...this.state,addMatch:e})},onSubmit:this.onAddMatch}),qr.createElement("label",{className:"bp3-label"},"Match Subnets",qr.createElement(Mm,{title:"Match Subnets",content:"Subnets that will be proxied through the bastion host. All hosts in the subnets must be accessible from the bastion host. For best security match only private subnets in the same network as the bastion host. Currently only /8, /16, /24 and /32 subnets are supported. This should be empty for most configurations."}),qr.createElement("div",null,o)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add subnet",value:this.state.addSubnet,onChange:e=>{this.setState({...this.state,addSubnet:e})},onSubmit:this.onAddSubnet}),qr.createElement("label",{style:Ev.itemsLabel,hidden:!e.host_certificates},"Host Tokens",qr.createElement(Mm,{title:"Host Tokens",content:"Tokens that servers can use to validate and sign SSH host keys. Changes must be saved before modifying tokens."})),l,qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Ev.itemsAdd,type:"button",disabled:this.state.changed,hidden:!e.host_certificates,onClick:()=>{(function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/authority/"+e+"/token").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create authority token"),void i(e)):void n())))}))})(this.props.authority.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"Add Token"))),qr.createElement(km,{style:Ev.save,hidden:!this.state.authority,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,authority:null})},onSave:this.onSave}))}}const Av={header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 0"},buttons:{marginTop:"8px"},group:{width:"100%"},select:{width:"100%"},selectFirst:{width:"100%",borderTopLeftRadius:"3px",borderBottomLeftRadius:"3px"},selectInner:{width:"100%"},selectBox:{margin:"8px 0 0 8px",flex:"1"}};class Hv extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,authorities:Ig.authorities,nodes:Dg.nodes})},this.state={authorities:Ig.authorities,nodes:Dg.nodes,disabled:!1,algorithm:""}}componentDidMount(){Ig.addChangeListener(this.onChange),Dg.addChangeListener(this.onChange),ev(),Xg()}componentWillUnmount(){Ig.removeChangeListener(this.onChange),Dg.removeChangeListener(this.onChange)}render(){let e=[];return this.state.authorities.forEach((t=>{e.push(qr.createElement(zv,{key:t.id,nodes:this.state.nodes,authority:t}))})),qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Av.header},qr.createElement("h2",{style:Av.heading},"Authorities"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Av.buttons},qr.createElement("div",{className:"bp3-control-group",style:Av.group},qr.createElement("div",{style:Av.selectBox},qr.createElement("div",{className:"bp3-select",style:Av.selectFirst},qr.createElement("select",{style:Av.selectInner,value:this.state.algorithm,onChange:e=>{this.setState({...this.state,algorithm:e.target.value})}},qr.createElement("option",{key:"ecp384",value:"ecp384"},"EC P384"),qr.createElement("option",{key:"rsa4096",value:"rsa4096"},"RSA 4096")))),qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Av.button,disabled:this.state.disabled,type:"button",onClick:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/authority").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create authority"),void i(e)):(s.body&&s.body.hsm_secret&&bu.dispatch({type:$g,data:{id:s.body.id,secret:s.body.hsm_secret}}),void n()))))}))}({id:null,algorithm:this.state.algorithm||"ecp384"}).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"New"))))),qr.createElement("div",null,e),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-office",title:"No authorities",description:"Add a new authority to get started."}))}}const Dv={group:{width:"100%",maxWidth:"310px",marginTop:"5px"},domain:{width:"100%",borderRadius:"0 3px 3px 0"},domainBox:{flex:"1"}};class Pv extends qr.Component{render(){return qr.createElement("div",{className:"bp3-control-group",style:Dv.group},qr.createElement("div",{style:Dv.domainBox},qr.createElement("input",{className:"bp3-input",style:Dv.domain,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Domain",value:this.props.domain||"",onChange:e=>{this.props.onChange(e.target.value)}})),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-intent-danger bp3-icon-remove",onClick:()=>{this.props.onRemove()}}))}}const Ov={label:{width:"100%",maxWidth:"280px"},textarea:{width:"100%",resize:"none",fontSize:"12px",fontFamily:'"Lucida Console", Monaco, monospace'}};class Yv extends qr.Component{render(){return qr.createElement("label",{className:"bp3-label",style:Ov.label,hidden:this.props.hidden},this.props.label,qr.createElement(Mm,{title:this.props.label,content:this.props.help}),qr.createElement("textarea",{className:"bp3-input",style:Ov.textarea,disabled:this.props.disabled,readOnly:this.props.readOnly,autoCapitalize:"off",spellCheck:!1,placeholder:this.props.placeholder,rows:this.props.rows,value:this.props.value||"",onChange:e=>{this.props.onChange(e.target.value)}}))}}const Rv={card:{position:"relative",padding:"10px 10px 0 10px",marginBottom:"5px"},remove:{position:"absolute",top:"5px",right:"5px"},domain:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px"},save:{paddingBottom:"10px"},label:{width:"100%",maxWidth:"280px"},inputGroup:{width:"100%"}};class Vv extends qr.Component{constructor(e,t){super(e,t),this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/certificate/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save certificate"),void i(e)):void n())))}))}(this.state.certificate).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,certificate:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/certificate/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete certificates"),void i(e)):void n())))}))}(this.props.certificate.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddDomain=()=>{let e;e=this.state.changed?{...this.state.certificate}:{...this.props.certificate};let t=[...e.acme_domains,""];e.acme_domains=t,this.setState({...this.state,changed:!0,message:"",addDomain:"",certificate:e})},this.state={disabled:!1,changed:!1,message:"",certificate:null,addDomain:null}}set(e,t){let n;n=this.state.changed?{...this.state.certificate}:{...this.props.certificate},n[e]=t,this.setState({...this.state,changed:!0,certificate:n})}onChangeDomain(e,t){let n;n=this.state.changed?{...this.state.certificate}:{...this.props.certificate};let i=[...n.acme_domains];i[e]=t,n.acme_domains=i,this.setState({...this.state,changed:!0,message:"",certificate:n})}onRemoveDomain(e){let t;t=this.state.changed?{...this.state.certificate}:{...this.props.certificate};let n=[...t.acme_domains];n.splice(e,1),t.acme_domains=n,this.setState({...this.state,changed:!0,message:"",addDomain:"",certificate:t})}render(){let e=this.state.certificate||this.props.certificate,t=this.props.certificate.info||{},n=[];for(let t=0;t{this.onChangeDomain(i,e)},onRemove:()=>{this.onRemoveDomain(i)}}))}return qr.createElement("div",{className:"bp3-card",style:Rv.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Rv.group},qr.createElement("div",{style:Rv.remove},qr.createElement(Zu,{safe:!0,className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Certificate",confirmMsg:"Permanently delete this certificate",confirmInput:!0,items:[e.name],disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{label:"Name",help:"Name of certificate",type:"text",placeholder:"Name",value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement(Yv,{readOnly:"text"!==e.type,label:"Private Key",help:"Certificate private key in PEM format",placeholder:"Private key",rows:6,value:e.key,onChange:e=>{this.set("key",e)}}),qr.createElement(Yv,{readOnly:"text"!==e.type,label:"Certificate Chain",help:"Certificate followed by certificate chain in PEM format",placeholder:"Certificate chain",rows:6,value:e.certificate,onChange:e=>{this.set("certificate",e)}}),qr.createElement("label",{style:Rv.itemsLabel,hidden:"lets_encrypt"!==e.type},"LetsEncrypt Domains",qr.createElement(Mm,{title:"LetsEncrypt Domains",content:"Enter domain names for the certificate. All domains names must point to a Pritunl Zero server in the cluster. The servers must also have port 80 publicy open. The port will need to stay open to renew the certificate."})),qr.createElement("div",{hidden:"lets_encrypt"!==e.type},n),qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Rv.itemsAdd,hidden:"lets_encrypt"!==e.type,type:"button",onClick:this.onAddDomain},"Add Domain")),qr.createElement("div",{style:Rv.group},qr.createElement(Xp,{fields:[{label:"ID",value:e.id||"None"},{label:"Signature Algorithm",value:t.signature_alg||"Unknown"},{label:"Public Key Algorithm",value:t.public_key_alg||"Unknown"},{label:"Issuer",value:t.issuer||"Unknown"},{label:"Issued On",value:$u(t.issued_on)||"Unknown"},{label:"Expires On",value:$u(t.expires_on)||"Unknown"},{label:"DNS Names",value:t.dns_names||"Unknown"}]}),qr.createElement(sf,{label:"Type",help:"Certificate type, use text to provide a certificate. LetsEncrypt provides free certificates that automatically renew.",value:e.type,onChange:e=>{this.set("type",e)}},qr.createElement("option",{value:"text"},"Text"),qr.createElement("option",{value:"lets_encrypt"},"LetsEncrypt")))),qr.createElement(km,{style:Rv.save,hidden:!this.state.certificate,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,certificate:null})},onSave:this.onSave}))}}const Nv={header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"},noCerts:{height:"auto"}};class $v extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,certificates:jg.certificates})},this.state={certificates:jg.certificates,disabled:!1}}componentDidMount(){jg.addChangeListener(this.onChange),nv()}componentWillUnmount(){jg.removeChangeListener(this.onChange)}render(){let e=[];return this.state.certificates.forEach((t=>{e.push(qr.createElement(Vv,{key:t.id,certificate:t}))})),qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Nv.header},qr.createElement("h2",{style:Nv.heading},"Certificates"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Nv.buttons},qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Nv.button,disabled:this.state.disabled,type:"button",onClick:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/certificate").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create certificate"),void i(e)):void n())))}))}(null).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"New")))),qr.createElement("div",null,e),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-endorsed",title:"No certificates",description:"Add a new certificate to get started."}))}}const Iv="endpoint.sync",Fv="endpoint.traverse",jv="endpoint.filter";const Bv=new class extends Mu{constructor(){super(...arguments),this._endpoints=Object.freeze([]),this._filter=null,this._map={},this._token=bu.register(this._callback.bind(this))}get endpoints(){return this._endpoints}get endpointsM(){let e=[];return this._endpoints.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||20}get pages(){return Math.ceil(this.count/this.pageCount)}get filter(){return this._filter}get count(){return this._count||0}endpoint(e){let t=this._map[e];return void 0===t?null:this._endpoints[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_filterCallback(e){(null!==this._filter&&null===e||this._filter==={}&&null!==e||e&&this._filter&&e.name!==this._filter.name)&&this._traverse(0),this._filter=e,this.emitChange()}_sync(e,t){this._map={};for(let t=0;t{ql.get("/endpoint").query({...Bv.filter,page:Bv.page,page_count:Bv.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===Wv){if(s)return cu(r,"Failed to load endpoints"),void i(s);bu.dispatch({type:Iv,data:{endpoints:r.body.endpoints,count:r.body.count}}),n()}else n()}))}))}function Kv(e){return bu.dispatch({type:Fv,data:{page:e}}),Uv()}function Xv(e){return bu.dispatch({type:jv,data:{filter:e}}),Uv()}function qv(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/endpoint/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save endpoint"),void i(e)):void n())))}))}function Jv(e,t,n,i){let s=Du(),r=(new ju).loading();return t=t.replace(/[0-9]/g,""),new Promise(((a,o)=>{let l=ql.get("/endpoint/"+e+"/chart").query({resource:t,period:n.toString(),interval:i.toString()}).set("Accept","application/json").set("Csrf-Token",hu).on("abort",(()=>{r.done(),a(null)}));Gv[s]=l,l.end(((e,t)=>(delete Gv[s],r.done(),t&&401===t.status?(window.location.href="/login",void a(null)):e?(cu(t,"Failed to load endpoint chart"),void o(e)):void a(t.body))))}))}function Qv(){for(let[e,t]of Object.entries(Gv))t.abort()}Hu.register((e=>{if("endpoint.change"===e.type)Uv()}));const Zv="check.sync",ey="check.traverse",ty="check.filter";const ny=new class extends Mu{constructor(){super(...arguments),this._checks=Object.freeze([]),this._filter=null,this._map={},this._token=bu.register(this._callback.bind(this))}get checks(){return this._checks}get checksM(){let e=[];return this._checks.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||20}get pages(){return Math.ceil(this.count/this.pageCount)}get filter(){return this._filter}get count(){return this._count||0}check(e){let t=this._map[e];return void 0===t?null:this._checks[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_filterCallback(e){(null!==this._filter&&null===e||this._filter==={}&&null!==e||e&&this._filter&&e.name!==this._filter.name)&&this._traverse(0),this._filter=e,this.emitChange()}_sync(e,t){this._map={};for(let t=0;t{ql.get("/checks").query({...ny.filter,page:ny.page,page_count:ny.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===iy){if(s)return cu(r,"Failed to load checks"),void i(s);bu.dispatch({type:Zv,data:{checks:r.body.checks,count:r.body.count}}),n()}else n()}))}))}function ay(e){return bu.dispatch({type:ey,data:{page:e}}),ry()}function oy(e){return bu.dispatch({type:ty,data:{filter:e}}),ry()}function ly(e,t,n,i){let s=Du(),r=(new ju).loading();return t=t.replace(/[0-9]/g,""),new Promise(((a,o)=>{let l=ql.get("/checks/"+e+"/chart").query({resource:t,period:n.toString(),interval:i.toString()}).set("Accept","application/json").set("Csrf-Token",hu).on("abort",(()=>{r.done(),a(null)}));sy[s]=l,l.end(((e,t)=>(delete sy[s],r.done(),t&&401===t.status?(window.location.href="/login",void a(null)):e?(cu(t,"Failed to load check chart"),void o(e)):void a(t.body))))}))}function cy(){for(let[e,t]of Object.entries(sy))t.abort()}function hy(e,t){switch(e){case"system":return{title:"System Usage",resource_label:"Percent",resource_type:"float",resource_suffix:"%",resource_fixed:3,resource_min:0,resource_max:100,datasets:[{label:"CPU Usage"},{label:"Memory Usage"},{label:"Swap Usage"},{label:"HugePages Usage"}]};case"load":return{title:"Load Average",resource_label:"Load",resource_type:"float",resource_suffix:"",resource_fixed:4,resource_min:0,datasets:[{label:"Load1"},{label:"Load5"},{label:"Load15"}]};case"disk":let n=t,i=[];for(let e of Object.keys(n).sort())i.push({label:e});return{title:"Disks",resource_label:"Usage",resource_type:"float",resource_suffix:"%",resource_fixed:3,resource_min:0,resource_max:100,hide_zero:!0,datasets:i};case"diskio0":case"diskio1":let s=t,r=[];for(let t of Object.keys(s).sort()){let n=t.split("-"),i=n.slice(0,n.length-1).join("-"),s=n[n.length-1],a="";if("diskio0"===e)switch(s){case"br":a="Read";break;case"bw":a="Written";break;default:continue}else switch(s){case"tr":a="Read";break;case"tw":a="Write";break;case"ti":a="I/O";break;default:continue}r.push({label:i+" "+a})}return"diskio0"===e?{title:"Disk I/O",resource_label:"Activity",resource_type:"bytes",resource_suffix:"",resource_fixed:2,resource_min:0,hide_zero:!0,datasets:r}:{title:"Disk I/O Wait",resource_label:"Waiting",resource_type:"milliseconds",resource_suffix:"",resource_fixed:2,resource_min:0,hide_zero:!0,datasets:r};case"network":let a=t,o=[];for(let e of Object.keys(a).sort()){let t=e.split("-"),n=t.slice(0,t.length-1).join("-"),i="";switch(t[t.length-1]){case"bs":i="Transmitted";break;case"br":i="Received";break;default:i="Unknown"}o.push({label:n+" "+i})}return{title:"Network Traffic",resource_label:"Traffic",resource_type:"bytes",resource_suffix:"",resource_fixed:2,resource_min:0,hide_zero:!0,datasets:o};case"check0":case"check1":case"check2":let l=t,c=[];for(let t of Object.keys(l).sort()){let n=t.split("-"),i=n.slice(0,n.length-1).join("-"),s=n[n.length-1],r="";if("check0"===e){if("u"!==s)continue;r="Up"}else if("check1"===e){if("d"!==s)continue;r="Down"}else if("check2"===e){if("p"!==s)continue;r="Latency"}c.push({label:i+" "+r})}if("check0"===e)return{title:"Targets Up",resource_label:"Up",resource_type:"",resource_suffix:"",resource_fixed:0,resource_min:0,datasets:c};if("check1"===e)return{title:"Targets Down",resource_label:"Down",resource_type:"",resource_suffix:"",resource_fixed:0,resource_min:0,datasets:c};if("check2"===e)return{title:"Average Latency",resource_label:"Latency",resource_type:"milliseconds",resource_suffix:"",resource_fixed:0,resource_min:0,datasets:c}}}function dy(e,t){switch(e){case"system":return[t.cpu_usage,t.mem_usage,t.swap_usage,t.huge_usage];case"load":return[t.load1,t.load5,t.load15];case"disk":let n=t,i=[];for(let e of Object.keys(n).sort())i.push(n[e]);return i;case"diskio0":case"diskio1":let s=t,r=[];for(let t of Object.keys(s).sort()){let n=t.split("-"),i=n[n.length-1];"diskio0"===e?"br"!==i&&"bw"!==i||r.push(s[t]):"tr"!==i&&"tw"!==i&&"ti"!==i||r.push(s[t])}return r;case"network":let a=t,o=[];for(let e of Object.keys(a).sort())o.push(a[e]);return o;case"check0":case"check1":case"check2":let l=t,c=[];for(let t of Object.keys(l).sort()){let n=t.split("-"),i=n[n.length-1];"check0"===e?"u"===i&&c.push(l[t]):"check1"===e?"d"===i&&c.push(l[t]):"check2"===e&&"p"===i&&c.push(l[t])}return c}}Hu.register((e=>{if("check.change"===e.type)ry()}));const uy=["#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00"];class py extends qr.Component{constructor(e,t){super(e,t),this.ticks=e=>{let t=e.ticks,n=[],i=Object.values(this.data)[0],s=36e5,r=i.length;if(r){let e=i[0],t=i[r-1].x-e.x;s=t>=283392e4?6048e5:t>=145152e4?1728e5:t>=61128e4?864e5:t>=27648e4?432e5:t>=8928e4?216e5:36e5}for(let e=0;e{this.labels=hy(this.props.resource,this.data);let e=this,t={type:"line",options:{scales:{x:{type:"time",title:{display:!0,text:"Time",color:fu(),padding:0,font:{weight:"bold"}},time:{unit:"minute",displayFormats:{minute:"HH:mm"}},ticks:{stepSize:1,count:100,maxTicksLimit:100,color:fu(),source:"data"},grid:{color:gu()},beforeTickToLabelConversion:this.ticks},y:{min:this.labels.resource_min,max:this.labels.resource_max,offset:!1,beginAtZero:!0,title:{display:!0,text:this.labels.resource_label,color:fu(),padding:0,font:{weight:"bold"}},ticks:{color:fu(),callback:e=>{switch(this.labels.resource_type){case"bytes":return Ru(e,0);case"milliseconds":return Vu(e);default:return e}}},grid:{color:gu()}}},plugins:{title:{display:!0,text:this.labels.title,color:fu(),padding:3,font:{size:13}},tooltip:{enabled:!1,mode:"index",intersect:!1,backgroundColor:"rgba(0, 0, 0, 0.7)",external:e=>{let t=document.getElementById("chartjs-tooltip");t||(t=document.createElement("div"),t.id="chartjs-tooltip",t.className="bp3-card",t.innerHTML='
',document.body.appendChild(t));const n=e.tooltip;if(0===n.opacity)return void(t.style.opacity="0");let i=this.props.getBoxRect(),s=i.bottom+window.pageYOffset,r=i.top+window.pageYOffset+130,a=0,o=0;if(n.body){const e=n.title||[],s=n.body.map((function(e){return e.lines}));let r="";e.forEach((function(e){r+=''+e+""})),r+="";let l=[];s.forEach((function(e,t){if(!e||!e.length)return;let i=e[0].split(";");if(i.length<2)return;const s=n.labelColors[t];let r="background:"+s.backgroundColor;r+="; border-color:"+s.borderColor;const o='';l.push(''+o+i[0]+""+i[1]+""),a+=1})),o=26.33+17.33*a;let c=o>i.height-130,h="";a=0,l.forEach((function(e,t){c&&!h?h=e:(r+=""+h+e+"",h="",a+=1)})),h&&(r+=""+h+"",h="",a+=1),o=26.33+17.33*a,r+="",t.querySelector("table").innerHTML=r}t=document.getElementById("chartjs-tooltip");const l=e.chart.canvas.getBoundingClientRect();t.style.opacity="1",t.style.position="absolute",this.props.left?(t.style.right="",t.style.left=document.body.offsetWidth-l.right+window.pageXOffset-18+"px"):(t.style.left="",t.style.right=document.body.offsetWidth-l.left+window.pageXOffset+3+"px");let c=Math.round(l.top+l.height/2-o/2+window.pageYOffset);o>i.height-130?c=Math.round(i.top+i.height/2-o/2+window.pageYOffset):cs&&(c=s-o),t.style.top=c+"px",t.style.pointerEvents="none"},callbacks:{label(t){let n=t.raw;if(e.labels.hide_zero&&!n.y)return"";let i="";if(n)switch(e.labels.resource_type){case"bytes":i=Ru(n.y,e.labels.resource_fixed);break;case"milliseconds":i=Vu(n.y);break;case"float":i=n.y.toFixed(e.labels.resource_fixed);break;default:i=n.y}let s=t.dataset;return e.labels.resource_fixed,s.label+";"+i+e.labels.resource_suffix}}}}},data:{datasets:[]}},n=dy(this.props.resource,this.data);for(let e=0;e{s&&(s=!1,this.props.onLoaded()),e&&e.has_data&&e.data?(this.state.hidden&&this.setState({...this.state,hidden:!1}),this.data=e.data,this.chart?this.updateChart():this.chart=new vs(this.chartRef.current,this.config())):this.state.hidden||this.setState({...this.state,hidden:!0})})).catch((()=>{s&&(s=!1,this.props.onLoaded())}))}updateChart(){try{this.labels=hy(this.props.resource,this.data);let e=dy(this.props.resource,this.data),t=e.length,n=this.chart.data.datasets.length;for(let i=0;in)for(let i=n;it)for(let e=0;e{t&&(t=!1,this.props.onLoaded()),e&&e.has_data&&e.data?(this.state.hidden&&this.setState({...this.state,hidden:!1}),this.data=e.data,this.chart=new vs(this.chartRef.current,this.config())):this.state.hidden||this.setState({...this.state,hidden:!0})})).catch((()=>{t&&(t=!1,this.props.onLoaded())}))}componentWillUnmount(){this.chart&&this.chart.destroy()}render(){return void 0===this.sync||void 0===this.period||void 0===this.interval||this.props.sync===this.sync&&this.props.period===this.period&&this.props.interval===this.interval||this.update(this.props.sync,this.props.period,this.props.interval),qr.createElement("canvas",{hidden:this.state.hidden,ref:this.chartRef})}}const my={header:{fontSize:"20px",marginTop:"-10px",paddingBottom:"2px",marginBottom:"10px",borderBottomStyle:"solid"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"},group:{flex:1,minWidth:"250px",margin:"0 10px"},chartGroup:{flex:1,minWidth:"250px",margin:"0 10px",marginBottom:"15px"}};class fy extends qr.Component{constructor(e,t){super(e,t),this.state={sync:0,period:1440,interval:30,loading:{},cancelable:{}},this.loading={},this.chartBoxRef=qr.createRef()}getDefaultInterval(e){switch(e){case 60:return 1;case 180:case 360:return 5;case 720:case 1440:return 30;case 4320:return 60;case 10080:return 120;case 20160:default:return 360;case 43200:return 720;case 86400:case 129600:return 1440;case 172800:return 4320}}setLoading(e){this.loading[e]=!0;let t={...this.state.loading};t[e]=!0,setTimeout((()=>{if(this.loading[e]){let t={...this.state.cancelable};t[e]=!0,this.setState({...this.state,cancelable:t})}}),3e3),this.setState({...this.state,loading:t})}setLoaded(e){delete this.loading[e];let t={...this.state.loading};delete t[e];let n={...this.state.cancelable};delete n[e],this.setState({...this.state,loading:t,cancelable:n})}render(){if(this.props.disabled)return qr.createElement("div",null);let e=0,t=0;this.state.period>43200?e=120:this.state.period>20160?e=30:this.state.period>4320&&(e=5),t=this.state.period<=60?30:this.state.period<=180?60:this.state.period<=360?120:this.state.period<=720?360:this.state.period<=1440?720:this.state.period<=4320?1440:this.state.period<=10080?4320:10080;let n=!1,i="",s="bp3-button";return Object.entries(this.state.cancelable).length?(i="Cancel",s+=" bp3-intent-warning bp3-icon-delete"):(Object.entries(this.state.loading).length&&(n=!0),i="Refresh",s+=" bp3-intent-success bp3-icon-refresh"),qr.createElement("div",{ref:this.chartBoxRef},qr.createElement("div",{className:"layout horizontal wrap bp3-border",style:my.header},qr.createElement("h3",{style:my.heading},"Charts"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:my.buttons},qr.createElement("button",{className:s,style:my.button,disabled:n,type:"button",onClick:()=>{Object.entries(this.state.cancelable).length?Qv():this.setState({...this.state,sync:this.state.sync+1})}},i))),qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:my.group},qr.createElement(sf,{label:"Time Range",help:"Select chart time range.",value:this.state.period.toString(),onChange:e=>{let t=parseInt(e,10);this.setState({...this.state,period:t,interval:this.getDefaultInterval(t)})}},qr.createElement("option",{value:"60"},"1 hour"),qr.createElement("option",{value:"180"},"3 hours"),qr.createElement("option",{value:"360"},"6 hours"),qr.createElement("option",{value:"720"},"12 hours"),qr.createElement("option",{value:"1440"},"24 hours"),qr.createElement("option",{value:"4320"},"3 days"),qr.createElement("option",{value:"10080"},"7 days"),qr.createElement("option",{value:"20160"},"14 days"),qr.createElement("option",{value:"43200"},"30 days"),qr.createElement("option",{value:"86400"},"60 days"),qr.createElement("option",{value:"129600",hidden:!0},"90 days"),qr.createElement("option",{value:"172800",hidden:!0},"120 days"))),qr.createElement("div",{style:my.group},qr.createElement(sf,{label:"Interval",help:"Select chart interval.",value:this.state.interval.toString(),onChange:e=>{this.setState({...this.state,interval:parseInt(e,10)})}},qr.createElement("option",{value:"1",hidden:1t},"1 minute"),qr.createElement("option",{value:"5",hidden:5t},"5 minutes"),qr.createElement("option",{value:"30",hidden:30t},"30 minutes"),qr.createElement("option",{value:"60",hidden:60t},"1 hour"),qr.createElement("option",{value:"120",hidden:120t},"2 hours"),qr.createElement("option",{value:"360",hidden:360t},"6 hours"),qr.createElement("option",{value:"720",hidden:720t},"12 hours"),qr.createElement("option",{value:"1440",hidden:1440t},"24 hours"),qr.createElement("option",{value:"4320",hidden:4320t},"3 days"),qr.createElement("option",{value:"10080",hidden:10080t},"7 days")))),qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:my.chartGroup},qr.createElement(py,{endpoint:this.props.endpoint,resource:"system",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!0,onLoading:()=>{this.setLoading("system")},onLoaded:()=>{this.setLoaded("system")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()})),qr.createElement("div",{style:my.chartGroup},qr.createElement(py,{endpoint:this.props.endpoint,resource:"load",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!1,onLoading:()=>{this.setLoading("load")},onLoaded:()=>{this.setLoaded("load")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()}))),qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:my.chartGroup},qr.createElement(py,{endpoint:this.props.endpoint,resource:"disk",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!0,onLoading:()=>{this.setLoading("disk")},onLoaded:()=>{this.setLoaded("disk")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()})),qr.createElement("div",{style:my.chartGroup},qr.createElement(py,{endpoint:this.props.endpoint,resource:"network",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!1,onLoading:()=>{this.setLoading("network")},onLoaded:()=>{this.setLoaded("network")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()}))),qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:my.chartGroup},qr.createElement(py,{endpoint:this.props.endpoint,resource:"diskio0",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!0,onLoading:()=>{this.setLoading("diskio0")},onLoaded:()=>{this.setLoaded("diskio0")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()})),qr.createElement("div",{style:my.chartGroup},qr.createElement(py,{endpoint:this.props.endpoint,resource:"diskio1",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!1,onLoading:()=>{this.setLoading("diskio1")},onLoaded:()=>{this.setLoaded("diskio1")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()}))))}}var gy=n(2262);n(9673),n(8447),n(8218);const vy={header:{fontSize:"20px",marginTop:"-10px",paddingBottom:"2px",marginBottom:"10px",borderBottomStyle:"solid"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"},group:{flex:1,minWidth:"250px",margin:"0 10px"},editorGroup:{marginBottom:"15px"}};class yy extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state})},this.state={data:"",loading:!1,cancelable:!1}}componentDidMount(){!function(e){du.add(e)}(this.onChange)}componentWillUnmount(){!function(e){du.delete(e)}(this.onChange)}setLoading(){this.setState({...this.state,loading:!0,cancelable:!0})}setLoaded(){this.setState({...this.state,loading:!1,cancelable:!1})}update(){let e,t=!0;this.setLoading(),e=this.props.endpoint?function(e,t){let n=Du(),i=(new ju).loading();return new Promise(((s,r)=>{let a=ql.get("/endpoint/"+e+"/log").query({resource:t}).set("Accept","application/json").set("Csrf-Token",hu).on("abort",(()=>{i.done(),s(null)}));Gv[n]=a,a.end(((e,t)=>(delete Gv[n],i.done(),t&&401===t.status?(window.location.href="/login",void s(null)):e?(cu(t,"Failed to load endpoint log"),void r(e)):void s(t.body))))}))}(this.props.endpoint,"kmsg"):function(e,t){let n=Du(),i=(new ju).loading();return new Promise(((s,r)=>{let a=ql.get("/checks/"+e+"/log").query({resource:t}).set("Accept","application/json").set("Csrf-Token",hu).on("abort",(()=>{i.done(),s(null)}));sy[n]=a,a.end(((e,t)=>(delete sy[n],i.done(),t&&401===t.status?(window.location.href="/login",void s(null)):e?(cu(t,"Failed to load check log"),void r(e)):void s(t.body))))}))}(this.props.check,"check"),e.then((e=>{t&&(t=!1,this.setLoaded()),this.setState({...this.state,data:e.join("")}),setTimeout((()=>{this.editor&&this.editor.scrollToLine(Number.POSITIVE_INFINITY,!1,!0,null)}),100),setTimeout((()=>{this.editor&&this.editor.scrollToLine(Number.POSITIVE_INFINITY,!1,!0,null)}),200),setTimeout((()=>{this.editor&&this.editor.scrollToLine(Number.POSITIVE_INFINITY,!1,!0,null)}),300),setTimeout((()=>{this.editor&&this.editor.scrollToLine(Number.POSITIVE_INFINITY,!1,!0,null)}),400)})).catch((()=>{t&&(t=!1,this.setLoaded())}))}render(){if(this.props.disabled)return qr.createElement("div",null);this.loaded||(this.loaded=!0,setTimeout((()=>{this.update()})));let e="";e=this.props.endpoint?"Dmesg":"Error Log";let t=!1,n="",i="bp3-button";return Object.entries(this.state.cancelable).length?(n="Cancel",i+=" bp3-intent-warning bp3-icon-delete"):(Object.entries(this.state.loading).length&&(t=!0),n="Refresh",i+=" bp3-intent-success bp3-icon-refresh"),qr.createElement("div",null,qr.createElement("div",{className:"layout horizontal wrap bp3-border",style:vy.header},qr.createElement("h3",{style:vy.heading},e),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:vy.buttons},qr.createElement("button",{className:i,style:vy.button,disabled:t,type:"button",onClick:()=>{Object.entries(this.state.cancelable).length?this.props.endpoint?Qv():cy():this.update()}},n))),qr.createElement("div",{className:"layout horizontal wrap",style:vy.editorGroup},qr.createElement(gy.ZP,{name:this.props.endpoint+"-dmesg",theme:"light"===uu?"eclipse":"dracula",height:"400px",width:"100%",mode:"text",fontSize:"12px",wrapEnabled:!0,showPrintMargin:!1,showGutter:!0,readOnly:!0,value:this.state.data,editorProps:{$blockScrolling:!0},setOptions:{showFoldWidgets:!1},onLoad:e=>{this.editor=e,this.editor.scrollToLine(Number.POSITIVE_INFINITY,!1,!1,null)},onChange:()=>{this.editor&&this.editor.scrollToLine(Number.POSITIVE_INFINITY,!1,!0,null)}})))}}const by={card:{position:"relative",padding:"48px 10px 0 10px",width:"100%"},remove:{position:"absolute",top:"5px",right:"5px"},item:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px",margin:"0 10px"},controlButton:{marginRight:"10px"},save:{paddingBottom:"10px"},button:{height:"30px"},buttons:{cursor:"pointer",position:"absolute",top:0,left:0,right:0,padding:"4px",height:"39px",backgroundColor:"rgba(0, 0, 0, 0.13)"},label:{width:"100%",maxWidth:"280px"},status:{margin:"6px 0 0 1px"},icon:{marginRight:"3px"},inputGroup:{width:"100%"},protocol:{flex:"0 1 auto"},port:{flex:"1"},select:{margin:"7px 0px 0px 6px",paddingTop:"3px"}};class _y extends qr.Component{constructor(e,t){super(e,t),this.onResetClientKey=()=>{this.setState({...this.state,disabled:!0}),qv({...this.props.endpoint,reset_client_key:!0}).then((()=>{this.setState({...this.state,message:"Client key reset",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,endpoint:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onSave=()=>{this.setState({...this.state,disabled:!0}),qv(this.state.endpoint).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,endpoint:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/endpoint/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>{if(t.done(),e)return cu(s,"Failed to delete endpoints"),void i(e);n()}))}))}(this.props.endpoint.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddRole=()=>{let e;e=this.state.changed?{...this.state.endpoint}:{...this.props.endpoint};let t=[...e.roles];this.state.addRole&&(-1===t.indexOf(this.state.addRole)&&t.push(this.state.addRole),t.sort(),e.roles=t,this.setState({...this.state,changed:!0,message:"",addRole:"",endpoint:e}))},this.state={disabled:!1,changed:!1,message:"",addRole:"",endpoint:null,showCharts:!0}}set(e,t){let n;n=this.state.changed?{...this.state.endpoint}:{...this.props.endpoint},n[e]=t,this.setState({...this.state,changed:!0,endpoint:n})}onRemoveRole(e){let t;t=this.state.changed?{...this.state.endpoint}:{...this.props.endpoint};let n=[...t.roles],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.roles=n,this.setState({...this.state,changed:!0,message:"",addRole:"",endpoint:t}))}render(){let e=this.state.endpoint||this.props.endpoint,t=[{label:"ID",value:this.props.endpoint.id||"None"}],n=e.data||{};if(n&&(n.hostname&&t.push({label:"Hostname",value:n.hostname}),n.uptime&&t.push({label:"Uptime",value:Nu(n.uptime)}),n.platform&&t.push({label:"Platform",value:n.platform}),n.package_updates&&t.push({label:"System Package Updates",value:n.package_updates,valueClass:"bp3-text-intent-danger"}),n.virtualization&&t.push({label:"Virtualization",value:n.virtualization}),n.cpu_cores&&t.push({label:"CPU Cores",value:n.cpu_cores}),n.mem_total&&t.push({label:"Memory",value:n.mem_total+"MB"}),n.swap_total&&t.push({label:"Swap",value:n.swap_total+"MB"}),n.huge_total&&t.push({label:"HugePages",value:n.huge_total+"MB"})),e.data.md_stat&&e.data.md_stat.length){let n=0,i=0;for(let t of e.data.md_stat)n+=t.failed,i+=t.total;t.push({label:"Raid Devices",value:"Failed: "+n+" Total: "+i})}let i=[];for(let t of e.roles)i.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:by.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveRole(t)}})));let s=[];for(let t of Object.values(e.info.alerts))s.push(t);let r=[];for(let t of Object.values(e.info.checks))r.push(t);let a="",o="";return e.has_client_key||(a=e.client_key?e.id+"_"+e.client_key.secret:"unknown",o="pritunl://"+window.location.host+"/"+a),qr.createElement("td",{className:"bp3-cell",colSpan:3,style:by.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:by.group},qr.createElement("div",{className:"layout horizontal tab-close",style:by.buttons,onClick:e=>{-1!==e.target.className.indexOf("tab-close")&&this.props.onClose()}},qr.createElement("div",null,qr.createElement("label",{className:"bp3-control bp3-checkbox",style:by.select},qr.createElement("input",{type:"checkbox",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator"}))),qr.createElement("div",{className:"flex tab-close"}),qr.createElement(Zu,{safe:!0,className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Endpoint",confirmMsg:"Permanently delete this endpoint",confirmInput:!0,items:[e.name],disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{label:"Name",help:"Name of endpoint",type:"text",placeholder:"Enter name",value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement(Cm,{hidden:e.has_client_key,disabled:this.state.disabled,readOnly:!0,autoSelect:!0,label:"Registration Key",help:"Key for endpoint registration",type:"text",placeholder:"",value:a}),qr.createElement("label",{className:"bp3-label"},"Roles",qr.createElement(Mm,{title:"Roles",content:"The user roles that will be allowed access to this endpoint. At least one role must match for the user to access the endpoint."}),qr.createElement("div",null,i)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add role",value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement(Sm,{label:"Show charts and dmesg",help:"Show endpoint charts and dmesg.",checked:this.state.showCharts,hidden:!n.hostname,onToggle:()=>{this.setState({...this.state,showCharts:!this.state.showCharts})}}),qr.createElement(Xp,{fields:[{label:"Alerts",value:s.length?s:"-"},{label:"Health Checks",value:r.length?r:"-"}]})),qr.createElement("div",{style:by.group},qr.createElement(Xp,{fields:t}),qr.createElement(Cm,{hidden:e.has_client_key,disabled:this.state.disabled,readOnly:!0,autoSelect:!0,label:"Registration URI",help:"URI for endpoint registration",type:"text",placeholder:"",value:o}))),qr.createElement(fy,{endpoint:e.id,disabled:!n.hostname||!this.state.showCharts}),qr.createElement(yy,{endpoint:e.id,disabled:!n.hostname||!this.state.showCharts}),qr.createElement(km,{style:by.save,hidden:!this.state.endpoint&&!this.state.message,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,endpoint:null})},onSave:this.onSave},qr.createElement(Zu,{label:"Reset Key",className:"bp3-intent-danger bp3-icon-key",progressClassName:"bp3-intent-danger",style:by.controlButton,hidden:!e.has_client_key,disabled:this.state.disabled,safe:!0,onConfirm:()=>{this.onResetClientKey()}})))}}const My={card:{display:"table-row",width:"100%",padding:0,boxShadow:"none",cursor:"pointer"},cardOpen:{display:"table-row",width:"100%",padding:0,boxShadow:"none",position:"relative"},select:{margin:"2px 0 0 0",paddingTop:"3px",minHeight:"18px"},name:{verticalAlign:"top",display:"table-cell",padding:"8px"},nameSpan:{margin:"1px 5px 0 0"},item:{verticalAlign:"top",display:"table-cell",padding:"9px",whiteSpace:"nowrap"},roles:{verticalAlign:"top",display:"table-cell",padding:"0 8px 8px 8px"},icon:{marginTop:"1px",marginRight:"3px"},tag:{margin:"8px 5px 0 5px",height:"20px"},bars:{verticalAlign:"top",display:"table-cell",padding:"8px",width:"30px"},bar:{height:"6px",marginBottom:"1px"},barLast:{height:"6px"}};class wy extends qr.Component{render(){let e=this.props.endpoint;if(this.props.open)return qr.createElement("div",{className:"bp3-card bp3-row",style:My.cardOpen},qr.createElement(_y,{endpoint:this.props.endpoint,authorities:this.props.authorities,selected:this.props.selected,onSelect:this.props.onSelect,onClose:()=>{this.props.onOpen()}}));let t,n={...My.card},i=[];for(let t of e.roles)i.push(qr.createElement("div",{className:"bp3-tag bp3-intent-primary",style:My.tag,key:t},t));return e.data.package_updates&&(t=qr.createElement(Nd,{content:"System package updates available",position:ga,openOnTargetFocus:!1},qr.createElement("span",{style:My.icon,className:"bp3-icon-standard bp3-text-muted bp3-intent-danger bp3-icon-updated"}))),qr.createElement("div",{className:"bp3-card bp3-row",style:n,onClick:e=>{-1===e.target.className.indexOf("open-ignore")&&this.props.onOpen()}},qr.createElement("div",{className:"bp3-cell",style:My.name},qr.createElement("div",{className:"layout horizontal"},qr.createElement("label",{className:"bp3-control bp3-checkbox open-ignore",style:My.select},qr.createElement("input",{type:"checkbox",className:"open-ignore",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator open-ignore"})),qr.createElement("div",{style:My.nameSpan},e.name))),qr.createElement("div",{className:"bp3-cell",style:My.item},t),qr.createElement("div",{className:"flex bp3-cell",style:My.roles},i))}}const Sy={filters:{margin:"-15px 0 5px 0"},input:{width:"200px",margin:"5px"},role:{width:"150px",margin:"5px"},type:{margin:"5px"},check:{margin:"12px 5px 8px 5px"}};class Ly extends qr.Component{constructor(e,t){super(e,t),this.state={menu:!1}}render(){return null===this.props.filter?qr.createElement("div",null):qr.createElement("div",{className:"layout horizontal wrap",style:Sy.filters},qr.createElement(Lp,{style:Sy.input,placeholder:"Endpoint ID",value:this.props.filter.id,onChange:e=>{let t={...this.props.filter};e?t.id=e:delete t.id,this.props.onFilter(t)}}),qr.createElement(Lp,{style:Sy.input,placeholder:"Name",value:this.props.filter.name,onChange:e=>{let t={...this.props.filter};e?t.name=e:delete t.name,this.props.onFilter(t)}}),qr.createElement(Lp,{style:Sy.role,placeholder:"Role",value:this.props.filter.role,onChange:e=>{let t={...this.props.filter};e?t.role=e:delete t.role,this.props.onFilter(t)}}))}}const ky={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class xy extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:Bv.page,pageCount:Bv.pageCount,pages:Bv.pages,count:Bv.count})},this.state={page:Bv.page,pageCount:Bv.pageCount,pages:Bv.pages,count:Bv.count}}componentDidMount(){Bv.addChangeListener(this.onChange)}componentWillUnmount(){Bv.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{Kv(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{Kv(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:ky.button,disabled:0===e,type:"button",onClick:()=>{Kv(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:ky.button,disabled:e===t-1,type:"button",onClick:()=>{Kv(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{Kv(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const Cy={items:{width:"100%",marginTop:"-5px",display:"table",borderSpacing:"0 5px"},itemsBox:{width:"100%",overflowY:"auto"},placeholder:{opacity:0,width:"100%"},header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"}};class Ty extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{let e=Bv.endpoints,t={},n=this.state.selected,i={},s=this.state.opened;e.forEach((e=>{n[e.id]&&(t[e.id]=!0),s[e.id]&&(i[e.id]=!0)})),this.setState({...this.state,endpoints:e,filter:Bv.filter,authorities:Ig.authorities,selected:t,opened:i})},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/endpoint").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete endpoints"),void i(e)):void n())))}))}(Object.keys(this.state.selected)).then((()=>{this.setState({...this.state,selected:{},disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={endpoints:Bv.endpoints,filter:Bv.filter,authorities:Ig.authorities,selected:{},opened:{},newOpened:!1,lastSelected:null,disabled:!1}}get selected(){return!!Object.keys(this.state.selected).length}get opened(){return!!Object.keys(this.state.opened).length}componentDidMount(){Bv.addChangeListener(this.onChange),Ig.addChangeListener(this.onChange),Uv(),ev()}componentWillUnmount(){Bv.removeChangeListener(this.onChange),Ig.removeChangeListener(this.onChange)}render(){let e=[];this.state.endpoints.forEach((t=>{e.push(qr.createElement(wy,{key:t.id,endpoint:t,authorities:this.state.authorities,selected:!!this.state.selected[t.id],open:!!this.state.opened[t.id],onSelect:e=>{let n={...this.state.selected};if(e){let e,i,s=this.state.endpoints;for(let n=0;ni&&(i=[e,e=i][0]);for(let t=e;t<=i;t++)n[s[t].id]=!0;return void this.setState({...this.state,lastSelected:t.id,selected:n})}}n[t.id]?delete n[t.id]:n[t.id]=!0,this.setState({...this.state,lastSelected:t.id,selected:n})},onOpen:()=>{let e={...this.state.opened};e[t.id]?delete e[t.id]:e[t.id]=!0,this.setState({...this.state,opened:e})}}))}));let t="bp3-button bp3-intent-primary bp3-icon-filter ";this.state.filter&&(t+="bp3-active");let n=[];for(let e of Object.keys(this.state.selected)){let t=Bv.endpoint(e);t?n.push(t.name||e):n.push(e)}return qr.createElement(Ep,{wide:!0},qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Cy.header},qr.createElement("h2",{style:Cy.heading},"Endpoints"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Cy.buttons},qr.createElement("button",{className:t,style:Cy.button,type:"button",onClick:()=>{null===this.state.filter?Xv({}):Xv(null)}},"Filters"),qr.createElement("button",{className:"bp3-button bp3-intent-warning bp3-icon-chevron-up",style:Cy.button,disabled:!this.opened,type:"button",onClick:()=>{this.setState({...this.state,opened:{}})}},"Collapse All"),qr.createElement(Zu,{label:"Delete Selected",className:"bp3-intent-danger bp3-icon-delete",progressClassName:"bp3-intent-danger",safe:!0,style:Cy.button,confirmMsg:"Permanently delete the selected endpoints",confirmInput:!0,items:n,disabled:!this.selected||this.state.disabled,onConfirm:this.onDelete}),qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Cy.button,disabled:this.state.disabled,type:"button",onClick:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/endpoint").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create endpoint"),void i(e)):void n())))}))}({id:null}).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"New")))),qr.createElement(Ly,{filter:this.state.filter,onFilter:e=>{Xv(e)},authorities:this.state.authorities}),qr.createElement("div",{style:Cy.itemsBox},qr.createElement("div",{style:Cy.items},e,qr.createElement("tr",{className:"bp3-card bp3-row",style:Cy.placeholder},qr.createElement("td",{colSpan:5,style:Cy.placeholder})))),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-shield",title:"No endpoints",description:"Add a new endpoint to get started."}),qr.createElement(xy,{onPage:()=>{this.setState({...this.state,selected:{},lastSelected:null})}}))}}const Ey="alert.sync",zy="alert.traverse",Ay="alert.filter";const Hy=new class extends Mu{constructor(){super(...arguments),this._alerts=Object.freeze([]),this._filter=null,this._map={},this._token=bu.register(this._callback.bind(this))}get alerts(){return this._alerts}get alertsM(){let e=[];return this._alerts.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||20}get pages(){return Math.ceil(this.count/this.pageCount)}get filter(){return this._filter}get count(){return this._count||0}alert(e){let t=this._map[e];return void 0===t?null:this._alerts[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_filterCallback(e){(null!==this._filter&&null===e||this._filter==={}&&null!==e||e&&this._filter&&e.name!==this._filter.name)&&this._traverse(0),this._filter=e,this.emitChange()}_sync(e,t){this._map={};for(let t=0;t{ql.get("/alert").query({...Hy.filter,page:Hy.page,page_count:Hy.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===Dy){if(s)return cu(r,"Failed to load alerts"),void i(s);bu.dispatch({type:Ey,data:{alerts:r.body.alerts,count:r.body.count}}),n()}else n()}))}))}function Oy(e){return bu.dispatch({type:zy,data:{page:e}}),Py()}function Yy(e){return bu.dispatch({type:Ay,data:{filter:e}}),Py()}Hu.register((e=>{if("alert.change"===e.type)Py()}));const Ry={card:{position:"relative",padding:"48px 10px 0 10px",width:"100%"},remove:{position:"absolute",top:"5px",right:"5px"},item:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px",margin:"0 10px"},controlButton:{marginRight:"10px"},save:{paddingBottom:"10px"},button:{height:"30px"},buttons:{cursor:"pointer",position:"absolute",top:0,left:0,right:0,padding:"4px",height:"39px",backgroundColor:"rgba(0, 0, 0, 0.13)"},label:{width:"100%",maxWidth:"280px"},status:{margin:"6px 0 0 1px"},icon:{marginRight:"3px"},inputGroup:{width:"100%"},protocol:{flex:"0 1 auto"},port:{flex:"1"},select:{margin:"7px 0px 0px 6px",paddingTop:"3px"},header:{fontSize:"20px",marginTop:"-10px",paddingBottom:"2px",marginBottom:"10px",borderBottomStyle:"solid"},heading:{margin:"19px 0 0 0"},alertsButtons:{marginTop:"8px"},alertsAdd:{margin:"8px 0 0 8px"}};class Vy extends qr.Component{constructor(e,t){super(e,t),this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/alert/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save alert"),void i(e)):void n())))}))}(this.state.alert).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,alert:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/alert/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>{if(t.done(),e)return cu(s,"Failed to delete alerts"),void i(e);n()}))}))}(this.props.alert.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddRole=()=>{let e;e=this.state.changed?{...this.state.alert}:{...this.props.alert};let t=[...e.roles];this.state.addRole&&(-1===t.indexOf(this.state.addRole)&&t.push(this.state.addRole),t.sort(),e.roles=t,this.setState({...this.state,changed:!0,message:"",addRole:"",alert:e}))},this.onAddIgnore=()=>{let e;e=this.state.changed?{...this.state.alert}:{...this.props.alert};let t=[...e.ignores||[]];this.state.addIgnore&&(-1===t.indexOf(this.state.addIgnore)&&t.push(this.state.addIgnore),t.sort(),e.ignores=t,this.setState({...this.state,changed:!0,message:"",addIgnore:"",alert:e}))},this.state={disabled:!1,changed:!1,message:"",addRole:"",addIgnore:"",alert:null}}set(e,t){let n;n=this.state.changed?{...this.state.alert}:{...this.props.alert},n[e]=t,this.setState({...this.state,changed:!0,alert:n})}onRemoveRole(e){let t;t=this.state.changed?{...this.state.alert}:{...this.props.alert};let n=[...t.roles],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.roles=n,this.setState({...this.state,changed:!0,message:"",addRole:"",alert:t}))}onRemoveIgnore(e){let t;t=this.state.changed?{...this.state.alert}:{...this.props.alert};let n=[...t.ignores||[]],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.ignores=n,this.setState({...this.state,changed:!0,message:"",addIgnore:"",alert:t}))}render(){let e=this.state.alert||this.props.alert,t=[{label:"ID",value:this.props.alert.id||"None"}],n=[];for(let t of e.roles)n.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Ry.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveRole(t)}})));let i=[];for(let t of e.ignores||[])i.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Ry.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveIgnore(t)}})));let s=!1,r=!1,a="",o="",l=!1,c="",h="",d="";switch(e.resource){case"system_cpu_level":s=!0,a="Usage Threshold",o="Maximum percent CPU usage as integer before alert is triggered.";break;case"system_memory_level":s=!0,a="Usage Threshold",o="Maximum percent memory usage as integer before alert is triggered.";break;case"system_swap_level":s=!0,a="Usage Threshold",o="Maximum percent swap usage as integer before alert is triggered.";break;case"system_hugepages_level":s=!0,a="Usage Threshold",o="Maximum percent hugepages usage as integer before alert is triggered.";break;case"system_md_failed":case"check_http_failed":s=!1,r=!1;break;case"disk_usage_level":l=!0,c="Ignore Disk Paths",h="Ignore Disk Paths",d="Path of disk devices to ignore.",s=!0,a="Usage Threshold",o="Maximum percent disk space usage as integer before alert is triggered.";break;case"kmsg_keyword":r=!0,a="Dmesg Keyword Match",o="Case insensitive dmesg match string to trigger alert."}return qr.createElement("td",{className:"bp3-cell",colSpan:2,style:Ry.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Ry.group},qr.createElement("div",{className:"layout horizontal tab-close",style:Ry.buttons,onClick:e=>{-1!==e.target.className.indexOf("tab-close")&&this.props.onClose()}},qr.createElement("div",null,qr.createElement("label",{className:"bp3-control bp3-checkbox",style:Ry.select},qr.createElement("input",{type:"checkbox",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator"}))),qr.createElement("div",{className:"flex tab-close"}),qr.createElement(Zu,{safe:!0,className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Alert",confirmMsg:"Permanently delete this alert",confirmInput:!0,items:[e.name],disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{disabled:this.state.disabled,label:"Name",help:"Name of alert",type:"text",placeholder:"Enter name",value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement("label",{className:"bp3-label"},"Roles",qr.createElement(Mm,{title:"Roles",content:"The user roles that will be allowed access to this alert. At least one role must match for the user to access the alert."}),qr.createElement("div",null,n)),qr.createElement(tf,{disabled:this.state.disabled,buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add role",value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement(sf,{disabled:this.state.disabled,label:"Alert Type",help:"Type of alert",value:e.resource,onChange:e=>{this.set("resource",e)}},qr.createElement("option",{value:"system_cpu_level"},"CPU Usage Threshold"),qr.createElement("option",{value:"system_memory_level"},"Memory Usage Threshold"),qr.createElement("option",{value:"system_swap_level"},"Swap Usage Threshold"),qr.createElement("option",{value:"system_hugepages_level"},"HugePages Usage Threshold"),qr.createElement("option",{value:"system_md_failed"},"MD RAID Device Failed"),qr.createElement("option",{value:"disk_usage_level"},"Disk Usage Threshold"),qr.createElement("option",{value:"kmsg_keyword"},"Dmesg Keyword Match"),qr.createElement("option",{value:"check_http_failed"},"HTTP Health Check Failed")),qr.createElement("label",{className:"bp3-label",hidden:!l},c,qr.createElement(Mm,{title:h,content:d}),qr.createElement("div",null,i)),qr.createElement(tf,{disabled:this.state.disabled,buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add ignore",value:this.state.addIgnore,hidden:!l,onChange:e=>{this.setState({...this.state,addIgnore:e})},onSubmit:this.onAddIgnore})),qr.createElement("div",{style:Ry.group},qr.createElement(Xp,{fields:t}),qr.createElement(Cm,{disabled:this.state.disabled,label:a,help:o,type:"text",placeholder:"Default",value:e.value_int,hidden:!s,onChange:e=>{this.set("value_int",parseInt(e,10))}}),qr.createElement(Cm,{disabled:this.state.disabled,label:a,help:o,type:"text",placeholder:"Default",value:e.value_str,hidden:!r,onChange:e=>{this.set("value_str",e)}}),qr.createElement(sf,{disabled:this.state.disabled,label:"Alert Level",help:"Level of alert, used for matching device notifications. An endpoint role must also match a user role for ntofications.",value:(e.level||0).toString(),onChange:e=>{this.set("level",parseInt(e,10))}},qr.createElement("option",{value:"1"},"Low"),qr.createElement("option",{value:"5"},"Medium"),qr.createElement("option",{value:"10"},"High")),qr.createElement(Cm,{disabled:this.state.disabled,label:"Alert Frequency",help:"Minimum duration in seconds between repeat alerts.",type:"text",placeholder:"Enter frequency",value:e.frequency,onChange:e=>{this.set("frequency",parseInt(e,10))}}))),qr.createElement(km,{style:Ry.save,hidden:!this.state.alert&&!this.state.message,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,alert:null})},onSave:this.onSave}))}}const Ny={card:{display:"table-row",width:"100%",padding:0,boxShadow:"none",cursor:"pointer"},cardOpen:{display:"table-row",width:"100%",padding:0,boxShadow:"none",position:"relative"},select:{margin:"2px 0 0 0",paddingTop:"3px",minHeight:"18px"},name:{verticalAlign:"top",display:"table-cell",padding:"8px"},nameSpan:{margin:"1px 5px 0 0"},item:{verticalAlign:"top",display:"table-cell",padding:"9px",whiteSpace:"nowrap"},roles:{verticalAlign:"top",display:"table-cell",padding:"0 8px 8px 8px"},icon:{marginRight:"3px"},tag:{margin:"8px 5px 0 5px",height:"20px"},bars:{verticalAlign:"top",display:"table-cell",padding:"8px",width:"30px"},bar:{height:"6px",marginBottom:"1px"},barLast:{height:"6px"}};class $y extends qr.Component{render(){let e=this.props.alert;if(this.props.open)return qr.createElement("div",{className:"bp3-card bp3-row",style:Ny.cardOpen},qr.createElement(Vy,{alert:this.props.alert,authorities:this.props.authorities,selected:this.props.selected,onSelect:this.props.onSelect,onClose:()=>{this.props.onOpen()}}));let t={...Ny.card},n=[];for(let t of e.roles)n.push(qr.createElement("div",{className:"bp3-tag bp3-intent-primary",style:Ny.tag,key:t},t));return qr.createElement("div",{className:"bp3-card bp3-row",style:t,onClick:e=>{-1===e.target.className.indexOf("open-ignore")&&this.props.onOpen()}},qr.createElement("div",{className:"bp3-cell",style:Ny.name},qr.createElement("div",{className:"layout horizontal"},qr.createElement("label",{className:"bp3-control bp3-checkbox open-ignore",style:Ny.select},qr.createElement("input",{type:"checkbox",className:"open-ignore",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator open-ignore"})),qr.createElement("div",{style:Ny.nameSpan},e.name))),qr.createElement("div",{className:"flex bp3-cell",style:Ny.roles},n))}}const Iy={filters:{margin:"-15px 0 5px 0"},input:{width:"200px",margin:"5px"},role:{width:"150px",margin:"5px"},type:{margin:"5px"},check:{margin:"12px 5px 8px 5px"}};class Fy extends qr.Component{constructor(e,t){super(e,t),this.state={menu:!1}}render(){return null===this.props.filter?qr.createElement("div",null):qr.createElement("div",{className:"layout horizontal wrap",style:Iy.filters},qr.createElement(Lp,{style:Iy.input,placeholder:"Alert ID",value:this.props.filter.id,onChange:e=>{let t={...this.props.filter};e?t.id=e:delete t.id,this.props.onFilter(t)}}),qr.createElement(Lp,{style:Iy.input,placeholder:"Name",value:this.props.filter.name,onChange:e=>{let t={...this.props.filter};e?t.name=e:delete t.name,this.props.onFilter(t)}}),qr.createElement(Lp,{style:Iy.role,placeholder:"Role",value:this.props.filter.role,onChange:e=>{let t={...this.props.filter};e?t.role=e:delete t.role,this.props.onFilter(t)}}))}}const jy={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class By extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:Hy.page,pageCount:Hy.pageCount,pages:Hy.pages,count:Hy.count})},this.state={page:Hy.page,pageCount:Hy.pageCount,pages:Hy.pages,count:Hy.count}}componentDidMount(){Hy.addChangeListener(this.onChange)}componentWillUnmount(){Hy.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{Oy(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{Oy(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:jy.button,disabled:0===e,type:"button",onClick:()=>{Oy(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:jy.button,disabled:e===t-1,type:"button",onClick:()=>{Oy(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{Oy(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const Wy={items:{width:"100%",marginTop:"-5px",display:"table",borderSpacing:"0 5px"},itemsBox:{width:"100%",overflowY:"auto"},placeholder:{opacity:0,width:"100%"},header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"}};class Gy extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{let e=Hy.alerts,t={},n=this.state.selected,i={},s=this.state.opened;e.forEach((e=>{n[e.id]&&(t[e.id]=!0),s[e.id]&&(i[e.id]=!0)})),this.setState({...this.state,alerts:e,filter:Hy.filter,authorities:Ig.authorities,selected:t,opened:i})},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/alert").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete alerts"),void i(e)):void n())))}))}(Object.keys(this.state.selected)).then((()=>{this.setState({...this.state,selected:{},disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={alerts:Hy.alerts,filter:Hy.filter,authorities:Ig.authorities,selected:{},opened:{},newOpened:!1,lastSelected:null,disabled:!1}}get selected(){return!!Object.keys(this.state.selected).length}get opened(){return!!Object.keys(this.state.opened).length}componentDidMount(){Hy.addChangeListener(this.onChange),Ig.addChangeListener(this.onChange),Py(),ev()}componentWillUnmount(){Hy.removeChangeListener(this.onChange),Ig.removeChangeListener(this.onChange)}render(){let e=[];this.state.alerts.forEach((t=>{e.push(qr.createElement($y,{key:t.id,alert:t,authorities:this.state.authorities,selected:!!this.state.selected[t.id],open:!!this.state.opened[t.id],onSelect:e=>{let n={...this.state.selected};if(e){let e,i,s=this.state.alerts;for(let n=0;ni&&(i=[e,e=i][0]);for(let t=e;t<=i;t++)n[s[t].id]=!0;return void this.setState({...this.state,lastSelected:t.id,selected:n})}}n[t.id]?delete n[t.id]:n[t.id]=!0,this.setState({...this.state,lastSelected:t.id,selected:n})},onOpen:()=>{let e={...this.state.opened};e[t.id]?delete e[t.id]:e[t.id]=!0,this.setState({...this.state,opened:e})}}))}));let t="bp3-button bp3-intent-primary bp3-icon-filter ";this.state.filter&&(t+="bp3-active");let n=[];for(let e of Object.keys(this.state.selected)){let t=Hy.alert(e);t?n.push(t.name||e):n.push(e)}return qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Wy.header},qr.createElement("h2",{style:Wy.heading},"Alerts"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Wy.buttons},qr.createElement("button",{className:t,style:Wy.button,type:"button",onClick:()=>{null===this.state.filter?Yy({}):Yy(null)}},"Filters"),qr.createElement("button",{className:"bp3-button bp3-intent-warning bp3-icon-chevron-up",style:Wy.button,disabled:!this.opened,type:"button",onClick:()=>{this.setState({...this.state,opened:{}})}},"Collapse All"),qr.createElement(Zu,{label:"Delete Selected",className:"bp3-intent-danger bp3-icon-delete",progressClassName:"bp3-intent-danger",safe:!0,style:Wy.button,confirmMsg:"Permanently delete the selected alerts",confirmInput:!0,items:n,disabled:!this.selected||this.state.disabled,onConfirm:this.onDelete}),qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Wy.button,disabled:this.state.disabled,type:"button",onClick:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/alert").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create alert"),void i(e)):void n())))}))}({id:null}).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"New")))),qr.createElement(Fy,{filter:this.state.filter,onFilter:e=>{Yy(e)},authorities:this.state.authorities}),qr.createElement("div",{style:Wy.itemsBox},qr.createElement("div",{style:Wy.items},e,qr.createElement("tr",{className:"bp3-card bp3-row",style:Wy.placeholder},qr.createElement("td",{colSpan:5,style:Wy.placeholder})))),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-notifications",title:"No alerts",description:"Add a new alert to get started."}),qr.createElement(By,{onPage:()=>{this.setState({...this.state,selected:{},lastSelected:null})}}))}}const Uy={header:{fontSize:"20px",marginTop:"-10px",paddingBottom:"2px",marginBottom:"10px",borderBottomStyle:"solid"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"},group:{flex:1,minWidth:"250px",margin:"0 10px"},chartGroup:{flex:1,minWidth:"250px",margin:"0 10px",marginBottom:"15px"}};class Ky extends qr.Component{constructor(e,t){super(e,t),this.state={sync:0,period:1440,interval:30,loading:{},cancelable:{}},this.loading={},this.chartBoxRef=qr.createRef()}getDefaultInterval(e){switch(e){case 60:return 1;case 180:case 360:return 5;case 720:case 1440:return 30;case 4320:return 60;case 10080:return 120;case 20160:default:return 360;case 43200:return 720;case 86400:case 129600:return 1440;case 172800:return 4320}}setLoading(e){this.loading[e]=!0;let t={...this.state.loading};t[e]=!0,setTimeout((()=>{if(this.loading[e]){let t={...this.state.cancelable};t[e]=!0,this.setState({...this.state,cancelable:t})}}),3e3),this.setState({...this.state,loading:t})}setLoaded(e){delete this.loading[e];let t={...this.state.loading};delete t[e];let n={...this.state.cancelable};delete n[e],this.setState({...this.state,loading:t,cancelable:n})}render(){if(this.props.disabled)return qr.createElement("div",null);let e=0,t=0;this.state.period>43200?e=120:this.state.period>20160?e=30:this.state.period>4320&&(e=5),t=this.state.period<=60?30:this.state.period<=180?60:this.state.period<=360?120:this.state.period<=720?360:this.state.period<=1440?720:this.state.period<=4320?1440:this.state.period<=10080?4320:10080;let n=!1,i="",s="bp3-button";return Object.entries(this.state.cancelable).length?(i="Cancel",s+=" bp3-intent-warning bp3-icon-delete"):(Object.entries(this.state.loading).length&&(n=!0),i="Refresh",s+=" bp3-intent-success bp3-icon-refresh"),qr.createElement("div",{ref:this.chartBoxRef},qr.createElement("div",{className:"layout horizontal wrap bp3-border",style:Uy.header},qr.createElement("h3",{style:Uy.heading},"Charts"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Uy.buttons},qr.createElement("button",{className:s,style:Uy.button,disabled:n,type:"button",onClick:()=>{Object.entries(this.state.cancelable).length?cy():this.setState({...this.state,sync:this.state.sync+1})}},i))),qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Uy.group},qr.createElement(sf,{label:"Time Range",help:"Select chart time range.",value:this.state.period.toString(),onChange:e=>{let t=parseInt(e,10);this.setState({...this.state,period:t,interval:this.getDefaultInterval(t)})}},qr.createElement("option",{value:"60"},"1 hour"),qr.createElement("option",{value:"180"},"3 hours"),qr.createElement("option",{value:"360"},"6 hours"),qr.createElement("option",{value:"720"},"12 hours"),qr.createElement("option",{value:"1440"},"24 hours"),qr.createElement("option",{value:"4320"},"3 days"),qr.createElement("option",{value:"10080"},"7 days"),qr.createElement("option",{value:"20160"},"14 days"),qr.createElement("option",{value:"43200"},"30 days"),qr.createElement("option",{value:"86400"},"60 days"),qr.createElement("option",{value:"129600",hidden:!0},"90 days"),qr.createElement("option",{value:"172800",hidden:!0},"120 days"))),qr.createElement("div",{style:Uy.group},qr.createElement(sf,{label:"Interval",help:"Select chart interval.",value:this.state.interval.toString(),onChange:e=>{this.setState({...this.state,interval:parseInt(e,10)})}},qr.createElement("option",{value:"1",hidden:1t},"1 minute"),qr.createElement("option",{value:"5",hidden:5t},"5 minutes"),qr.createElement("option",{value:"30",hidden:30t},"30 minutes"),qr.createElement("option",{value:"60",hidden:60t},"1 hour"),qr.createElement("option",{value:"120",hidden:120t},"2 hours"),qr.createElement("option",{value:"360",hidden:360t},"6 hours"),qr.createElement("option",{value:"720",hidden:720t},"12 hours"),qr.createElement("option",{value:"1440",hidden:1440t},"24 hours"),qr.createElement("option",{value:"4320",hidden:4320t},"3 days"),qr.createElement("option",{value:"10080",hidden:10080t},"7 days")))),qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Uy.chartGroup},qr.createElement(py,{check:this.props.check,resource:"check0",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!0,onLoading:()=>{this.setLoading("check0")},onLoaded:()=>{this.setLoaded("check0")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()})),qr.createElement("div",{style:Uy.chartGroup},qr.createElement(py,{check:this.props.check,resource:"check1",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!1,onLoading:()=>{this.setLoading("check1")},onLoaded:()=>{this.setLoaded("check1")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()}))),qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Uy.chartGroup},qr.createElement(py,{check:this.props.check,resource:"check2",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!0,onLoading:()=>{this.setLoading("check2")},onLoaded:()=>{this.setLoaded("check2")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()}))))}}const Xy={group:{width:"100%",maxWidth:"310px",marginTop:"5px"},header:{width:"100%",borderRadius:"0 3px 3px 0"},headerBox:{flex:"1"}};class qy extends qr.Component{clone(){return{...this.props.header}}render(){let e=this.props.header;return qr.createElement("div",{className:"bp3-control-group",style:Xy.group},qr.createElement("div",{style:Xy.headerBox},qr.createElement("input",{className:"bp3-input",style:Xy.header,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Key",value:e.key||"",onChange:e=>{let t=this.clone();t.key=e.target.value,this.props.onChange(t)}})),qr.createElement("div",{style:Xy.headerBox},qr.createElement("input",{className:"bp3-input",style:Xy.header,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Value",value:e.value||"",onChange:e=>{let t=this.clone();t.value=e.target.value,this.props.onChange(t)}})),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-intent-danger bp3-icon-remove",onClick:()=>{this.props.onRemove()}}))}}const Jy={card:{position:"relative",padding:"48px 10px 0 10px",width:"100%"},remove:{position:"absolute",top:"5px",right:"5px"},item:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px",margin:"0 10px"},controlButton:{marginRight:"10px"},save:{paddingBottom:"10px"},button:{height:"30px"},buttons:{cursor:"pointer",position:"absolute",top:0,left:0,right:0,padding:"4px",height:"39px",backgroundColor:"rgba(0, 0, 0, 0.13)"},label:{width:"100%",maxWidth:"280px"},status:{margin:"6px 0 0 1px"},icon:{marginRight:"3px"},inputGroup:{width:"100%"},protocol:{flex:"0 1 auto"},port:{flex:"1"},select:{margin:"7px 0px 0px 6px",paddingTop:"3px"},header:{fontSize:"20px",marginTop:"-10px",paddingBottom:"2px",marginBottom:"10px",borderBottomStyle:"solid"},heading:{margin:"19px 0 0 0"},checksButtons:{marginTop:"8px"},checksAdd:{margin:"8px 0 0 8px"}};class Qy extends qr.Component{constructor(e,t){super(e,t),this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/checks/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save check"),void i(e)):void n())))}))}(this.state.check).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,check:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/checks/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>{if(t.done(),e)return cu(s,"Failed to delete checks"),void i(e);n()}))}))}(this.props.check.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddRole=()=>{let e;e=this.state.changed?{...this.state.check}:{...this.props.check};let t=[...e.roles];this.state.addRole&&(-1===t.indexOf(this.state.addRole)&&t.push(this.state.addRole),t.sort(),e.roles=t,this.setState({...this.state,changed:!0,message:"",addRole:"",check:e}))},this.onAddTarget=()=>{let e;e=this.state.changed?{...this.state.check}:{...this.props.check};let t=[...e.targets||[]];this.state.addTarget&&(-1===t.indexOf(this.state.addTarget)&&t.push(this.state.addTarget),t.sort(),e.targets=t,this.setState({...this.state,changed:!0,message:"",addTarget:"",check:e}))},this.onAddHeader=()=>{let e;e=this.state.changed?{...this.state.check}:{...this.props.check};let t=[...e.headers,{}];e.headers=t,this.setState({...this.state,changed:!0,message:"",check:e})},this.state={disabled:!1,changed:!1,message:"",addRole:"",addTarget:"",check:null}}set(e,t){let n;n=this.state.changed?{...this.state.check}:{...this.props.check},n[e]=t,this.setState({...this.state,changed:!0,check:n})}onRemoveRole(e){let t;t=this.state.changed?{...this.state.check}:{...this.props.check};let n=[...t.roles],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.roles=n,this.setState({...this.state,changed:!0,message:"",addRole:"",check:t}))}onRemoveTarget(e){let t;t=this.state.changed?{...this.state.check}:{...this.props.check};let n=[...t.targets||[]],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.targets=n,this.setState({...this.state,changed:!0,message:"",addTarget:"",check:t}))}onChangeHeader(e,t){let n;n=this.state.changed?{...this.state.check}:{...this.props.check};let i=[...n.headers];i[e]=t,n.headers=i,this.setState({...this.state,changed:!0,message:"",check:n})}onRemoveHeader(e){let t;t=this.state.changed?{...this.state.check}:{...this.props.check};let n=[...t.headers];n.splice(e,1),t.headers=n,this.setState({...this.state,changed:!0,message:"",check:t})}render(){let e=this.state.check||this.props.check,t=[{label:"ID",value:this.props.check.id||"None"}],n=[];for(let t of e.roles)n.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Jy.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveRole(t)}})));let i=[];for(let t of e.targets||[])i.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Jy.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveTarget(t)}})));let s="",r="",a="";s="Targets",r="Targets",a="Targets for health check. For most configurations each target should be placed in a separate check.";let o=[];if("http"===e.type)for(let t=0;t{this.onChangeHeader(n,e)},onRemove:()=>{this.onRemoveHeader(n)}}))}return qr.createElement("td",{className:"bp3-cell",colSpan:2,style:Jy.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Jy.group},qr.createElement("div",{className:"layout horizontal tab-close",style:Jy.buttons,onClick:e=>{-1!==e.target.className.indexOf("tab-close")&&this.props.onClose()}},qr.createElement("div",null,qr.createElement("label",{className:"bp3-control bp3-checkbox",style:Jy.select},qr.createElement("input",{type:"checkbox",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator"}))),qr.createElement("div",{className:"flex tab-close"}),qr.createElement(Zu,{safe:!0,className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Check",confirmMsg:"Permanently delete this check",confirmInput:!0,items:[e.name],disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{disabled:this.state.disabled,label:"Name",help:"Name of check",type:"text",placeholder:"Enter name",value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement("label",{className:"bp3-label"},"Roles",qr.createElement(Mm,{title:"Roles",content:"The user roles that will be allowed access to this check. At least one role must match for the user to access the check."}),qr.createElement("div",null,n)),qr.createElement(tf,{disabled:this.state.disabled,buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add role",value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement(sf,{disabled:this.state.disabled,label:"Check Type",help:"Type of check",value:e.type,onChange:e=>{this.set("type",e)}},qr.createElement("option",{value:"http"},"HTTP Request")),qr.createElement("label",{className:"bp3-label"},"Targets",qr.createElement(Mm,{title:"Targets",content:"Targets for health check. For most configurations each target should be placed in a separate check."}),qr.createElement("div",null,i)),qr.createElement(tf,{disabled:this.state.disabled,buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add target",value:this.state.addTarget,onChange:e=>{this.setState({...this.state,addTarget:e})},onSubmit:this.onAddTarget})),qr.createElement("div",{style:Jy.group},qr.createElement(Xp,{fields:t}),qr.createElement(Cm,{disabled:this.state.disabled,label:"Check Frequency",help:"Minimum duration in seconds between repeat checks.",type:"text",placeholder:"Enter frequency",value:e.frequency,onChange:e=>{this.set("frequency",parseInt(e,10))}}),qr.createElement(Cm,{disabled:this.state.disabled,label:"Check Timeout",help:"Time in seconds before check times out.",type:"text",placeholder:"Enter timeout",value:e.timeout,onChange:e=>{this.set("timeout",parseInt(e,10))}}),qr.createElement(Cm,{disabled:this.state.disabled,label:"HTTP Status Code",help:"Expected status code to receive.",type:"text",placeholder:"Enter status code",hidden:"http"!==e.type,value:e.status_code,onChange:e=>{this.set("status_code",parseInt(e,10))}}),qr.createElement("label",{style:Jy.itemsLabel,hidden:"http"!==e.type},"HTTP Headers",qr.createElement(Mm,{title:"HTTP Headers",content:"Headers to include when sending HTTP health check request."})),o,qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Jy.itemsAdd,hidden:"http"!==e.type,type:"button",onClick:this.onAddHeader},"Add Header"))),qr.createElement(km,{style:Jy.save,hidden:!this.state.check&&!this.state.message,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,check:null})},onSave:this.onSave}),qr.createElement(Ky,{check:e.id,disabled:!1}),qr.createElement(yy,{check:e.id,disabled:!1}))}}const Zy={card:{display:"table-row",width:"100%",padding:0,boxShadow:"none",cursor:"pointer"},cardOpen:{display:"table-row",width:"100%",padding:0,boxShadow:"none",position:"relative"},select:{margin:"2px 0 0 0",paddingTop:"3px",minHeight:"18px"},name:{verticalAlign:"top",display:"table-cell",padding:"8px"},nameSpan:{margin:"1px 5px 0 0"},item:{verticalAlign:"top",display:"table-cell",padding:"9px",whiteSpace:"nowrap"},roles:{verticalAlign:"top",display:"table-cell",padding:"0 8px 8px 8px"},icon:{marginRight:"3px"},tag:{margin:"8px 5px 0 5px",height:"20px"},bars:{verticalAlign:"top",display:"table-cell",padding:"8px",width:"30px"},bar:{height:"6px",marginBottom:"1px"},barLast:{height:"6px"}};class eb extends qr.Component{render(){let e=this.props.check;if(this.props.open)return qr.createElement("div",{className:"bp3-card bp3-row",style:Zy.cardOpen},qr.createElement(Qy,{check:this.props.check,authorities:this.props.authorities,selected:this.props.selected,onSelect:this.props.onSelect,onClose:()=>{this.props.onOpen()}}));let t={...Zy.card},n=[];for(let t of e.roles)n.push(qr.createElement("div",{className:"bp3-tag bp3-intent-primary",style:Zy.tag,key:t},t));return qr.createElement("div",{className:"bp3-card bp3-row",style:t,onClick:e=>{-1===e.target.className.indexOf("open-ignore")&&this.props.onOpen()}},qr.createElement("div",{className:"bp3-cell",style:Zy.name},qr.createElement("div",{className:"layout horizontal"},qr.createElement("label",{className:"bp3-control bp3-checkbox open-ignore",style:Zy.select},qr.createElement("input",{type:"checkbox",className:"open-ignore",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator open-ignore"})),qr.createElement("div",{style:Zy.nameSpan},e.name))),qr.createElement("div",{className:"flex bp3-cell",style:Zy.roles},n))}}const tb={filters:{margin:"-15px 0 5px 0"},input:{width:"200px",margin:"5px"},role:{width:"150px",margin:"5px"},type:{margin:"5px"},check:{margin:"12px 5px 8px 5px"}};class nb extends qr.Component{constructor(e,t){super(e,t),this.state={menu:!1}}render(){return null===this.props.filter?qr.createElement("div",null):qr.createElement("div",{className:"layout horizontal wrap",style:tb.filters},qr.createElement(Lp,{style:tb.input,placeholder:"Check ID",value:this.props.filter.id,onChange:e=>{let t={...this.props.filter};e?t.id=e:delete t.id,this.props.onFilter(t)}}),qr.createElement(Lp,{style:tb.input,placeholder:"Name",value:this.props.filter.name,onChange:e=>{let t={...this.props.filter};e?t.name=e:delete t.name,this.props.onFilter(t)}}),qr.createElement(Lp,{style:tb.role,placeholder:"Role",value:this.props.filter.role,onChange:e=>{let t={...this.props.filter};e?t.role=e:delete t.role,this.props.onFilter(t)}}))}}const ib={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class sb extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:ny.page,pageCount:ny.pageCount,pages:ny.pages,count:ny.count})},this.state={page:ny.page,pageCount:ny.pageCount,pages:ny.pages,count:ny.count}}componentDidMount(){ny.addChangeListener(this.onChange)}componentWillUnmount(){ny.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{ay(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{ay(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:ib.button,disabled:0===e,type:"button",onClick:()=>{ay(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:ib.button,disabled:e===t-1,type:"button",onClick:()=>{ay(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{ay(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const rb={items:{width:"100%",marginTop:"-5px",display:"table",borderSpacing:"0 5px"},itemsBox:{width:"100%",overflowY:"auto"},placeholder:{opacity:0,width:"100%"},header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"}};class ab extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{let e=ny.checks,t={},n=this.state.selected,i={},s=this.state.opened;e.forEach((e=>{n[e.id]&&(t[e.id]=!0),s[e.id]&&(i[e.id]=!0)})),this.setState({...this.state,checks:e,filter:ny.filter,authorities:Ig.authorities,selected:t,opened:i})},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/checks").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete checks"),void i(e)):void n())))}))}(Object.keys(this.state.selected)).then((()=>{this.setState({...this.state,selected:{},disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={checks:ny.checks,filter:ny.filter,authorities:Ig.authorities,selected:{},opened:{},newOpened:!1,lastSelected:null,disabled:!1}}get selected(){return!!Object.keys(this.state.selected).length}get opened(){return!!Object.keys(this.state.opened).length}componentDidMount(){ny.addChangeListener(this.onChange),Ig.addChangeListener(this.onChange),ry(),ev()}componentWillUnmount(){ny.removeChangeListener(this.onChange),Ig.removeChangeListener(this.onChange)}render(){let e=[];this.state.checks.forEach((t=>{e.push(qr.createElement(eb,{key:t.id,check:t,authorities:this.state.authorities,selected:!!this.state.selected[t.id],open:!!this.state.opened[t.id],onSelect:e=>{let n={...this.state.selected};if(e){let e,i,s=this.state.checks;for(let n=0;ni&&(i=[e,e=i][0]);for(let t=e;t<=i;t++)n[s[t].id]=!0;return void this.setState({...this.state,lastSelected:t.id,selected:n})}}n[t.id]?delete n[t.id]:n[t.id]=!0,this.setState({...this.state,lastSelected:t.id,selected:n})},onOpen:()=>{let e={...this.state.opened};e[t.id]?delete e[t.id]:e[t.id]=!0,this.setState({...this.state,opened:e})}}))}));let t="bp3-button bp3-intent-primary bp3-icon-filter ";this.state.filter&&(t+="bp3-active");let n=[];for(let e of Object.keys(this.state.selected)){let t=ny.check(e);t?n.push(t.name||e):n.push(e)}return qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:rb.header},qr.createElement("h2",{style:rb.heading},"Health Checks"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:rb.buttons},qr.createElement("button",{className:t,style:rb.button,type:"button",onClick:()=>{null===this.state.filter?oy({}):oy(null)}},"Filters"),qr.createElement("button",{className:"bp3-button bp3-intent-warning bp3-icon-chevron-up",style:rb.button,disabled:!this.opened,type:"button",onClick:()=>{this.setState({...this.state,opened:{}})}},"Collapse All"),qr.createElement(Zu,{label:"Delete Selected",className:"bp3-intent-danger bp3-icon-delete",progressClassName:"bp3-intent-danger",safe:!0,style:rb.button,confirmMsg:"Permanently delete the selected checks",confirmInput:!0,items:n,disabled:!this.selected||this.state.disabled,onConfirm:this.onDelete}),qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:rb.button,disabled:this.state.disabled,type:"button",onClick:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/checks").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create check"),void i(e)):void n())))}))}({id:null}).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"New")))),qr.createElement(nb,{filter:this.state.filter,onFilter:e=>{oy(e)},authorities:this.state.authorities}),qr.createElement("div",{style:rb.itemsBox},qr.createElement("div",{style:rb.items},e,qr.createElement("tr",{className:"bp3-card bp3-row",style:rb.placeholder},qr.createElement("td",{colSpan:5,style:rb.placeholder})))),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-lifesaver",title:"No checks",description:"Add a new check to get started."}),qr.createElement(sb,{onPage:()=>{this.setState({...this.state,selected:{},lastSelected:null})}}))}}const ob="log.sync",lb="log.traverse",cb="log.filter";const hb=new class extends Mu{constructor(){super(...arguments),this._logs=Object.freeze([]),this._filter=null,this._token=bu.register(this._callback.bind(this))}get logs(){return this._logs}get logsM(){let e=[];return this._logs.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||50}get pages(){return Math.ceil(this.count/this.pageCount)}get filter(){return this._filter}get count(){return this._count||0}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_filterCallback(e){(null!==this._filter&&null===e||this._filter==={}&&null!==e||e&&this._filter&&e.level!==this._filter.level)&&this._traverse(0),this._filter=e,this.emitChange()}_sync(e,t){for(let t=0;t{ql.get("/log").query({...hb.filter,page:hb.page,page_count:hb.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===db){if(s)return cu(r,"Failed to load logs"),void i(s);bu.dispatch({type:ob,data:{logs:r.body.logs,count:r.body.count}}),n()}else n()}))}))}function pb(e){return bu.dispatch({type:lb,data:{page:e}}),ub()}function mb(e){return bu.dispatch({type:cb,data:{filter:e}}),ub()}Hu.register((e=>{if("log.change"===e.type)-1!==window.location.hash.indexOf("/logs")&&ub()}));const fb={card:{display:"table-row",width:"100%",padding:0,boxShadow:"none"},timestamp:{verticalAlign:"top",display:"table-cell",padding:"6px"},level:{verticalAlign:"top",display:"table-cell",padding:"6px"},message:{verticalAlign:"top",display:"table-cell",padding:"6px"},fields:{verticalAlign:"top",display:"table-cell",padding:"6px"},buttons:{verticalAlign:"top",display:"table-cell",padding:"0",width:"30px"},key:{fontWeight:"bold"},value:{},dialog:{height:"500px",width:"90%",maxWidth:"700px"},dialogBody:{height:"100%"},textarea:{resize:"none",fontSize:"12px",fontFamily:'"Lucida Console", Monaco, monospace',marginBottom:0}};class gb extends qr.Component{constructor(e,t){super(e,t),this.state={stack:!1}}render(){let e=this.props.log,t="bp3-cell ";switch(e.level){case"debug":t+="bp3-text-intent-success";break;case"info":t+="bp3-text-intent-primary";break;case"warning":t+="bp3-text-intent-warning";break;case"error":case"fatal":case"panic":t+="bp3-text-intent-danger"}let n=[];for(let t in e.fields){if(!e.fields.hasOwnProperty(t))continue;let i=e.fields[t];n.push(qr.createElement("div",{key:t},qr.createElement("span",{style:fb.key},t,": "),qr.createElement("span",{style:fb.value},JSON.stringify(i))))}return qr.createElement("div",{className:"bp3-card bp3-row",style:fb.card},qr.createElement("div",{className:t,style:fb.timestamp},Fu(e.timestamp)||"Unknown"),qr.createElement("div",{className:t,style:fb.level},e.level),qr.createElement("div",{className:t,style:fb.message},e.message),qr.createElement("div",{className:"bp3-cell",style:fb.fields},n),qr.createElement("div",{className:"bp3-cell",style:fb.buttons},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-document-open",hidden:!e.stack,onClick:()=>{this.setState({...this.state,stack:!0})}})),qr.createElement(Rc,{title:"Stack Trace",style:fb.dialog,isOpen:this.state.stack,usePortal:!0,portalContainer:document.body,onClose:()=>{this.setState({...this.state,stack:!1})}},qr.createElement("textarea",{className:"bp3-dialog-body bp3-input",style:fb.textarea,autoCapitalize:"off",spellCheck:!1,readOnly:!0,value:e.stack||""})))}}const vb={filters:{margin:"-15px 0 5px 0"},input:{width:"200px",margin:"5px"},role:{width:"150px",margin:"5px"},type:{margin:"5px"},check:{margin:"12px 5px 8px 5px"}};class yb extends qr.Component{constructor(e,t){super(e,t),this.state={menu:!1}}render(){return null===this.props.filter?qr.createElement("div",null):qr.createElement("div",{className:"layout horizontal wrap",style:vb.filters},qr.createElement(Lp,{style:vb.input,placeholder:"Message",value:this.props.filter.message,onChange:e=>{let t={...this.props.filter};e?t.message=e:delete t.message,this.props.onFilter(t)}}),qr.createElement("div",{className:"bp3-select",style:vb.type},qr.createElement("select",{value:this.props.filter.level||"any",onChange:e=>{let t={...this.props.filter},n=e.target.value;"any"===n?delete t.level:t.level=n,this.props.onFilter(t)}},qr.createElement("option",{value:"any"},"Any"),qr.createElement("option",{value:"debug"},"Debug"),qr.createElement("option",{value:"info"},"Info"),qr.createElement("option",{value:"warning"},"Warning"),qr.createElement("option",{value:"error"},"Error"),qr.createElement("option",{value:"fatal"},"Fatal"),qr.createElement("option",{value:"panic"},"Panic"))))}}const bb={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class _b extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:hb.page,pageCount:hb.pageCount,pages:hb.pages,count:hb.count})},this.state={page:hb.page,pageCount:hb.pageCount,pages:hb.pages,count:hb.count}}componentDidMount(){hb.addChangeListener(this.onChange)}componentWillUnmount(){hb.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{pb(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{pb(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:bb.button,disabled:0===e,type:"button",onClick:()=>{pb(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:bb.button,disabled:e===t-1,type:"button",onClick:()=>{pb(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{pb(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const Mb={logs:{width:"100%",marginTop:"-3px",display:"table",borderSpacing:"0 3px"},logsBox:{width:"100%",overflowY:"auto"},header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"}};class wb extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,logs:hb.logs,filter:hb.filter})},this.state={logs:hb.logs,filter:hb.filter}}componentDidMount(){hb.addChangeListener(this.onChange),ub()}componentWillUnmount(){hb.removeChangeListener(this.onChange)}render(){let e=[];this.state.logs.forEach((t=>{e.push(qr.createElement(gb,{key:t.id,log:t}))}));let t="bp3-button bp3-intent-primary bp3-icon-filter ";return this.state.filter&&(t+="bp3-active"),qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Mb.header},qr.createElement("h2",{style:Mb.heading},"Logs"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Mb.buttons},qr.createElement("button",{className:t,style:Mb.button,type:"button",onClick:()=>{null===this.state.filter?mb({}):mb(null)}},"Filters")))),qr.createElement(yb,{filter:this.state.filter,onFilter:e=>{mb(e)}}),qr.createElement("div",{style:Mb.logsBox},qr.createElement("div",{style:Mb.logs},e)),qr.createElement(_b,null))}}const Sb={group:{width:"100%",maxWidth:"310px",marginTop:"5px"},domain:{width:"100%",borderRadius:"0 3px 3px 0"},domainBox:{flex:"1"}};class Lb extends qr.Component{clone(){return{...this.props.domain}}render(){let e=this.props.domain;return qr.createElement("div",{className:"bp3-control-group",style:Sb.group},qr.createElement("div",{style:Sb.domainBox},qr.createElement("input",{className:"bp3-input",style:Sb.domain,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Domain",value:e.domain||"",onChange:e=>{let t=this.clone();t.domain=e.target.value,this.props.onChange(t)}})),qr.createElement("div",{style:Sb.domainBox},qr.createElement("input",{className:"bp3-input",style:Sb.domain,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Host",value:e.host||"",onChange:e=>{let t=this.clone();t.host=e.target.value,this.props.onChange(t)}})),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-intent-danger bp3-icon-remove",onClick:()=>{this.props.onRemove()}}))}}const kb={group:{width:"100%",maxWidth:"310px",marginTop:"5px"},protocol:{flex:"0 1 auto"},hostname:{width:"100%"},hostnameBox:{flex:"1"},port:{flex:"0 1 auto",width:"52px",borderRadius:"0 3px 3px 0"}};class xb extends qr.Component{clone(){return{...this.props.server}}render(){let e=this.props.server;return qr.createElement("div",{className:"bp3-control-group",style:kb.group},qr.createElement("div",{className:"bp3-select",style:kb.protocol},qr.createElement("select",{value:e.protocol,onChange:e=>{let t=this.clone();t.protocol=e.target.value,this.props.onChange(t)}},qr.createElement("option",{value:"http"},"HTTP"),qr.createElement("option",{value:"https"},"HTTPS"))),qr.createElement("div",{style:kb.hostnameBox},qr.createElement("input",{className:"bp3-input",style:kb.hostname,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Hostname",value:e.hostname||"",onChange:e=>{let t=this.clone();t.hostname=e.target.value,this.props.onChange(t)}})),qr.createElement("input",{className:"bp3-input",style:kb.port,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Port",value:e.port,onChange:e=>{let t=this.clone();t.port=parseInt(e.target.value,10),this.props.onChange(t)}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-intent-danger bp3-icon-remove",onClick:()=>{this.props.onRemove()}}))}}const Cb={group:{width:"100%",maxWidth:"310px",marginTop:"5px"},path:{width:"100%",borderRadius:"0 3px 3px 0"},pathBox:{flex:"1"}};class Tb extends qr.Component{clone(){return{...this.props.path}}render(){let e=this.props.path;return qr.createElement("div",{className:"bp3-control-group",style:Cb.group},qr.createElement("div",{style:Cb.pathBox},qr.createElement("input",{className:"bp3-input",style:Cb.path,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Permitted path",value:e.path||"",onChange:e=>{let t=this.clone();t.path=e.target.value,this.props.onChange(t)}})),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-intent-danger bp3-icon-remove",onClick:()=>{this.props.onRemove()}}))}}const Eb={card:{position:"relative",padding:"48px 10px 0 10px",width:"100%"},remove:{position:"absolute",top:"5px",right:"5px"},item:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px",margin:"0 10px"},save:{paddingBottom:"10px"},button:{height:"30px"},buttons:{cursor:"pointer",position:"absolute",top:0,left:0,right:0,padding:"4px",height:"39px",backgroundColor:"rgba(0, 0, 0, 0.13)"},label:{width:"100%",maxWidth:"280px"},status:{margin:"6px 0 0 1px"},icon:{marginRight:"3px"},inputGroup:{width:"100%"},protocol:{flex:"0 1 auto"},port:{flex:"1"},select:{margin:"7px 0px 0px 6px",paddingTop:"3px"}};class zb extends qr.Component{constructor(e,t){super(e,t),this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/service/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save service"),void i(e)):void n())))}))}(this.state.service).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,service:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/service/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>{if(t.done(),e)return cu(s,"Failed to delete services"),void i(e);n()}))}))}(this.props.service.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddRole=()=>{let e;e=this.state.changed?{...this.state.service}:{...this.props.service};let t=[...e.roles];this.state.addRole&&(-1===t.indexOf(this.state.addRole)&&t.push(this.state.addRole),t.sort(),e.roles=t,this.setState({...this.state,changed:!0,message:"",addRole:"",service:e}))},this.onAddWhitelistNet=()=>{let e;e=this.state.changed?{...this.state.service}:{...this.props.service};let t=[...e.whitelist_networks];this.state.addWhitelistNet&&(-1===t.indexOf(this.state.addWhitelistNet)&&t.push(this.state.addWhitelistNet),t.sort(),e.whitelist_networks=t,this.setState({...this.state,changed:!0,message:"",addWhitelistNet:"",service:e}))},this.onAddServer=()=>{let e;e=this.state.changed?{...this.state.service}:{...this.props.service};let t=[...e.servers,{protocol:"https",hostname:"",port:443}];e.servers=t,this.setState({...this.state,changed:!0,message:"",service:e})},this.onAddDomain=()=>{let e;e=this.state.changed?{...this.state.service}:{...this.props.service};let t=[...e.domains,{}];e.domains=t,this.setState({...this.state,changed:!0,message:"",service:e})},this.onAddWhitelistPath=()=>{let e;e=this.state.changed?{...this.state.service}:{...this.props.service};let t=[...e.whitelist_paths||[],{}];e.whitelist_paths=t,this.setState({...this.state,changed:!0,message:"",service:e})},this.state={disabled:!1,changed:!1,message:"",addRole:"",addWhitelistNet:"",service:null}}set(e,t){let n;n=this.state.changed?{...this.state.service}:{...this.props.service},n[e]=t,this.setState({...this.state,changed:!0,service:n})}onRemoveRole(e){let t;t=this.state.changed?{...this.state.service}:{...this.props.service};let n=[...t.roles],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.roles=n,this.setState({...this.state,changed:!0,message:"",addRole:"",service:t}))}onRemoveWhitelistNet(e){let t;t=this.state.changed?{...this.state.service}:{...this.props.service};let n=[...t.whitelist_networks],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.whitelist_networks=n,this.setState({...this.state,changed:!0,message:"",addWhitelistNet:"",service:t}))}onChangeServer(e,t){let n;n=this.state.changed?{...this.state.service}:{...this.props.service};let i=[...n.servers];i[e]=t,n.servers=i,this.setState({...this.state,changed:!0,message:"",service:n})}onRemoveServer(e){let t;t=this.state.changed?{...this.state.service}:{...this.props.service};let n=[...t.servers];n.splice(e,1),t.servers=n,this.setState({...this.state,changed:!0,message:"",service:t})}onChangeDomain(e,t){let n;n=this.state.changed?{...this.state.service}:{...this.props.service};let i=[...n.domains];i[e]=t,n.domains=i,this.setState({...this.state,changed:!0,message:"",service:n})}onRemoveDomain(e){let t;t=this.state.changed?{...this.state.service}:{...this.props.service};let n=[...t.domains];n.splice(e,1),t.domains=n,this.setState({...this.state,changed:!0,message:"",service:t})}onChangeWhitelistPath(e,t){let n;n=this.state.changed?{...this.state.service}:{...this.props.service};let i=[...n.whitelist_paths];i[e]=t,n.whitelist_paths=i,this.setState({...this.state,changed:!0,message:"",service:n})}onRemoveWhitelistPath(e){let t;t=this.state.changed?{...this.state.service}:{...this.props.service};let n=[...t.whitelist_paths];n.splice(e,1),t.whitelist_paths=n,this.setState({...this.state,changed:!0,message:"",service:t})}render(){let e=this.state.service||this.props.service,t=[];for(let n=0;n{this.onChangeDomain(i,e)},onRemove:()=>{this.onRemoveDomain(i)}}))}let n=[];for(let t of e.roles)n.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Eb.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveRole(t)}})));let i=[];for(let t=0;t{this.onChangeServer(n,e)},onRemove:()=>{this.onRemoveServer(n)}}))}let s=[qr.createElement("option",{key:"null",value:""},"None")];for(let e of this.props.authorities)s.push(qr.createElement("option",{key:e.id,value:e.id},e.name));let r=[];for(let t of e.whitelist_networks)r.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Eb.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveWhitelistNet(t)}})));let a=[];for(let t=0;t<(e.whitelist_paths||[]).length;t++){let n=t;a.push(qr.createElement(Tb,{key:n,path:e.whitelist_paths[n],onChange:e=>{this.onChangeWhitelistPath(n,e)},onRemove:()=>{this.onRemoveWhitelistPath(n)}}))}return qr.createElement("td",{className:"bp3-cell",colSpan:2,style:Eb.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Eb.group},qr.createElement("div",{className:"layout horizontal tab-close",style:Eb.buttons,onClick:e=>{-1!==e.target.className.indexOf("tab-close")&&this.props.onClose()}},qr.createElement("div",null,qr.createElement("label",{className:"bp3-control bp3-checkbox",style:Eb.select},qr.createElement("input",{type:"checkbox",className:"open-ignore",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator"}))),qr.createElement("div",{className:"flex tab-close"}),qr.createElement(Zu,{safe:!0,className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Service",confirmMsg:"Permanently delete this service",confirmInput:!0,items:[e.name],disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{label:"Name",help:"Name of service",type:"text",placeholder:"Enter name",value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement(sf,{label:"Type",help:"Service type",value:e.type,onChange:e=>{this.set("type",e)}},qr.createElement("option",{value:"http"},"HTTP")),qr.createElement("label",{style:Eb.itemsLabel},"External Domains",qr.createElement(Mm,{title:"External Domains",content:"When a request comes into a proxy node the requests host will be used to match the request with the domain of a service. The external domain must point to either a node that has the service added or a load balancer that forwards to nodes serving the service. Some internal services will be expecting a specific host such as a web server that serves mutliple websites that is also matching the requests host to one of the mutliple websites. If the internal service is expecting a different host set the host field, otherwise leave it blank. Services that are associated with the same node should not also have the same domains. Wildcards are supported for the first component of domain. Multifactor U2F authentication is not supported for wildcard domains. When using a wildcard with U2F authentication the domain where the user login occurs must be included in external domains."})),t,qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Eb.itemsAdd,type:"button",onClick:this.onAddDomain},"Add Domain"),qr.createElement("label",{style:Eb.itemsLabel},"Internal Servers",qr.createElement(Mm,{title:"Internal Servers",content:"After a proxy node receives an authenticated request it will be forwarded to the internal servers and the response will be sent back to the user. Multiple internal servers can be added to load balance the requests. This should only be done if outages are not expected as no health checks are preformed for each server. If outages are expected a load balancer such as AWS ELB should be used. If a domain is used with HTTPS the internal server must have a valid certificate. When an IP address is used with HTTPS the internal servers certificate will not be validated. These internal servers should ideally be configured to only accept requests from the private IP addresses of the Pritunl Zero nodes. It is important to consider that if the internal servers are configured to accept requests from other IP addresses those requests will be sent directly to the internal server and will bypass the authentication provided by Pritunl Zero."})),i,qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Eb.itemsAdd,type:"button",onClick:this.onAddServer},"Add Server"),qr.createElement(sf,{label:"Client Certificate Authority",help:"Certificate authority to use for internal client certificate. Only valid for HTTPS connections to internal servers.",value:e.client_authority,onChange:e=>{this.set("client_authority",e)}},s),qr.createElement(Cm,{label:"Logout Path",help:"Optional, path such as '/logout' that will end the Pritunl Zero users session. Supports '*' and '?' wildcards.",type:"text",placeholder:"Enter logout path",value:e.logout_path,onChange:e=>{this.set("logout_path",e)}})),qr.createElement("div",{style:Eb.group},qr.createElement(Xp,{fields:[{label:"ID",value:e.id||"None"}]}),qr.createElement("label",{className:"bp3-label"},"Roles",qr.createElement(Mm,{title:"Roles",content:"The user roles that will be allowed access to this service. At least one role must match for the user to access the service."}),qr.createElement("div",null,n)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add role",value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement("label",{className:"bp3-label"},"Permitted Networks",qr.createElement(Mm,{title:"Permitted Networks",content:"Permitted subnets with CIDR such as 10.0.0.0/8 that can access the service without authenticating. Single IP addresses can also be used. Any request coming from an IP address on these networks will be able to access the service without any authentication. Extra care should be taken when using this with the forwarded for header option in the node settings. If the nodes forwarded for header is enabled without a load balancer the user can modify the header value to spoof an IP address."}),qr.createElement("div",null,r)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add network",value:this.state.addWhitelistNet,onChange:e=>{this.setState({...this.state,addWhitelistNet:e})},onSubmit:this.onAddWhitelistNet}),qr.createElement("label",{style:Eb.itemsLabel},"Permitted Paths",qr.createElement(Mm,{title:"Permitted Paths",content:"Permitted paths that can be accessed without authenticating. Supports '*' and '?' wildcards. Using this feature significantly increases the attack surface of the service and is not recommended."})),a,qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Eb.itemsAdd,type:"button",onClick:this.onAddWhitelistPath},"Add Permitted Path"),qr.createElement(Sm,{label:"Share session with subdomains",help:"This option will allow an authenticated user to access multiple services across different subdomains without needing to authenticate at each services subdomain.",checked:e.share_session,onToggle:()=>{this.set("share_session",!e.share_session)}}),qr.createElement(Sm,{label:"Allow WebSockets",help:"This will allow WebSockets to be proxied to the user. If the internal service relies on WebSockets this must be enabled.",checked:e.websockets,onToggle:()=>{this.set("websockets",!e.websockets)}}),qr.createElement(Sm,{label:"CSRF check",help:"Check headers to block cross domain requests. The service must implement CSRF protection if disabled.",checked:!e.disable_csrf_check,onToggle:()=>{this.set("disable_csrf_check",!e.disable_csrf_check)}}))),qr.createElement(km,{style:Eb.save,hidden:!this.state.service&&!this.state.message,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,service:null})},onSave:this.onSave}))}}const Ab={card:{display:"table-row",width:"100%",padding:0,boxShadow:"none",cursor:"pointer"},cardOpen:{display:"table-row",width:"100%",padding:0,boxShadow:"none",position:"relative"},select:{margin:"2px 0 0 0",paddingTop:"3px",minHeight:"18px"},name:{verticalAlign:"top",display:"table-cell",padding:"8px"},nameSpan:{margin:"1px 5px 0 0"},item:{verticalAlign:"top",display:"table-cell",padding:"9px",whiteSpace:"nowrap"},roles:{verticalAlign:"top",display:"table-cell",padding:"0 8px 8px 8px"},icon:{marginRight:"3px"},tag:{margin:"8px 5px 0 5px",height:"20px"},bars:{verticalAlign:"top",display:"table-cell",padding:"8px",width:"30px"},bar:{height:"6px",marginBottom:"1px"},barLast:{height:"6px"}};class Hb extends qr.Component{render(){let e=this.props.service;if(this.props.open)return qr.createElement("div",{className:"bp3-card bp3-row",style:Ab.cardOpen},qr.createElement(zb,{service:this.props.service,authorities:this.props.authorities,selected:this.props.selected,onSelect:this.props.onSelect,onClose:()=>{this.props.onOpen()}}));let t={...Ab.card},n=[];for(let t of e.roles)n.push(qr.createElement("div",{className:"bp3-tag bp3-intent-primary",style:Ab.tag,key:t},t));return qr.createElement("div",{className:"bp3-card bp3-row",style:t,onClick:e=>{-1===e.target.className.indexOf("open-ignore")&&this.props.onOpen()}},qr.createElement("div",{className:"bp3-cell",style:Ab.name},qr.createElement("div",{className:"layout horizontal"},qr.createElement("label",{className:"bp3-control bp3-checkbox open-ignore",style:Ab.select},qr.createElement("input",{type:"checkbox",className:"open-ignore",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator open-ignore"})),qr.createElement("div",{style:Ab.nameSpan},e.name))),qr.createElement("div",{className:"flex bp3-cell",style:Ab.roles},n))}}const Db={filters:{margin:"-15px 0 5px 0"},input:{width:"200px",margin:"5px"},role:{width:"150px",margin:"5px"},type:{margin:"5px"},check:{margin:"12px 5px 8px 5px"}};class Pb extends qr.Component{constructor(e,t){super(e,t),this.state={menu:!1}}render(){return null===this.props.filter?qr.createElement("div",null):qr.createElement("div",{className:"layout horizontal wrap",style:Db.filters},qr.createElement(Lp,{style:Db.input,placeholder:"Service ID",value:this.props.filter.id,onChange:e=>{let t={...this.props.filter};e?t.id=e:delete t.id,this.props.onFilter(t)}}),qr.createElement(Lp,{style:Db.input,placeholder:"Name",value:this.props.filter.name,onChange:e=>{let t={...this.props.filter};e?t.name=e:delete t.name,this.props.onFilter(t)}}),qr.createElement(Lp,{style:Db.role,placeholder:"Role",value:this.props.filter.role,onChange:e=>{let t={...this.props.filter};e?t.role=e:delete t.role,this.props.onFilter(t)}}))}}const Ob={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class Yb extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:Vg.page,pageCount:Vg.pageCount,pages:Vg.pages,count:Vg.count})},this.state={page:Vg.page,pageCount:Vg.pageCount,pages:Vg.pages,count:Vg.count}}componentDidMount(){Vg.addChangeListener(this.onChange)}componentWillUnmount(){Vg.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{Jg(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{Jg(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:Ob.button,disabled:0===e,type:"button",onClick:()=>{Jg(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:Ob.button,disabled:e===t-1,type:"button",onClick:()=>{Jg(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{Jg(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const Rb={items:{width:"100%",marginTop:"-5px",display:"table",borderSpacing:"0 5px"},itemsBox:{width:"100%",overflowY:"auto"},placeholder:{opacity:0,width:"100%"},header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"}};class Vb extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{let e=Vg.services,t={},n=this.state.selected,i={},s=this.state.opened;e.forEach((e=>{n[e.id]&&(t[e.id]=!0),s[e.id]&&(i[e.id]=!0)})),this.setState({...this.state,services:e,filter:Vg.filter,authorities:Ig.authorities,selected:t,opened:i})},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/service").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete services"),void i(e)):void n())))}))}(Object.keys(this.state.selected)).then((()=>{this.setState({...this.state,selected:{},disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={services:Vg.services,filter:Vg.filter,authorities:Ig.authorities,selected:{},opened:{},newOpened:!1,lastSelected:null,disabled:!1}}get selected(){return!!Object.keys(this.state.selected).length}get opened(){return!!Object.keys(this.state.opened).length}componentDidMount(){Vg.addChangeListener(this.onChange),Ig.addChangeListener(this.onChange),qg(),ev()}componentWillUnmount(){Vg.removeChangeListener(this.onChange),Ig.removeChangeListener(this.onChange)}render(){let e=[];this.state.services.forEach((t=>{e.push(qr.createElement(Hb,{key:t.id,service:t,authorities:this.state.authorities,selected:!!this.state.selected[t.id],open:!!this.state.opened[t.id],onSelect:e=>{let n={...this.state.selected};if(e){let e,i,s=this.state.services;for(let n=0;ni&&(i=[e,e=i][0]);for(let t=e;t<=i;t++)n[s[t].id]=!0;return void this.setState({...this.state,lastSelected:t.id,selected:n})}}n[t.id]?delete n[t.id]:n[t.id]=!0,this.setState({...this.state,lastSelected:t.id,selected:n})},onOpen:()=>{let e={...this.state.opened};e[t.id]?delete e[t.id]:e[t.id]=!0,this.setState({...this.state,opened:e})}}))}));let t="bp3-button bp3-intent-primary bp3-icon-filter ";this.state.filter&&(t+="bp3-active");let n=[];for(let e of Object.keys(this.state.selected)){let t=Vg.service(e);t?n.push(t.name||e):n.push(e)}return qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Rb.header},qr.createElement("h2",{style:Rb.heading},"Services"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Rb.buttons},qr.createElement("button",{className:t,style:Rb.button,type:"button",onClick:()=>{null===this.state.filter?Qg({}):Qg(null)}},"Filters"),qr.createElement("button",{className:"bp3-button bp3-intent-warning bp3-icon-chevron-up",style:Rb.button,disabled:!this.opened,type:"button",onClick:()=>{this.setState({...this.state,opened:{}})}},"Collapse All"),qr.createElement(Zu,{label:"Delete Selected",className:"bp3-intent-danger bp3-icon-delete",progressClassName:"bp3-intent-danger",safe:!0,style:Rb.button,confirmMsg:"Permanently delete the selected services",confirmInput:!0,items:n,disabled:!this.selected||this.state.disabled,onConfirm:this.onDelete}),qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Rb.button,disabled:this.state.disabled,type:"button",onClick:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/service").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create service"),void i(e)):void n())))}))}({id:null,share_session:!0,websockets:!0}).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"New")))),qr.createElement(Pb,{filter:this.state.filter,onFilter:e=>{Qg(e)},authorities:this.state.authorities}),qr.createElement("div",{style:Rb.itemsBox},qr.createElement("div",{style:Rb.items},e,qr.createElement("tr",{className:"bp3-card bp3-row",style:Rb.placeholder},qr.createElement("td",{colSpan:5,style:Rb.placeholder})))),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-cloud",title:"No services",description:"Add a new service to get started."}),qr.createElement(Yb,{onPage:()=>{this.setState({...this.state,selected:{},lastSelected:null})}}))}}const Nb={label:{fontSize:"16px",margin:"0 0 7px 0"},card:{marginBottom:"5px"},role:{margin:"9px 5px 0 5px",height:"20px"}};class $b extends qr.Component{constructor(e,t){super(e,t),this.state={addRole:""}}clone(){return{...this.props.provider}}azure(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Directory ID",help:"Azure active directory ID",type:"text",placeholder:"Azure directory ID",value:e.tenant,onChange:e=>{let t=this.clone();t.tenant=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Application ID",help:"Azure application ID",type:"text",placeholder:"Azure application ID",value:e.client_id,onChange:e=>{let t=this.clone();t.client_id=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Application Secret",help:"Azure application secret",type:"text",placeholder:"Azure application secret",value:e.client_secret,onChange:e=>{let t=this.clone();t.client_secret=e,this.props.onChange(t)}}))}authzero(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Auth0 Sub-Domain",help:"Subdomain of Auth0 application. Enter subdomain portion only such as 'pritunl' for pritunl.auth0.com",type:"text",placeholder:"Auth0 sub-domain",value:e.domain,onChange:e=>{let t=this.clone();t.domain=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Client ID",help:"Auth0 application client ID",type:"text",placeholder:"Auth0 client ID",value:e.client_id,onChange:e=>{let t=this.clone();t.client_id=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Client Secret",help:"Auth0 application client secret",type:"text",placeholder:"Auth0 client secret",value:e.client_secret,onChange:e=>{let t=this.clone();t.client_secret=e,this.props.onChange(t)}}))}google(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Domain",help:"Domain segment of email address to match",type:"text",placeholder:"Google domain to match",value:e.domain,onChange:e=>{let t=this.clone();t.domain=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Google Admin Email",help:"Optional, the email address of an administrator user in the Google G Suite to delegate API access to. This user will be used to get the groups of Google users. Only needed when providing the Google JSON private key.",type:"text",placeholder:"Google admin email",value:e.google_email,onChange:e=>{let t=this.clone();t.google_email=e,this.props.onChange(t)}}),qr.createElement(Yv,{label:"Google JSON Private Key",help:"Optional, private key for service account in JSON format. This will copy the Google users groups to Pritunl Zero. Also requires Google admin email.",placeholder:"Google JSON private key",rows:6,value:e.google_key,onChange:e=>{let t=this.clone();t.google_key=e,this.props.onChange(t)}}))}onelogin(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Issuer URL",help:"Single sign-on URL found in OneLogin app settings",type:"text",placeholder:"OneLogin issuer URL",value:e.issuer_url,onChange:e=>{let t=this.clone();t.issuer_url=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"SAML 2.0 Endpoint (HTTP)",help:"SAML 2.0 endpoint found in OneLogin app settings",type:"text",placeholder:"OneLogin SAML endpoint",value:e.saml_url,onChange:e=>{let t=this.clone();t.saml_url=e,this.props.onChange(t)}}),qr.createElement(Yv,{label:"X.509 Certificate",help:"X.509 certificate found in OneLogin app settings",placeholder:"OneLogin X.509 certificate",rows:6,value:e.saml_cert,onChange:e=>{let t=this.clone();t.saml_cert=e,this.props.onChange(t)}}))}okta(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Identity Provider Single Sign-On URL",help:"Single sign-on URL found in Okta app settings",type:"text",placeholder:"Okta single sign-on URL",value:e.saml_url,onChange:e=>{let t=this.clone();t.saml_url=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Identity Provider Issuer URL",help:"Issuer URL found in Okta app settings",type:"text",placeholder:"Okta issuer URL",value:e.issuer_url,onChange:e=>{let t=this.clone();t.issuer_url=e,this.props.onChange(t)}}),qr.createElement(Yv,{label:"X.509 Certificate",help:"X.509 certificate found in Okta app settings",placeholder:"Okta X.509 certificate",rows:6,value:e.saml_cert,onChange:e=>{let t=this.clone();t.saml_cert=e,this.props.onChange(t)}}))}jumpcloud(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Identity Provider Single Sign-On URL",help:"Single sign-on URL found in JumpCloud app settings",type:"text",placeholder:"JumpCloud single sign-on URL",value:e.saml_url,onChange:e=>{let t=this.clone();t.saml_url=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Identity Provider Issuer URL",help:"Issuer URL found in JumpCloud app settings",type:"text",placeholder:"JumpCloud issuer URL",value:e.issuer_url,onChange:e=>{let t=this.clone();t.issuer_url=e,this.props.onChange(t)}}),qr.createElement(Yv,{label:"X.509 Certificate",help:"X.509 certificate found in JumpCloud app settings",placeholder:"JumpCloud X.509 certificate",rows:6,value:e.saml_cert,onChange:e=>{let t=this.clone();t.saml_cert=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"JumpCloud App ID",help:"Optional, ID of JumpCloud Pritunl app. This can be found in the URL of the app settings page. Required to verify user is attached to JumpCloud application",type:"text",placeholder:"JumpCloud app ID",value:e.jumpcloud_app_id,onChange:e=>{let t=this.clone();t.jumpcloud_app_id=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"JumpCloud API Key",help:"JumpCloud API key for user account status verfication",type:"text",placeholder:"JumpCloud client secret",value:e.jumpcloud_secret,onChange:e=>{let t=this.clone();t.jumpcloud_secret=e,this.props.onChange(t)}}))}render(){let e,t=this.props.provider,n="";switch(t.type){case"azure":n="Azure",e=this.azure();break;case"authzero":n="Auth0",e=this.authzero();break;case"google":n="Google",e=this.google();break;case"onelogin":n="OneLogin",e=this.onelogin();break;case"okta":n="Okta",e=this.okta();break;case"jumpcloud":n="JumpCloud",e=this.jumpcloud()}let i=[];for(let e of t.default_roles)i.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Nb.role,key:e},e,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{let t=[...this.props.provider.default_roles],n=t.indexOf(e);if(-1===n)return;t.splice(n,1);let i=this.clone();i.default_roles=t,this.props.onChange(i)}})));return qr.createElement("div",{className:"bp3-card",style:Nb.card},qr.createElement("h6",{style:Nb.label},n),qr.createElement(Xp,{fields:[{label:"ID",value:t.id||"None"}]}),qr.createElement(Cm,{label:"Label",help:"Provider label that will be shown to users on the login page",type:"text",placeholder:"Provider label",value:t.label,onChange:e=>{let t=this.clone();t.label=e,this.props.onChange(t)}}),qr.createElement("label",{className:"bp3-label",hidden:!t.auto_create},"Default Roles",qr.createElement(Mm,{title:"Default Roles",content:"When the user has authenticated for the first time these roles will be given to the user. These roles may also be used to update the users roles depending on the role management option."}),qr.createElement("div",null,i)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add default role",hidden:!t.auto_create,value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:()=>{let e=[...this.props.provider.default_roles];if(!this.state.addRole)return;-1===e.indexOf(this.state.addRole)&&e.push(this.state.addRole),e.sort();let t=this.clone();t.default_roles=e,this.props.onChange(t),this.setState({...this.state,addRole:""})}}),qr.createElement(Sm,{label:"Create user on authentication",help:"Create the user on first authentication. If this is disabled all users must be manually created before they are able to authenticate.",checked:t.auto_create,onToggle:()=>{let e=this.clone();e.auto_create=!e.auto_create,e.auto_create||"set_on_insert"!==e.role_management||(e.role_management="merge"),this.props.onChange(e)}}),qr.createElement(sf,{label:"Role Management",help:"When the user authenticates for the first time a user will be created and the users roles will be set to the roles configured above. This is referenced as set on insert. It may be desired to update the roles on subsequent authentications. For this the merge mode can be used which will take the users current roles and merge them with the roles configured above using all the roles from both sets. Overwrite mode will replace the users roles on every authentication with the roles configured above. It is important to consider that if a users roles are modified those modifications will be lost when the overwrite mode is used.",value:t.role_management,onChange:e=>{let t=this.clone();t.role_management=e,this.props.onChange(t)}},qr.createElement("option",{value:"set_on_insert",hidden:!t.auto_create},"Set on insert"),qr.createElement("option",{value:"merge"},"Merge"),qr.createElement("option",{value:"overwrite"},"Overwrite")),e,qr.createElement("button",{className:"bp3-button bp3-intent-danger",onClick:()=>{this.props.onRemove()}},"Remove"))}}const Ib={label:{fontSize:"16px",margin:"0 0 7px 0"},card:{marginBottom:"5px"},role:{margin:"9px 5px 0 5px",height:"20px"}};class Fb extends qr.Component{clone(){return{...this.props.provider}}duo(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Duo API Hostname",help:"Duo API hostname found in Duo admin console.",type:"text",placeholder:"Duo API hostname",value:e.duo_hostname,onChange:e=>{let t=this.clone();t.duo_hostname=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Duo Integration Key",help:"Duo integration key found in Duo admin console.",type:"text",placeholder:"Duo integration key",value:e.duo_key,onChange:e=>{let t=this.clone();t.duo_key=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Duo Secret Key",help:"Duo secret key found in Duo admin console.",type:"text",placeholder:"Duo secret key",value:e.duo_secret,onChange:e=>{let t=this.clone();t.duo_secret=e,this.props.onChange(t)}}),qr.createElement(Sm,{label:"Push authentication",help:"Allow push authentication.",checked:e.push_factor,onToggle:()=>{let e=this.clone();e.push_factor=!e.push_factor,this.props.onChange(e)}}),qr.createElement(Sm,{label:"Phone authentication",help:"Allow phone authentication.",checked:e.phone_factor,onToggle:()=>{let e=this.clone();e.phone_factor=!e.phone_factor,this.props.onChange(e)}}),qr.createElement(Sm,{label:"Passcode authentication",help:"Allow passcode authentication.",checked:e.passcode_factor,onToggle:()=>{let e=this.clone();e.passcode_factor=!e.passcode_factor,this.props.onChange(e)}}),qr.createElement(Sm,{label:"SMS authentication",help:"Allow SMS authentication.",checked:e.sms_factor,onToggle:()=>{let e=this.clone();e.sms_factor=!e.sms_factor,this.props.onChange(e)}}))}onelogin(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"OneLogin API Client ID",help:"OneLogin API client ID found in OneLogin admin console.",type:"text",placeholder:"OneLogin API client ID",value:e.one_login_id,onChange:e=>{let t=this.clone();t.one_login_id=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"OneLogin API Client Secret",help:"OneLogin API client secret found in OneLogin admin console.",type:"text",placeholder:"OneLogin API client secret",value:e.one_login_secret,onChange:e=>{let t=this.clone();t.one_login_secret=e,this.props.onChange(t)}}),qr.createElement(sf,{label:"OneLogin API Region",help:"OneLogin region for API requests.",value:e.one_login_region,onChange:e=>{let t=this.clone();t.one_login_region=e,this.props.onChange(t)}},qr.createElement("option",{value:"us"},"United States"),qr.createElement("option",{value:"eu"},"Europe")),qr.createElement(Sm,{label:"Push authentication",help:"Allow push authentication.",checked:e.push_factor,onToggle:()=>{let e=this.clone();e.push_factor=!e.push_factor,this.props.onChange(e)}}),qr.createElement(Sm,{label:"Passcode authentication",help:"Allow passcode authentication.",checked:e.passcode_factor,onToggle:()=>{let e=this.clone();e.passcode_factor=!e.passcode_factor,this.props.onChange(e)}}))}okta(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Okta Domain",help:"Okta domain used to login to Okta such as 'pritunl.okta.com'.",type:"text",placeholder:"Okta domain",value:e.okta_domain,onChange:e=>{let t=this.clone();t.okta_domain=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Okta API Token",help:"Okta API token found in Okta admin console.",type:"text",placeholder:"Okta API token",value:e.okta_token,onChange:e=>{let t=this.clone();t.okta_token=e,this.props.onChange(t)}}),qr.createElement(Sm,{label:"Push authentication",help:"Allow push authentication.",checked:e.push_factor,onToggle:()=>{let e=this.clone();e.push_factor=!e.push_factor,this.props.onChange(e)}}),qr.createElement(Sm,{label:"Passcode authentication",help:"Allow passcode authentication.",checked:e.passcode_factor,onToggle:()=>{let e=this.clone();e.passcode_factor=!e.passcode_factor,this.props.onChange(e)}}))}render(){let e,t=this.props.provider,n="";switch(t.type){case"duo":n="Duo",e=this.duo();break;case"one_login":n="OneLogin",e=this.onelogin();break;case"okta":n="Okta",e=this.okta()}return qr.createElement("div",{className:"bp3-card",style:Ib.card},qr.createElement("h6",{style:Ib.label},n),qr.createElement(Xp,{fields:[{label:"ID",value:t.id||"None"}]}),qr.createElement(Cm,{label:"Name",help:"Two-factor provider name.",type:"text",placeholder:"Two-factor provider name",value:t.name,onChange:e=>{let t=this.clone();t.name=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Label",help:"Two-factor provider label that will be shown to users on the login page.",type:"text",placeholder:"Two-factor provider label",value:t.label,onChange:e=>{let t=this.clone();t.label=e,this.props.onChange(t)}}),e,qr.createElement("button",{className:"bp3-button bp3-intent-danger",onClick:()=>{this.props.onRemove()}},"Remove"))}}const jb={providers:{paddingBottom:"6px",marginBottom:"5px",borderBottomStyle:"solid"},providersLabel:{margin:0},secondaryProviders:{paddingBottom:"6px",marginTop:"5px",marginBottom:"5px",borderBottomStyle:"solid"}};class Bb extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,changed:!1,settings:mv.settingsM})},this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/settings").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to commit settings"),void i(e)):(bu.dispatch({type:pv,data:s.body}),void n()))))}))}(this.state.settings).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1})})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.set=(e,t)=>{let n={...this.state.settings};n[e]=t,this.setState({...this.state,changed:!0,message:"",settings:n})},this.state={changed:!1,disabled:!1,message:"",provider:"google",secondaryProvider:"duo",settings:mv.settingsM}}componentDidMount(){mv.addChangeListener(this.onChange),yv()}componentWillUnmount(){mv.removeChangeListener(this.onChange)}render(){let e=this.state.settings;if(!e)return qr.createElement("div",null);let t=!!Lu.subscription&&Lu.subscription.active,n=[];for(let t=0;t{let n=[...this.state.settings.auth_providers];n[t]=e,this.set("auth_providers",n)},onRemove:()=>{let e=[...this.state.settings.auth_providers];e.splice(t,1),this.set("auth_providers",e)}}));let i=[];for(let t=0;t{let n=[...this.state.settings.auth_secondary_providers];n[t]=e,this.set("auth_secondary_providers",n)},onRemove:()=>{let e=[...this.state.settings.auth_secondary_providers];e.splice(t,1),this.set("auth_secondary_providers",e)}}));return qr.createElement(Ep,null,qr.createElement(Ap,{label:"Settings"}),qr.createElement(Zm,null,qr.createElement(Qm,{hidden:t},qr.createElement(jp,{hidden:!1,iconClass:"bp3-icon-credit-card",title:"Subscription Required",description:"Subscription required for single sign-on."})),qr.createElement(Qm,{hidden:!t},qr.createElement("div",{className:"bp3-border",style:jb.providers},qr.createElement("h5",{style:jb.providersLabel},"Authentication Providers")),n,qr.createElement(av,{label:"Add Provider",value:this.state.provider,buttonClass:"bp3-intent-success",onChange:e=>{this.setState({...this.state,provider:e})},onSubmit:()=>{let t=[...e.auth_providers,{type:this.state.provider,default_roles:[],auto_create:!0,role_management:"set_on_insert"}];this.set("auth_providers",t)}},qr.createElement("option",{value:"authzero"},"Auth0"),qr.createElement("option",{value:"azure"},"Azure"),qr.createElement("option",{value:"google"},"Google"),qr.createElement("option",{value:"onelogin"},"OneLogin"),qr.createElement("option",{value:"okta"},"Okta"),qr.createElement("option",{value:"jumpcloud"},"JumpCloud"))),qr.createElement(Qm,null,qr.createElement("div",{className:"bp3-border",style:jb.secondaryProviders},qr.createElement("h5",{style:jb.providersLabel},"Two-Factor Providers")),i,qr.createElement(av,{label:"Add Secondary Provider",value:this.state.secondaryProvider,buttonClass:"bp3-intent-success",onChange:e=>{this.setState({...this.state,secondaryProvider:e})},onSubmit:()=>{let t=[...e.auth_secondary_providers,{type:this.state.secondaryProvider}];this.set("auth_secondary_providers",t)}},qr.createElement("option",{value:"duo"},"Duo"),qr.createElement("option",{value:"one_login"},"OneLogin"),qr.createElement("option",{value:"okta"},"Okta")),qr.createElement(Cm,{label:"Admin Session Expire Minutes",help:"Number of inactive minutes before a admin session expires",type:"text",placeholder:"Session expire",value:this.state.settings.auth_admin_expire,onChange:e=>{this.set("auth_admin_expire",parseInt(e,10))}}),qr.createElement(Cm,{label:"Admin Session Max Duration Minutes",help:"Number of minutes from start of a admin session until expiration",type:"text",placeholder:"Session max duration",value:this.state.settings.auth_admin_max_duration,onChange:e=>{this.set("auth_admin_max_duration",parseInt(e,10))}}),qr.createElement(Cm,{label:"Service Session Expire Minutes",help:"Number of inactive minutes before a service session expires",type:"text",placeholder:"Session expire",value:this.state.settings.auth_proxy_expire,onChange:e=>{this.set("auth_proxy_expire",parseInt(e,10))}}),qr.createElement(Cm,{label:"Service Session Max Duration Minutes",help:"Number of minutes from start of a service session until expiration",type:"text",placeholder:"Session max duration",value:this.state.settings.auth_proxy_max_duration,onChange:e=>{this.set("auth_proxy_max_duration",parseInt(e,10))}}),qr.createElement(Cm,{label:"User Session Expire Minutes",help:"Number of inactive minutes before a user session expires",type:"text",placeholder:"Session expire",value:this.state.settings.auth_user_expire,onChange:e=>{this.set("auth_user_expire",parseInt(e,10))}}),qr.createElement(Cm,{label:"User Session Max Duration Minutes",help:"Number of minutes from start of a user session until expiration",type:"text",placeholder:"Session max duration",value:this.state.settings.auth_user_max_duration,onChange:e=>{this.set("auth_user_max_duration",parseInt(e,10))}}),qr.createElement(Cm,{label:"ElasticSearch Address",help:"Address of ElasticSearch server, use comma separated list for multiple addresses.",type:"text",placeholder:"ElasticSearch address",value:this.state.settings.elastic_address,onChange:e=>{this.set("elastic_address",e)}}),qr.createElement(Cm,{label:"ElasticSearch Username",help:"Username of ElasticSearch server",type:"text",placeholder:"ElasticSearch username",value:this.state.settings.elastic_username,onChange:e=>{this.set("elastic_username",e)}}),qr.createElement(Cm,{label:"ElasticSearch Password",help:"Password of ElasticSearch server",type:"text",placeholder:"ElasticSearch password",value:this.state.settings.elastic_password,onChange:e=>{this.set("elastic_password",e)}}),qr.createElement(Sm,{label:"Elasticsearch log proxy requests",help:"Send all user requests to the Elasticsearch server. The request header, URL query values and user information such as user ID, IP address and location will be included. If the request body contains form fields, json or xml this data will also be included.",checked:this.state.settings.elastic_proxy_requests,onToggle:()=>{this.set("elastic_proxy_requests",!this.state.settings.elastic_proxy_requests)}}))),qr.createElement(km,{message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,onCancel:()=>{this.setState({...this.state,changed:!1,message:"Your changes have been discarded",settings:mv.settingsM})},onSave:this.onSave}))}}const Wb={nav:{overflowX:"auto",overflowY:"auto",userSelect:"none",height:"auto"},navTitle:{height:"auto"},navGroup:{flexWrap:"wrap",height:"auto",padding:"10px 0"},link:{padding:"0 8px",color:"inherit"},sub:{color:"inherit"},heading:{marginRight:"11px",fontSize:"18px",fontWeight:"bold"}};class Gb extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,subscription:Lu.subscription})},this.state={subscription:Lu.subscription,disabled:!1}}componentDidMount(){Lu.addChangeListener(this.onChange),Wu(!1)}componentWillUnmount(){Lu.removeChangeListener(this.onChange)}render(){return this.state.subscription?qr.createElement(Il,null,qr.createElement("div",null,qr.createElement("nav",{className:"bp3-navbar layout horizontal",style:Wb.nav},qr.createElement("div",{className:"bp3-navbar-group bp3-align-left flex",style:Wb.navTitle},qr.createElement("div",{className:"bp3-navbar-heading",style:Wb.heading},"Pritunl Zero")),qr.createElement("div",{className:"bp3-navbar-group bp3-align-right",style:Wb.navGroup},qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-people",style:Wb.link,to:"/users"},"Users"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-cloud",style:Wb.link,to:"/services"},"Services"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-layers",style:Wb.link,to:"/nodes"},"Nodes"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-filter",style:Wb.link,to:"/policies"},"Policies"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-office",style:Wb.link,to:"/authorities"},"Authorities"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-endorsed",style:Wb.link,to:"/certificates"},"Certificates"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-shield",style:Wb.link,to:"/endpoints"},"Endpoints"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-notifications",style:Wb.link,to:"/alerts"},"Alerts"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-lifesaver",style:Wb.link,to:"/checks"},"Health Checks"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-history",style:Wb.link,to:"/logs"},"Logs"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-cog",style:Wb.link,to:"/settings"},"Settings"),qr.createElement(Ul,{to:"/subscription",style:Wb.sub},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-credit-card",style:Wb.link,onClick:()=>{Wu(!0)}},"Subscription")),qr.createElement(Ol,{render:e=>qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-refresh",disabled:this.state.disabled,onClick:()=>{let t=e.location.pathname;this.setState({...this.state,disabled:!0}),"/users"===t?dp().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):t.startsWith("/user/")?(hp(lp.user?lp.user.id:null).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})),Ip().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})),ym().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})),jm().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})),_p().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))):"/nodes"===t?(Zg(),Xg().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))):"/policies"===t?(Zg(),ev(),yv(),vv().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))):"/authorities"===t?ev().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):"/certificates"===t?nv().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):"/alerts"===t?Py().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):"/checks"===t?ry().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):"/endpoints"===t?(ev(),Uv().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))):"/logs"===t?ub().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):"/services"===t?(ev(),qg().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))):"/settings"===t?yv().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):"/subscription"===t?Wu(!0).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):this.setState({...this.state,disabled:!1})}},"Refresh")}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-log-out",onClick:()=>{window.location.href="/logout"}},"Logout"),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-moon",onClick:()=>{"light"===uu?mu():pu(),new Promise(((e,t)=>{ql.put("/theme").send({theme:uu}).set("Accept","application/json").set("Csrf-Token",hu).end(((n,i)=>i&&401===i.status?(window.location.href="/login",void e()):n?(cu(i,"Failed to save theme"),void t(n)):void e()))}))}}))),qr.createElement(Eu,{intent:"primary"}),qr.createElement(Ol,{path:"/",exact:!0,render:()=>qr.createElement(Op,null)}),qr.createElement(Ol,{path:"/users",render:()=>qr.createElement(Op,null)}),qr.createElement(Ol,{exact:!0,path:"/user",render:()=>qr.createElement(Ag,null)}),qr.createElement(Ol,{path:"/user/:userId",render:e=>qr.createElement(Ag,{userId:e.match.params.userId})}),qr.createElement(Ol,{path:"/nodes",render:()=>qr.createElement(hv,null)}),qr.createElement(Ol,{path:"/policies",render:()=>qr.createElement(Lv,null)}),qr.createElement(Ol,{path:"/authorities",render:()=>qr.createElement(Hv,null)}),qr.createElement(Ol,{path:"/certificates",render:()=>qr.createElement($v,null)}),qr.createElement(Ol,{path:"/alerts",render:()=>qr.createElement(Gy,null)}),qr.createElement(Ol,{path:"/checks",render:()=>qr.createElement(ab,null)}),qr.createElement(Ol,{path:"/endpoints",render:()=>qr.createElement(Ty,null)}),qr.createElement(Ol,{path:"/logs",render:()=>qr.createElement(wb,null)}),qr.createElement(Ol,{path:"/services",render:()=>qr.createElement(Vb,null)}),qr.createElement(Ol,{path:"/settings",render:()=>qr.createElement(Bb,null)}),qr.createElement(Ol,{path:"/subscription",render:()=>qr.createElement(tp,null)}))):qr.createElement("div",null)}}let Ub=!1;function Kb(){let e="",t=window.location;"https:"===t.protocol?e+="wss":e+="ws",e+="://"+t.host+"/event?csrf_token="+hu;let n=new WebSocket(e);n.addEventListener("close",(()=>{setTimeout((()=>{Kb()}),500)})),n.addEventListener("message",(e=>{console.log(JSON.parse(e.data).data),Hu.dispatch(JSON.parse(e.data).data)}))}function Xb(){Ub||(Ub=!0,Kb())}vs.register(jn),vs.register(Sr),vs.register(Cr),vs.register(Gr),vs.register(Ys),vs.register(Ps),vs.register(lr),vs.register(Mr),vs.register(ar);vs.registry.controllers.items.line=class extends jn{draw(){super.draw();let e=this.chart;if(e.tooltip._active&&e.tooltip._active.length){let t=this.chart.ctx,n=e.tooltip.caretX,i=e.scales.y.top,s=e.scales.y.bottom;t.save(),t.beginPath(),t.moveTo(n,i),t.lineTo(n,s),t.lineWidth=.7,t.strokeStyle="light"===uu?"#6f6f6f":"#e5e5e5",t.stroke(),t.restore()}}},new Promise(((e,t)=>{ql.get("/csrf").set("Accept","application/json").end(((n,i)=>{if(i&&401===i.status)return window.location.href="/login",void e();n?t(n):(hu=i.body.token,"light"===i.body.theme?pu():mu(),e())}))})).then((()=>{Io(),ru||(su?ru=su.create({position:ha},document.getElementById("toaster")):console.error("Failed to load toaster")),Xb(),Jr.render(qr.createElement("div",null,qr.createElement(Gb,null)),document.getElementById("app"))}))})()})(); +class{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(e,t,n,i){const s=t.listeners[i],r=t.duration;s.forEach((i=>i({chart:e,initial:t.initial,numSteps:r,currentStep:Math.min(n-t.start,r)})))}_refresh(){this._request||(this._running=!0,this._request=i.call(window,(()=>{this._update(),this._request=null,this._running&&this._refresh()})))}_update(e=Date.now()){let t=0;this._charts.forEach(((n,i)=>{if(!n.running||!n.items.length)return;const s=n.items;let r,a=s.length-1,o=!1;for(;a>=0;--a)r=s[a],r._active?(r._total>n.duration&&(n.duration=r._total),r.tick(e),o=!0):(s[a]=s[s.length-1],s.pop());o&&(i.draw(),this._notify(i,n,e,"progress")),s.length||(n.running=!1,this._notify(i,n,e,"complete"),n.initial=!1),t+=s.length})),this._lastDate=e,0===t&&(this._running=!1)}_getAnims(e){const t=this._charts;let n=t.get(e);return n||(n={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},t.set(e,n)),n}listen(e,t,n){this._getAnims(e).listeners[t].push(n)}add(e,t){t&&t.length&&this._getAnims(e).items.push(...t)}has(e){return this._getAnims(e).items.length>0}start(e){const t=this._charts.get(e);t&&(t.running=!0,t.start=Date.now(),t.duration=t.items.reduce(((e,t)=>Math.max(e,t._duration)),0),this._refresh())}running(e){if(!this._running)return!1;const t=this._charts.get(e);return!!(t&&t.running&&t.items.length)}stop(e){const t=this._charts.get(e);if(!t||!t.items.length)return;const n=t.items;let i=n.length-1;for(;i>=0;--i)n[i].cancel();t.items=[],this._notify(e,t,Date.now(),"complete")}remove(e){return this._charts.delete(e)}};const fn="transparent",gn={boolean:(e,t,n)=>n>.5?t:e,color(e,t,n){const i=Ve(e||fn),s=i.valid&&Ve(t||fn);return s&&s.valid?s.mix(i,n).hexString():t},number:(e,t,n)=>e+(t-e)*n};class vn{constructor(e,t,n,i){const s=t[n];i=ut([e.to,i,s,e.from]);const r=ut([e.from,s,i]);this._active=!0,this._fn=e.fn||gn[e.type||typeof r],this._easing=se[e.easing]||se.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=t,this._prop=n,this._from=r,this._to=i,this._promises=void 0}active(){return this._active}update(e,t,n){if(this._active){this._notify(!1);const i=this._target[this._prop],s=n-this._start,r=this._duration-s;this._start=n,this._duration=Math.floor(Math.max(r,e.duration)),this._total+=s,this._loop=!!e.loop,this._to=ut([e.to,t,i,e.from]),this._from=ut([e.from,i,t])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){const t=e-this._start,n=this._duration,i=this._prop,s=this._from,r=this._loop,a=this._to;let o;if(this._active=s!==a&&(r||t1?2-o:o,o=this._easing(Math.min(1,Math.max(0,o))),this._target[i]=this._fn(s,a,o))}wait(){const e=this._promises||(this._promises=[]);return new Promise(((t,n)=>{e.push({res:t,rej:n})}))}_notify(e){const t=e?"res":"rej",n=this._promises||[];for(let e=0;e"onProgress"!==e&&"onComplete"!==e&&"fn"!==e}),Be.set("animations",{colors:{type:"color",properties:["color","borderColor","backgroundColor"]},numbers:{type:"number",properties:["x","y","borderWidth","radius","tension"]}}),Be.describe("animations",{_fallback:"animation"}),Be.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:e=>0|e}}}});class bn{constructor(e,t){this._chart=e,this._properties=new Map,this.configure(t)}configure(e){if(!d(e))return;const t=this._properties;Object.getOwnPropertyNames(e).forEach((n=>{const i=e[n];if(!d(i))return;const s={};for(const e of yn)s[e]=i[e];(h(i.properties)&&i.properties||[n]).forEach((e=>{e!==n&&t.has(e)||t.set(e,s)}))}))}_animateOptions(e,t){const n=t.options,i=function(e,t){if(!t)return;let n=e.options;if(!n)return void(e.options=t);n.$shared&&(e.options=n=Object.assign({},n,{$shared:!1,$animations:{}}));return n}(e,n);if(!i)return[];const s=this._createAnimations(i,n);return n.$shared&&function(e,t){const n=[],i=Object.keys(t);for(let t=0;t{e.options=n}),(()=>{})),s}_createAnimations(e,t){const n=this._properties,i=[],s=e.$animations||(e.$animations={}),r=Object.keys(t),a=Date.now();let o;for(o=r.length-1;o>=0;--o){const l=r[o];if("$"===l.charAt(0))continue;if("options"===l){i.push(...this._animateOptions(e,t));continue}const c=t[l];let h=s[l];const d=n.get(l);if(h){if(d&&h.active()){h.update(d,c,a);continue}h.cancel()}d&&d.duration?(s[l]=h=new vn(d,e,l,c),i.push(h)):e[l]=c}return i}update(e,t){if(0===this._properties.size)return void Object.assign(e,t);const n=this._createAnimations(e,t);return n.length?(mn.add(this._chart,n),!0):void 0}}function _n(e,t){const n=e&&e.options||{},i=n.reverse,s=void 0===n.min?t:0,r=void 0===n.max?t:0;return{start:i?r:s,end:i?s:r}}function Mn(e,t){const n=[],i=e._getSortedDatasetMetas(t);let s,r;for(s=0,r=i.length;s0||!n&&t<0)return s.index}return null}function xn(e,t){const{chart:n,_cachedMeta:i}=e,s=n._stacks||(n._stacks={}),{iScale:r,vScale:a,index:o}=i,l=r.axis,c=a.axis,h=function(e,t,n){return`${e.id}.${t.id}.${n.stack||n.type}`}(r,a,i),d=t.length;let u;for(let e=0;en[e].axis===t)).shift()}function Tn(e,t){const n=e.controller.index,i=e.vScale&&e.vScale.axis;if(i){t=t||e._parsed;for(const e of t){const t=e._stacks;if(!t||void 0===t[i]||void 0===t[i][n])return;delete t[i][n]}}}const En=e=>"reset"===e||"none"===e,zn=(e,t)=>t?e:Object.assign({},e);class An{constructor(e,t){this.chart=e,this._ctx=e.ctx,this.index=t,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.$context=void 0,this._syncList=[],this.initialize()}initialize(){const e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=Sn(e.vScale,e),this.addElements()}updateIndex(e){this.index!==e&&Tn(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,t=this._cachedMeta,n=this.getDataset(),i=(e,t,n,i)=>"x"===e?t:"r"===e?i:n,s=t.xAxisID=m(n.xAxisID,Cn(e,"x")),r=t.yAxisID=m(n.yAxisID,Cn(e,"y")),a=t.rAxisID=m(n.rAxisID,Cn(e,"r")),o=t.indexAxis,l=t.iAxisID=i(o,s,r,a),c=t.vAxisID=i(o,r,s,a);t.xScale=this.getScaleForId(s),t.yScale=this.getScaleForId(r),t.rScale=this.getScaleForId(a),t.iScale=this.getScaleForId(l),t.vScale=this.getScaleForId(c)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const t=this._cachedMeta;return e===t.iScale?t.vScale:t.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&yt(this._data,this),e._stacked&&Tn(e)}_dataCheck(){const e=this.getDataset(),t=e.data||(e.data=[]),n=this._data;if(d(t))this._data=function(e){const t=Object.keys(e),n=new Array(t.length);let i,s,r;for(i=0,s=t.length;i{const t="_onData"+C(e),n=i[e];Object.defineProperty(i,e,{configurable:!0,enumerable:!1,value(...e){const s=n.apply(this,e);return i._chartjs.listeners.forEach((n=>{"function"==typeof n[t]&&n[t](...e)})),s}})})))),this._syncList=[],this._data=t}var i,s}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const t=this._cachedMeta,n=this.getDataset();let i=!1;this._dataCheck();const s=t._stacked;t._stacked=Sn(t.vScale,t),t.stack!==n.stack&&(i=!0,Tn(t),t.stack=n.stack),this._resyncElements(e),(i||s!==t._stacked)&&xn(this,t._parsed)}configure(){const e=this.chart.config,t=e.datasetScopeKeys(this._type),n=e.getOptionScopes(this.getDataset(),t,!0);this.options=e.createResolver(n,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,t){const{_cachedMeta:n,_data:i}=this,{iScale:s,_stacked:r}=n,a=s.axis;let o,l,c,u=0===e&&t===i.length||n._sorted,p=e>0&&n._parsed[e-1];if(!1===this._parsing)n._parsed=i,n._sorted=!0,c=i;else{c=h(i[e])?this.parseArrayData(n,i,e,t):d(i[e])?this.parseObjectData(n,i,e,t):this.parsePrimitiveData(n,i,e,t);const s=()=>null===l[a]||p&&l[a]e&&!t.hidden&&t._stacked&&{keys:Mn(n,!0),values:null})(t,n,this.chart),l={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:c,max:h}=function(e){const{min:t,max:n,minDefined:i,maxDefined:s}=e.getUserBounds();return{min:i?t:Number.NEGATIVE_INFINITY,max:s?n:Number.POSITIVE_INFINITY}}(a);let d,p;function m(){p=i[d];const t=p[a.axis];return!u(p[e.axis])||c>t||h=0;--d)if(!m()){this.updateRangeFromParsed(l,e,p,o);break}return l}getAllParsedValues(e){const t=this._cachedMeta._parsed,n=[];let i,s,r;for(i=0,s=t.length;i=0&&ethis.getContext(n,i)),h);return p.$shared&&(p.$shared=o,s[r]=Object.freeze(zn(p,o))),p}_resolveAnimations(e,t,n){const i=this.chart,s=this._cachedDataOpts,r=`animation-${t}`,a=s[r];if(a)return a;let o;if(!1!==i.options.animation){const i=this.chart.config,s=i.datasetAnimationScopeKeys(this._type,t),r=i.getOptionScopes(this.getDataset(),s);o=i.createResolver(r,this.getContext(e,n,t))}const l=new bn(i,o&&o.animations);return o&&o._cacheable&&(s[r]=Object.freeze(l)),l}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,t){return!t||En(e)||this.chart._animationsDisabled}updateElement(e,t,n,i){En(i)?Object.assign(e,n):this._resolveAnimations(t,i).update(e,n)}updateSharedOptions(e,t,n){e&&!En(t)&&this._resolveAnimations(void 0,t).update(e,n)}_setStyle(e,t,n,i){e.active=i;const s=this.getStyle(t,i);this._resolveAnimations(t,n,i).update(e,{options:!i&&this.getSharedOptions(s)||s})}removeHoverStyle(e,t,n){this._setStyle(e,n,"active",!1)}setHoverStyle(e,t,n){this._setStyle(e,n,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const t=this._data,n=this._cachedMeta.data;for(const[e,t,n]of this._syncList)this[e](t,n);this._syncList=[];const i=n.length,s=t.length,r=Math.min(s,i);r&&this.parse(0,r),s>i?this._insertElements(i,s-i,e):s{for(e.length+=t,a=e.length-1;a>=r;a--)e[a]=e[a-t]};for(o(s),a=e;ae-t)))}return e._cache.$bar}(t,e.type);let i,s,r,a,o=t._length;const l=()=>{32767!==r&&-32768!==r&&(T(a)&&(o=Math.min(o,Math.abs(r-a)||o)),a=r)};for(i=0,s=n.length;iMath.abs(o)&&(l=o,c=a),t[n.axis]=c,t._custom={barStart:l,barEnd:c,start:s,end:r,min:a,max:o}}(e,t,n,i):t[n.axis]=n.parse(e,i),t}function Pn(e,t,n,i){const s=e.iScale,r=e.vScale,a=s.getLabels(),o=s===r,l=[];let c,h,d,u;for(c=n,h=n+i;ce.x,n="left",i="right"):(t=e.base=n?1:-1)}(d,t,r)*s,u===r&&(g-=d/2),h=g+d),g===t.getPixelForValue(r)){const e=$(d)*t.getLineWidthForValue(r)/2;g+=e,d-=e}return{size:d,base:g,head:h,center:h+d/2}}_calculateBarIndexPixels(e,t){const n=t.scale,i=this.options,s=i.skipNull,r=m(i.maxBarThickness,1/0);let a,o;if(t.grouped){const n=s?this._getStackCount(e):t.stackCount,l="flex"===i.barThickness?function(e,t,n,i){const s=t.pixels,r=s[e];let a=e>0?s[e-1]:null,o=e=0;--n)t=Math.max(t,e[n].size(this.resolveDataElementOptions(n))/2);return t>0&&t}getLabelAndValue(e){const t=this._cachedMeta,{xScale:n,yScale:i}=t,s=this.getParsed(e),r=n.getLabelForValue(s.x),a=i.getLabelForValue(s.y),o=s._custom;return{label:t.label,value:"("+r+", "+a+(o?", "+o:"")+")"}}update(e){const t=this._cachedMeta.data;this.updateElements(t,0,t.length,e)}updateElements(e,t,n,i){const s="reset"===i,{iScale:r,vScale:a}=this._cachedMeta,o=this.resolveDataElementOptions(t,i),l=this.getSharedOptions(o),c=this.includeOptions(i,l),h=r.axis,d=a.axis;for(let o=t;o""}}}};class Fn extends An{constructor(e,t){super(e,t),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,t){const n=this.getDataset().data,i=this._cachedMeta;if(!1===this._parsing)i._parsed=n;else{let s,r,a=e=>+n[e];if(d(n[e])){const{key:e="value"}=this._parsing;a=t=>+x(n[t],e)}for(s=e,r=e+t;sQ(e,o,l,!0)?1:Math.max(t,t*n,i,i*n),m=(e,t,i)=>Q(e,o,l,!0)?-1:Math.min(t,t*n,i,i*n),f=p(0,c,d),g=p(Y,h,u),v=m(A,c,d),y=m(A+Y,h,u);i=(f-v)/2,s=(g-y)/2,r=-(f+v)/2,a=-(g+y)/2}return{ratioX:i,ratioY:s,offsetX:r,offsetY:a}}(u,d,o),y=(n.width-r)/p,b=(n.height-r)/m,_=Math.max(Math.min(y,b)/2,0),M=f(this.options.radius,_),w=(M-Math.max(M*o,0))/this._getVisibleDatasetWeightTotal();this.offsetX=g*M,this.offsetY=v*M,i.total=this.calculateTotal(),this.outerRadius=M-w*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-w*h,0),this.updateElements(s,0,s.length,e)}_circumference(e,t){const n=this.options,i=this._cachedMeta,s=this._getCircumference();return t&&n.animation.animateRotate||!this.chart.getDataVisibility(e)||null===i._parsed[e]||i.data[e].hidden?0:this.calculateCircumference(i._parsed[e]*s/H)}updateElements(e,t,n,i){const s="reset"===i,r=this.chart,a=r.chartArea,o=r.options.animation,l=(a.left+a.right)/2,c=(a.top+a.bottom)/2,h=s&&o.animateScale,d=h?0:this.innerRadius,u=h?0:this.outerRadius,p=this.resolveDataElementOptions(t,i),m=this.getSharedOptions(p),f=this.includeOptions(i,m);let g,v=this._getRotation();for(g=0;g0&&!isNaN(e)?H*(Math.abs(e)/t):0}getLabelAndValue(e){const t=this._cachedMeta,n=this.chart,i=n.data.labels||[],s=nn(t._parsed[e],n.options.locale);return{label:i[e]||"",value:s}}getMaxBorderWidth(e){let t=0;const n=this.chart;let i,s,r,a,o;if(!e)for(i=0,s=n.data.datasets.length;i"spacing"!==e,_indexable:e=>"spacing"!==e},Fn.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const t=e.data;if(t.labels.length&&t.datasets.length){const{labels:{pointStyle:n}}=e.legend.options;return t.labels.map(((t,i)=>{const s=e.getDatasetMeta(0).controller.getStyle(i);return{text:t,fillStyle:s.backgroundColor,strokeStyle:s.borderColor,lineWidth:s.borderWidth,pointStyle:n,hidden:!e.getDataVisibility(i),index:i}}))}return[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}},tooltip:{callbacks:{title:()=>"",label(e){let t=e.label;const n=": "+e.formattedValue;return h(t)?(t=t.slice(),t[0]+=n):t+=n,t}}}}};class jn extends An{initialize(){this.enableOptionSharing=!0,super.initialize()}update(e){const t=this._cachedMeta,{dataset:n,data:i=[],_dataset:s}=t,r=this.chart._animationsDisabled;let{start:a,count:o}=function(e,t,n){const i=t.length;let s=0,r=i;if(e._sorted){const{iScale:a,_parsed:o}=e,l=a.axis,{min:c,max:h,minDefined:d,maxDefined:u}=a.getUserBounds();d&&(s=Z(Math.min(ft(o,a.axis,c).lo,n?i:ft(t,l,a.getPixelForValue(c)).lo),0,i-1)),r=u?Z(Math.max(ft(o,a.axis,h).hi+1,n?0:ft(t,l,a.getPixelForValue(h)).hi+1),s,i)-s:i-s}return{start:s,count:r}}(t,i,r);this._drawStart=a,this._drawCount=o,function(e){const{xScale:t,yScale:n,_scaleRanges:i}=e,s={xmin:t.min,xmax:t.max,ymin:n.min,ymax:n.max};if(!i)return e._scaleRanges=s,!0;const r=i.xmin!==t.min||i.xmax!==t.max||i.ymin!==n.min||i.ymax!==n.max;return Object.assign(i,s),r}(t)&&(a=0,o=i.length),n._chart=this.chart,n._datasetIndex=this.index,n._decimated=!!s._decimated,n.points=i;const l=this.resolveDatasetElementOptions(e);this.options.showLine||(l.borderWidth=0),l.segment=this.options.segment,this.updateElement(n,void 0,{animated:!r,options:l},e),this.updateElements(i,a,o,e)}updateElements(e,t,n,i){const s="reset"===i,{iScale:r,vScale:a,_stacked:o,_dataset:l}=this._cachedMeta,h=this.resolveDataElementOptions(t,i),d=this.getSharedOptions(h),u=this.includeOptions(i,d),p=r.axis,m=a.axis,{spanGaps:f,segment:g}=this.options,v=F(f)?f:Number.POSITIVE_INFINITY,y=this.chart._animationsDisabled||s||"none"===i;let b=t>0&&this.getParsed(t-1);for(let h=t;h0&&n[p]-b[p]>v,g&&(f.parsed=n,f.raw=l.data[h]),u&&(f.options=d||this.resolveDataElementOptions(h,t.active?"active":i)),y||this.updateElement(t,h,f,i),b=n}this.updateSharedOptions(d,i,h)}getMaxOverflow(){const e=this._cachedMeta,t=e.dataset,n=t.options&&t.options.borderWidth||0,i=e.data||[];if(!i.length)return n;const s=i[0].size(this.resolveDataElementOptions(0)),r=i[i.length-1].size(this.resolveDataElementOptions(i.length-1));return Math.max(n,s,r)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}}jn.id="line",jn.defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1},jn.overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};class Bn extends An{constructor(e,t){super(e,t),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){const t=this._cachedMeta,n=this.chart,i=n.data.labels||[],s=nn(t._parsed[e].r,n.options.locale);return{label:i[e]||"",value:s}}update(e){const t=this._cachedMeta.data;this._updateRadius(),this.updateElements(t,0,t.length,e)}_updateRadius(){const e=this.chart,t=e.chartArea,n=e.options,i=Math.min(t.right-t.left,t.bottom-t.top),s=Math.max(i/2,0),r=(s-Math.max(n.cutoutPercentage?s/100*n.cutoutPercentage:1,0))/e.getVisibleDatasetCount();this.outerRadius=s-r*this.index,this.innerRadius=this.outerRadius-r}updateElements(e,t,n,i){const s="reset"===i,r=this.chart,a=this.getDataset(),o=r.options.animation,l=this._cachedMeta.rScale,c=l.xCenter,h=l.yCenter,d=l.getIndexAngle(0)-.5*A;let u,p=d;const m=360/this.countVisibleElements();for(u=0;u{!isNaN(e.data[i])&&this.chart.getDataVisibility(i)&&n++})),n}_computeAngle(e,t,n){return this.chart.getDataVisibility(e)?W(this.resolveDataElementOptions(e,t).angle||n):0}}Bn.id="polarArea",Bn.defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0},Bn.overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const t=e.data;if(t.labels.length&&t.datasets.length){const{labels:{pointStyle:n}}=e.legend.options;return t.labels.map(((t,i)=>{const s=e.getDatasetMeta(0).controller.getStyle(i);return{text:t,fillStyle:s.backgroundColor,strokeStyle:s.borderColor,lineWidth:s.borderWidth,pointStyle:n,hidden:!e.getDataVisibility(i),index:i}}))}return[]}},onClick(e,t,n){n.chart.toggleDataVisibility(t.index),n.chart.update()}},tooltip:{callbacks:{title:()=>"",label:e=>e.chart.data.labels[e.dataIndex]+": "+e.formattedValue}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};class Wn extends Fn{}Wn.id="pie",Wn.defaults={cutout:0,rotation:0,circumference:360,radius:"100%"};class Gn extends An{getLabelAndValue(e){const t=this._cachedMeta.vScale,n=this.getParsed(e);return{label:t.getLabels()[e],value:""+t.getLabelForValue(n[t.axis])}}update(e){const t=this._cachedMeta,n=t.dataset,i=t.data||[],s=t.iScale.getLabels();if(n.points=i,"resize"!==e){const t=this.resolveDatasetElementOptions(e);this.options.showLine||(t.borderWidth=0);const r={_loop:!0,_fullLoop:s.length===i.length,options:t};this.updateElement(n,void 0,r,e)}this.updateElements(i,0,i.length,e)}updateElements(e,t,n,i){const s=this.getDataset(),r=this._cachedMeta.rScale,a="reset"===i;for(let o=t;o"",label:e=>"("+e.label+", "+e.formattedValue+")"}}},scales:{x:{type:"linear"},y:{type:"linear"}}};function Kn(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class Xn{constructor(e){this.options=e||{}}formats(){return Kn()}parse(e,t){return Kn()}format(e,t){return Kn()}add(e,t,n){return Kn()}diff(e,t,n){return Kn()}startOf(e,t,n){return Kn()}endOf(e,t){return Kn()}}Xn.override=function(e){Object.assign(Xn.prototype,e)};var qn={_date:Xn};function Jn(e,t){return"native"in e?{x:e.x,y:e.y}:Gt(e,t)}function Qn(e,t,n,i){const{controller:s,data:r,_sorted:a}=e,o=s._cachedMeta.iScale;if(o&&t===o.axis&&"r"!==t&&a&&r.length){const e=o._reversePixels?gt:ft;if(!i)return e(r,t,n);if(s._sharedOptions){const i=r[0],s="function"==typeof i.getRange&&i.getRange(t);if(s){const i=e(r,t,n-s),a=e(r,t,n+s);return{lo:i.lo,hi:a.hi}}}}return{lo:0,hi:r.length-1}}function Zn(e,t,n,i,s){const r=e.getSortedVisibleDatasetMetas(),a=n[t];for(let e=0,n=r.length;e{e[o](s[a],i)&&r.push({element:e,datasetIndex:t,index:n}),e.inRange(s.x,s.y,i)&&(l=!0)})),n.intersect&&!l?[]:r}var si={modes:{index(e,t,n,i){const s=Jn(t,e),r=n.axis||"x",a=n.intersect?ei(e,s,r,i):ni(e,s,r,!1,i),o=[];return a.length?(e.getSortedVisibleDatasetMetas().forEach((e=>{const t=a[0].index,n=e.data[t];n&&!n.skip&&o.push({element:n,datasetIndex:e.index,index:t})})),o):[]},dataset(e,t,n,i){const s=Jn(t,e),r=n.axis||"xy";let a=n.intersect?ei(e,s,r,i):ni(e,s,r,!1,i);if(a.length>0){const t=a[0].datasetIndex,n=e.getDatasetMeta(t).data;a=[];for(let e=0;eei(e,Jn(t,e),n.axis||"xy",i),nearest:(e,t,n,i)=>ni(e,Jn(t,e),n.axis||"xy",n.intersect,i),x:(e,t,n,i)=>ii(e,t,{axis:"x",intersect:n.intersect},i),y:(e,t,n,i)=>ii(e,t,{axis:"y",intersect:n.intersect},i)}};const ri=["left","top","right","bottom"];function ai(e,t){return e.filter((e=>e.pos===t))}function oi(e,t){return e.filter((e=>-1===ri.indexOf(e.pos)&&e.box.axis===t))}function li(e,t){return e.sort(((e,n)=>{const i=t?n:e,s=t?e:n;return i.weight===s.weight?i.index-s.index:i.weight-s.weight}))}function ci(e,t){const n=function(e){const t={};for(const n of e){const{stack:e,pos:i,stackWeight:s}=n;if(!e||!ri.includes(i))continue;const r=t[e]||(t[e]={count:0,placed:0,weight:0,size:0});r.count++,r.weight+=s}return t}(e),{vBoxMaxWidth:i,hBoxMaxHeight:s}=t;let r,a,o;for(r=0,a=e.length;r{i[e]=Math.max(t[e],n[e])})),i}return i(e?["left","right"]:["top","bottom"])}function mi(e,t,n,i){const s=[];let r,a,o,l,c,h;for(r=0,a=e.length,c=0;re.box.fullSize)),!0),i=li(ai(t,"left"),!0),s=li(ai(t,"right")),r=li(ai(t,"top"),!0),a=li(ai(t,"bottom")),o=oi(t,"x"),l=oi(t,"y");return{fullSize:n,leftAndTop:i.concat(r),rightAndBottom:s.concat(l).concat(a).concat(o),chartArea:ai(t,"chartArea"),vertical:i.concat(s).concat(l),horizontal:r.concat(a).concat(o)}}(e.boxes),l=o.vertical,c=o.horizontal;v(e.boxes,(e=>{"function"==typeof e.beforeLayout&&e.beforeLayout()}));const h=l.reduce(((e,t)=>t.box.options&&!1===t.box.options.display?e:e+1),0)||1,d=Object.freeze({outerWidth:t,outerHeight:n,padding:s,availableWidth:r,availableHeight:a,vBoxMaxWidth:r/2/h,hBoxMaxHeight:a/2}),u=Object.assign({},s);di(u,ht(i));const p=Object.assign({maxPadding:u,w:r,h:a,x:s.left,y:s.top},s),m=ci(l.concat(c),d);mi(o.fullSize,p,d,m),mi(l,p,d,m),mi(c,p,d,m)&&mi(l,p,d,m),function(e){const t=e.maxPadding;function n(n){const i=Math.max(t[n]-e[n],0);return e[n]+=i,i}e.y+=n("top"),e.x+=n("left"),n("right"),n("bottom")}(p),gi(o.leftAndTop,p,d,m),p.x+=p.w,p.y+=p.h,gi(o.rightAndBottom,p,d,m),e.chartArea={left:p.left,top:p.top,right:p.left+p.w,bottom:p.top+p.h,height:p.h,width:p.w},v(o.chartArea,(t=>{const n=t.box;Object.assign(n,e.chartArea),n.update(p.w,p.h,{left:0,top:0,right:0,bottom:0})}))}};class yi{acquireContext(e,t){}releaseContext(e){return!1}addEventListener(e,t,n){}removeEventListener(e,t,n){}getDevicePixelRatio(){return 1}getMaximumSize(e,t,n,i){return t=Math.max(0,t||e.width),n=n||e.height,{width:t,height:Math.max(0,i?Math.floor(t/i):n)}}isAttached(e){return!0}updateConfig(e){}}class bi extends yi{acquireContext(e){return e&&e.getContext&&e.getContext("2d")||null}updateConfig(e){e.options.animation=!1}}const _i={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},Mi=e=>null===e||""===e;const wi=!!qt&&{passive:!0};function Si(e,t,n){e.canvas.removeEventListener(t,n,wi)}function Li(e,t){for(const n of e)if(n===t||n.contains(t))return!0}function ki(e,t,n){const i=e.canvas,s=new MutationObserver((e=>{let t=!1;for(const n of e)t=t||Li(n.addedNodes,i),t=t&&!Li(n.removedNodes,i);t&&n()}));return s.observe(document,{childList:!0,subtree:!0}),s}function xi(e,t,n){const i=e.canvas,s=new MutationObserver((e=>{let t=!1;for(const n of e)t=t||Li(n.removedNodes,i),t=t&&!Li(n.addedNodes,i);t&&n()}));return s.observe(document,{childList:!0,subtree:!0}),s}const Ci=new Map;let Ti=0;function Ei(){const e=window.devicePixelRatio;e!==Ti&&(Ti=e,Ci.forEach(((t,n)=>{n.currentDevicePixelRatio!==e&&t()})))}function zi(e,t,n){const i=e.canvas,r=i&&It(i);if(!r)return;const a=s(((e,t)=>{const i=r.clientWidth;n(e,t),i{const t=e[0],n=t.contentRect.width,i=t.contentRect.height;0===n&&0===i||a(n,i)}));return o.observe(r),function(e,t){Ci.size||window.addEventListener("resize",Ei),Ci.set(e,t)}(e,a),o}function Ai(e,t,n){n&&n.disconnect(),"resize"===t&&function(e){Ci.delete(e),Ci.size||window.removeEventListener("resize",Ei)}(e)}function Hi(e,t,n){const i=e.canvas,r=s((t=>{null!==e.ctx&&n(function(e,t){const n=_i[e.type]||e.type,{x:i,y:s}=Gt(e,t);return{type:n,chart:t,native:e,x:void 0!==i?i:null,y:void 0!==s?s:null}}(t,e))}),e,(e=>{const t=e[0];return[t,t.offsetX,t.offsetY]}));return function(e,t,n){e.addEventListener(t,n,wi)}(i,t,r),r}class Di extends yi{acquireContext(e,t){const n=e&&e.getContext&&e.getContext("2d");return n&&n.canvas===e?(function(e,t){const n=e.style,i=e.getAttribute("height"),s=e.getAttribute("width");if(e.$chartjs={initial:{height:i,width:s,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",n.boxSizing=n.boxSizing||"border-box",Mi(s)){const t=Jt(e,"width");void 0!==t&&(e.width=t)}if(Mi(i))if(""===e.style.height)e.height=e.width/(t||2);else{const t=Jt(e,"height");void 0!==t&&(e.height=t)}}(e,t),n):null}releaseContext(e){const t=e.canvas;if(!t.$chartjs)return!1;const n=t.$chartjs.initial;["height","width"].forEach((e=>{const i=n[e];c(i)?t.removeAttribute(e):t.setAttribute(e,i)}));const i=n.style||{};return Object.keys(i).forEach((e=>{t.style[e]=i[e]})),t.width=t.width,delete t.$chartjs,!0}addEventListener(e,t,n){this.removeEventListener(e,t);const i=e.$proxies||(e.$proxies={}),s={attach:ki,detach:xi,resize:zi}[t]||Hi;i[t]=s(e,t,n)}removeEventListener(e,t){const n=e.$proxies||(e.$proxies={}),i=n[t];if(!i)return;({attach:Ai,detach:Ai,resize:Ai}[t]||Si)(e,t,i),n[t]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,t,n,i){return Kt(e,t,n,i)}isAttached(e){const t=It(e);return!(!t||!t.isConnected)}}class Pi{constructor(){this.x=void 0,this.y=void 0,this.active=!1,this.options=void 0,this.$animations=void 0}tooltipPosition(e){const{x:t,y:n}=this.getProps(["x","y"],e);return{x:t,y:n}}hasValue(){return F(this.x)&&F(this.y)}getProps(e,t){const n=this.$animations;if(!t||!n)return this;const i={};return e.forEach((e=>{i[e]=n[e]&&n[e].active()?n[e]._to:this[e]})),i}}Pi.defaults={},Pi.defaultRoutes=void 0;const Oi={values:e=>h(e)?e:""+e,numeric(e,t,n){if(0===e)return"0";const i=this.chart.options.locale;let s,r=e;if(n.length>1){const t=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(t<1e-4||t>1e15)&&(s="scientific"),r=function(e,t){let n=t.length>3?t[2].value-t[1].value:t[1].value-t[0].value;Math.abs(n)>=1&&e!==Math.floor(e)&&(n=e-Math.floor(e));return n}(e,n)}const a=N(Math.abs(r)),o=Math.max(Math.min(-1*Math.floor(a),20),0),l={notation:s,minimumFractionDigits:o,maximumFractionDigits:o};return Object.assign(l,this.options.ticks.format),nn(e,i,l)},logarithmic(e,t,n){if(0===e)return"0";const i=e/Math.pow(10,Math.floor(N(e)));return 1===i||2===i||5===i?Oi.numeric.call(this,e,t,n):""}};var Yi={formatters:Oi};function Ri(e,t){const n=e.options.ticks,i=n.maxTicksLimit||function(e){const t=e.options.offset,n=e._tickSize(),i=e._length/n+(t?0:1),s=e._maxLength/n;return Math.floor(Math.min(i,s))}(e),s=n.major.enabled?function(e){const t=[];let n,i;for(n=0,i=e.length;ni)return function(e,t,n,i){let s,r=0,a=n[0];for(i=Math.ceil(i),s=0;se-t)).pop(),t}(i);for(let e=0,t=r.length-1;es)return t}return Math.max(s,1)}(s,t,i);if(r>0){let e,n;const i=r>1?Math.round((o-a)/(r-1)):null;for(Vi(t,l,h,c(i)?0:a-i,a),e=0,n=r-1;et.lineWidth,tickColor:(e,t)=>t.color,offset:!1,borderDash:[],borderDashOffset:0,borderWidth:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Yi.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),Be.route("scale.ticks","color","","color"),Be.route("scale.grid","color","","borderColor"),Be.route("scale.grid","borderColor","","borderColor"),Be.route("scale.title","color","","color"),Be.describe("scale",{_fallback:!1,_scriptable:e=>!e.startsWith("before")&&!e.startsWith("after")&&"callback"!==e&&"parser"!==e,_indexable:e=>"borderDash"!==e&&"tickBorderDash"!==e}),Be.describe("scales",{_fallback:"scale"}),Be.describe("scale.ticks",{_scriptable:e=>"backdropPadding"!==e&&"callback"!==e,_indexable:e=>"backdropPadding"!==e});const Ni=(e,t,n)=>"top"===t||"left"===t?e[t]+n:e[t]-n;function $i(e,t){const n=[],i=e.length/t,s=e.length;let r=0;for(;ra+o)))return c}function Fi(e){return e.drawTicks?e.tickLength:0}function ji(e,t){if(!e.display)return 0;const n=dt(e.font,t),i=ht(e.padding);return(h(e.text)?e.text.length:1)*n.lineHeight+i.height}function Bi(e,t,n){let i=r(e);return(n&&"right"!==t||!n&&"right"===t)&&(i=(e=>"left"===e?"right":"right"===e?"left":e)(i)),i}class Wi extends Pi{constructor(e){super(),this.id=e.id,this.type=e.type,this.options=void 0,this.ctx=e.ctx,this.chart=e.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(e){this.options=e.setContext(this.getContext()),this.axis=e.axis,this._userMin=this.parse(e.min),this._userMax=this.parse(e.max),this._suggestedMin=this.parse(e.suggestedMin),this._suggestedMax=this.parse(e.suggestedMax)}parse(e,t){return e}getUserBounds(){let{_userMin:e,_userMax:t,_suggestedMin:n,_suggestedMax:i}=this;return e=p(e,Number.POSITIVE_INFINITY),t=p(t,Number.NEGATIVE_INFINITY),n=p(n,Number.POSITIVE_INFINITY),i=p(i,Number.NEGATIVE_INFINITY),{min:p(e,n),max:p(t,i),minDefined:u(e),maxDefined:u(t)}}getMinMax(e){let t,{min:n,max:i,minDefined:s,maxDefined:r}=this.getUserBounds();if(s&&r)return{min:n,max:i};const a=this.getMatchingVisibleMetas();for(let o=0,l=a.length;oi?i:n,i=s&&n>i?n:i,{min:p(n,p(i,n)),max:p(i,p(n,i))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){g(this.options.beforeUpdate,[this])}update(e,t,n){const{beginAtZero:i,grace:s,ticks:r}=this.options,a=r.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=t,this._margins=n=Object.assign({left:0,right:0,top:0,bottom:0},n),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+n.left+n.right:this.height+n.top+n.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=function(e,t,n){const{min:i,max:s}=e,r=f(t,(s-i)/2),a=(e,t)=>n&&0===e?0:e+t;return{min:a(i,-Math.abs(r)),max:a(s,r)}}(this,s,i),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const o=a=s||n<=1||!this.isHorizontal())return void(this.labelRotation=i);const c=this._getLabelSizes(),h=c.widest.width,d=c.highest.height,u=Z(this.chart.width-h,0,this.maxWidth);r=e.offset?this.maxWidth/n:u/(n-1),h+6>r&&(r=u/(n-(e.offset?.5:1)),a=this.maxHeight-Fi(e.grid)-t.padding-ji(e.title,this.chart.options.font),o=Math.sqrt(h*h+d*d),l=G(Math.min(Math.asin(Z((c.highest.height+6)/r,-1,1)),Math.asin(Z(a/o,-1,1))-Math.asin(Z(d/o,-1,1)))),l=Math.max(i,Math.min(s,l))),this.labelRotation=l}afterCalculateLabelRotation(){g(this.options.afterCalculateLabelRotation,[this])}beforeFit(){g(this.options.beforeFit,[this])}fit(){const e={width:0,height:0},{chart:t,options:{ticks:n,title:i,grid:s}}=this,r=this._isVisible(),a=this.isHorizontal();if(r){const r=ji(i,t.options.font);if(a?(e.width=this.maxWidth,e.height=Fi(s)+r):(e.height=this.maxHeight,e.width=Fi(s)+r),n.display&&this.ticks.length){const{first:t,last:i,widest:s,highest:r}=this._getLabelSizes(),o=2*n.padding,l=W(this.labelRotation),c=Math.cos(l),h=Math.sin(l);if(a){const t=n.mirror?0:h*s.width+c*r.height;e.height=Math.min(this.maxHeight,e.height+t+o)}else{const t=n.mirror?0:c*s.width+h*r.height;e.width=Math.min(this.maxWidth,e.width+t+o)}this._calculatePadding(t,i,h,c)}}this._handleMargins(),a?(this.width=this._length=t.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=t.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,t,n,i){const{ticks:{align:s,padding:r},position:a}=this.options,o=0!==this.labelRotation,l="top"!==a&&"x"===this.axis;if(this.isHorizontal()){const a=this.getPixelForTick(0)-this.left,c=this.right-this.getPixelForTick(this.ticks.length-1);let h=0,d=0;o?l?(h=i*e.width,d=n*t.height):(h=n*e.height,d=i*t.width):"start"===s?d=t.width:"end"===s?h=e.width:(h=e.width/2,d=t.width/2),this.paddingLeft=Math.max((h-a+r)*this.width/(this.width-a),0),this.paddingRight=Math.max((d-c+r)*this.width/(this.width-c),0)}else{let n=t.height/2,i=e.height/2;"start"===s?(n=0,i=e.height):"end"===s&&(n=t.height,i=0),this.paddingTop=n+r,this.paddingBottom=i+r}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){g(this.options.afterFit,[this])}isHorizontal(){const{axis:e,position:t}=this.options;return"top"===t||"bottom"===t||"x"===e}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){let t,n;for(this.beforeTickToLabelConversion(),this.generateTickLabels(e),t=0,n=e.length;t{const n=e.gc,i=n.length/2;let s;if(i>t){for(s=0;s({width:s[e]||0,height:r[e]||0});return{first:L(0),last:L(t-1),widest:L(w),highest:L(S),widths:s,heights:r}}getLabelForValue(e){return e}getPixelForValue(e,t){return NaN}getValueForPixel(e){}getPixelForTick(e){const t=this.ticks;return e<0||e>t.length-1?null:this.getPixelForValue(t[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);const t=this._startPixel+e*this._length;return Z(this._alignToPixels?Ue(this.chart,t,0):t,-32768,32767)}getDecimalForPixel(e){const t=(e-this._startPixel)/this._length;return this._reversePixels?1-t:t}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:e,max:t}=this;return e<0&&t<0?t:e>0&&t>0?e:0}getContext(e){const t=this.ticks||[];if(e>=0&&ea*i?a/n:o/i:o*i0}_computeGridLineItems(e){const t=this.axis,n=this.chart,i=this.options,{grid:s,position:r}=i,a=s.offset,o=this.isHorizontal(),l=this.ticks.length+(a?1:0),c=Fi(s),h=[],u=s.setContext(this.getContext()),p=u.drawBorder?u.borderWidth:0,f=p/2,g=function(e){return Ue(n,e,p)};let v,y,b,_,M,w,S,L,k,x,C,T;if("top"===r)v=g(this.bottom),w=this.bottom-c,L=v-f,x=g(e.top)+f,T=e.bottom;else if("bottom"===r)v=g(this.top),x=e.top,T=g(e.bottom)-f,w=v+f,L=this.top+c;else if("left"===r)v=g(this.right),M=this.right-c,S=v-f,k=g(e.left)+f,C=e.right;else if("right"===r)v=g(this.left),k=e.left,C=g(e.right)-f,M=v+f,S=this.left+c;else if("x"===t){if("center"===r)v=g((e.top+e.bottom)/2+.5);else if(d(r)){const e=Object.keys(r)[0],t=r[e];v=g(this.chart.scales[e].getPixelForValue(t))}x=e.top,T=e.bottom,w=v+f,L=w+c}else if("y"===t){if("center"===r)v=g((e.left+e.right)/2);else if(d(r)){const e=Object.keys(r)[0],t=r[e];v=g(this.chart.scales[e].getPixelForValue(t))}M=v-f,S=M-c,k=e.left,C=e.right}const E=m(i.ticks.maxTicksLimit,l),z=Math.max(1,Math.ceil(l/E));for(y=0;yt.value===e));if(n>=0){return t.setContext(this.getContext(n)).lineWidth}return 0}drawGrid(e){const t=this.options.grid,n=this.ctx,i=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(e));let s,r;const a=(e,t,i)=>{i.width&&i.color&&(n.save(),n.lineWidth=i.width,n.strokeStyle=i.color,n.setLineDash(i.borderDash||[]),n.lineDashOffset=i.borderDashOffset,n.beginPath(),n.moveTo(e.x,e.y),n.lineTo(t.x,t.y),n.stroke(),n.restore())};if(t.display)for(s=0,r=i.length;s{this.drawBackground(),this.drawGrid(e),this.drawTitle()}},{z:n+1,draw:()=>{this.drawBorder()}},{z:t,draw:e=>{this.drawLabels(e)}}]:[{z:t,draw:e=>{this.draw(e)}}]}getMatchingVisibleMetas(e){const t=this.chart.getSortedVisibleDatasetMetas(),n=this.axis+"AxisID",i=[];let s,r;for(s=0,r=t.length;s{const i=n.split("."),s=i.pop(),r=[e].concat(i).join("."),a=t[n].split("."),o=a.pop(),l=a.join(".");Be.route(r,s,l,o)}))}(t,e.defaultRoutes);e.descriptors&&Be.describe(t,e.descriptors)}(e,r,n),this.override&&Be.override(e.id,e.overrides)),r}get(e){return this.items[e]}unregister(e){const t=this.items,n=e.id,i=this.scope;n in t&&delete t[n],i&&n in Be[i]&&(delete Be[i][n],this.override&&delete $e[n])}}var Ui=new class{constructor(){this.controllers=new Gi(An,"datasets",!0),this.elements=new Gi(Pi,"elements"),this.plugins=new Gi(Object,"plugins"),this.scales=new Gi(Wi,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each("register",e)}remove(...e){this._each("unregister",e)}addControllers(...e){this._each("register",e,this.controllers)}addElements(...e){this._each("register",e,this.elements)}addPlugins(...e){this._each("register",e,this.plugins)}addScales(...e){this._each("register",e,this.scales)}getController(e){return this._get(e,this.controllers,"controller")}getElement(e){return this._get(e,this.elements,"element")}getPlugin(e){return this._get(e,this.plugins,"plugin")}getScale(e){return this._get(e,this.scales,"scale")}removeControllers(...e){this._each("unregister",e,this.controllers)}removeElements(...e){this._each("unregister",e,this.elements)}removePlugins(...e){this._each("unregister",e,this.plugins)}removeScales(...e){this._each("unregister",e,this.scales)}_each(e,t,n){[...t].forEach((t=>{const i=n||this._getRegistryForType(t);n||i.isForType(t)||i===this.plugins&&t.id?this._exec(e,i,t):v(t,(t=>{const i=n||this._getRegistryForType(t);this._exec(e,i,t)}))}))}_exec(e,t,n){const i=C(e);g(n["before"+i],[],n),t[e](n),g(n["after"+i],[],n)}_getRegistryForType(e){for(let t=0;te.filter((e=>!t.some((t=>e.plugin.id===t.plugin.id))));this._notify(i(t,n),e,"stop"),this._notify(i(n,t),e,"start")}}function Xi(e,t){return t||!1!==e?!0===e?{}:e:null}function qi(e,t,n,i){const s=e.pluginScopeKeys(t),r=e.getOptionScopes(n,s);return e.createResolver(r,i,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function Ji(e,t){const n=Be.datasets[e]||{};return((t.datasets||{})[e]||{}).indexAxis||t.indexAxis||n.indexAxis||"x"}function Qi(e,t){return"x"===e||"y"===e?e:t.axis||("top"===(n=t.position)||"bottom"===n?"x":"left"===n||"right"===n?"y":void 0)||e.charAt(0).toLowerCase();var n}function Zi(e){const t=e.options||(e.options={});t.plugins=m(t.plugins,{}),t.scales=function(e,t){const n=$e[e.type]||{scales:{}},i=t.scales||{},s=Ji(e.type,t),r=Object.create(null),a=Object.create(null);return Object.keys(i).forEach((e=>{const t=i[e];if(!d(t))return console.error(`Invalid scale configuration for scale: ${e}`);if(t._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${e}`);const o=Qi(e,t),l=function(e,t){return e===t?"_index_":"_value_"}(o,s),c=n.scales||{};r[o]=r[o]||e,a[e]=S(Object.create(null),[{axis:o},t,c[o],c[l]])})),e.data.datasets.forEach((n=>{const s=n.type||e.type,o=n.indexAxis||Ji(s,t),l=($e[s]||{}).scales||{};Object.keys(l).forEach((e=>{const t=function(e,t){let n=e;return"_index_"===e?n=t:"_value_"===e&&(n="x"===t?"y":"x"),n}(e,o),s=n[t+"AxisID"]||r[t]||t;a[s]=a[s]||Object.create(null),S(a[s],[{axis:t},i[s],l[e]])}))})),Object.keys(a).forEach((e=>{const t=a[e];S(t,[Be.scales[t.type],Be.scale])})),a}(e,t)}function es(e){return(e=e||{}).datasets=e.datasets||[],e.labels=e.labels||[],e}const ts=new Map,ns=new Set;function is(e,t){let n=ts.get(e);return n||(n=t(),ts.set(e,n),ns.add(n)),n}const ss=(e,t,n)=>{const i=x(t,n);void 0!==i&&e.add(i)};class rs{constructor(e){this._config=function(e){return(e=e||{}).data=es(e.data),Zi(e),e}(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=es(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){const e=this._config;this.clearCache(),Zi(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return is(e,(()=>[[`datasets.${e}`,""]]))}datasetAnimationScopeKeys(e,t){return is(`${e}.transition.${t}`,(()=>[[`datasets.${e}.transitions.${t}`,`transitions.${t}`],[`datasets.${e}`,""]]))}datasetElementScopeKeys(e,t){return is(`${e}-${t}`,(()=>[[`datasets.${e}.elements.${t}`,`datasets.${e}`,`elements.${t}`,""]]))}pluginScopeKeys(e){const t=e.id;return is(`${this.type}-plugin-${t}`,(()=>[[`plugins.${t}`,...e.additionalOptionScopes||[]]]))}_cachedScopes(e,t){const n=this._scopeCache;let i=n.get(e);return i&&!t||(i=new Map,n.set(e,i)),i}getOptionScopes(e,t,n){const{options:i,type:s}=this,r=this._cachedScopes(e,n),a=r.get(t);if(a)return a;const o=new Set;t.forEach((t=>{e&&(o.add(e),t.forEach((t=>ss(o,e,t)))),t.forEach((e=>ss(o,i,e))),t.forEach((e=>ss(o,$e[s]||{},e))),t.forEach((e=>ss(o,Be,e))),t.forEach((e=>ss(o,Ie,e)))}));const l=Array.from(o);return 0===l.length&&l.push(Object.create(null)),ns.has(t)&&r.set(t,l),l}chartOptionScopes(){const{options:e,type:t}=this;return[e,$e[t]||{},Be.datasets[t]||{},{type:t},Be,Ie]}resolveNamedOptions(e,t,n,i=[""]){const s={$shared:!0},{resolver:r,subPrefixes:a}=as(this._resolverCache,e,i);let o=r;if(function(e,t){const{isScriptable:n,isIndexable:i}=wt(e);for(const s of t){const t=n(s),r=i(s),a=(r||t)&&e[s];if(t&&(E(a)||os(a))||r&&h(a))return!0}return!1}(r,t)){s.$shared=!1;o=Mt(r,n=E(n)?n():n,this.createResolver(e,n,a))}for(const e of t)s[e]=o[e];return s}createResolver(e,t,n=[""],i){const{resolver:s}=as(this._resolverCache,e,n);return d(t)?Mt(s,t,void 0,i):s}}function as(e,t,n){let i=e.get(t);i||(i=new Map,e.set(t,i));const s=n.join();let r=i.get(s);if(!r){r={resolver:_t(t,n),subPrefixes:n.filter((e=>!e.toLowerCase().includes("hover")))},i.set(s,r)}return r}const os=e=>d(e)&&Object.getOwnPropertyNames(e).reduce(((t,n)=>t||E(e[n])),!1);const ls=["top","bottom","left","right","chartArea"];function cs(e,t){return"top"===e||"bottom"===e||-1===ls.indexOf(e)&&"x"===t}function hs(e,t){return function(n,i){return n[e]===i[e]?n[t]-i[t]:n[e]-i[e]}}function ds(e){const t=e.chart,n=t.options.animation;t.notifyPlugins("afterRender"),g(n&&n.onComplete,[e],t)}function us(e){const t=e.chart,n=t.options.animation;g(n&&n.onProgress,[e],t)}function ps(e){return $t()&&"string"==typeof e?e=document.getElementById(e):e&&e.length&&(e=e[0]),e&&e.canvas&&(e=e.canvas),e}const ms={},fs=e=>{const t=ps(e);return Object.values(ms).filter((e=>e.canvas===t)).pop()};function gs(e,t,n){const i=Object.keys(e);for(const s of i){const i=+s;if(i>=t){const r=e[s];delete e[s],(n>0||i>t)&&(e[i+n]=r)}}}class vs{constructor(e,t){const n=this.config=new rs(t),i=ps(e),s=fs(i);if(s)throw new Error("Canvas is already in use. Chart with ID '"+s.id+"' must be destroyed before the canvas can be reused.");const r=n.createResolver(n.chartOptionScopes(),this.getContext());this.platform=new(n.platform||function(e){return!$t()||"undefined"!=typeof OffscreenCanvas&&e instanceof OffscreenCanvas?bi:Di}(i)),this.platform.updateConfig(n);const a=this.platform.acquireContext(i,r.aspectRatio),o=a&&a.canvas,c=o&&o.height,h=o&&o.width;this.id=l(),this.ctx=a,this.canvas=o,this.width=h,this.height=c,this._options=r,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new Ki,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=function(e,t){let n;return function(...i){return t?(clearTimeout(n),n=setTimeout(e,t,i)):e.apply(this,i),t}}((e=>this.update(e)),r.resizeDelay||0),this._dataChanges=[],ms[this.id]=this,a&&o?(mn.listen(this,"complete",ds),mn.listen(this,"progress",us),this._initialize(),this.attached&&this.update()):console.error("Failed to create chart: can't acquire context from the given item")}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:t},width:n,height:i,_aspectRatio:s}=this;return c(e)?t&&s?s:i?n/i:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():Xt(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return Ke(this.canvas,this.ctx),this}stop(){return mn.stop(this),this}resize(e,t){mn.running(this)?this._resizeBeforeDraw={width:e,height:t}:this._resize(e,t)}_resize(e,t){const n=this.options,i=this.canvas,s=n.maintainAspectRatio&&this.aspectRatio,r=this.platform.getMaximumSize(i,e,t,s),a=n.devicePixelRatio||this.platform.getDevicePixelRatio(),o=this.width?"resize":"attach";this.width=r.width,this.height=r.height,this._aspectRatio=this.aspectRatio,Xt(this,a,!0)&&(this.notifyPlugins("resize",{size:r}),g(n.onResize,[this,r],this),this.attached&&this._doResize(o)&&this.render())}ensureScalesHaveIDs(){v(this.options.scales||{},((e,t)=>{e.id=t}))}buildOrUpdateScales(){const e=this.options,t=e.scales,n=this.scales,i=Object.keys(n).reduce(((e,t)=>(e[t]=!1,e)),{});let s=[];t&&(s=s.concat(Object.keys(t).map((e=>{const n=t[e],i=Qi(e,n),s="r"===i,r="x"===i;return{options:n,dposition:s?"chartArea":r?"bottom":"left",dtype:s?"radialLinear":r?"category":"linear"}})))),v(s,(t=>{const s=t.options,r=s.id,a=Qi(r,s),o=m(s.type,t.dtype);void 0!==s.position&&cs(s.position,a)===cs(t.dposition)||(s.position=t.dposition),i[r]=!0;let l=null;if(r in n&&n[r].type===o)l=n[r];else{l=new(Ui.getScale(o))({id:r,type:o,ctx:this.ctx,chart:this}),n[l.id]=l}l.init(s,e)})),v(i,((e,t)=>{e||delete n[t]})),v(n,(e=>{vi.configure(this,e,e.options),vi.addBox(this,e)}))}_updateMetasets(){const e=this._metasets,t=this.data.datasets.length,n=e.length;if(e.sort(((e,t)=>e.index-t.index)),n>t){for(let e=t;et.length&&delete this._stacks,e.forEach(((e,n)=>{0===t.filter((t=>t===e._dataset)).length&&this._destroyDatasetMeta(n)}))}buildOrUpdateControllers(){const e=[],t=this.data.datasets;let n,i;for(this._removeUnreferencedMetasets(),n=0,i=t.length;n{this.getDatasetMeta(t).controller.reset()}),this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const t=this.config;t.update();const n=this._options=t.createResolver(t.chartOptionScopes(),this.getContext()),i=this._animationsDisabled=!n.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),!1===this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0}))return;const s=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let r=0;for(let e=0,t=this.data.datasets.length;e{e.reset()})),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(hs("z","_idx"));const{_active:a,_lastEvent:o}=this;o?this._eventHandler(o,!0):a.length&&this._updateHoverStyles(a,a,!0),this.render()}_updateScales(){v(this.scales,(e=>{vi.removeBox(this,e)})),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,t=new Set(Object.keys(this._listeners)),n=new Set(e.events);z(t,n)&&!!this._responsiveListeners===e.responsive||(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,t=this._getUniformDataChanges()||[];for(const{method:n,start:i,count:s}of t){gs(e,i,"_removeElements"===n?-s:s)}}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const t=this.data.datasets.length,n=t=>new Set(e.filter((e=>e[0]===t)).map(((e,t)=>t+","+e.splice(1).join(",")))),i=n(0);for(let e=1;ee.split(","))).map((e=>({method:e[1],start:+e[2],count:+e[3]})))}_updateLayout(e){if(!1===this.notifyPlugins("beforeLayout",{cancelable:!0}))return;vi.update(this,this.width,this.height,e);const t=this.chartArea,n=t.width<=0||t.height<=0;this._layers=[],v(this.boxes,(e=>{n&&"chartArea"===e.position||(e.configure&&e.configure(),this._layers.push(...e._layers()))}),this),this._layers.forEach(((e,t)=>{e._idx=t})),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(!1!==this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})){for(let e=0,t=this.data.datasets.length;e=0;--t)this._drawDataset(e[t]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const t=this.ctx,n=e._clip,i=!n.disabled,s=this.chartArea,r={meta:e,index:e.index,cancelable:!0};!1!==this.notifyPlugins("beforeDatasetDraw",r)&&(i&&Je(t,{left:!1===n.left?0:s.left-n.left,right:!1===n.right?this.width:s.right+n.right,top:!1===n.top?0:s.top-n.top,bottom:!1===n.bottom?this.height:s.bottom+n.bottom}),e.controller.draw(),i&&Qe(t),r.cancelable=!1,this.notifyPlugins("afterDatasetDraw",r))}getElementsAtEventForMode(e,t,n,i){const s=si.modes[t];return"function"==typeof s?s(this,e,n,i):[]}getDatasetMeta(e){const t=this.data.datasets[e],n=this._metasets;let i=n.filter((e=>e&&e._dataset===t)).pop();return i||(i={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:t&&t.order||0,index:e,_dataset:t,_parsed:[],_sorted:!1},n.push(i)),i}getContext(){return this.$context||(this.$context=pt(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const t=this.data.datasets[e];if(!t)return!1;const n=this.getDatasetMeta(e);return"boolean"==typeof n.hidden?!n.hidden:!t.hidden}setDatasetVisibility(e,t){this.getDatasetMeta(e).hidden=!t}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,t,n){const i=n?"show":"hide",s=this.getDatasetMeta(e),r=s.controller._resolveAnimations(void 0,i);T(t)?(s.data[t].hidden=!n,this.update()):(this.setDatasetVisibility(e,n),r.update(s,{visible:n}),this.update((t=>t.datasetIndex===e?i:void 0)))}hide(e,t){this._updateVisibility(e,t,!1)}show(e,t){this._updateVisibility(e,t,!0)}_destroyDatasetMeta(e){const t=this._metasets[e];t&&t.controller&&t.controller._destroy(),delete this._metasets[e]}_stop(){let e,t;for(this.stop(),mn.remove(this),e=0,t=this.data.datasets.length;e{t.addEventListener(this,n,i),e[n]=i},i=(e,t,n)=>{e.offsetX=t,e.offsetY=n,this._eventHandler(e)};v(this.options.events,(e=>n(e,i)))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,t=this.platform,n=(n,i)=>{t.addEventListener(this,n,i),e[n]=i},i=(n,i)=>{e[n]&&(t.removeEventListener(this,n,i),delete e[n])},s=(e,t)=>{this.canvas&&this.resize(e,t)};let r;const a=()=>{i("attach",a),this.attached=!0,this.resize(),n("resize",s),n("detach",r)};r=()=>{this.attached=!1,i("resize",s),this._stop(),this._resize(0,0),n("attach",a)},t.isAttached(this.canvas)?a():r()}unbindEvents(){v(this._listeners,((e,t)=>{this.platform.removeEventListener(this,t,e)})),this._listeners={},v(this._responsiveListeners,((e,t)=>{this.platform.removeEventListener(this,t,e)})),this._responsiveListeners=void 0}updateHoverStyle(e,t,n){const i=n?"set":"remove";let s,r,a,o;for("dataset"===t&&(s=this.getDatasetMeta(e[0].datasetIndex),s.controller["_"+i+"DatasetHoverStyle"]()),a=0,o=e.length;a{const n=this.getDatasetMeta(e);if(!n)throw new Error("No dataset found at index "+e);return{datasetIndex:e,element:n.data[t],index:t}}));!y(n,t)&&(this._active=n,this._lastEvent=null,this._updateHoverStyles(n,t))}notifyPlugins(e,t,n){return this._plugins.notify(this,e,t,n)}_updateHoverStyles(e,t,n){const i=this.options.hover,s=(e,t)=>e.filter((e=>!t.some((t=>e.datasetIndex===t.datasetIndex&&e.index===t.index)))),r=s(t,e),a=n?e:s(e,t);r.length&&this.updateHoverStyle(r,i.mode,!1),a.length&&i.mode&&this.updateHoverStyle(a,i.mode,!0)}_eventHandler(e,t){const n={event:e,replay:t,cancelable:!0,inChartArea:qe(e,this.chartArea,this._minPadding)},i=t=>(t.options.events||this.options.events).includes(e.native.type);if(!1===this.notifyPlugins("beforeEvent",n,i))return;const s=this._handleEvent(e,t,n.inChartArea);return n.cancelable=!1,this.notifyPlugins("afterEvent",n,i),(s||n.changed)&&this.render(),this}_handleEvent(e,t,n){const{_active:i=[],options:s}=this,r=t,a=this._getActiveElements(e,i,n,r),o=function(e){return"mouseup"===e.type||"click"===e.type||"contextmenu"===e.type}(e),l=function(e,t,n,i){return n&&"mouseout"!==e.type?i?t:e:null}(e,this._lastEvent,n,o);n&&(this._lastEvent=null,g(s.onHover,[e,a,this],this),o&&g(s.onClick,[e,a,this],this));const c=!y(a,i);return(c||t)&&(this._active=a,this._updateHoverStyles(a,i,t)),this._lastEvent=l,c}_getActiveElements(e,t,n,i){if("mouseout"===e.type)return[];if(!n)return t;const s=this.options.hover;return this.getElementsAtEventForMode(e,s.mode,s,i)}}const ys=()=>v(vs.instances,(e=>e._plugins.invalidate())),bs=!0;function _s(e,t,n){const{startAngle:i,pixelMargin:s,x:r,y:a,outerRadius:o,innerRadius:l}=t;let c=s/o;e.beginPath(),e.arc(r,a,o,i-c,n+c),l>s?(c=s/l,e.arc(r,a,l,n+c,i-c,!0)):e.arc(r,a,s,n+Y,i-Y),e.closePath(),e.clip()}function Ms(e,t,n,i){const s=ot(e.options.borderRadius,["outerStart","outerEnd","innerStart","innerEnd"]);const r=(n-t)/2,a=Math.min(r,i*t/2),o=e=>{const t=(n-Math.min(r,e))*i/2;return Z(e,0,Math.min(r,t))};return{outerStart:o(s.outerStart),outerEnd:o(s.outerEnd),innerStart:Z(s.innerStart,0,a),innerEnd:Z(s.innerEnd,0,a)}}function ws(e,t,n,i){return{x:n+e*Math.cos(t),y:i+e*Math.sin(t)}}function Ss(e,t,n,i,s){const{x:r,y:a,startAngle:o,pixelMargin:l,innerRadius:c}=t,h=Math.max(t.outerRadius+i+n-l,0),d=c>0?c+i+n+l:0;let u=0;const p=s-o;if(i){const e=((c>0?c-i:0)+(h>0?h-i:0))/2;u=(p-(0!==e?p*e/(e+i):p))/2}const m=(p-Math.max(.001,p*h-n/A)/h)/2,f=o+m+u,g=s-m-u,{outerStart:v,outerEnd:y,innerStart:b,innerEnd:_}=Ms(t,d,h,g-f),M=h-v,w=h-y,S=f+v/M,L=g-y/w,k=d+b,x=d+_,C=f+b/k,T=g-_/x;if(e.beginPath(),e.arc(r,a,h,S,L),y>0){const t=ws(w,L,r,a);e.arc(t.x,t.y,y,L,g+Y)}const E=ws(x,g,r,a);if(e.lineTo(E.x,E.y),_>0){const t=ws(x,T,r,a);e.arc(t.x,t.y,_,g+Y,T+Math.PI)}if(e.arc(r,a,d,g-_/d,f+b/d,!0),b>0){const t=ws(k,C,r,a);e.arc(t.x,t.y,b,C+Math.PI,f-Y)}const z=ws(M,f,r,a);if(e.lineTo(z.x,z.y),v>0){const t=ws(M,S,r,a);e.arc(t.x,t.y,v,f-Y,S)}e.closePath()}function Ls(e,t,n,i,s){const{options:r}=t,{borderWidth:a,borderJoinStyle:o}=r,l="inner"===r.borderAlign;a&&(l?(e.lineWidth=2*a,e.lineJoin=o||"round"):(e.lineWidth=a,e.lineJoin=o||"bevel"),t.fullCircles&&function(e,t,n){const{x:i,y:s,startAngle:r,pixelMargin:a,fullCircles:o}=t,l=Math.max(t.outerRadius-a,0),c=t.innerRadius+a;let h;for(n&&_s(e,t,r+H),e.beginPath(),e.arc(i,s,c,r+H,r,!0),h=0;h{Ui.add(...e),ys()}},unregister:{enumerable:bs,value:(...e)=>{Ui.remove(...e),ys()}}});class ks extends Pi{constructor(e){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,t,n){const i=this.getProps(["x","y"],n),{angle:s,distance:r}=K(i,{x:e,y:t}),{startAngle:a,endAngle:o,innerRadius:l,outerRadius:c,circumference:h}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],n),d=this.options.spacing/2,u=m(h,o-a)>=H||Q(s,a,o),p=ee(r,l+d,c+d);return u&&p}getCenterPoint(e){const{x:t,y:n,startAngle:i,endAngle:s,innerRadius:r,outerRadius:a}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius","circumference"],e),{offset:o,spacing:l}=this.options,c=(i+s)/2,h=(r+a+l+o)/2;return{x:t+Math.cos(c)*h,y:n+Math.sin(c)*h}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){const{options:t,circumference:n}=this,i=(t.offset||0)/2,s=(t.spacing||0)/2;if(this.pixelMargin="inner"===t.borderAlign?.33:0,this.fullCircles=n>H?Math.floor(n/H):0,0===n||this.innerRadius<0||this.outerRadius<0)return;e.save();let r=0;if(i){r=i/2;const t=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(t)*r,Math.sin(t)*r),this.circumference>=A&&(r=i)}e.fillStyle=t.backgroundColor,e.strokeStyle=t.borderColor;const a=function(e,t,n,i){const{fullCircles:s,startAngle:r,circumference:a}=t;let o=t.endAngle;if(s){Ss(e,t,n,i,r+H);for(let t=0;to&&r>o;return{count:i,start:l,loop:t.loop,ilen:c(a+(c?o-e:e))%r,b=()=>{p!==m&&(e.lineTo(g,m),e.lineTo(g,p),e.lineTo(g,f))};for(l&&(d=s[y(0)],e.moveTo(d.x,d.y)),h=0;h<=o;++h){if(d=s[y(h)],d.skip)continue;const t=d.x,n=d.y,i=0|t;i===u?(nm&&(m=n),g=(v*g+t)/++v):(b(),e.lineTo(t,n),u=i,v=0,p=m=n),f=n}b()}function As(e){const t=e.options,n=t.borderDash&&t.borderDash.length;return!(e._decimated||e._loop||t.tension||"monotone"===t.cubicInterpolationMode||t.stepped||n)?zs:Es}ks.id="arc",ks.defaults={borderAlign:"center",borderColor:"#fff",borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0},ks.defaultRoutes={backgroundColor:"backgroundColor"};const Hs="function"==typeof Path2D;function Ds(e,t,n,i){Hs&&!t.options.segment?function(e,t,n,i){let s=t._path;s||(s=t._path=new Path2D,t.path(s,n,i)&&s.closePath()),xs(e,t.options),e.stroke(s)}(e,t,n,i):function(e,t,n,i){const{segments:s,options:r}=t,a=As(t);for(const o of s)xs(e,r,o.style),e.beginPath(),a(e,t,o,{start:n,end:n+i-1})&&e.closePath(),e.stroke()}(e,t,n,i)}class Ps extends Pi{constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,t){const n=this.options;if((n.tension||"monotone"===n.cubicInterpolationMode)&&!n.stepped&&!this._pointsUpdated){const i=n.spanGaps?this._loop:this._fullLoop;Nt(this._points,n,e,i,t),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=function(e,t){const n=e.points,i=e.options.spanGaps,s=n.length;if(!s)return[];const r=!!e._loop,{start:a,end:o}=function(e,t,n,i){let s=0,r=t-1;if(n&&!i)for(;ss&&e[r%t].skip;)r--;return r%=t,{start:s,end:r}}(n,s,r,i);return dn(e,!0===i?[{start:a,end:o,loop:r}]:function(e,t,n,i){const s=e.length,r=[];let a,o=t,l=e[t];for(a=t+1;a<=n;++a){const n=e[a%s];n.skip||n.stop?l.skip||(i=!1,r.push({start:t%s,end:(a-1)%s,loop:i}),t=o=n.stop?a:null):(o=a,l.skip&&(t=a)),l=n}return null!==o&&r.push({start:t%s,end:o%s,loop:i}),r}(n,a,o"borderDash"!==e&&"fill"!==e};class Ys extends Pi{constructor(e){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,e&&Object.assign(this,e)}inRange(e,t,n){const i=this.options,{x:s,y:r}=this.getProps(["x","y"],n);return Math.pow(e-s,2)+Math.pow(t-r,2)=n)&&s):["origin","start","end","stack","shape"].indexOf(i)>=0&&i}class Ws{constructor(e){this.x=e.x,this.y=e.y,this.radius=e.radius}pathSegment(e,t,n){const{x:i,y:s,radius:r}=this;return t=t||{start:0,end:H},e.arc(i,s,r,t.end,t.start,!0),!n.bounds}interpolate(e){const{x:t,y:n,radius:i}=this,s=e.angle;return{x:t+Math.cos(s)*i,y:n+Math.sin(s)*i,angle:s}}}function Gs(e){return(e.scale||{}).getPointPositionForValue?function(e){const{scale:t,fill:n}=e,i=t.options,s=t.getLabels().length,r=[],a=i.reverse?t.max:t.min,o=i.reverse?t.min:t.max;let l,c,h;if(h="start"===n?a:"end"===n?o:d(n)?n.value:t.getBaseValue(),i.grid.circular)return c=t.getPointPositionForValue(0,a),new Ws({x:c.x,y:c.y,radius:t.getDistanceFromCenterForValue(h)});for(l=0;le;t--){const e=n[t];if(!isNaN(e.x)&&!isNaN(e.y))break}return t}function Ks(e,t,n){const i=[];for(let s=0;s{t=Us(e,t,s);const a=s[e],o=s[t];null!==i?(r.push({x:a.x,y:i}),r.push({x:o.x,y:i})):null!==n&&(r.push({x:n,y:a.y}),r.push({x:n,y:o.y}))})),r}(e,t),n.length?new Ps({points:n,options:{tension:0},_loop:i,_fullLoop:i}):null}function Qs(e,t,n){let i=e[t].fill;const s=[t];let r;if(!n)return i;for(;!1!==i&&-1===s.indexOf(i);){if(!u(i))return i;if(r=e[i],!r)return!1;if(r.visible)return i;s.push(i),i=r.fill}return!1}function Zs(e,t,n){e.beginPath(),t.path(e),e.lineTo(t.last().x,n),e.lineTo(t.first().x,n),e.closePath(),e.clip()}function er(e,t,n,i){if(i)return;let s=t[e],r=n[e];return"angle"===e&&(s=J(s),r=J(r)),{property:e,start:s,end:r}}function tr(e,t,n,i){return e&&t?i(e[n],t[n]):e?e[n]:t?t[n]:0}function nr(e,t,n){const{top:i,bottom:s}=t.chart.chartArea,{property:r,start:a,end:o}=n||{};"x"===r&&(e.beginPath(),e.rect(a,i,o-a,s-i),e.clip())}function ir(e,t,n,i){const s=t.interpolate(n,i);s&&e.lineTo(s.x,s.y)}function sr(e,t){const{line:n,target:i,property:s,color:r,scale:a}=t,o=function(e,t,n){const i=e.segments,s=e.points,r=t.points,a=[];for(const e of i){let{start:i,end:o}=e;o=Us(i,o,s);const l=er(n,s[i],s[o],e.loop);if(!t.segments){a.push({source:e,target:l,start:s[i],end:s[o]});continue}const c=hn(t,l);for(const t of c){const i=er(n,r[t.start],r[t.end],t.loop),o=cn(e,s,i);for(const e of o)a.push({source:e,target:t,start:{[n]:tr(l,i,"start",Math.max)},end:{[n]:tr(l,i,"end",Math.min)}})}}return a}(n,i,s);for(const{source:t,target:l,start:c,end:h}of o){const{style:{backgroundColor:o=r}={}}=t,d=!0!==i;e.save(),e.fillStyle=o,nr(e,a,d&&er(s,c,h)),e.beginPath();const u=!!n.pathSegment(e,t);let p;if(d){u?e.closePath():ir(e,i,h,s);const t=!!i.pathSegment(e,l,{move:u,reverse:!0});p=u&&t,p||ir(e,i,c,s)}e.closePath(),e.fill(p?"evenodd":"nonzero"),e.restore()}}function rr(e,t,n){const i=qs(t),{line:s,scale:r,axis:a}=t,o=s.options,l=o.fill,c=o.backgroundColor,{above:h=c,below:d=c}=l||{};i&&s.points.length&&(Je(e,n),function(e,t){const{line:n,target:i,above:s,below:r,area:a,scale:o}=t,l=n._loop?"angle":t.axis;e.save(),"x"===l&&r!==s&&(Zs(e,i,a.top),sr(e,{line:n,target:i,color:s,scale:o,property:l}),e.restore(),e.save(),Zs(e,i,a.bottom)),sr(e,{line:n,target:i,color:r,scale:o,property:l}),e.restore()}(e,{line:s,target:i,above:h,below:d,area:n,scale:r,axis:a}),Qe(e))}var ar={id:"filler",afterDatasetsUpdate(e,t,n){const i=(e.data.datasets||[]).length,s=[];let r,a,o,l;for(a=0;a=0;--t){const n=s[t].$filler;n&&(n.line.updateControlPoints(r,n.axis),i&&rr(e.ctx,n,r))}},beforeDatasetsDraw(e,t,n){if("beforeDatasetsDraw"!==n.drawTime)return;const i=e.getSortedVisibleDatasetMetas();for(let t=i.length-1;t>=0;--t){const n=i[t].$filler;n&&rr(e.ctx,n,e.chartArea)}},beforeDatasetDraw(e,t,n){const i=t.meta.$filler;i&&!1!==i.fill&&"beforeDatasetDraw"===n.drawTime&&rr(e.ctx,i,e.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};class or extends Pi{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,t){const n=this.options;if(this.left=0,this.top=0,!n.display)return void(this.width=this.height=this.right=this.bottom=0);this.width=this.right=e,this.height=this.bottom=t;const i=h(n.text)?n.text.length:1;this._padding=ht(n.padding);const s=i*dt(n.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=s:this.width=s}isHorizontal(){const e=this.options.position;return"top"===e||"bottom"===e}_drawArgs(e){const{top:t,left:n,bottom:i,right:s,options:r}=this,o=r.align;let l,c,h,d=0;return this.isHorizontal()?(c=a(o,n,s),h=t+e,l=s-n):("left"===r.position?(c=n+e,h=a(o,i,t),d=-.5*A):(c=s-e,h=a(o,t,i),d=.5*A),l=i-t),{titleX:c,titleY:h,maxWidth:l,rotation:d}}draw(){const e=this.ctx,t=this.options;if(!t.display)return;const n=dt(t.font),i=n.lineHeight/2+this._padding.top,{titleX:s,titleY:a,maxWidth:o,rotation:l}=this._drawArgs(i);tt(e,t.text,0,0,n,{color:t.color,maxWidth:o,rotation:l,textAlign:r(t.align),textBaseline:"middle",translation:[s,a]})}}var lr={id:"title",_element:or,start(e,t,n){!function(e,t){const n=new or({ctx:e.ctx,options:t,chart:e});vi.configure(e,n,t),vi.addBox(e,n),e.titleBlock=n}(e,n)},stop(e){const t=e.titleBlock;vi.removeBox(e,t),delete e.titleBlock},beforeUpdate(e,t,n){const i=e.titleBlock;vi.configure(e,i,n),i.options=n},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};new WeakMap;const cr={average(e){if(!e.length)return!1;let t,n,i=0,s=0,r=0;for(t=0,n=e.length;t-1?e.split("\n"):e}function ur(e,t){const{element:n,datasetIndex:i,index:s}=t,r=e.getDatasetMeta(i).controller,{label:a,value:o}=r.getLabelAndValue(s);return{chart:e,label:a,parsed:r.getParsed(s),raw:e.data.datasets[i].data[s],formattedValue:o,dataset:r.getDataset(),dataIndex:s,datasetIndex:i,element:n}}function pr(e,t){const n=e.chart.ctx,{body:i,footer:s,title:r}=e,{boxWidth:a,boxHeight:o}=t,l=dt(t.bodyFont),c=dt(t.titleFont),h=dt(t.footerFont),d=r.length,u=s.length,p=i.length,m=ht(t.padding);let f=m.height,g=0,y=i.reduce(((e,t)=>e+t.before.length+t.lines.length+t.after.length),0);if(y+=e.beforeBody.length+e.afterBody.length,d&&(f+=d*c.lineHeight+(d-1)*t.titleSpacing+t.titleMarginBottom),y){f+=p*(t.displayColors?Math.max(o,l.lineHeight):l.lineHeight)+(y-p)*l.lineHeight+(y-1)*t.bodySpacing}u&&(f+=t.footerMarginTop+u*h.lineHeight+(u-1)*t.footerSpacing);let b=0;const _=function(e){g=Math.max(g,n.measureText(e).width+b)};return n.save(),n.font=c.string,v(e.title,_),n.font=l.string,v(e.beforeBody.concat(e.afterBody),_),b=t.displayColors?a+2+t.boxPadding:0,v(i,(e=>{v(e.before,_),v(e.lines,_),v(e.after,_)})),b=0,n.font=h.string,v(e.footer,_),n.restore(),g+=m.width,{width:g,height:f}}function mr(e,t,n,i){const{x:s,width:r}=n,{width:a,chartArea:{left:o,right:l}}=e;let c="center";return"center"===i?c=s<=(o+l)/2?"left":"right":s<=r/2?c="left":s>=a-r/2&&(c="right"),function(e,t,n,i){const{x:s,width:r}=i,a=n.caretSize+n.caretPadding;return"left"===e&&s+r+a>t.width||"right"===e&&s-r-a<0||void 0}(c,e,t,n)&&(c="center"),c}function fr(e,t,n){const i=n.yAlign||t.yAlign||function(e,t){const{y:n,height:i}=t;return ne.height-i/2?"bottom":"center"}(e,n);return{xAlign:n.xAlign||t.xAlign||mr(e,t,n,i),yAlign:i}}function gr(e,t,n,i){const{caretSize:s,caretPadding:r,cornerRadius:a}=e,{xAlign:o,yAlign:l}=n,c=s+r,{topLeft:h,topRight:d,bottomLeft:u,bottomRight:p}=ct(a);let m=function(e,t){let{x:n,width:i}=e;return"right"===t?n-=i:"center"===t&&(n-=i/2),n}(t,o);const f=function(e,t,n){let{y:i,height:s}=e;return"top"===t?i+=n:i-="bottom"===t?s+n:s/2,i}(t,l,c);return"center"===l?"left"===o?m+=c:"right"===o&&(m-=c):"left"===o?m-=Math.max(h,u)+s:"right"===o&&(m+=Math.max(d,p)+s),{x:Z(m,0,i.width-t.width),y:Z(f,0,i.height-t.height)}}function vr(e,t,n){const i=ht(n.padding);return"center"===t?e.x+e.width/2:"right"===t?e.x+e.width-i.right:e.x+i.left}function yr(e){return hr([],dr(e))}function br(e,t){const n=t&&t.dataset&&t.dataset.tooltip&&t.dataset.tooltip.callbacks;return n?e.override(n):e}class _r extends Pi{constructor(e){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=e.chart||e._chart,this._chart=this.chart,this.options=e.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(e){this.options=e,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const e=this._cachedAnimations;if(e)return e;const t=this.chart,n=this.options.setContext(this.getContext()),i=n.enabled&&t.options.animation&&n.animations,s=new bn(this.chart,i);return i._cacheable&&(this._cachedAnimations=Object.freeze(s)),s}getContext(){return this.$context||(this.$context=(e=this.chart.getContext(),t=this,n=this._tooltipItems,pt(e,{tooltip:t,tooltipItems:n,type:"tooltip"})));var e,t,n}getTitle(e,t){const{callbacks:n}=t,i=n.beforeTitle.apply(this,[e]),s=n.title.apply(this,[e]),r=n.afterTitle.apply(this,[e]);let a=[];return a=hr(a,dr(i)),a=hr(a,dr(s)),a=hr(a,dr(r)),a}getBeforeBody(e,t){return yr(t.callbacks.beforeBody.apply(this,[e]))}getBody(e,t){const{callbacks:n}=t,i=[];return v(e,(e=>{const t={before:[],lines:[],after:[]},s=br(n,e);hr(t.before,dr(s.beforeLabel.call(this,e))),hr(t.lines,s.label.call(this,e)),hr(t.after,dr(s.afterLabel.call(this,e))),i.push(t)})),i}getAfterBody(e,t){return yr(t.callbacks.afterBody.apply(this,[e]))}getFooter(e,t){const{callbacks:n}=t,i=n.beforeFooter.apply(this,[e]),s=n.footer.apply(this,[e]),r=n.afterFooter.apply(this,[e]);let a=[];return a=hr(a,dr(i)),a=hr(a,dr(s)),a=hr(a,dr(r)),a}_createItems(e){const t=this._active,n=this.chart.data,i=[],s=[],r=[];let a,o,l=[];for(a=0,o=t.length;ae.filter(t,i,s,n)))),e.itemSort&&(l=l.sort(((t,i)=>e.itemSort(t,i,n)))),v(l,(t=>{const n=br(e.callbacks,t);i.push(n.labelColor.call(this,t)),s.push(n.labelPointStyle.call(this,t)),r.push(n.labelTextColor.call(this,t))})),this.labelColors=i,this.labelPointStyles=s,this.labelTextColors=r,this.dataPoints=l,l}update(e,t){const n=this.options.setContext(this.getContext()),i=this._active;let s,r=[];if(i.length){const e=cr[n.position].call(this,i,this._eventPosition);r=this._createItems(n),this.title=this.getTitle(r,n),this.beforeBody=this.getBeforeBody(r,n),this.body=this.getBody(r,n),this.afterBody=this.getAfterBody(r,n),this.footer=this.getFooter(r,n);const t=this._size=pr(this,n),a=Object.assign({},e,t),o=fr(this.chart,n,a),l=gr(n,a,o,this.chart);this.xAlign=o.xAlign,this.yAlign=o.yAlign,s={opacity:1,x:l.x,y:l.y,width:t.width,height:t.height,caretX:e.x,caretY:e.y}}else 0!==this.opacity&&(s={opacity:0});this._tooltipItems=r,this.$context=void 0,s&&this._resolveAnimations().update(this,s),e&&n.external&&n.external.call(this,{chart:this.chart,tooltip:this,replay:t})}drawCaret(e,t,n,i){const s=this.getCaretPosition(e,n,i);t.lineTo(s.x1,s.y1),t.lineTo(s.x2,s.y2),t.lineTo(s.x3,s.y3)}getCaretPosition(e,t,n){const{xAlign:i,yAlign:s}=this,{caretSize:r,cornerRadius:a}=n,{topLeft:o,topRight:l,bottomLeft:c,bottomRight:h}=ct(a),{x:d,y:u}=e,{width:p,height:m}=t;let f,g,v,y,b,_;return"center"===s?(b=u+m/2,"left"===i?(f=d,g=f-r,y=b+r,_=b-r):(f=d+p,g=f+r,y=b-r,_=b+r),v=f):(g="left"===i?d+Math.max(o,c)+r:"right"===i?d+p-Math.max(l,h)-r:this.caretX,"top"===s?(y=u,b=y-r,f=g-r,v=g+r):(y=u+m,b=y+r,f=g+r,v=g-r),_=y),{x1:f,x2:g,x3:v,y1:y,y2:b,y3:_}}drawTitle(e,t,n){const i=this.title,s=i.length;let r,a,o;if(s){const l=sn(n.rtl,this.x,this.width);for(e.x=vr(this,n.titleAlign,n),t.textAlign=l.textAlign(n.titleAlign),t.textBaseline="middle",r=dt(n.titleFont),a=n.titleSpacing,t.fillStyle=n.titleColor,t.font=r.string,o=0;o0!==e))?(e.beginPath(),e.fillStyle=s.multiKeyBackground,it(e,{x:t,y:m,w:l,h:o,radius:a}),e.fill(),e.stroke(),e.fillStyle=r.backgroundColor,e.beginPath(),it(e,{x:n,y:m+1,w:l-2,h:o-2,radius:a}),e.fill()):(e.fillStyle=s.multiKeyBackground,e.fillRect(t,m,l,o),e.strokeRect(t,m,l,o),e.fillStyle=r.backgroundColor,e.fillRect(n,m+1,l-2,o-2))}e.fillStyle=this.labelTextColors[n]}drawBody(e,t,n){const{body:i}=this,{bodySpacing:s,bodyAlign:r,displayColors:a,boxHeight:o,boxWidth:l,boxPadding:c}=n,h=dt(n.bodyFont);let d=h.lineHeight,u=0;const p=sn(n.rtl,this.x,this.width),m=function(n){t.fillText(n,p.x(e.x+u),e.y+d/2),e.y+=d+s},f=p.textAlign(r);let g,y,b,_,M,w,S;for(t.textAlign=r,t.textBaseline="middle",t.font=h.string,e.x=vr(this,f,n),t.fillStyle=n.bodyColor,v(this.beforeBody,m),u=a&&"right"!==f?"center"===r?l/2+c:l+2+c:0,_=0,w=i.length;_0&&t.stroke()}_updateAnimationTarget(e){const t=this.chart,n=this.$animations,i=n&&n.x,s=n&&n.y;if(i||s){const n=cr[e.position].call(this,this._active,this._eventPosition);if(!n)return;const r=this._size=pr(this,e),a=Object.assign({},n,this._size),o=fr(t,e,a),l=gr(e,a,o,t);i._to===l.x&&s._to===l.y||(this.xAlign=o.xAlign,this.yAlign=o.yAlign,this.width=r.width,this.height=r.height,this.caretX=n.x,this.caretY=n.y,this._resolveAnimations().update(this,l))}}draw(e){const t=this.options.setContext(this.getContext());let n=this.opacity;if(!n)return;this._updateAnimationTarget(t);const i={width:this.width,height:this.height},s={x:this.x,y:this.y};n=Math.abs(n)<.001?0:n;const r=ht(t.padding),a=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;t.enabled&&a&&(e.save(),e.globalAlpha=n,this.drawBackground(s,e,i,t),rn(e,t.textDirection),s.y+=r.top,this.drawTitle(s,e,t),this.drawBody(s,e,t),this.drawFooter(s,e,t),an(e,t.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,t){const n=this._active,i=e.map((({datasetIndex:e,index:t})=>{const n=this.chart.getDatasetMeta(e);if(!n)throw new Error("Cannot find a dataset at index "+e);return{datasetIndex:e,element:n.data[t],index:t}})),s=!y(n,i),r=this._positionChanged(i,t);(s||r)&&(this._active=i,this._eventPosition=t,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,t,n=!0){if(t&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const i=this.options,s=this._active||[],r=this._getActiveElements(e,s,t,n),a=this._positionChanged(r,e),o=t||!y(r,s)||a;return o&&(this._active=r,(i.enabled||i.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,t))),o}_getActiveElements(e,t,n,i){const s=this.options;if("mouseout"===e.type)return[];if(!i)return t;const r=this.chart.getElementsAtEventForMode(e,s.mode,s,n);return s.reverse&&r.reverse(),r}_positionChanged(e,t){const{caretX:n,caretY:i,options:s}=this,r=cr[s.position].call(this,e,t);return!1!==r&&(n!==r.x||i!==r.y)}}_r.positioners=cr;var Mr={id:"tooltip",_element:_r,positioners:cr,afterInit(e,t,n){n&&(e.tooltip=new _r({chart:e,options:n}))},beforeUpdate(e,t,n){e.tooltip&&e.tooltip.initialize(n)},reset(e,t,n){e.tooltip&&e.tooltip.initialize(n)},afterDraw(e){const t=e.tooltip,n={tooltip:t};!1!==e.notifyPlugins("beforeTooltipDraw",n)&&(t&&t.draw(e.ctx),e.notifyPlugins("afterTooltipDraw",n))},afterEvent(e,t){if(e.tooltip){const n=t.replay;e.tooltip.handleEvent(t.event,n,t.inChartArea)&&(t.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(e,t)=>t.bodyFont.size,boxWidth:(e,t)=>t.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:{beforeTitle:o,title(e){if(e.length>0){const t=e[0],n=t.chart.data.labels,i=n?n.length:0;if(this&&this.options&&"dataset"===this.options.mode)return t.dataset.label||"";if(t.label)return t.label;if(i>0&&t.dataIndex"filter"!==e&&"itemSort"!==e&&"external"!==e,_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]};function wr(e,t,n,i){const s=e.indexOf(t);if(-1===s)return((e,t,n,i)=>("string"==typeof t?(n=e.push(t)-1,i.unshift({index:n,label:t})):isNaN(t)&&(n=null),n))(e,t,n,i);return s!==e.lastIndexOf(t)?n:s}class Sr extends Wi{constructor(e){super(e),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(e){const t=this._addedLabels;if(t.length){const e=this.getLabels();for(const{index:n,label:i}of t)e[n]===i&&e.splice(n,1);this._addedLabels=[]}super.init(e)}parse(e,t){if(c(e))return null;const n=this.getLabels();return((e,t)=>null===e?null:Z(Math.round(e),0,t))(t=isFinite(t)&&n[t]===e?t:wr(n,e,m(t,e),this._addedLabels),n.length-1)}determineDataLimits(){const{minDefined:e,maxDefined:t}=this.getUserBounds();let{min:n,max:i}=this.getMinMax(!0);"ticks"===this.options.bounds&&(e||(n=0),t||(i=this.getLabels().length-1)),this.min=n,this.max=i}buildTicks(){const e=this.min,t=this.max,n=this.options.offset,i=[];let s=this.getLabels();s=0===e&&t===s.length-1?s:s.slice(e,t+1),this._valueRange=Math.max(s.length-(n?0:1),1),this._startValue=this.min-(n?.5:0);for(let n=e;n<=t;n++)i.push({value:n});return i}getLabelForValue(e){const t=this.getLabels();return e>=0&&et.length-1?null:this.getPixelForValue(t[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}}function Lr(e,t){const n=[],{bounds:i,step:s,min:r,max:a,precision:o,count:l,maxTicks:h,maxDigits:d,includeBounds:u}=e,p=s||1,m=h-1,{min:f,max:g}=t,v=!c(r),y=!c(a),b=!c(l),_=(g-f)/(d+1);let M,w,S,L,k=I((g-f)/m/p)*p;if(k<1e-14&&!v&&!y)return[{value:f},{value:g}];L=Math.ceil(g/k)-Math.floor(f/k),L>m&&(k=I(L*k/m/p)*p),c(o)||(M=Math.pow(10,o),k=Math.ceil(k*M)/M),"ticks"===i?(w=Math.floor(f/k)*k,S=Math.ceil(g/k)*k):(w=f,S=g),v&&y&&s&&function(e,t){const n=Math.round(e);return n-t<=e&&n+t>=e}((a-r)/s,k/1e3)?(L=Math.round(Math.min((a-r)/k,h)),k=(a-r)/L,w=r,S=a):b?(w=v?r:w,S=y?a:S,L=l-1,k=(S-w)/L):(L=(S-w)/k,L=j(L,Math.round(L),k/1e3)?Math.round(L):Math.ceil(L));const x=Math.max(U(k),U(w));M=Math.pow(10,c(o)?x:o),w=Math.round(w*M)/M,S=Math.round(S*M)/M;let C=0;for(v&&(u&&w!==r?(n.push({value:r}),wi=t?i:e,a=e=>s=n?s:e;if(e){const e=$(i),t=$(s);e<0&&t<0?a(0):e>0&&t>0&&r(0)}if(i===s){let t=1;(s>=Number.MAX_SAFE_INTEGER||i<=Number.MIN_SAFE_INTEGER)&&(t=Math.abs(.05*s)),a(s+t),e||r(i-t)}this.min=i,this.max=s}getTickLimit(){const e=this.options.ticks;let t,{maxTicksLimit:n,stepSize:i}=e;return i?(t=Math.ceil(this.max/i)-Math.floor(this.min/i)+1,t>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${i} would result generating up to ${t} ticks. Limiting to 1000.`),t=1e3)):(t=this.computeTickLimit(),n=n||11),n&&(t=Math.min(n,t)),t}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const e=this.options,t=e.ticks;let n=this.getTickLimit();n=Math.max(2,n);const i=Lr({maxTicks:n,bounds:e.bounds,min:e.min,max:e.max,precision:t.precision,step:t.stepSize,count:t.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:t.minRotation||0,includeBounds:!1!==t.includeBounds},this._range||this);return"ticks"===e.bounds&&B(i,this,"value"),e.reverse?(i.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),i}configure(){const e=this.ticks;let t=this.min,n=this.max;if(super.configure(),this.options.offset&&e.length){const i=(n-t)/Math.max(e.length-1,1)/2;t-=i,n+=i}this._startValue=t,this._endValue=n,this._valueRange=n-t}getLabelForValue(e){return nn(e,this.chart.options.locale,this.options.ticks.format)}}class Cr extends xr{determineDataLimits(){const{min:e,max:t}=this.getMinMax(!0);this.min=u(e)?e:0,this.max=u(t)?t:1,this.handleTickRangeOptions()}computeTickLimit(){const e=this.isHorizontal(),t=e?this.width:this.height,n=W(this.options.ticks.minRotation),i=(e?Math.sin(n):Math.cos(n))||.001,s=this._resolveTickFontOptions(0);return Math.ceil(t/Math.min(40,s.lineHeight/i))}getPixelForValue(e){return null===e?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}}function Tr(e){return 1===e/Math.pow(10,Math.floor(N(e)))}Cr.id="linear",Cr.defaults={ticks:{callback:Yi.formatters.numeric}};class Er extends Wi{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,t){const n=xr.prototype.parse.apply(this,[e,t]);if(0!==n)return u(n)&&n>0?n:null;this._zero=!0}determineDataLimits(){const{min:e,max:t}=this.getMinMax(!0);this.min=u(e)?Math.max(0,e):null,this.max=u(t)?Math.max(0,t):null,this.options.beginAtZero&&(this._zero=!0),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:e,maxDefined:t}=this.getUserBounds();let n=this.min,i=this.max;const s=t=>n=e?n:t,r=e=>i=t?i:e,a=(e,t)=>Math.pow(10,Math.floor(N(e))+t);n===i&&(n<=0?(s(1),r(10)):(s(a(n,-1)),r(a(i,1)))),n<=0&&s(a(i,-1)),i<=0&&r(a(n,1)),this._zero&&this.min!==this._suggestedMin&&n===a(this.min,0)&&s(a(n,-1)),this.min=n,this.max=i}buildTicks(){const e=this.options,t=function(e,t){const n=Math.floor(N(t.max)),i=Math.ceil(t.max/Math.pow(10,n)),s=[];let r=p(e.min,Math.pow(10,Math.floor(N(t.min)))),a=Math.floor(N(r)),o=Math.floor(r/Math.pow(10,a)),l=a<0?Math.pow(10,Math.abs(a)):1;do{s.push({value:r,major:Tr(r)}),++o,10===o&&(o=1,++a,l=a>=0?1:l),r=Math.round(o*Math.pow(10,a)*l)/l}while(as?{start:t-n,end:t}:{start:t,end:t+n}}function Hr(e){const t={l:e.left+e._padding.left,r:e.right-e._padding.right,t:e.top+e._padding.top,b:e.bottom-e._padding.bottom},n=Object.assign({},t),i=[],s=[],r=e._pointLabels.length,a=e.options.pointLabels,o=a.centerPointLabels?A/r:0;for(let u=0;ut.r&&(o=(i.end-t.r)/r,e.r=Math.max(e.r,t.r+o)),s.startt.b&&(l=(s.end-t.b)/a,e.b=Math.max(e.b,t.b+l))}function Pr(e){return 0===e||180===e?"center":e<180?"left":"right"}function Or(e,t,n){return"right"===n?e-=t:"center"===n&&(e-=t/2),e}function Yr(e,t,n){return 90===n||270===n?e-=t/2:(n>270||n<90)&&(e-=t),e}function Rr(e,t,n,i){const{ctx:s}=e;if(n)s.arc(e.xCenter,e.yCenter,t,0,H);else{let n=e.getPointPosition(0,t);s.moveTo(n.x,n.y);for(let r=1;r{const n=g(this.options.pointLabels.callback,[e,t],this);return n||0===n?n:""})).filter(((e,t)=>this.chart.getDataVisibility(t)))}fit(){const e=this.options;e.display&&e.pointLabels.display?Hr(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,t,n,i){this.xCenter+=Math.floor((e-t)/2),this.yCenter+=Math.floor((n-i)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,t,n,i))}getIndexAngle(e){return J(e*(H/(this._pointLabels.length||1))+W(this.options.startAngle||0))}getDistanceFromCenterForValue(e){if(c(e))return NaN;const t=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*t:(e-this.min)*t}getValueForDistanceFromCenter(e){if(c(e))return NaN;const t=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-t:this.min+t}getPointLabelContext(e){const t=this._pointLabels||[];if(e>=0&&e=0;s--){const t=i.setContext(e.getPointLabelContext(s)),r=dt(t.font),{x:a,y:o,textAlign:l,left:h,top:d,right:u,bottom:p}=e._pointLabelItems[s],{backdropColor:m}=t;if(!c(m)){const e=ht(t.backdropPadding);n.fillStyle=m,n.fillRect(h-e.left,d-e.top,u-h+e.width,p-d+e.height)}tt(n,e._pointLabels[s],a,o+r.lineHeight/2,r,{color:t.color,textAlign:l,textBaseline:"middle"})}}(this,s),i.display&&this.ticks.forEach(((e,t)=>{if(0!==t){a=this.getDistanceFromCenterForValue(e.value);!function(e,t,n,i){const s=e.ctx,r=t.circular,{color:a,lineWidth:o}=t;!r&&!i||!a||!o||n<0||(s.save(),s.strokeStyle=a,s.lineWidth=o,s.setLineDash(t.borderDash),s.lineDashOffset=t.borderDashOffset,s.beginPath(),Rr(e,n,r,i),s.closePath(),s.stroke(),s.restore())}(this,i.setContext(this.getContext(t-1)),a,s)}})),n.display){for(e.save(),r=s-1;r>=0;r--){const i=n.setContext(this.getPointLabelContext(r)),{color:s,lineWidth:l}=i;l&&s&&(e.lineWidth=l,e.strokeStyle=s,e.setLineDash(i.borderDash),e.lineDashOffset=i.borderDashOffset,a=this.getDistanceFromCenterForValue(t.ticks.reverse?this.min:this.max),o=this.getPointPosition(r,a),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(o.x,o.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){const e=this.ctx,t=this.options,n=t.ticks;if(!n.display)return;const i=this.getIndexAngle(0);let s,r;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(i),e.textAlign="center",e.textBaseline="middle",this.ticks.forEach(((i,a)=>{if(0===a&&!t.reverse)return;const o=n.setContext(this.getContext(a)),l=dt(o.font);if(s=this.getDistanceFromCenterForValue(this.ticks[a].value),o.showLabelBackdrop){e.font=l.string,r=e.measureText(i.label).width,e.fillStyle=o.backdropColor;const t=ht(o.backdropPadding);e.fillRect(-r/2-t.left,-s-l.size/2-t.top,r+t.width,l.size+t.height)}tt(e,i.label,0,-s,l,{color:o.color})})),e.restore()}drawTitle(){}}Vr.id="radialLinear",Vr.defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Yi.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback:e=>e,padding:5,centerPointLabels:!1}},Vr.defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"},Vr.descriptors={angleLines:{_fallback:"grid"}};const Nr={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},$r=Object.keys(Nr);function Ir(e,t){return e-t}function Fr(e,t){if(c(t))return null;const n=e._adapter,{parser:i,round:s,isoWeekday:r}=e._parseOpts;let a=t;return"function"==typeof i&&(a=i(a)),u(a)||(a="string"==typeof i?n.parse(a,i):n.parse(a)),null===a?null:(s&&(a="week"!==s||!F(r)&&!0!==r?n.startOf(a,s):n.startOf(a,"isoWeek",r)),+a)}function jr(e,t,n,i){const s=$r.length;for(let r=$r.indexOf(e);r=t?n[i]:n[s]]=!0}}else e[t]=!0}function Wr(e,t,n){const i=[],s={},r=t.length;let a,o;for(a=0;a=0&&(t[l].major=!0);return t}(e,i,s,n):i}class Gr extends Wi{constructor(e){super(e),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(e,t){const n=e.time||(e.time={}),i=this._adapter=new qn._date(e.adapters.date);S(n.displayFormats,i.formats()),this._parseOpts={parser:n.parser,round:n.round,isoWeekday:n.isoWeekday},super.init(e),this._normalized=t.normalized}parse(e,t){return void 0===e?null:Fr(this,e)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const e=this.options,t=this._adapter,n=e.time.unit||"day";let{min:i,max:s,minDefined:r,maxDefined:a}=this.getUserBounds();function o(e){r||isNaN(e.min)||(i=Math.min(i,e.min)),a||isNaN(e.max)||(s=Math.max(s,e.max))}r&&a||(o(this._getLabelBounds()),"ticks"===e.bounds&&"labels"===e.ticks.source||o(this.getMinMax(!1))),i=u(i)&&!isNaN(i)?i:+t.startOf(Date.now(),n),s=u(s)&&!isNaN(s)?s:+t.endOf(Date.now(),n)+1,this.min=Math.min(i,s-1),this.max=Math.max(i+1,s)}_getLabelBounds(){const e=this.getLabelTimestamps();let t=Number.POSITIVE_INFINITY,n=Number.NEGATIVE_INFINITY;return e.length&&(t=e[0],n=e[e.length-1]),{min:t,max:n}}buildTicks(){const e=this.options,t=e.time,n=e.ticks,i="labels"===n.source?this.getLabelTimestamps():this._generate();"ticks"===e.bounds&&i.length&&(this.min=this._userMin||i[0],this.max=this._userMax||i[i.length-1]);const s=this.min,r=function(e,t,n){let i=0,s=e.length;for(;ii&&e[s-1]>n;)s--;return i>0||s=$r.indexOf(n);r--){const n=$r[r];if(Nr[n].common&&e._adapter.diff(s,i,n)>=t-1)return n}return $r[n?$r.indexOf(n):0]}(this,r.length,t.minUnit,this.min,this.max)),this._majorUnit=n.major.enabled&&"year"!==this._unit?function(e){for(let t=$r.indexOf(e)+1,n=$r.length;t1e5*a)throw new Error(t+" and "+n+" are too far apart with stepSize of "+a+" "+r);const p="data"===i.ticks.source&&this.getDataTimestamps();for(h=u,d=0;he-t)).map((e=>+e))}getLabelForValue(e){const t=this._adapter,n=this.options.time;return n.tooltipFormat?t.format(e,n.tooltipFormat):t.format(e,n.displayFormats.datetime)}_tickFormatFunction(e,t,n,i){const s=this.options,r=s.time.displayFormats,a=this._unit,o=this._majorUnit,l=a&&r[a],c=o&&r[o],h=n[t],d=o&&c&&h&&h.major,u=this._adapter.format(e,i||(d?c:l)),p=s.ticks.callback;return p?g(p,[u,t,n],this):u}generateTickLabels(e){let t,n,i;for(t=0,n=e.length;t0?a:1}getDataTimestamps(){let e,t,n=this._cache.data||[];if(n.length)return n;const i=this.getMatchingVisibleMetas();if(this._normalized&&i.length)return this._cache.data=i[0].controller.getAllParsedValues(this);for(e=0,t=i.length;e=e[o].pos&&t<=e[l].pos&&({lo:o,hi:l}=ft(e,"pos",t)),({pos:i,time:r}=e[o]),({pos:s,time:a}=e[l])):(t>=e[o].time&&t<=e[l].time&&({lo:o,hi:l}=ft(e,"time",t)),({time:i,pos:r}=e[o]),({time:s,pos:a}=e[l]));const c=s-i;return c?r+(a-r)*(t-i)/c:r}Gr.id="time",Gr.defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",major:{enabled:!1}}};class Kr extends Gr{constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const e=this._getTimestampsForTable(),t=this._table=this.buildLookupTable(e);this._minPos=Ur(t,this.min),this._tableRange=Ur(t,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){const{min:t,max:n}=this,i=[],s=[];let r,a,o,l,c;for(r=0,a=e.length;r=t&&l<=n&&i.push(l);if(i.length<2)return[{time:t,pos:0},{time:n,pos:1}];for(r=0,a=i.length;r=0;h--){var d=s[h];"."===d?Go(s,h):".."===d?(Go(s,h),c++):c&&(Go(s,h),c--)}if(!o)for(;c--;c)s.unshift("..");!o||""===s[0]||s[0]&&Wo(s[0])||s.unshift("");var u=s.join("/");return n&&"/"!==u.substr(-1)&&(u+="/"),u};var Ko="Invariant failed";function Xo(e,t){if(!e)throw new Error(Ko)}function qo(e){return"/"===e.charAt(0)?e:"/"+e}function Jo(e){return"/"===e.charAt(0)?e.substr(1):e}function Qo(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function Zo(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function el(e){var t=e.pathname,n=e.search,i=e.hash,s=t||"/";return n&&"?"!==n&&(s+="?"===n.charAt(0)?n:"?"+n),i&&"#"!==i&&(s+="#"===i.charAt(0)?i:"#"+i),s}function tl(e,t,n,i){var s;"string"==typeof e?(s=function(e){var t=e||"/",n="",i="",s=t.indexOf("#");-1!==s&&(i=t.substr(s),t=t.substr(0,s));var r=t.indexOf("?");return-1!==r&&(n=t.substr(r),t=t.substr(0,r)),{pathname:t,search:"?"===n?"":n,hash:"#"===i?"":i}}(e),s.state=t):(void 0===(s=Bo({},e)).pathname&&(s.pathname=""),s.search?"?"!==s.search.charAt(0)&&(s.search="?"+s.search):s.search="",s.hash?"#"!==s.hash.charAt(0)&&(s.hash="#"+s.hash):s.hash="",void 0!==t&&void 0===s.state&&(s.state=t));try{s.pathname=decodeURI(s.pathname)}catch(e){throw e instanceof URIError?new URIError('Pathname "'+s.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):e}return n&&(s.key=n),i?s.pathname?"/"!==s.pathname.charAt(0)&&(s.pathname=Uo(s.pathname,i.pathname)):s.pathname=i.pathname:s.pathname||(s.pathname="/"),s}function nl(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,i,s){if(null!=e){var r="function"==typeof e?e(t,n):e;"string"==typeof r?"function"==typeof i?i(r,s):s(!0):s(!1!==r)}else s(!0)},appendListener:function(e){var n=!0;function i(){n&&e.apply(void 0,arguments)}return t.push(i),function(){n=!1,t=t.filter((function(e){return e!==i}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),i=0;it?n.splice(t,n.length-t,s):n.push(s),h({action:i,location:s,index:t,entries:n})}}))},replace:function(e,t){var i="REPLACE",s=tl(e,t,d(),g.location);c.confirmTransitionTo(s,i,n,(function(e){e&&(g.entries[g.index]=s,h({action:i,location:s}))}))},go:f,goBack:function(){f(-1)},goForward:function(){f(1)},canGo:function(e){var t=g.index+e;return t>=0&&t=0||(s[n]=e[n]);return s}n(1281);var Cl=function(e){var t=Sl();return t.displayName=e,t},Tl=Cl("Router-History"),El=function(e){var t=Sl();return t.displayName=e,t},zl=El("Router"),Al=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={location:t.history.location},n._isMounted=!1,n._pendingLocation=null,t.staticContext||(n.unlisten=t.history.listen((function(e){n._isMounted?n.setState({location:e}):n._pendingLocation=e}))),n}jo(t,e),t.computeRootMatch=function(e){return{path:"/",url:"/",params:{},isExact:"/"===e}};var n=t.prototype;return n.componentDidMount=function(){this._isMounted=!0,this._pendingLocation&&this.setState({location:this._pendingLocation})},n.componentWillUnmount=function(){this.unlisten&&this.unlisten()},n.render=function(){return qr.createElement(zl.Provider,{value:{history:this.props.history,location:this.state.location,match:t.computeRootMatch(this.state.location.pathname),staticContext:this.props.staticContext}},qr.createElement(Tl.Provider,{children:this.props.children||null,value:this.props.history}))},t}(qr.Component);qr.Component;qr.Component;var Hl={},Dl=0;function Pl(e,t){void 0===t&&(t={}),("string"==typeof t||Array.isArray(t))&&(t={path:t});var n=t,i=n.path,s=n.exact,r=void 0!==s&&s,a=n.strict,o=void 0!==a&&a,l=n.sensitive,c=void 0!==l&&l;return[].concat(i).reduce((function(t,n){if(!n&&""!==n)return null;if(t)return t;var i=function(e,t){var n=""+t.end+t.strict+t.sensitive,i=Hl[n]||(Hl[n]={});if(i[e])return i[e];var s=[],r={regexp:kl()(e,s,t),keys:s};return Dl<1e4&&(i[e]=r,Dl++),r}(n,{end:r,strict:o,sensitive:c}),s=i.regexp,a=i.keys,l=s.exec(e);if(!l)return null;var h=l[0],d=l.slice(1),u=e===h;return r&&!u?null:{path:n,url:"/"===n&&""===h?"/":h,isExact:u,params:a.reduce((function(e,t,n){return e[t.name]=d[n],e}),{})}}),null)}var Ol=function(e){function t(){return e.apply(this,arguments)||this}return jo(t,e),t.prototype.render=function(){var e=this;return qr.createElement(zl.Consumer,null,(function(t){t||Xo(!1);var n=e.props.location||t.location,i=Bo({},t,{location:n,match:e.props.computedMatch?e.props.computedMatch:e.props.path?Pl(n.pathname,e.props):t.match}),s=e.props,r=s.children,a=s.component,o=s.render;return Array.isArray(r)&&0===r.length&&(r=null),qr.createElement(zl.Provider,{value:i},i.match?r?"function"==typeof r?r(i):r:a?qr.createElement(a,i):o?o(i):null:"function"==typeof r?r(i):null)}))},t}(qr.Component);function Yl(e){return"/"===e.charAt(0)?e:"/"+e}function Rl(e,t){if(!e)return t;var n=Yl(e);return 0!==t.pathname.indexOf(n)?t:Bo({},t,{pathname:t.pathname.substr(n.length)})}function Vl(e){return"string"==typeof e?e:el(e)}function Nl(e){return function(){Xo(!1)}}function $l(){}qr.Component;qr.Component;qr.useContext;qr.Component;var Il=function(e){function t(){for(var t,n=arguments.length,i=new Array(n),s=0;s=0;o--)(s=e[o])&&(a=(r<3?s(a):r>3?s(t,n,a):s(t,n))||a);return r>3&&a&&Object.defineProperty(t,n,a),a}function nc(){for(var e=0,t=0,n=arguments.length;t0){for(var e=0,t=i.timeoutIds;e0){for(var e=0,t=i.requestIds;e0?qr.createElement(t,{},e):void 0:"number"==typeof e||"symbol"==typeof e.type||Array.isArray(e)?qr.createElement(t,{},e):function(e){return"object"==typeof e&&void 0!==e.type&&void 0!==e.props}(e)?e:void 0}function mc(e,t){return null!=e&&null!=e.type&&null!=e.type.displayName&&e.type.displayName===t.displayName}function fc(){return void 0!==qr.createRef?qr.createRef():{current:null}}var gc=n(9018),vc={add:["M10.99 6.99h-2v-2c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1v-2h2c.55 0 1-.45 1-1s-.45-1-1-1zm-3-7c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.68 6-6 6z"],"add-column-left":["M15 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-5 14H2V2h8v12zm4 0h-3V2h3v12zM4 9h1v1c0 .55.45 1 1 1s1-.45 1-1V9h1c.55 0 1-.45 1-1s-.45-1-1-1H7V6c0-.55-.45-1-1-1s-1 .45-1 1v1H4c-.55 0-1 .45-1 1s.45 1 1 1z"],"add-column-right":["M8 9h1v1c0 .55.45 1 1 1s1-.45 1-1V9h1c.55 0 1-.45 1-1s-.45-1-1-1h-1V6c0-.55-.45-1-1-1s-1 .45-1 1v1H8c-.55 0-1 .45-1 1s.45 1 1 1zm7-9H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM5 14H2V2h3v12zm9 0H6V2h8v12z"],"add-location":["M8 0a1 1 0 110 2 6 6 0 106 6 1 1 0 012 0 8 8 0 11-8-8zm0 5a3 3 0 110 6 3 3 0 010-6zm5-5a1 1 0 011 1v.999L15 2a1 1 0 010 2h-1v1a1 1 0 01-2 0V4h-1a1 1 0 010-2h1V1a1 1 0 011-1z"],"add-row-bottom":["M6 11h1v1c0 .55.45 1 1 1s1-.45 1-1v-1h1c.55 0 1-.45 1-1s-.45-1-1-1H9V8c0-.55-.45-1-1-1s-1 .45-1 1v1H6c-.55 0-1 .45-1 1s.45 1 1 1zm9-11H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H2V6h12v8zm0-9H2V2h12v3z"],"add-row-top":["M15 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H2v-3h12v3zm0-4H2V2h12v8zM6 7h1v1c0 .55.45 1 1 1s1-.45 1-1V7h1c.55 0 1-.45 1-1s-.45-1-1-1H9V4c0-.55-.45-1-1-1s-1 .45-1 1v1H6c-.55 0-1 .45-1 1s.45 1 1 1z"],"add-to-artifact":["M14 4.01h-1v-1c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1v-1h1c.55 0 1-.45 1-1 0-.56-.45-1-1-1zm-13 2h6c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm8 6H1c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1 0-.56-.45-1-1-1zm0-4H1c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1 0-.56-.45-1-1-1z"],"add-to-folder":["M.01 7V5H16v7c0 .55-.45 1-1 1H9.005v-2.99C8.974 8.332 7.644 7 5.996 7H.01zM15 2H7.416L5.706.29a.996.996 0 00-.71-.29H1C.45 0 0 .45 0 1v3h15.99V3c.01-.55-.44-1-.99-1zM5.997 9H2c-.55 0-1 .45-1 1s.45 1 1 1h1.589L.3 14.29a1.003 1.003 0 001.42 1.42l3.287-3.29v1.59c0 .55.45 1 1 1 .549 0 .999-.45.999-1v-4A1.02 1.02 0 005.996 9z"],airplane:["M16 1.5A1.498 1.498 0 0013.44.44L9.91 3.97 2 1 1 3l5.93 3.95L3.88 10H1l-1 1 3 2 2 3 1-1v-2.88l3.05-3.05L13 15l2-1-2.97-7.91 3.53-3.53c.27-.27.44-.65.44-1.06z"],"align-center":["M4 4c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1H4zM1 3h14c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm13 10H2c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1zm1-6H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm-5 5c.55 0 1-.45 1-1s-.45-1-1-1H6c-.55 0-1 .45-1 1s.45 1 1 1h4z"],"align-justify":["M15 12.98H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm-14-10h14c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1 0 .56.45 1 1 1zm14 4H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm0-3H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm0 6H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],"align-left":["M13 13H1c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1zM1 3h14c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm0 3h8c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm14 1H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM1 12h4c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1z"],"align-right":["M15 12.98H3c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1zm-14-10h14c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1 0 .56.45 1 1 1zm14 1H7c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1zm0 6h-4c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1zm0-3H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],"alignment-bottom":["M10 12h3c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1h-3c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1zm5 2H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM3 12h3c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1z"],"alignment-horizontal-center":["M15 7h-1V6c0-.55-.45-1-1-1h-3c-.55 0-1 .45-1 1v1H7V3c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v4H1c-.55 0-1 .45-1 1s.45 1 1 1h1v4c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V9h2v1c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V9h1c.55 0 1-.45 1-1s-.45-1-1-1z"],"alignment-left":["M9 9H5c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1zM1 0C.45 0 0 .45 0 1v14c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm13 2H5c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1z"],"alignment-right":["M11 9H7c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1zm4-9c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm-4 2H2c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1z"],"alignment-top":["M15 0H1C.45 0 0 .45 0 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM6 4H3c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm7 0h-3c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1z"],"alignment-vertical-center":["M13 2H9V1c0-.55-.45-1-1-1S7 .45 7 1v1H3c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h4v2H6c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1v-1h1c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1H9V7h4c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1z"],annotation:["M15.52 2.77c.3-.29.48-.7.48-1.15C16 .73 15.27 0 14.38 0c-.45 0-.85.18-1.15.48l-1.34 1.34 2.3 2.3 1.33-1.35zM7.4 10.9l6.21-6.21-2.3-2.3L5.1 8.6l2.3 2.3zM14 14H2V2h6.34l2-2H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V5.66l-2 2V14zM3 13l3.58-1.29-2.29-2.27L3 13z"],"app-header":["M15 0a1 1 0 011 1v14a1 1 0 01-1 1H1a1 1 0 01-1-1V1a1 1 0 011-1h14zM6 4a1 1 0 00-1.993-.117L4 4v8a1 1 0 001.993.117L6 12V9h4v3a1 1 0 001.993.117L12 12V4a1 1 0 00-1.993-.117L10 4v3H6V4z"],application:["M3.5 7h7c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-7c-.28 0-.5.22-.5.5s.22.5.5.5zM15 1H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zm-1 12H2V5h12v8zM3.5 9h4c.28 0 .5-.22.5-.5S7.78 8 7.5 8h-4c-.28 0-.5.22-.5.5s.22.5.5.5zm0 2h5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-5c-.28 0-.5.22-.5.5s.22.5.5.5z"],applications:["M3.5 11h2c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-2c-.28 0-.5.22-.5.5s.22.5.5.5zm0-2h5c.28 0 .5-.22.5-.5S8.78 8 8.5 8h-5c-.28 0-.5.22-.5.5s.22.5.5.5zM11 4H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm-1 10H2V7h8v7zm5-14H5c-.55 0-1 .45-1 1v2h2V2h8v7h-1v2h2c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM3.5 13h3c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-3c-.28 0-.5.22-.5.5s.22.5.5.5z"],archive:["M13.382 0a1 1 0 01.894.553L16 4v11a1 1 0 01-1 1H1a1 1 0 01-1-1V4L1.724.553A1 1 0 012.618 0h10.764zM8 6c-.55 0-1 .45-1 1v2.59l-.29-.29-.081-.076A.97.97 0 006 9a1.003 1.003 0 00-.71 1.71l2 2 .096.084c.168.13.38.206.614.206.28 0 .53-.11.71-.29l2-2 .084-.096A1.003 1.003 0 009.29 9.29l-.29.3V7l-.007-.116A1.004 1.004 0 008 6zm5-4H3L2 4h12l-1-2z"],array:["M15 0a1 1 0 01.993.883L16 1v14a1 1 0 01-.883.993L15 16h-3a1 1 0 01-.117-1.993L12 14h2V2h-2a1 1 0 01-.993-.883L11 1a1 1 0 01.883-.993L12 0h3zM4 0a1 1 0 01.117 1.993L4 2H2v12h2a1 1 0 01.993.883L5 15a1 1 0 01-.883.993L4 16H1a1 1 0 01-.993-.883L0 15V1A1 1 0 01.883.007L1 0h3zm4 7a1 1 0 110 2 1 1 0 010-2zM5 7a1 1 0 110 2 1 1 0 010-2zm6 0a1 1 0 110 2 1 1 0 010-2z"],"array-boolean":["M15 0a1 1 0 01.993.883L16 1v14a1 1 0 01-.883.993L15 16h-3a1 1 0 01-.117-1.993L12 14h2V2h-2a1 1 0 01-.993-.883L11 1a1 1 0 01.883-.993L12 0h3zM4 0a1 1 0 01.117 1.993L4 2H2v12h2a1 1 0 01.993.883L5 15a1 1 0 01-.883.993L4 16H1a1 1 0 01-.993-.883L0 15V1A1 1 0 01.883.007L1 0h3zm7 6a1 1 0 01.993.883L12 7v2a1 1 0 01-.883.993L11 10H5a1 1 0 01-.993-.883L4 9V7a1 1 0 01.883-.993L5 6h6zm0 1H8v2h3V7z"],"array-date":["M15 0a1 1 0 01.993.883L16 1v14a1 1 0 01-.883.993L15 16h-3a1 1 0 01-.117-1.993L12 14h2V2h-2a1 1 0 01-.993-.883L11 1a1 1 0 01.883-.993L12 0h3zM4 0a1 1 0 01.117 1.993L4 2H2v12h2a1 1 0 01.993.883L5 15a1 1 0 01-.883.993L4 16H1a1 1 0 01-.993-.883L0 15V1A1 1 0 01.883.007L1 0h3zm6.5 4a.5.5 0 01.5.5V5a1 1 0 01.993.883L12 6v5a1 1 0 01-.883.993L11 12H5a1 1 0 01-.993-.883L4 11V6a1 1 0 01.883-.993L5 5v-.5a.5.5 0 011 0V5h4v-.5a.5.5 0 01.5-.5zm.5 3H5v4h6V7z"],"array-numeric":["M15 0a1 1 0 01.993.883L16 1v14a1 1 0 01-.883.993L15 16h-3a1 1 0 01-.117-1.993L12 14h2V2h-2a1 1 0 01-.993-.883L11 1a1 1 0 01.883-.993L12 0h3zM4 0a1 1 0 01.117 1.993L4 2H2v12h2a1 1 0 01.993.883L5 15a1 1 0 01-.883.993L4 16H1a1 1 0 01-.993-.883L0 15V1A1 1 0 01.883.007L1 0h3zm6.904 5c.256 0 .483.037.68.112a1.343 1.343 0 01.812.788c.072.184.108.385.108.604 0 .23-.05.441-.152.636a1.314 1.314 0 01-.456.492v.016l.08.04c.055.031.111.072.168.124.085.077.163.172.232.284a1.673 1.673 0 01.24.872c0 .25-.043.477-.128.68a1.518 1.518 0 01-.896.852 1.937 1.937 0 01-.68.116c-.427 0-.792-.101-1.096-.304a1.362 1.362 0 01-.584-.864c-.01-.053.01-.088.064-.104l.696-.16.033-.002c.03.002.051.022.063.058.059.16.155.296.288.408.133.112.312.168.536.168.256 0 .453-.076.592-.228a.827.827 0 00.208-.58c0-.277-.08-.495-.24-.652-.16-.157-.376-.236-.648-.236h-.232l-.035-.005c-.03-.01-.045-.035-.045-.075v-.632l.005-.035c.01-.03.035-.045.075-.045h.216l.138-.009a.734.734 0 00.438-.207c.144-.144.216-.336.216-.576a.745.745 0 00-.192-.532c-.128-.136-.307-.204-.536-.204-.203 0-.363.05-.48.152a.815.815 0 00-.248.408c-.016.048-.048.067-.096.056l-.68-.16-.034-.012c-.028-.016-.038-.044-.03-.084a1.347 1.347 0 01.516-.828c.136-.104.296-.185.48-.244A1.98 1.98 0 0110.904 5zm-6.152.088l.035.005c.03.01.045.035.045.075v5.28l-.005.035c-.01.03-.035.045-.075.045h-.736l-.035-.005c-.03-.01-.045-.035-.045-.075V6.16H3.92l-.832.584-.032.016C3.02 6.773 3 6.751 3 6.696V5.88l.006-.04a.157.157 0 01.05-.072l.872-.632.04-.027a.236.236 0 01.104-.021h.68zM7.344 5c.256 0 .483.04.68.12.197.08.364.188.5.324s.24.296.312.48c.072.184.108.383.108.596 0 .245-.045.47-.136.676-.09.205-.216.404-.376.596l-1.584 1.92v.016h2.016l.035.005c.03.01.045.035.045.075v.64l-.005.035c-.01.03-.035.045-.075.045H5.808l-.035-.005c-.03-.01-.045-.035-.045-.075v-.6l.004-.04a.132.132 0 01.036-.064l1.92-2.392.1-.133a1.95 1.95 0 00.156-.267.985.985 0 00.096-.432.736.736 0 00-.188-.512c-.125-.139-.303-.208-.532-.208-.219 0-.39.061-.512.184a.826.826 0 00-.224.496c-.01.053-.04.075-.088.064L5.792 6.4l-.034-.012c-.028-.016-.038-.044-.03-.084a1.425 1.425 0 01.94-1.192A1.88 1.88 0 017.344 5z"],"array-string":["M15 0a1 1 0 01.993.883L16 1v14a1 1 0 01-.883.993L15 16h-3a1 1 0 01-.117-1.993L12 14h2V2h-2a1 1 0 01-.993-.883L11 1a1 1 0 01.883-.993L12 0h3zM4 0a1 1 0 01.117 1.993L4 2H2v12h2a1 1 0 01.993.883L5 15a1 1 0 01-.883.993L4 16H1a1 1 0 01-.993-.883L0 15V1A1 1 0 01.883.007L1 0h3zm1.61 5c.514 0 .962.212 1.343.637.382.425.573.997.573 1.716 0 .838-.258 1.588-.773 2.252-.514.663-1.327 1.2-2.437 1.609v-.465l.233-.095a3.09 3.09 0 001.274-1.017c.366-.505.55-1.03.55-1.577a.478.478 0 00-.057-.26c-.018-.037-.043-.056-.074-.056s-.08.025-.149.075c-.198.142-.446.214-.744.214-.36 0-.675-.145-.944-.433A1.453 1.453 0 014 6.572c0-.422.155-.79.465-1.102.31-.313.692-.47 1.144-.47zm4.474 0c.514 0 .963.212 1.344.637.381.425.572.997.572 1.716 0 .838-.257 1.588-.772 2.252-.515.663-1.327 1.2-2.437 1.609v-.465l.233-.095a3.09 3.09 0 001.274-1.017c.366-.505.549-1.03.549-1.577a.478.478 0 00-.056-.26c-.019-.037-.044-.056-.075-.056-.03 0-.08.025-.149.075-.198.142-.446.214-.744.214-.36 0-.674-.145-.944-.433a1.453 1.453 0 01-.405-1.028c0-.422.155-.79.466-1.102.31-.313.691-.47 1.144-.47z"],"array-timestamp":["M15 0a1 1 0 01.993.883L16 1v14a1 1 0 01-.883.993L15 16h-3a1 1 0 01-.117-1.993L12 14h2V2h-2a1 1 0 01-.993-.883L11 1a1 1 0 01.883-.993L12 0h3zM4 0a1 1 0 01.117 1.993L4 2H2v12h2a1 1 0 01.993.883L5 15a1 1 0 01-.883.993L4 16H1a1 1 0 01-.993-.883L0 15V1A1 1 0 01.883.007L1 0h3zm4 3a5 5 0 110 10A5 5 0 018 3zm0 1a4 4 0 100 8 4 4 0 000-8zm2.354 1.646a.5.5 0 01.057.638l-.057.07-2 2a.5.5 0 01-.638.057l-.07-.057-1-1a.5.5 0 01.638-.765l.07.057.646.647 1.646-1.647a.5.5 0 01.708 0z"],"arrow-bottom-left":["M14 3a1.003 1.003 0 00-1.71-.71L4 10.59V6c0-.55-.45-1-1-1s-1 .45-1 1v7c0 .55.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1H5.41l8.29-8.29c.19-.18.3-.43.3-.71z"],"arrow-bottom-right":["M13 5c-.55 0-1 .45-1 1v4.59l-8.29-8.3a1.003 1.003 0 00-1.42 1.42l8.3 8.29H6c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z"],"arrow-down":["M13 8c-.3 0-.5.1-.7.3L9 11.6V2c0-.5-.4-1-1-1s-1 .5-1 1v9.6L3.7 8.3C3.5 8.1 3.3 8 3 8c-.5 0-1 .5-1 1 0 .3.1.5.3.7l5 5c.2.2.4.3.7.3s.5-.1.7-.3l5-5c.2-.2.3-.4.3-.7 0-.6-.4-1-1-1z"],"arrow-left":["M13.99 6.99H4.41L7.7 3.7a1.003 1.003 0 00-1.42-1.42l-5 5a1.014 1.014 0 000 1.42l5 5a1.003 1.003 0 001.42-1.42L4.41 8.99H14c.55 0 1-.45 1-1s-.46-1-1.01-1z"],"arrow-right":["M14.7 7.29l-5-5a.965.965 0 00-.71-.3 1.003 1.003 0 00-.71 1.71l3.29 3.29H1.99c-.55 0-1 .45-1 1s.45 1 1 1h9.59l-3.29 3.29a1.003 1.003 0 001.42 1.42l5-5c.18-.18.29-.43.29-.71s-.12-.52-.3-.7z"],"arrow-top-left":["M13.71 12.29L5.41 4H10c.55 0 1-.45 1-1s-.45-1-1-1H3c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1s1-.45 1-1V5.41l8.29 8.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],"arrow-top-right":["M13 2H6c-.55 0-1 .45-1 1s.45 1 1 1h4.59L2.3 12.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L12 5.41V10c0 .55.45 1 1 1s1-.45 1-1V3c0-.55-.45-1-1-1z"],"arrow-up":["M13.7 6.3l-5-5C8.5 1.1 8.3 1 8 1s-.5.1-.7.3l-5 5c-.2.2-.3.4-.3.7 0 .6.5 1 1 1 .3 0 .5-.1.7-.3L7 4.4V14c0 .6.4 1 1 1s1-.4 1-1V4.4l3.3 3.3c.2.2.4.3.7.3.6 0 1-.4 1-1 0-.3-.1-.5-.3-.7z"],"arrows-horizontal":["M15.7 7.3l-4-4c-.2-.2-.4-.3-.7-.3-.6 0-1 .5-1 1 0 .3.1.5.3.7L12.6 7H3.4l2.3-2.3c.2-.2.3-.4.3-.7 0-.5-.4-1-1-1-.3 0-.5.1-.7.3l-4 4c-.2.2-.3.4-.3.7s.1.5.3.7l4 4c.2.2.4.3.7.3.6 0 1-.4 1-1 0-.3-.1-.5-.3-.7L3.4 9h9.2l-2.3 2.3c-.2.2-.3.4-.3.7 0 .6.4 1 1 1 .3 0 .5-.1.7-.3l4-4c.2-.2.3-.4.3-.7s-.1-.5-.3-.7z"],"arrows-vertical":["M12 10c-.3 0-.5.1-.7.3L9 12.6V3.4l2.3 2.3c.2.2.4.3.7.3.6 0 1-.4 1-1 0-.3-.1-.5-.3-.7l-4-4C8.5.1 8.3 0 8 0s-.5.1-.7.3l-4 4c-.2.2-.3.4-.3.7 0 .6.5 1 1 1 .3 0 .5-.1.7-.3L7 3.4v9.2l-2.3-2.3c-.2-.2-.4-.3-.7-.3-.5 0-1 .4-1 1 0 .3.1.5.3.7l4 4c.2.2.4.3.7.3s.5-.1.7-.3l4-4c.2-.2.3-.4.3-.7 0-.6-.4-1-1-1z"],asterisk:["M14.54 11.18l.01-.02L9.8 8l4.75-3.17-.01-.02c.27-.17.46-.46.46-.81 0-.55-.45-1-1-1-.21 0-.39.08-.54.18l-.01-.02L9 6.13V1c0-.55-.45-1-1-1S7 .45 7 1v5.13L2.55 3.17l-.01.01A.969.969 0 002 3c-.55 0-1 .45-1 1 0 .35.19.64.46.82l-.01.01L6.2 8l-4.75 3.17.01.02c-.27.17-.46.46-.46.81 0 .55.45 1 1 1 .21 0 .39-.08.54-.18l.01.02L7 9.87V15c0 .55.45 1 1 1s1-.45 1-1V9.87l4.45 2.96.01-.02c.15.11.33.19.54.19.55 0 1-.45 1-1 0-.35-.19-.64-.46-.82z"],"automatic-updates":["M8 14c-3.31 0-6-2.69-6-6 0-1.77.78-3.36 2-4.46V5c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1H1C.45 0 0 .45 0 1s.45 1 1 1h1.74A7.95 7.95 0 000 8c0 4.42 3.58 8 8 8 .55 0 1-.45 1-1s-.45-1-1-1zM8 2a5.9 5.9 0 012.95.81l1.47-1.47A7.893 7.893 0 008 0c-.55 0-1 .45-1 1s.45 1 1 1zm2.71 6.71l5-5a1.003 1.003 0 00-1.42-1.42L10 6.59l-1.29-1.3a1.003 1.003 0 00-1.42 1.42l2 2c.18.18.43.29.71.29s.53-.11.71-.29zM16 8c0-.55-.06-1.08-.16-1.6l-1.87 1.87A5.966 5.966 0 0112 12.45V11c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1h-1.74A7.95 7.95 0 0016 8z"],backlink:["M14 10a1 1 0 110 2h-.585l2.292 2.293a1 1 0 01-1.32 1.497l-.094-.083L12 13.415V14a1 1 0 11-2 0l.003-3.075.012-.1.012-.059.033-.108.034-.081.052-.098.067-.096.08-.09a1.01 1.01 0 01.112-.097l.11-.071.143-.065.076-.024.091-.02.116-.014L14 10zM6.036 6.136l-3.45 3.45-.117.127a2 2 0 002.818 2.818l.127-.117 3.45-3.449a4 4 0 01-.885 3.704l-.15.16-1 1A4 4 0 011.02 8.33l.15-.16 1-1a3.998 3.998 0 013.865-1.035zm4.671-1.843a1 1 0 01.083 1.32l-.083.094-5 5a1 1 0 01-1.497-1.32l.083-.094 5-5a1 1 0 011.414 0zm3.121-3.121a4 4 0 01.151 5.497l-.15.16-1 1a3.998 3.998 0 01-3.864 1.036l3.45-3.45.116-.128a2 2 0 00-2.818-2.818l-.127.117-3.45 3.45A4 4 0 017.02 2.33l.15-.16 1-1a4 4 0 015.657 0z"],badge:["M13.36 4.59c-.15-1.13.5-2.01 1.1-2.87L13.43.53c-1.72.88-4.12.65-5.63-.53-1.51 1.18-3.91 1.41-5.63.52l-1.03 1.2c.61.86 1.25 1.74 1.1 2.87-.3 2.29-2.45 4.17-1.32 6.68.45 1.14 1.44 1.9 2.72 2.2 1.56.36 3.52.72 4.16 2.53.64-1.81 2.6-2.16 4.16-2.54 1.28-.3 2.27-1.06 2.72-2.2 1.12-2.5-1.03-4.38-1.32-6.67z"],"ban-circle":["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm3 9H5c-.55 0-1-.45-1-1s.45-1 1-1h6c.55 0 1 .45 1 1s-.45 1-1 1z"],"bank-account":["M15.36 6.46l-.62-.14c-.31-1.12-.98-2.15-1.87-2.99l.4-1.77a.438.438 0 00-.49-.56c-.85.09-1.6.42-2.14.98-.84-.32-1.87-.51-2.85-.51-2.49 0-4.63 1.17-5.92 2.89-.18-.04-.36-.09-.53-.09-.76 0-1.34.61-1.34 1.4 0 .56.31 1.03.76 1.26-.05.33-.09.7-.09 1.07 0 1.68.71 3.17 1.83 4.34l-.27 1.59c-.09.56.35 1.07.89 1.07h.58c.45 0 .8-.33.89-.79l.04-.37c.94.42 2 .7 3.16.7 1.11 0 2.23-.23 3.16-.7l.05.37c.09.47.45.79.89.79h.58c.53 0 .98-.51.89-1.07l-.27-1.54c.62-.61 1.07-1.35 1.38-2.15l.8-.19c.4-.09.71-.47.71-.93V7.4c.09-.47-.22-.84-.62-.94zM12 8c-.6 0-1-.7-1-1.5S11.4 5 12 5s1 .7 1 1.5S12.6 8 12 8zM6.21 4.92c-.41.2-.91.04-1.12-.36-.21-.4-.04-.88.37-1.07 1.35-.65 2.73-.65 4.08 0 .41.2.58.68.37 1.07-.21.4-.71.56-1.12.36-.87-.43-1.71-.43-2.58 0z"],barcode:["M0 14h2V2H0v12zm6 0h1V2H6v12zm2 0h1V2H8v12zm-5 0h2V2H3v12zM15 2v12h1V2h-1zm-5 12h1V2h-1v12zm2 0h2V2h-2v12z"],blank:[],"blocked-person":["M9.39 12.69c-1.2-.53-1.04-.85-1.08-1.29-.01-.07-.01-.13-.02-.2.41-.37.75-.87.97-1.44 0 0 .01-.03.01-.04.05-.13.09-.26.13-.39.27-.06.43-.36.5-.63.01-.03.03-.08.05-.12C8.18 7.8 6.94 6.04 6.94 4c0-.32.04-.62.09-.92-.17-.03-.35-.08-.51-.08-.65 0-1.37.2-1.88.59-.5.38-.87.92-1.05 1.51-.04.14-.07.27-.09.41-.09.48-.14 1.23-.14 1.74v.06c-.19.08-.36.27-.4.68-.03.31.1.59.16.7.06.28.23.59.51.64.04.14.08.27.13.39 0 .01.01.02.01.02v.01c.22.59.57 1.1.99 1.46 0 .06-.01.12-.01.17-.04.44.08.76-1.12 1.29-1.2.53-3.01 1.1-3.38 1.95C-.12 15.5.03 16 .03 16h12.96s.15-.5-.22-1.36c-.37-.85-2.18-1.42-3.38-1.95zM11.97 0C9.75 0 7.94 1.79 7.94 4s1.8 4 4.03 4S16 6.21 16 4s-1.8-4-4.03-4zM9.96 4c0-1.1.9-2 2.01-2 .37 0 .72.11 1.02.28l-2.75 2.73c-.17-.3-.28-.64-.28-1.01zm2.01 2c-.37 0-.72-.11-1.02-.28l2.75-2.73c.18.3.28.64.28 1.01.01 1.1-.9 2-2.01 2z"],bold:["M11.7 7c.2-.4.3-1 .3-1.5v-.4V5c0-.1 0-.2-.1-.3v-.1C11.4 3.1 10.1 2 8.5 2H4c-.5 0-1 .4-1 1v10c0 .5.4 1 1 1h5c2.2 0 4-1.8 4-4 0-1.2-.5-2.3-1.3-3zM6 5h2c.6 0 1 .4 1 1s-.4 1-1 1H6V5zm3 6H6V9h3c.6 0 1 .4 1 1s-.4 1-1 1z"],book:["M2 1v14c0 .55.45 1 1 1h1V0H3c-.55 0-1 .45-1 1zm11-1h-1v7l-2-2-2 2V0H5v16h8c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],bookmark:["M11.2.01h-.15C11.03.01 11.02 0 11 0H5c-.02 0-.03.01-.05.01H4.8c-.44 0-.8.37-.8.82v14.75c0 .45.25.56.57.24l2.87-2.94c.31-.32.82-.32 1.13 0l2.87 2.94c.31.32.57.21.57-.24V.83C12 .38 11.64.01 11.2.01z"],box:["M6 10h4c.55 0 1-.45 1-1s-.45-1-1-1H6c-.55 0-1 .45-1 1s.45 1 1 1zm9.93-4.37v-.02L13.94.63C13.78.26 13.42 0 13 0H3c-.42 0-.78.26-.93.63L.08 5.61l-.01.02C.03 5.74 0 5.87 0 6v9c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V6c0-.13-.03-.26-.07-.37zM9 2h3.32l1.2 3H9V2zM3.68 2H7v3H2.48l1.2-3zM14 14H2V7h12v7z"],briefcase:["M15 3.98h-3v-2c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v2H1c-.55 0-1 .45-1 1v4h3v-1h2v1h6v-1h2v1h3v-4c0-.55-.45-1-1-1zm-5 0H6v-1h4v1zm3 7h-2v-1H5v1H3v-1H0v4c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-4h-3v1z"],"bring-data":["M14 14a1 1 0 010 2H2a1 1 0 010-2h12zM7.995 3.005c.55 0 1 .45 1 .999v5.584l1.29-1.288a1.002 1.002 0 011.42 1.419l-3 2.996a1.015 1.015 0 01-1.42 0l-3-2.997A1.002 1.002 0 015.705 8.3l1.29 1.29V4.013c0-.55.45-1.009 1-1.009zM14 0a1 1 0 110 2 1 1 0 010-2zm-3 0a1 1 0 110 2 1 1 0 010-2zM8 0a1 1 0 110 2 1 1 0 010-2zM5 0a1 1 0 110 2 1 1 0 010-2zM2 0a1 1 0 110 2 1 1 0 010-2z"],build:["M15.39 12.41L7.7 6l1.07-1.1c.34-.34-.12-.63.12-1.26.88-2.17 3.41-2.35 3.41-2.35s.36-.37.71-.72C9.74-.81 7.53.53 6.54 1.4L3.12 4.9l-.71.72c-.39.4-.39 1.05 0 1.45l-.7.72c-.39-.4-1.02-.4-1.41 0s-.39 1.05 0 1.45l1.41 1.45c.39.4 1.02.4 1.41 0s.39-1.05 0-1.45l.71-.72c.39.4 1.02.4 1.41 0l.8-.82 6.39 7.67c.82.82 2.14.82 2.96 0 .81-.82.81-2.15 0-2.96z"],calculator:["M13 0H3c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM6 14H4v-2h2v2zm0-3H4V9h2v2zm0-3H4V6h2v2zm3 6H7v-2h2v2zm0-3H7V9h2v2zm0-3H7V6h2v2zm3 6h-2V9h2v5zm0-6h-2V6h2v2zm0-3H4V2h8v3z"],calendar:["M11 3c.6 0 1-.5 1-1V1c0-.6-.4-1-1-1s-1 .4-1 1v1c0 .5.4 1 1 1zm3-2h-1v1c0 1.1-.9 2-2 2s-2-.9-2-2V1H6v1c0 1.1-.9 2-2 2s-2-.9-2-2V1H1c-.6 0-1 .5-1 1v12c0 .6.4 1 1 1h13c.6 0 1-.4 1-1V2c0-.6-.5-1-1-1zM5 13H2v-3h3v3zm0-4H2V6h3v3zm4 4H6v-3h3v3zm0-4H6V6h3v3zm4 4h-3v-3h3v3zm0-4h-3V6h3v3zM4 3c.6 0 1-.5 1-1V1c0-.6-.4-1-1-1S3 .4 3 1v1c0 .5.4 1 1 1z"],camera:["M15 3h-2.59L10.7 1.29A.956.956 0 0010 1H6c-.28 0-.53.11-.71.29L3.59 3H1c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h2.56c1.1 1.22 2.67 2 4.44 2s3.34-.78 4.44-2H15c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zM3 6H1V5h2v1zm5 6c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],"caret-down":["M12 6.5c0-.28-.22-.5-.5-.5h-7a.495.495 0 00-.37.83l3.5 4c.09.1.22.17.37.17s.28-.07.37-.17l3.5-4c.08-.09.13-.2.13-.33z"],"caret-left":["M9.5 4c-.13 0-.24.05-.33.13l-4 3.5c-.1.09-.17.22-.17.37s.07.28.17.37l4 3.5a.495.495 0 00.83-.37v-7c0-.28-.22-.5-.5-.5z"],"caret-right":["M11 8c0-.15-.07-.28-.17-.37l-4-3.5A.495.495 0 006 4.5v7a.495.495 0 00.83.37l4-3.5c.1-.09.17-.22.17-.37z"],"caret-up":["M11.87 9.17s.01 0 0 0l-3.5-4C8.28 5.07 8.15 5 8 5s-.28.07-.37.17l-3.5 4a.495.495 0 00.37.83h7a.495.495 0 00.37-.83z"],"cell-tower":["M8.97 6.76c-.01-.05-.04-.08-.06-.13-.02-.05-.03-.1-.05-.15.08-.14.14-.3.14-.48 0-.55-.45-1-1-1s-1 .45-1 1c0 .18.06.34.14.48-.03.05-.03.1-.05.15-.02.05-.05.08-.06.13l-2 8c-.13.54.19 1.08.73 1.21a.995.995 0 001.21-.73L7.53 13h.94l.56 2.24a1 1 0 001.94-.48l-2-8zM3.72 1.7C4.1 1.3 4.09.67 3.7.28S2.67-.09 2.28.3c-3.05 3.12-3.05 8.28 0 11.4a.996.996 0 101.43-1.39c-2.28-2.35-2.28-6.27.01-8.61zM11.6 3.2c-.44-.33-1.07-.24-1.4.2-.33.44-.24 1.07.2 1.4.43.32.53 1.96-.04 2.43-.42.35-.48.98-.13 1.41.35.42.98.48 1.41.13 1.59-1.33 1.39-4.5-.04-5.57z","M13.72.3c-.39-.4-1.02-.4-1.41-.02s-.41 1.02-.03 1.42c2.29 2.34 2.29 6.26 0 8.6-.39.39-.38 1.03.02 1.41s1.03.38 1.41-.02c3.05-3.11 3.05-8.27.01-11.39zM5.4 7.23c-.57-.47-.47-2.11-.04-2.43.44-.33.53-.96.2-1.4s-.96-.53-1.4-.2c-1.44 1.07-1.63 4.24-.04 5.57.42.35 1.05.3 1.41-.13.35-.42.29-1.06-.13-1.41z"],changes:["M8.29 7.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3a1.003 1.003 0 00-1.42-1.42L13 7.59V1c0-.55-.45-1-1-1s-1 .45-1 1v6.59l-1.29-1.3a1.003 1.003 0 00-1.42 1.42zM14.5 13h-13c-.83 0-1.5.67-1.5 1.5S.67 16 1.5 16h13c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5zM1 5c.28 0 .53-.11.71-.29L3 3.41V10c0 .55.45 1 1 1s1-.45 1-1V3.41L6.29 4.7c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3C4.53.11 4.28 0 4 0s-.53.11-.71.29l-3 3A1.003 1.003 0 001 5z"],chart:["M0 15c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V9.4L0 11v4zm6-5.5V15c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-5l-1 1-3-1.5zM13 7l-1 1v7c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V7.88c-.26.07-.58.12-1 .12-1.96 0-2-1-2-1zm2-6h-3c-.55 0-1 .45-1 1s.45 1 1 1h.59L8.8 6.78 5.45 5.11v.01C5.31 5.05 5.16 5 5 5s-.31.05-.44.11V5.1l-4 2v.01C.23 7.28 0 7.61 0 8c0 .55.45 1 1 1 .16 0 .31-.05.44-.11v.01L5 7.12 8.55 8.9v-.01c.14.06.29.11.45.11.28 0 .53-.11.71-.29L14 4.41V5c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1z"],chat:["M6 10c-1.1 0-2-.9-2-2V3H1c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1v2a1.003 1.003 0 001.71.71L5.41 13H10c.55 0 1-.45 1-1v-1.17l-.83-.83H6zm9-10H6c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h4.59l2.71 2.71c.17.18.42.29.7.29.55 0 1-.45 1-1V9c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],"chevron-backward":["M7.41 8l3.29-3.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L6 6.59V4c0-.55-.45-1-1-1s-1 .45-1 1v8c0 .55.45 1 1 1s1-.45 1-1V9.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L7.41 8z"],"chevron-down":["M12 5c-.28 0-.53.11-.71.29L8 8.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42l4 4c.18.18.43.29.71.29s.53-.11.71-.29l4-4A1.003 1.003 0 0012 5z"],"chevron-forward":["M10 3c-.55 0-1 .45-1 1v2.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42L7.59 8 4.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L9 9.41V12c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1z"],"chevron-left":["M7.41 8l3.29-3.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4C5.11 7.47 5 7.72 5 8c0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L7.41 8z"],"chevron-right":["M10.71 7.29l-4-4a1.003 1.003 0 00-1.42 1.42L8.59 8 5.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],"chevron-up":["M12.71 9.29l-4-4C8.53 5.11 8.28 5 8 5s-.53.11-.71.29l-4 4a1.003 1.003 0 001.42 1.42L8 7.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],circle:["M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8zm0 14c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6z"],"circle-arrow-down":["M11 7c-.28 0-.53.11-.71.29L9 8.59V5c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-1.29-1.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 0011 7zM8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z"],"circle-arrow-left":["M11 7H7.41L8.7 5.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3C4.11 7.47 4 7.72 4 8c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L7.41 9H11c.55 0 1-.45 1-1s-.45-1-1-1zM8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z"],"circle-arrow-right":["M8.71 4.29a1.003 1.003 0 00-1.42 1.42L8.59 7H5c-.55 0-1 .45-1 1s.45 1 1 1h3.59L7.3 10.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-3-3zM8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z"],"circle-arrow-up":["M8.71 4.29C8.53 4.11 8.28 4 8 4s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42L7 7.41V11c0 .55.45 1 1 1s1-.45 1-1V7.41l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3zM8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z"],citation:["M15.02 5c0-1.66-1.34-3-3-3s-3 1.34-3 3a2.996 2.996 0 003.6 2.94C12.1 9.76 11.14 11 10.02 11c-.55 0-1 .45-1 1s.45 1 1 1c2.76 0 5-3.13 5-7 0-.2-.02-.39-.04-.58.01-.14.04-.28.04-.42zm-11-3c-1.66 0-3 1.34-3 3a2.996 2.996 0 003.6 2.94C4.1 9.76 3.14 11 2.02 11c-.55 0-1 .45-1 1s.45 1 1 1c2.76 0 5-3.13 5-7 0-.2-.02-.39-.04-.58.01-.14.04-.28.04-.42 0-1.66-1.35-3-3-3z"],clean:["M12 8l-1.2 2.796-2.8 1.2 2.8 1.197L12 16l1.2-2.807L16 12l-2.8-1.204zM5 0L3.5 3.5 0 4.995 3.5 6.5 5 10l1.5-3.5L10 5 6.5 3.5z"],clipboard:["M11 2c0-.55-.45-1-1-1h.22C9.88.4 9.24 0 8.5 0S7.12.4 6.78 1H7c-.55 0-1 .45-1 1v1h5V2zm2 0h-1v2H5V2H4c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1z"],cloud:["M12 6c-.03 0-.07 0-.1.01A5 5 0 002 7c0 .11.01.22.02.33A3.51 3.51 0 000 10.5C0 12.43 1.57 14 3.5 14H12c2.21 0 4-1.79 4-4s-1.79-4-4-4z"],"cloud-download":["M11 11c-.28 0-.53.11-.71.29L9 12.59V8c0-.55-.45-1-1-1s-1 .45-1 1v4.59L5.71 11.3A.965.965 0 005 11a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 0011 11zm1-7c-.03 0-.07 0-.1.01A5 5 0 002 5c0 .11.01.22.02.33A3.51 3.51 0 000 8.5c0 1.41.84 2.61 2.03 3.17C2.2 10.17 3.46 9 5 9c.06 0 .13.02.19.02C5.07 8.7 5 8.36 5 8c0-1.66 1.34-3 3-3s3 1.34 3 3c0 .36-.07.7-.19 1.02.06 0 .13-.02.19-.02 1.48 0 2.7 1.07 2.95 2.47A3.964 3.964 0 0016 8c0-2.21-1.79-4-4-4z"],"cloud-upload":["M8.71 7.29C8.53 7.11 8.28 7 8 7s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42L7 10.41V15c0 .55.45 1 1 1s1-.45 1-1v-4.59l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3zM12 4c-.03 0-.07 0-.1.01A5 5 0 002 5c0 .11.01.22.02.33a3.495 3.495 0 00.07 6.37c-.05-.23-.09-.46-.09-.7 0-.83.34-1.58.88-2.12l3-3a2.993 2.993 0 014.24 0l3 3c.54.54.88 1.29.88 2.12 0 .16-.02.32-.05.47C15.17 10.78 16 9.5 16 8c0-2.21-1.79-4-4-4z"],code:["M15.71 7.29l-3-3a1.003 1.003 0 00-1.42 1.42L13.59 8l-2.29 2.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zM5 5a1.003 1.003 0 00-1.71-.71l-3 3C.11 7.47 0 7.72 0 8c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L2.41 8 4.7 5.71c.19-.18.3-.43.3-.71zm4-3c-.48 0-.87.35-.96.81l-2 10c-.01.06-.04.12-.04.19 0 .55.45 1 1 1 .48 0 .87-.35.96-.81l2-10c.01-.06.04-.12.04-.19 0-.55-.45-1-1-1z"],"code-block":["M15 3h-2V2c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v1H7V2c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zm-8.29 8.29a1.003 1.003 0 01-1.42 1.42l-3-3C2.11 9.53 2 9.28 2 9s.11-.53.29-.71l3-3a1.003 1.003 0 011.42 1.42L4.41 9l2.3 2.29zm7-1.58l-3 3a1.003 1.003 0 01-1.42-1.42L11.59 9l-2.3-2.29a1.003 1.003 0 011.42-1.42l3 3c.18.18.29.43.29.71s-.11.53-.29.71z"],cog:["M15.19 6.39h-1.85c-.11-.37-.27-.71-.45-1.04l1.36-1.36c.31-.31.31-.82 0-1.13l-1.13-1.13a.803.803 0 00-1.13 0l-1.36 1.36c-.33-.17-.67-.33-1.04-.44V.79c0-.44-.36-.8-.8-.8h-1.6c-.44 0-.8.36-.8.8v1.86c-.39.12-.75.28-1.1.47l-1.3-1.3c-.3-.3-.79-.3-1.09 0L1.82 2.91c-.3.3-.3.79 0 1.09l1.3 1.3c-.2.34-.36.7-.48 1.09H.79c-.44 0-.8.36-.8.8v1.6c0 .44.36.8.8.8h1.85c.11.37.27.71.45 1.04l-1.36 1.36c-.31.31-.31.82 0 1.13l1.13 1.13c.31.31.82.31 1.13 0l1.36-1.36c.33.18.67.33 1.04.44v1.86c0 .44.36.8.8.8h1.6c.44 0 .8-.36.8-.8v-1.86c.39-.12.75-.28 1.1-.47l1.3 1.3c.3.3.79.3 1.09 0l1.09-1.09c.3-.3.3-.79 0-1.09l-1.3-1.3c.19-.35.36-.71.48-1.1h1.85c.44 0 .8-.36.8-.8v-1.6a.816.816 0 00-.81-.79zm-7.2 4.6c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z"],"collapse-all":["M7.29 6.71c.18.18.43.29.71.29s.53-.11.71-.29l4-4a1.003 1.003 0 00-1.42-1.42L8 4.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42l4 4zm1.42 2.58C8.53 9.11 8.28 9 8 9s-.53.11-.71.29l-4 4a1.003 1.003 0 001.42 1.42L8 11.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-4-4z"],"column-layout":["M15 1H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zM4 13H2V3h2v10zm3 0H5V3h2v10zm7 0H8V3h6v10z"],comment:["M14 1H1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h2v3a1.003 1.003 0 001.71.71L8.41 12H14c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zM3.5 8C2.67 8 2 7.33 2 6.5S2.67 5 3.5 5 5 5.67 5 6.5 4.33 8 3.5 8zm4 0C6.67 8 6 7.33 6 6.5S6.67 5 7.5 5 9 5.67 9 6.5 8.33 8 7.5 8zm4 0c-.83 0-1.5-.67-1.5-1.5S10.67 5 11.5 5s1.5.67 1.5 1.5S12.33 8 11.5 8z"],comparison:["M7.99-.01c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1s1-.45 1-1v-14c0-.55-.45-1-1-1zm-3 3h-4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1zm10 0h-4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1zm0 3h-4v-2h4v2zm0 3h-4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1zm0 3h-4v-2h4v2zm-10-3h-4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1z"],compass:["M12 8c0 .14-.03.27-.08.39l-3 6.99c-.15.37-.51.62-.92.62s-.77-.25-.92-.61l-3-6.99a1.006 1.006 0 010-.79l3-6.99C7.23.25 7.59 0 8 0s.77.25.92.61l3 6.99c.05.13.08.26.08.4zM8 3.54L6.09 8h3.82L8 3.54z"],compressed:["M15.93 5.63v-.02L13.94.63C13.78.26 13.42 0 13 0H3c-.42 0-.78.26-.93.63L.08 5.61l-.01.02C.03 5.74 0 5.87 0 6v9c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V6c0-.13-.03-.26-.07-.37zM9 2h3.32l1.2 3H9V2zM3.68 2H7v3H2.48l1.2-3zM14 14H2V7h5v2.59l-1.29-1.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3a1.003 1.003 0 00-1.42-1.42L9 9.59V7h5v7z"],confirm:["M8.7 4.29a.965.965 0 00-.71-.3 1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l5-5a1.003 1.003 0 00-1.42-1.42l-4.29 4.3L8.7 4.29zm5.22 3.01c.03.23.07.45.07.69 0 3.31-2.69 6-6 6s-6-2.69-6-6 2.69-6 6-6c.81 0 1.59.17 2.3.46l1.5-1.5A7.998 7.998 0 00-.01 7.99c0 4.42 3.58 8 8 8s8-3.58 8-8c0-.83-.13-1.64-.36-2.39l-1.71 1.7z"],console:["M15 15H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h14c.55 0 1 .45 1 1v12c0 .55-.45 1-1 1zM14 5H2v8h12V5zM4 6c.28 0 .53.11.71.29l2 2c.18.18.29.43.29.71s-.11.53-.29.71l-2 2a1.003 1.003 0 01-1.42-1.42L4.59 9l-1.3-1.29A1.003 1.003 0 014 6zm5 4h3c.55 0 1 .45 1 1s-.45 1-1 1H9c-.55 0-1-.45-1-1s.45-1 1-1z"],contrast:["M15.2 6.4h-1.44c-.13-.47-.32-.92-.56-1.34L14.26 4c.31-.31.31-.82 0-1.13l-1.13-1.13a.803.803 0 00-1.13 0L10.94 2.8c-.42-.24-.86-.42-1.34-.56V.8c0-.44-.36-.8-.8-.8H7.2c-.44 0-.8.36-.8.8v1.44c-.5.14-.96.34-1.4.59l-1-1c-.3-.3-.79-.3-1.09 0L1.83 2.91c-.3.3-.3.79 0 1.09l1 1c-.25.44-.45.9-.59 1.4H.8c-.44 0-.8.36-.8.8v1.6c0 .44.36.8.8.8h1.44c.13.47.32.92.56 1.34L1.74 12c-.31.31-.31.82 0 1.13l1.13 1.13c.31.31.82.31 1.13 0l1.06-1.06c.42.24.86.42 1.34.56v1.44c0 .44.36.8.8.8h1.6c.44 0 .8-.36.8-.8v-1.44c.5-.14.96-.33 1.4-.59l1 1c.3.3.79.3 1.09 0l1.09-1.09c.3-.3.3-.79 0-1.09l-1-1c.25-.43.45-.9.59-1.4h1.44c.44 0 .8-.36.8-.8V7.2a.818.818 0 00-.81-.8zM8 12c-2.21 0-4-1.79-4-4s1.79-4 4-4v8z"],control:["M13 8H8v5h5V8zm0-5H8v4h5V3zm2-3H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H2V2h12v12zM7 3H3v10h4V3z"],"credit-card":["M14.99 2.95h-14c-.55 0-1 .45-1 1v1h16v-1c0-.55-.45-1-1-1zm-15 10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-6h-16v6zm5.5-2h5c.28 0 .5.22.5.5s-.22.5-.5.5h-5c-.28 0-.5-.22-.5-.5s.23-.5.5-.5zm-3 0h1c.28 0 .5.22.5.5s-.22.5-.5.5h-1c-.28 0-.5-.22-.5-.5s.23-.5.5-.5z"],cross:["M9.41 8l3.29-3.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L8 6.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42L6.59 8 3.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L8 9.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L9.41 8z"],crown:["M2 6l3 2 3-4 3 4 3-2-1 6H3L2 6zm6-5a1 1 0 110 2 1 1 0 010-2zM1 3a1 1 0 110 2 1 1 0 010-2zm14 0a1 1 0 110 2 1 1 0 010-2zM3 13h10v2H3v-2z"],cube:["M14.194 3.54L8 7.41 1.806 3.54 7.504.283a1 1 0 01.992 0l5.698 3.255zm.75.71a1 1 0 01.056.33v6.84a1 1 0 01-.504.868L8.5 15.714V8.277l6.444-4.027zm-13.888 0L7.5 8.277v7.437l-5.996-3.426A1 1 0 011 11.42V4.58a1 1 0 01.056-.33z"],"cube-add":["M14 2h1a1 1 0 010 2h-1v1a1 1 0 01-2 0V4h-1a1 1 0 010-2h1V1a1 1 0 012 0v1zM9.136.65a3.001 3.001 0 00.992 5.222c.018.058.038.115.059.172L8 7.41 1.806 3.54 7.504.283a1 1 0 01.992 0l.64.365zM15 7.235v4.184a1 1 0 01-.504.868L8.5 15.714V8.277l2.187-1.367A2.994 2.994 0 0013 8c.768 0 1.47-.289 2-.764zM1.056 4.25L7.5 8.277v7.437l-5.996-3.426A1 1 0 011 11.42V4.58a1 1 0 01.056-.33z"],"cube-remove":["M10.365 5.933L8 7.41 1.806 3.54 7.504.283a1 1 0 01.992 0l.64.365a3.001 3.001 0 001.228 5.283zM15 6v5.42a1 1 0 01-.504.868L8.5 15.714V8.277L12.143 6H15zM1.056 4.25L7.5 8.277v7.437l-5.996-3.426A1 1 0 011 11.42V4.58a1 1 0 01.056-.33zM11 2h4a1 1 0 010 2h-4a1 1 0 010-2z"],"curved-range-chart":["M15 12H3.12l1.81-1.39c1.73 1.01 5.53-.03 9.08-2.61l-1.22-1.5C10.3 8.3 7.86 9.37 6.65 9.29L14.3 3.4l-.6-.8-7.83 6.03c-.01-1.07 1.8-3.19 4.47-5.13L9.12 2C5.38 4.7 3.34 8.1 4.25 9.87L2 11.6V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],cut:["M13 2s.71-1.29 0-2L8.66 5.07l1.05 1.32L13 2zm.07 8c-.42 0-.82.09-1.18.26L3.31 0c-.69.71 0 2 0 2l3.68 5.02-2.77 3.24A2.996 2.996 0 000 13c0 1.66 1.34 3 3 3s3-1.34 3-3c0-.46-.11-.89-.29-1.27L8.1 8.54l2.33 3.19c-.18.39-.29.82-.29 1.27 0 1.66 1.31 3 2.93 3S16 14.66 16 13s-1.31-3-2.93-3zM3 14c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm10.07 0c-.54 0-.98-.45-.98-1s.44-1 .98-1 .98.45.98 1-.44 1-.98 1z"],cycle:["M13 9a3 3 0 110 6 3 3 0 010-6zM3 9a3 3 0 110 6 3 3 0 010-6zm6.169-5.27l.087.09 1.51 1.746 1.589.549a1 1 0 01.65 1.16l-.032.112a1 1 0 01-1.159.65l-.112-.032-1.843-.636a1 1 0 01-.337-.198l-.092-.093-.959-1.109L7.041 7.5l1.691 1.819a1 1 0 01.26.556L9 10v3a1 1 0 01-1.993.117L7 13l-.001-2.608-2.056-2.211a1 1 0 01-.081-1.264l.082-.1 2.825-3.026a1 1 0 011.4-.061zM13 10.5a1.5 1.5 0 100 3 1.5 1.5 0 000-3zm-10 0a1.5 1.5 0 100 3 1.5 1.5 0 000-3zM11 1a1.5 1.5 0 110 3 1.5 1.5 0 010-3z"],dashboard:["M5 4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zM4 7c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm4-2c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm-2 6c0 1.1.9 2 2 2s2-.9 2-2c0-.53-2-5-2-5s-2 4.47-2 5zM8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zm4-9c0-.55-.45-1-1-1s-1 .45-1 1 .45 1 1 1 1-.45 1-1zm0 2c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z"],"data-connection":["M1 9.52c.889.641 2.308 1.133 4.003 1.354L5 11a5.994 5.994 0 002.664 4.988c-.217.008-.44.012-.664.012-3.215 0-5.846-.85-5.993-1.906L1 14V9.52zM11 6c2.762 0 5 2.238 5 5s-2.238 5-5 5-5-2.238-5-5 2.238-5 5-5zm1 1l-4 5h2.5l-.5 3 4-5h-2.5l.5-3zm1-3.48v1.822a6.002 6.002 0 00-7.9 4.556l-.248-.03c-2.168-.28-3.733-.966-3.845-1.774L1 8V3.52C2.22 4.4 4.44 5 7 5s4.78-.6 6-1.48zM7 0c3.31 0 6 .9 6 2s-2.69 2-6 2c-3.32 0-6-.9-6-2s2.68-2 6-2z"],"data-lineage":["M1.067 0C.477 0 0 .478 0 1.067V3.2c0 .59.478 1.067 1.067 1.067h2.24a5.342 5.342 0 002.9 3.734 5.337 5.337 0 00-2.9 3.733h-2.24C.477 11.733 0 12.21 0 12.8v2.133C0 15.523.478 16 1.067 16H6.4c.59 0 1.067-.478 1.067-1.067V12.8c0-.59-.478-1.067-1.067-1.067H4.401a4.27 4.27 0 013.92-3.194l.212-.006V9.6c0 .59.478 1.067 1.067 1.067h5.333c.59 0 1.067-.478 1.067-1.067V6.4c0-.59-.478-1.067-1.067-1.067H9.6c-.59 0-1.067.478-1.067 1.067v1.067a4.268 4.268 0 01-4.132-3.2H6.4c.59 0 1.067-.478 1.067-1.067V1.067C7.467.477 6.989 0 6.4 0H1.067z"],database:["M8 4c3.31 0 6-.9 6-2s-2.69-2-6-2C4.68 0 2 .9 2 2s2.68 2 6 2zm-6-.48V8c0 1.1 2.69 2 6 2s6-.9 6-2V3.52C12.78 4.4 10.56 5 8 5s-4.78-.6-6-1.48zm0 6V14c0 1.1 2.69 2 6 2s6-.9 6-2V9.52C12.78 10.4 10.56 11 8 11s-4.78-.6-6-1.48z"],delete:["M11.99 4.99a1.003 1.003 0 00-1.71-.71l-2.29 2.3L5.7 4.29a.965.965 0 00-.71-.3 1.003 1.003 0 00-.71 1.71l2.29 2.29-2.29 2.29A1.003 1.003 0 005.7 11.7l2.29-2.29 2.29 2.29a1.003 1.003 0 001.42-1.42L9.41 7.99 11.7 5.7c.18-.18.29-.43.29-.71zm-4-5c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.68 6-6 6z"],delta:["M8 0L0 16h16L8 0zM7 5l5 10H2L7 5z"],"derive-column":["M6.08 6.67h-.84c.24-.92.56-1.6.96-2.03.24-.27.48-.4.71-.4.05 0 .08.01.11.04s.04.06.04.1c0 .04-.03.11-.1.21-.06.1-.1.2-.1.29 0 .13.05.24.15.33.1.09.23.14.39.14.17 0 .31-.06.42-.17A.58.58 0 008 4.73c0-.22-.09-.39-.26-.53-.17-.13-.44-.2-.81-.2-.59 0-1.12.16-1.59.48-.48.32-.93.85-1.36 1.59-.15.26-.29.42-.42.49s-.35.11-.64.1l-.19.65h.81l-1.19 4.37c-.2.72-.33 1.16-.4 1.33-.1.24-.26.45-.46.62-.08.07-.18.1-.3.1-.03 0-.06-.01-.08-.03l-.03-.04c0-.02.03-.06.09-.11.06-.06.09-.14.09-.26 0-.13-.05-.23-.14-.32a.6.6 0 00-.4-.13c-.21 0-.38.05-.51.16s-.21.25-.21.4c0 .16.08.3.23.42.16.12.4.18.74.18.53 0 .99-.13 1.4-.39.41-.26.76-.65 1.07-1.19.3-.54.62-1.4.94-2.59l.68-2.53h.82l.2-.63zM15 0H8c-.55 0-1 .45-1 1v2h2V2h5v12H9v-1H7v2c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM8.3 9.94c.18.52.33.89.46 1.13.13.24.28.4.44.51.17.1.37.16.62.16.24 0 .49-.08.74-.25.33-.21.66-.58 1.01-1.09l-.21-.11c-.23.31-.41.5-.52.57a.44.44 0 01-.26.07c-.12 0-.24-.07-.36-.21-.2-.24-.46-.91-.8-2 .3-.49.55-.81.75-.96.15-.11.3-.16.47-.16.06 0 .17.02.34.06.16.04.31.06.43.06.17 0 .31-.06.43-.17.1-.11.16-.25.16-.43 0-.19-.06-.33-.17-.44-.12-.11-.28-.16-.49-.16-.19 0-.37.04-.54.13-.17.09-.39.27-.65.56-.2.21-.48.58-.87 1.11-.15-.66-.41-1.26-.78-1.81l-2.05.33-.04.21c.15-.03.28-.04.39-.04.2 0 .37.08.5.25.21.26.5 1.03.88 2.33-.29.37-.49.61-.6.72-.18.18-.33.3-.44.36-.09.04-.19.07-.3.07-.09 0-.23-.04-.42-.13a.866.866 0 00-.36-.09c-.2 0-.36.06-.49.18a.59.59 0 00-.19.46c0 .17.06.32.18.43.12.11.28.16.48.16.2 0 .38-.04.55-.11.17-.08.39-.24.65-.49.24-.27.6-.66 1.06-1.21z"],desktop:["M15 0H1C.45 0 0 .45 0 1v10c0 .55.45 1 1 1h4.75l-.5 2H4c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1h-1.25l-.5-2H15c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 10H2V2h12v8z"],diagnosis:["M3.2 1a1 1 0 01.117 1.993L3.2 3H3v3a2 2 0 001.85 1.995L5 8a2 2 0 001.995-1.85L7 6V3h-.2a1 1 0 01-.993-.883L5.8 2a1 1 0 01.883-.993L6.8 1H8a1 1 0 01.993.883L9 2v4a4.002 4.002 0 01-3.007 3.876v.007L6 10a3 3 0 005.995.176L12 10V7.792a2.5 2.5 0 112 0V10a5 5 0 01-10 0c0-.042.003-.084.008-.125A4 4 0 011.005 6.2L1 6V2a1 1 0 01.883-.993L2 1h1.2z"],"diagram-tree":["M15 8v3h-2V9H9v2H7V9H3v2H1V8a1 1 0 011-1h5V5h2v2h5a1 1 0 011 1zM1 12h2a1 1 0 011 1v2a1 1 0 01-1 1H1a1 1 0 01-1-1v-2a1 1 0 011-1zm12 0h2a1 1 0 011 1v2a1 1 0 01-1 1h-2a1 1 0 01-1-1v-2a1 1 0 011-1zm-6 0h2a1 1 0 011 1v2a1 1 0 01-1 1H7a1 1 0 01-1-1v-2a1 1 0 011-1zM7 0h2a1 1 0 011 1v2a1 1 0 01-1 1H7a1 1 0 01-1-1V1a1 1 0 011-1z"],"direction-left":["M16 1.99l-16 6 16 6-4-6z"],"direction-right":["M16 7.99l-16-6 4 6-4 6z"],disable:["M7.99-.01c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm-6 8c0-3.31 2.69-6 6-6 1.3 0 2.49.42 3.47 1.12l-8.35 8.35c-.7-.98-1.12-2.17-1.12-3.47zm6 6c-1.3 0-2.49-.42-3.47-1.12l8.35-8.35c.7.98 1.12 2.17 1.12 3.47 0 3.32-2.68 6-6 6z"],document:["M9 0H3c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V5L9 0zm3 14H4V2h4v4h4v8z"],"document-open":["M6 12c0 .55.45 1 1 1s1-.45 1-1V8c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1s.45 1 1 1h1.59L1.3 12.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L6 10.41V12zm4-12H4c-.55 0-1 .45-1 1v4h2V2h4v4h4v8H5.24l-1.8 1.8c.16.12.35.2.56.2h10c.55 0 1-.45 1-1V5l-5-5z"],"document-share":["M10 14H2V2h4v4h1c0-.83.36-1.55.91-2.09l-.03-.03.9-.9C8.3 2.45 8 1.77 8 1L7 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V8.22c-.53.48-1.23.78-2 .78v5zm5-14h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.59l-3.3 3.29a1.003 1.003 0 001.42 1.42L14 3.41V5c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1z"],dollar:["M12.83 9.51c-.1-.3-.25-.58-.45-.84s-.45-.49-.75-.7c-.3-.2-.65-.36-1.05-.48-.16-.04-.43-.11-.8-.2-.35-.09-.73-.18-1.12-.28-.39-.1-.74-.19-1.06-.27-.31-.08-.49-.12-.54-.13-.43-.12-.78-.29-1.05-.52-.27-.23-.4-.55-.4-.95 0-.29.07-.53.21-.72.14-.19.32-.34.54-.46.22-.11.46-.19.72-.24.26-.05.52-.08.77-.08.74 0 1.35.15 1.83.46.48.3.75.83.81 1.56h2.14c0-.6-.13-1.13-.38-1.58-.25-.45-.59-.84-1.02-1.15-.43-.31-.93-.54-1.49-.7-.24-.06-.49-.1-.75-.14V1c0-.55-.45-1-1-1s-1 .45-1 1v1.08c-.23.03-.46.07-.68.13-.54.13-1.02.34-1.44.61-.42.28-.76.63-1.02 1.05-.26.43-.39.93-.39 1.5 0 .3.04.59.13.88.09.29.23.56.44.82.21.26.48.49.83.7.35.21.79.38 1.31.51.85.21 1.56.38 2.14.52.58.13 1.08.28 1.52.42.25.09.48.23.69.44.21.21.32.53.32.97 0 .21-.05.42-.14.63-.09.21-.24.39-.45.55-.21.16-.47.29-.81.39-.33.1-.73.15-1.2.15-.43 0-.84-.05-1.21-.14-.37-.09-.7-.24-.99-.43-.29-.2-.51-.45-.67-.76-.16-.31-.24-.68-.24-1.12H3c.01.71.15 1.32.43 1.84.27.52.64.94 1.1 1.27.46.33.99.58 1.61.74.27.07.56.12.85.16V15c0 .55.45 1 1 1s1-.45 1-1v-1.05c.3-.03.61-.08.9-.15.58-.13 1.1-.34 1.56-.63.46-.29.83-.66 1.11-1.11.28-.45.42-1 .42-1.64 0-.31-.05-.61-.15-.91z"],dot:["M8 5a3 3 0 100 6 3 3 0 100-6z"],"double-caret-horizontal":["M13.71 7.29l-3-3A1.003 1.003 0 009 5v6a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zM6 4c-.28 0-.53.11-.71.29l-3 3C2.11 7.47 2 7.72 2 8c0 .28.11.53.29.71l3 3A1.003 1.003 0 007 11V5c0-.55-.45-1-1-1z"],"double-caret-vertical":["M5 7h6a1.003 1.003 0 00.71-1.71l-3-3C8.53 2.11 8.28 2 8 2s-.53.11-.71.29l-3 3A1.003 1.003 0 005 7zm6 2H5a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 0011 9z"],"double-chevron-down":["M7.29 8.71c.18.18.43.29.71.29s.53-.11.71-.29l4-4a1.003 1.003 0 00-1.42-1.42L8 6.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42l4 4zM12 8c-.28 0-.53.11-.71.29L8 11.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42l4 4c.18.18.43.29.71.29s.53-.11.71-.29l4-4A1.003 1.003 0 0012 8z"],"double-chevron-left":["M4.41 8L7.7 4.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4C2.11 7.47 2 7.72 2 8c0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L4.41 8zm5 0l3.29-3.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4C7.11 7.47 7 7.72 7 8c0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L9.41 8z"],"double-chevron-right":["M9 8c0-.28-.11-.53-.29-.71l-4-4a1.003 1.003 0 00-1.42 1.42L6.59 8 3.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4C8.89 8.53 9 8.28 9 8zm4.71-.71l-4-4a1.003 1.003 0 00-1.42 1.42L11.59 8 8.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],"double-chevron-up":["M4 8c.28 0 .53-.11.71-.29L8 4.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-4-4C8.53 2.11 8.28 2 8 2s-.53.11-.71.29l-4 4A1.003 1.003 0 004 8zm4.71-.71C8.53 7.11 8.28 7 8 7s-.53.11-.71.29l-4 4a1.003 1.003 0 001.42 1.42L8 9.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-4-4z"],"doughnut-chart":["M11.86 7h4.05C15.45 3.39 12.61.52 9 .07v4.07A4 4 0 0111.86 7zM12 8c0 2.21-1.79 4-4 4s-4-1.79-4-4 1.79-4 4-4V0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8h-4z"],download:["M7.99-.01c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zM11.7 9.7l-3 3c-.18.18-.43.29-.71.29s-.53-.11-.71-.29l-3-3A1.003 1.003 0 015.7 8.28l1.29 1.29V3.99c0-.55.45-1 1-1s1 .45 1 1v5.59l1.29-1.29a1.003 1.003 0 011.71.71c0 .27-.11.52-.29.7z"],"drag-handle-horizontal":["M2 9c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm4 4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm8-2c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0 2c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm-4-4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zM6 5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z"],"drag-handle-vertical":["M6 9c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm4-6c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zM6 13c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-8c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm4 8c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 8c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z"],draw:["M14.9 11c-.3 0-.5.1-.7.3l-3 3c-.2.2-.3.4-.3.7 0 .6.5 1 1 1 .3 0 .5-.1.7-.3l3-3c.2-.2.3-.4.3-.7 0-.5-.4-1-1-1zm-1-1v-.2l-1-5c-.1-.3-.3-.6-.6-.7l-11-4-.3.3 5.8 5.8c.2-.1.4-.2.6-.2.8 0 1.5.7 1.5 1.5S8.3 9 7.4 9s-1.5-.7-1.5-1.5c0-.2.1-.4.2-.6L.3 1.1l-.3.3 4 11c.1.3.4.6.7.6l5 1h.2c.3 0 .5-.1.7-.3l3-3c.2-.2.3-.4.3-.7z"],"drawer-left":["M7 0a1 1 0 011 1v14a1 1 0 01-1 1H1a1 1 0 01-1-1V1a1 1 0 011-1h6zM6 2H2v12h4V2zm2 5h4.59L11.3 5.71A.965.965 0 0111 5a1.003 1.003 0 011.71-.71l3 3c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-3 3a1.003 1.003 0 01-1.42-1.42L12.59 9H8V7z"],"drawer-left-filled":["M1 0h6a1 1 0 011 1v14a1 1 0 01-1 1H1a1 1 0 01-1-1V1a1 1 0 011-1zm7 7h4.59L11.3 5.71A.965.965 0 0111 5a1.003 1.003 0 011.71-.71l3 3c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-3 3a1.003 1.003 0 01-1.42-1.42L12.59 9H8V7z"],"drawer-right":["M15 0a1 1 0 011 1v14a1 1 0 01-1 1H9a1 1 0 01-1-1V1a1 1 0 011-1h6zm-1 2h-4v12h4V2zM8 7H3.41L4.7 5.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3C.11 7.47 0 7.72 0 8c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L3.41 9H8V7z"],"drawer-right-filled":["M9 0h6a1 1 0 011 1v14a1 1 0 01-1 1H9a1 1 0 01-1-1V1a1 1 0 011-1zM8 7H3.41L4.7 5.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3C.11 7.47 0 7.72 0 8c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L3.41 9H8V7z"],"drive-time":["M15.12 4.76h-1.05l-.76-2.12c-.19-.53-.76-1.08-1.27-1.24 0 0-1.32-.4-4.04-.4-2.72 0-4.04.4-4.04.4-.5.16-1.07.71-1.26 1.24l-.77 2.12H.88c-.48 0-.88.42-.88.94s.4.94.88.94h.38L1 7c-.03.69 0 1.44 0 2v5c0 .66.38 1 1 1s1-.34 1-1v-1h10v1c0 .66.38 1 1 1s1-.34 1-1V9c0-.56-.01-1.37 0-2l-.26-.37h.38c.48 0 .88-.42.88-.93 0-.52-.4-.94-.88-.94zM5 10H3V8h2v2zm8 0h-2V8h2v2zm0-4H3c-.18 0-.06-.82 0-1l.73-1.63C3.79 3.19 3.82 3 4 3h8c.18 0 .21.19.27.37L13 5c.06.18.18 1 0 1z"],duplicate:["M15 0H5c-.55 0-1 .45-1 1v2h2V2h8v7h-1v2h2c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-4 4H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm-1 10H2V6h8v8z"],edit:["M3.25 10.26l2.47 2.47 6.69-6.69-2.46-2.48-6.7 6.7zM.99 14.99l3.86-1.39-2.46-2.44-1.4 3.83zm12.25-14c-.48 0-.92.2-1.24.51l-1.44 1.44 2.47 2.47 1.44-1.44c.32-.32.51-.75.51-1.24.01-.95-.77-1.74-1.74-1.74z"],eject:["M4 9h8a1.003 1.003 0 00.71-1.71l-4-4C8.53 3.11 8.28 3 8 3s-.53.11-.71.29l-4 4A1.003 1.003 0 004 9zm8 1H4c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h8c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1z"],emoji:["M8 0a8 8 0 110 16A8 8 0 018 0zm0 1a7 7 0 100 14A7 7 0 008 1zM4 8c.228 2.262 2 4 4 4 1.938 0 3.77-1.738 3.984-3.8L12 8h1c-.128 2.888-2.317 5-5 5a5 5 0 01-4.995-4.783L3 8h1zm2-3a1 1 0 110 2 1 1 0 010-2zm4 0a1 1 0 110 2 1 1 0 010-2z"],endorsed:["M15.86 7.5l-.81-1.42V4.5c0-.36-.19-.68-.49-.87l-1.37-.8-.81-1.41c-.19-.31-.51-.49-.86-.49H9.89L8.5.14a.948.948 0 00-1 0l-1.39.8H4.52a1 1 0 00-.86.49l-.8 1.37-1.44.83c-.3.19-.49.51-.49.87v1.65l-.8 1.37c-.08.15-.13.32-.13.49s.05.34.14.49l.8 1.37v1.65c0 .36.19.68.49.87l1.42.81.8 1.37c.19.31.51.49.86.49H6.1l1.39.8c.15.09.32.14.48.14s.34-.05.49-.14l1.39-.8h1.63a1 1 0 00.86-.49l.81-1.41 1.37-.8c.3-.19.49-.51.49-.87V9.93l.81-1.42a.89.89 0 00.04-1.01zm-4.12-.82l-4.01 4.01c-.18.18-.43.29-.71.29s-.53-.11-.71-.29l-2-2c-.18-.19-.3-.44-.3-.71a1.003 1.003 0 011.71-.71l1.3 1.3 3.3-3.3a1.003 1.003 0 011.71.71.95.95 0 01-.29.7z"],envelope:["M0 3.06v9.88L4.94 8 0 3.06zM14.94 2H1.06L8 8.94 14.94 2zm-6.41 8.53c-.14.14-.32.22-.53.22s-.39-.08-.53-.22L6 9.06 1.06 14h13.88L10 9.06l-1.47 1.47zM11.06 8L16 12.94V3.06L11.06 8z"],equals:["M3 5h10a1 1 0 010 2H3a1 1 0 110-2zm0 4h10a1 1 0 010 2H3a1 1 0 010-2z"],eraser:["M8.06 13.91l7.63-7.44c.41-.4.41-1.05 0-1.45L10.86.3c-.41-.4-1.08-.4-1.49 0L.31 9.13c-.41.4-.41 1.05 0 1.45l5.58 5.44h8.12v-.01c.55 0 1-.45 1-1s-.45-1-1-1H7.96l.1-.1zm-2.17.06L1.67 9.85l4.22-4.11 4.22 4.11-4.22 4.12z"],error:["M7.99-.01c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm1 13h-2v-2h2v2zm0-3h-2v-7h2v7z"],euro:["M6.52 3.18c.51-.27 1.12-.4 1.83-.4.48 0 .91.06 1.27.18.37.12.68.29.96.51.18.14.3.33.44.51l1.53-1.53c-.12-.11-.23-.22-.36-.32a5.61 5.61 0 00-1.74-.83c-.66-.2-1.36-.3-2.1-.3-.99 0-1.88.18-2.66.53-.79.35-1.45.82-2 1.41-.55.58-.96 1.27-1.26 2.06H2c-.55 0-1 .45-1 1s.45 1 1 1h.04c-.01.17-.04.33-.04.5 0 .17.03.33.04.5H2c-.55 0-1 .45-1 1s.45 1 1 1h.43c0 .01 0 .02.01.02a6.2 6.2 0 001.25 2.07 5.77 5.77 0 002 1.4c.78.34 1.67.51 2.66.51.81 0 1.54-.12 2.21-.36.67-.24 1.25-.59 1.75-1.03l.03-.03-1.55-1.33c-.01.01-.02.03-.03.04-.29.3-.63.53-1.02.69-.4.17-.85.25-1.37.25-.71 0-1.32-.13-1.83-.4s-.93-.62-1.25-1.07c-.19-.24-.34-.49-.46-.76H9c.55 0 1-.45 1-1s-.45-1-1-1H4.35c-.01-.17-.03-.33-.03-.5 0-.17.02-.34.03-.5H10c.55 0 1-.45 1-1s-.45-1-1-1H4.83c.13-.27.27-.52.44-.76.32-.44.74-.8 1.25-1.06zM14 8.98v0z"],exchange:["M1.99 5.99c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.89-2-2-2zm4.15 1.86a.495.495 0 10.7-.7L5.7 5.99h5.79c.28 0 .5-.22.5-.5s-.22-.5-.5-.5H5.7l1.15-1.15a.495.495 0 10-.7-.7l-2 2c-.1.09-.16.21-.16.35s.06.26.15.35l2 2.01zm7.85-1.86c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.89-2-2-2zM9.85 8.14a.533.533 0 00-.36-.15.495.495 0 00-.35.85l1.15 1.15h-5.8c-.28 0-.5.22-.5.5s.22.5.5.5h5.79l-1.15 1.15a.495.495 0 10.7.7l2-2c.09-.09.15-.22.15-.35s-.06-.26-.15-.35l-1.98-2z"],"exclude-row":["M0 10a1.003 1.003 0 001.71.71L3 9.41l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L4.41 8 5.7 6.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L3 6.59l-1.29-1.3A1.003 1.003 0 00.29 6.71L1.59 8 .29 9.29C.11 9.47 0 9.72 0 10zm1-7h14c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm14 10H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm-1-7H9c-1.1 0-2 .9-2 2s.9 2 2 2h5c1.1 0 2-.9 2-2s-.9-2-2-2z"],"expand-all":["M4 7c.28 0 .53-.11.71-.29L8 3.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-4-4C8.53 1.11 8.28 1 8 1s-.53.11-.71.29l-4 4A1.003 1.003 0 004 7zm8 2c-.28 0-.53.11-.71.29L8 12.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42l4 4c.18.18.43.29.71.29s.53-.11.71-.29l4-4A1.003 1.003 0 0012 9z"],export:["M4 6c.28 0 .53-.11.71-.29L7 3.41V11c0 .55.45 1 1 1s1-.45 1-1V3.41l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-4-4C8.53.11 8.28 0 8 0s-.53.11-.71.29l-4 4A1.003 1.003 0 004 6zm11 5c-.55 0-1 .45-1 1v2H2v-2c0-.55-.45-1-1-1s-1 .45-1 1v3c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1z"],"eye-off":["M16 7.97v-.02-.01-.02-.02a.672.672 0 00-.17-.36c-.49-.63-1.07-1.2-1.65-1.72l-3.16 2.26a2.978 2.978 0 01-2.98 2.9c-.31 0-.6-.06-.88-.15L5.09 12.3c.44.19.9.36 1.37.47.97.23 1.94.24 2.92.05.88-.17 1.74-.54 2.53-.98 1.25-.7 2.39-1.67 3.38-2.75.18-.2.37-.41.53-.62.09-.1.15-.22.17-.36v-.02-.02-.01-.02-.03c.01-.02.01-.03.01-.04zm-.43-4.17c.25-.18.43-.46.43-.8 0-.55-.45-1-1-1-.22 0-.41.08-.57.2l-.01-.01-2.67 1.91c-.69-.38-1.41-.69-2.17-.87a6.8 6.8 0 00-2.91-.05c-.88.18-1.74.54-2.53.99-1.25.7-2.39 1.67-3.38 2.75-.18.2-.37.41-.53.62-.23.29-.23.63-.01.92.51.66 1.11 1.25 1.73 1.79.18.16.38.29.56.44l-2.09 1.5.01.01c-.25.18-.43.46-.43.8 0 .55.45 1 1 1 .22 0 .41-.08.57-.2l.01.01 14-10-.01-.01zm-10.41 5a3.03 3.03 0 01-.11-.8 2.99 2.99 0 012.99-2.98c.62 0 1.19.21 1.66.53L5.16 8.8z"],"eye-on":["M10.29 6.7c.18.18.43.29.71.29s.53-.11.71-.29l4-4c.17-.18.29-.43.29-.7a1.003 1.003 0 00-1.71-.71L11 4.58 9.71 3.29A.997.997 0 009 3c-.55 0-1 .44-1 1a1 1 0 00.3.7l1.99 2zM16 7.96v-.02-.01-.02-.02a.64.64 0 00-.17-.36c-.3-.4-.65-.76-1-1.12l-1.7 1.7c-.55.55-1.3.88-2.13.88-.06 0-.11-.01-.17-.02C10.42 10.15 9.32 11 8.01 11A3.005 3.005 0 016.4 5.46c-.24-.43-.39-.93-.39-1.46 0-.26.04-.5.1-.74-.7.2-1.37.5-2.01.86-1.26.7-2.4 1.68-3.4 2.77-.18.21-.36.41-.53.63-.22.29-.22.64 0 .93.51.67 1.12 1.27 1.73 1.81 1.33 1.17 2.85 2.15 4.53 2.55.97.23 1.95.24 2.92.05.89-.18 1.74-.54 2.54-.99 1.25-.71 2.4-1.69 3.39-2.78.18-.2.37-.41.54-.63.09-.1.15-.23.17-.37v-.02-.02-.01-.02-.03c.01-.01.01-.02.01-.03zM8.01 9c.48 0 .87-.35.96-.81a.55.55 0 01-.07-.09l-.02.01L7.8 7.03c-.45.1-.79.48-.79.96 0 .56.45 1.01 1 1.01z"],"eye-open":["M8.002 7.003a1.003 1.003 0 000 2.005 1.003 1.003 0 000-2.005zm7.988.972v-.02-.01-.02-.02a.675.675 0 00-.17-.36c-.509-.673-1.118-1.264-1.737-1.806-1.328-1.173-2.846-2.155-4.523-2.546a6.702 6.702 0 00-2.925-.06c-.889.18-1.738.541-2.546.992C2.84 4.837 1.692 5.81.694 6.902c-.18.211-.36.411-.53.632a.742.742 0 000 .932c.51.672 1.119 1.264 1.738 1.805 1.328 1.173 2.846 2.156 4.523 2.547.968.23 1.947.24 2.925.04.889-.18 1.738-.542 2.546-.993 1.248-.712 2.397-1.684 3.395-2.777.18-.2.37-.411.54-.632.09-.1.149-.23.169-.36v-.02-.02-.01-.02-.03c0-.01-.01-.01-.01-.02zm-7.988 3.038a2.998 2.998 0 01-2.995-3.008 2.998 2.998 0 012.995-3.008 2.998 2.998 0 012.996 3.008 2.998 2.998 0 01-2.996 3.008z"],"fast-backward":["M14 3c-.24 0-.44.09-.62.23l-.01-.01L9 6.72V4c0-.55-.45-1-1-1-.24 0-.44.09-.62.23v-.01l-5 4 .01.01C2.16 7.41 2 7.68 2 8s.16.59.38.77v.01l5 4 .01-.01c.17.14.37.23.61.23.55 0 1-.45 1-1V9.28l4.38 3.5.01-.01c.17.14.37.23.61.23.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"fast-forward":["M15 8c0-.32-.16-.59-.38-.77l.01-.01-5-4-.01.01A.987.987 0 009 3c-.55 0-1 .45-1 1v2.72l-4.38-3.5v.01A.987.987 0 003 3c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1 .24 0 .44-.09.62-.23l.01.01L8 9.28V12c0 .55.45 1 1 1 .24 0 .44-.09.62-.23l.01.01 5-4-.01-.01c.22-.18.38-.45.38-.77z"],feed:["M1.99 11.99c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.89-2-2-2zm1-4c-.55 0-1 .45-1 1s.45 1 1 1c1.66 0 3 1.34 3 3 0 .55.45 1 1 1s1-.45 1-1c0-2.76-2.24-5-5-5zm0-4c-.55 0-1 .45-1 1s.45 1 1 1c3.87 0 7 3.13 7 7 0 .55.45 1 1 1s1-.45 1-1a9 9 0 00-9-9zm0-4c-.55 0-1 .45-1 1s.45 1 1 1c6.08 0 11 4.92 11 11 0 .55.45 1 1 1s1-.45 1-1c0-7.18-5.82-13-13-13z"],"feed-subscribed":["M3 2c1.06 0 2.08.16 3.06.45.13-.71.52-1.32 1.05-1.76C5.82.25 4.44 0 3 0c-.55 0-1 .45-1 1s.45 1 1 1zM2 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm8.32-6.33a.99.99 0 001.4 0l3.98-3.98c.19-.18.3-.42.3-.7 0-.55-.45-.99-1-.99-.28 0-.52.11-.7.29l-3.28 3.28-1.29-1.29a.99.99 0 00-.7-.29 1 1 0 00-1 .99c0 .27.11.52.29.7l2 1.99zm3.73.53l-.93.93-.02-.02c-.17.17-.35.33-.56.45C13.47 9.16 14 11.02 14 13c0 .55.45 1 1 1s1-.45 1-1c0-2.5-.73-4.82-1.95-6.8zM3 8c-.55 0-1 .45-1 1s.45 1 1 1c1.66 0 3 1.34 3 3 0 .55.45 1 1 1s1-.45 1-1c0-2.76-2.24-5-5-5zm5.91-.91l-.03.03-2-2 .03-.03c-.11-.11-.23-.2-.33-.33A8.9 8.9 0 003 4c-.55 0-1 .45-1 1s.45 1 1 1c3.87 0 7 3.13 7 7 0 .55.45 1 1 1s1-.45 1-1c0-1.87-.57-3.61-1.55-5.06-.61-.11-1.13-.42-1.54-.85z"],film:["M15 1h-5v2H6V1H1c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h5v-2h4v2h5c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zM4 13H2v-2h2v2zm0-3H2V8h2v2zm0-3H2V5h2v2zm0-3H2V2h2v2zm6 6H6V5h4v5zm4 3h-2v-2h2v2zm0-3h-2V8h2v2zm0-3h-2V5h2v2zm0-3h-2V2h2v2z"],filter:["M13.99.99h-12a1.003 1.003 0 00-.71 1.71l4.71 4.71V14a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71V7.41L14.7 2.7a1.003 1.003 0 00-.71-1.71z"],"filter-keep":["M15 10c-.28 0-.53.11-.71.29L12 12.59l-1.29-1.29A.965.965 0 0010 11a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 0015 10zm-3-8c0-.55-.45-1-1-1H1a1.003 1.003 0 00-.71 1.71L4 6.41V12a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71V6.41l3.71-3.71c.18-.17.29-.42.29-.7z"],"filter-list":["M9 8c0 .55.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1h-5c-.55 0-1 .45-1 1zm3-6c0-.55-.45-1-1-1H1a1.003 1.003 0 00-.71 1.71L4 6.41V12a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71V6.41l3.71-3.71c.18-.17.29-.42.29-.7zm3 8h-5c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1zm0 3h-5c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1z"],"filter-open":["M15.707 10.293a1 1 0 010 1.414l-3 3c-.63.63-1.707.184-1.707-.707V8c0-.89 1.077-1.337 1.707-.707l3 3zM12 2c0 .28-.11.53-.29.7L8 6.41V10c0 .28-.11.53-.29.71l-2 2A1.003 1.003 0 014 12V6.41L.29 2.71A1.003 1.003 0 011 1h10c.55 0 1 .45 1 1z"],"filter-remove":["M12 2c0-.55-.45-1-1-1H1a1.003 1.003 0 00-.71 1.71L4 6.41V12a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71V6.41l3.71-3.71c.18-.17.29-.42.29-.7zm2.41 10l1.29-1.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L13 10.59 11.71 9.3A.965.965 0 0011 9a1.003 1.003 0 00-.71 1.71l1.3 1.29-1.29 1.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l1.29-1.3 1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L14.41 12z"],flag:["M2.99 2.99c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1s1-.45 1-1v-11c0-.55-.45-1-1-1zm0-3c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm2 3.03v7.23c2.07-2.11 5.92 1.75 9 0V3.02c-3 2.07-6.94-2.03-9 0z"],flame:["M9.217 0c0 1.368.368 2.462 1.104 3.282C12.774 5.197 14 7.385 14 9.846c0 2.735-1.472 4.786-4.415 6.154 2.165-2.4 1.84-3.385-.368-6.4-2.342 1.2-1.967 2-1.592 3.6-.786 0-1.5 0-1.875-.4 0 .547.898 2 1.464 3.2-2.943-.82-6.092-5.744-4.988-6.154.736-.273 1.594-.137 2.575.41C3.575 5.333 5.047 1.915 9.217 0z"],flash:["M4 8c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1h2c.55 0 1-.45 1-1zm4-4c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1S7 .45 7 1v2c0 .55.45 1 1 1zM3.79 5.21a1.003 1.003 0 001.42-1.42l-1.5-1.5a1.003 1.003 0 00-1.42 1.42l1.5 1.5zm.71 5.29c-.28 0-.53.11-.71.29l-1.5 1.5a1.003 1.003 0 001.42 1.42l1.5-1.5a1.003 1.003 0 00-.71-1.71zm7-5c.28 0 .53-.11.71-.29l1.5-1.5a1.003 1.003 0 00-1.42-1.42l-1.5 1.5a1.003 1.003 0 00.71 1.71zm.71 5.29a1.003 1.003 0 00-1.42 1.42l1.5 1.5a1.003 1.003 0 001.42-1.42l-1.5-1.5zM15 7h-2c-.55 0-1 .45-1 1s.45 1 1 1h2c.55 0 1-.45 1-1s-.45-1-1-1zM8 5C6.34 5 5 6.34 5 8s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm0 4c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm0 3c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1z"],"floppy-disk":["M15.71 2.29l-2-2A.997.997 0 0013 0h-1v6H4V0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V3c0-.28-.11-.53-.29-.71zM14 15H2V9c0-.55.45-1 1-1h10c.55 0 1 .45 1 1v6zM11 1H9v4h2V1z"],"flow-branch":["M10.643 6.595c.22.418.344.894.344 1.399 0 .439-.094.855-.263 1.231l3.265 3.462-.002-1.75a.973.973 0 01.314-.68.99.99 0 011.388.048c.186.2.316.46.3.715l-.009 4.03a.959.959 0 01-.3.68.972.972 0 01-.698.266l-4.053.002a.97.97 0 01-.679-.314 1.031 1.031 0 01.05-1.42.972.972 0 01.698-.266l1.7-.001-3.305-3.35a2.998 2.998 0 01-4.228-1.653H.999a1 1 0 010-2h4.166a2.998 2.998 0 014.06-1.735l3.449-3.268-1.745.002a.979.979 0 01-.631-1.692c.199-.186.459-.316.713-.3l4.025.009c.247.008.493.1.679.3.186.2.274.451.265.7l.002 4.046a.972.972 0 01-.313.68 1.03 1.03 0 01-1.42-.05.973.973 0 01-.266-.7V3.295l-3.34 3.301z"],"flow-end":["M9.702 7.31c.176.176.293.41.293.684a.976.976 0 01-.283.695c-1.888 1.91-2.892 2.918-3.011 3.027-.179.164-.42.284-.693.284a.995.995 0 01-.997-.985c0-.274.112-.541.292-.72.12-.12.624-.551 1.514-1.293H.98c-.536 0-.975-.47-.975-1.008 0-.537.439-.996.975-.996h5.837c-.895-.752-1.4-1.187-1.514-1.304a1.03 1.03 0 01-.292-.705C5.01 4.45 5.464 4 6 4c.272 0 .52.108.695.294A535.7 535.7 0 009.702 7.31zM13 11.002c-1.657 0-3-1.347-3-3.008a3.004 3.004 0 013-3.007c1.657 0 3 1.346 3 3.007a3.004 3.004 0 01-3 3.008z"],"flow-linear":["M4.16 9.002H.977C.44 9.002 0 8.532 0 7.994c0-.537.44-.99.978-.99h3.18A3.01 3.01 0 016.995 5a3.01 3.01 0 012.839 2.004h2.98c-.898-.756-1.404-1.193-1.518-1.31a1.03 1.03 0 01-.293-.705c0-.538.454-.989.992-.989.274 0 .521.108.697.294.118.124 1.122 1.13 3.014 3.016a.96.96 0 01.293.684.975.975 0 01-.284.695l-3.018 3.027a.974.974 0 01-.694.284c-.553 0-1-.447-1-.985 0-.274.117-.545.293-.72l1.518-1.293H9.833A3.01 3.01 0 016.996 11 3.01 3.01 0 014.16 9.002z"],"flow-review":["M5.175 7.004a3.003 3.003 0 012.83-2.001c1.305 0 2.416.835 2.83 2.001h1.985c-.896-.756-1.401-1.193-1.515-1.31a1.03 1.03 0 01-.292-.705c0-.538.453-.989.99-.989a.95.95 0 01.696.294c.117.124 1.12 1.13 3.008 3.016.176.176.293.41.293.684a.976.976 0 01-.283.695l-3.013 3.027a.995.995 0 01-1.691-.702c0-.273.116-.544.292-.72l1.515-1.292h-1.98a3.003 3.003 0 01-2.835 2.016A3.003 3.003 0 015.17 9.002H3.18l1.515 1.292c.176.176.292.447.292.72a.995.995 0 01-1.69.702L.282 8.69A.976.976 0 010 7.994c0-.273.117-.508.293-.684A535.858 535.858 0 003.3 4.294.95.95 0 013.997 4c.537 0 .99.45.99.989 0 .273-.12.528-.292.705-.114.117-.62.554-1.515 1.31h1.995z"],"flow-review-branch":["M10.392 10.647A3.002 3.002 0 016.16 8.995H3.37l1.338 1.318c.172.178.287.41.282.683-.01.536-.524.995-.99.995-.465 0-.63-.187-.747-.294L.281 8.682A.956.956 0 010 7.994a.971.971 0 01.294-.687l3.01-3.028a.973.973 0 01.697-.27c.536.01.998.485.989 1.021a.971.971 0 01-.295.687L3.37 6.997h2.79a3.002 3.002 0 014.106-1.716l2.416-2.277-1.732.004a.99.99 0 01-.679-.329.978.978 0 01.05-1.378c.199-.186.459-.315.714-.3l4.012.005c.248.009.493.1.68.3.185.2.273.45.264.699L15.99 6.05a.973.973 0 01-.314.679 1.03 1.03 0 01-1.421-.048.971.971 0 01-.265-.699V4.29L11.65 6.602c.219.416.343.89.343 1.394 0 .451-.1.88-.279 1.263L14 11.68l-.004-1.73a.982.982 0 01.323-.68.978.978 0 011.378.049c.187.2.316.46.3.714l-.004 4.011a.983.983 0 01-.3.691.972.972 0 01-.7.265l-4.046-.001a.987.987 0 01-.679-.326 1.017 1.017 0 01.048-1.41.972.972 0 01.699-.265h1.693l-2.315-2.35z"],flows:["M13.5 6a2.5 2.5 0 00-2.45 2h-1.3L5.74 4l-.75.75L8.25 8h-3.3a2.5 2.5 0 100 1h3.3l-3.26 3.25.75.75 4.01-4h1.3a2.5 2.5 0 102.45-3z"],"folder-close":["M-.01 14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V7h-16v7zm15-10H7.41L5.7 2.3a.965.965 0 00-.71-.3h-4c-.55 0-1 .45-1 1v3h16V5c0-.55-.45-1-1-1z"],"folder-new":["M10.165 7a3.003 3.003 0 002.827 2 3.003 3.003 0 002.827-2H16v7c0 .55-.45 1-1 1H1.01c-.55 0-1-.45-1-1V7h10.155zM8.76 6H0V3c0-.55.45-1 1-1h1.998c.28 0 .53.11.71.29L5.417 4h2.578c0 .768.29 1.469.765 2zm6.23-3c.55 0 1 .45 1 1s-.45 1-1 1h-.999v1c0 .55-.45 1-1 1-.549 0-.998-.45-.998-1V5h-1c-.55 0-1-.45-1-1s.45-1 1-1h1V2c0-.55.45-1 .999-1 .55 0 1 .45 1 1v1h.999z"],"folder-open":["M2.06 6.69c.14-.4.5-.69.94-.69h11V5c0-.55-.45-1-1-1H6.41l-1.7-1.71A.997.997 0 004 2H1c-.55 0-1 .45-1 1v9.84l2.05-6.15h.01zM16 8c0-.55-.45-1-1-1H4a.99.99 0 00-.94.69l-2 6c-.04.09-.06.2-.06.31 0 .55.45 1 1 1h11c.44 0 .81-.29.94-.69l2-6c.04-.09.06-.2.06-.31z"],"folder-shared":["M8.76 5.98c-.47-.53-.77-1.22-.77-1.99h-.58L5.7 2.29a.965.965 0 00-.71-.3h-4c-.55 0-1 .45-1 1v3h8.76l.01-.01zm6.23-2.99h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.59l-3.3 3.3a.99.99 0 00-.29.7 1.003 1.003 0 001.71.71l3.29-3.29V8c0 .55.45 1 1 1s1-.45 1-1V4c0-.56-.45-1.01-1-1.01zm-1.98 7.23l-.9.9-.01-.01c-.54.55-1.28.89-2.11.89-1.66 0-3-1.34-3-3 0-.77.3-1.47.78-2H-.01v7c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-3.18c-.31.11-.65.18-1 .18-.76-.01-1.45-.31-1.98-.78z"],"folder-shared-open":["M13.02 10.22l-.9.9-.01-.01c-.54.55-1.28.89-2.11.89-1.66 0-3-1.34-3-3 0-.77.3-1.47.78-2H4a.99.99 0 00-.94.69l-2 6c-.04.09-.06.2-.06.31 0 .55.45 1 1 1h11c.44 0 .81-.29.94-.69l1.11-3.32c-.01 0-.03.01-.05.01-.77 0-1.45-.3-1.98-.78zM2.06 6.69c.14-.4.5-.69.94-.69h5.76l.01-.01C8.3 5.46 8 4.77 8 4H6.41l-1.7-1.71A.997.997 0 004 2H1c-.55 0-1 .45-1 1v9.84l2.05-6.15h.01zM15 3h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.59l-3.3 3.29a1.003 1.003 0 001.42 1.42L14 6.41V8c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1z"],follower:["M9.37 12.69c-1.2-.53-1.04-.85-1.08-1.29-.01-.06-.01-.12-.01-.19.41-.37.75-.87.97-1.44 0 0 .01-.03.01-.04.05-.13.09-.26.12-.39.28-.06.44-.36.5-.63.06-.11.19-.39.16-.7-.04-.4-.2-.59-.38-.67v-.07c0-.52-.05-1.26-.14-1.74a2.72 2.72 0 00-.09-.43 3.02 3.02 0 00-1.04-1.51C7.87 3.2 7.15 3 6.5 3c-.64 0-1.36.2-1.87.59-.5.38-.87.92-1.05 1.51-.04.13-.07.27-.09.4-.09.49-.14 1.24-.14 1.75v.06c-.19.07-.36.26-.4.68-.03.31.1.59.16.7.06.28.23.59.51.64.04.14.08.27.13.39 0 .01.01.02.01.02v.01c.22.59.57 1.1.99 1.46 0 .06-.01.12-.01.17-.04.44.08.76-1.12 1.29-1.2.53-3.01 1.1-3.38 1.95C-.13 15.5.02 16 .02 16h12.96s.15-.5-.22-1.36c-.38-.85-2.19-1.42-3.39-1.95zm6.33-10.4l-2-2a1.003 1.003 0 00-1.42 1.42l.3.29H9.99c-.55 0-1 .45-1 1s.45 1 1 1h2.58l-.29.29a1.003 1.003 0 001.42 1.42l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],following:["M9.37 12.69c-1.2-.53-1.04-.85-1.08-1.29-.01-.06-.01-.12-.01-.19.41-.37.75-.87.97-1.44 0 0 .01-.03.01-.04.05-.13.09-.26.12-.39.28-.06.44-.36.5-.63.06-.11.19-.39.16-.7-.04-.4-.2-.59-.38-.67v-.07c0-.52-.05-1.26-.14-1.74a2.72 2.72 0 00-.09-.43 3.02 3.02 0 00-1.04-1.51C7.87 3.2 7.15 3 6.5 3c-.64 0-1.36.2-1.87.59-.5.38-.87.92-1.05 1.51-.04.13-.07.27-.09.4-.09.49-.14 1.24-.14 1.75v.06c-.19.07-.36.26-.4.68-.03.31.1.59.16.7.06.28.23.59.51.64.04.14.08.27.13.39 0 .01.01.02.01.02v.01c.22.59.57 1.1.99 1.46 0 .06-.01.12-.01.17-.04.44.08.76-1.12 1.29-1.2.53-3.01 1.1-3.38 1.95C-.13 15.5.02 16 .02 16h12.96s.15-.5-.22-1.36c-.38-.85-2.19-1.42-3.39-1.95zM14.99 2h-2.58l.29-.29A1.003 1.003 0 0011.28.29l-2 2c-.17.18-.29.43-.29.71 0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42L12.41 4h2.58c.55 0 1-.45 1-1s-.45-1-1-1z"],font:["M13.93 14.67L8.94.67h-.01C8.79.28 8.43 0 8 0s-.79.28-.93.67h-.01l-5 14h.01c-.04.1-.07.21-.07.33 0 .55.45 1 1 1 .43 0 .79-.28.93-.67h.01L5.49 11h5.02l1.55 4.34h.01c.14.38.5.66.93.66.55 0 1-.45 1-1 0-.12-.03-.23-.07-.33zM6.2 9L8 3.97 9.8 9H6.2z"],fork:["M13.7 9.29a1.003 1.003 0 00-1.42 1.42l.29.29H11.4l-5-5h6.17l-.29.29a1.003 1.003 0 001.42 1.42l2-2c.18-.18.29-.43.29-.71s-.11-.53-.29-.71l-2-2a1.003 1.003 0 00-1.42 1.42l.29.29H.99c-.55 0-1 .45-1 1s.45 1 1 1h2.59l6.71 6.71c.18.18.43.29.71.29h1.59l-.29.29a1.003 1.003 0 001.42 1.42l2-2c.18-.18.29-.43.29-.71s-.11-.53-.29-.71l-2.02-2z"],form:["M2 11v2h2v-2H2zM1 9h4c.55 0 1 .45 1 1v4c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1v-4c0-.55.45-1 1-1zm9-6h5c.55 0 1 .45 1 1s-.45 1-1 1h-5c-.55 0-1-.45-1-1s.45-1 1-1zM6 1a1.003 1.003 0 01.71 1.71l-3 4C3.53 6.89 3.28 7 3 7s-.53-.11-.71-.29l-2-2a1.003 1.003 0 011.42-1.42L3 4.59l2.29-3.3C5.47 1.11 5.72 1 6 1zm4 10h5c.55 0 1 .45 1 1s-.45 1-1 1h-5c-.55 0-1-.45-1-1s.45-1 1-1z"],"full-circle":["M8 0a8 8 0 100 16A8 8 0 108 0z"],"full-stacked-chart":["M13 12h1c.55 0 1-.45 1-1V8h-3v3c0 .55.45 1 1 1zM10 2c0-.55-.45-1-1-1H8c-.55 0-1 .45-1 1v3h3V2zm0 4H7v3h3V6zm5-4c0-.55-.45-1-1-1h-1c-.55 0-1 .45-1 1v2h3V2zm0 3h-3v2h3V5zM5 5H2v3h3V5zm-2 7h1c.55 0 1-.45 1-1V9H2v2c0 .55.45 1 1 1zm12 1H2c-.55 0-1 .45-1 1s.45 1 1 1h13c.55 0 1-.45 1-1s-.45-1-1-1zM5 2c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v2h3V2zm3 10h1c.55 0 1-.45 1-1v-1H7v1c0 .55.45 1 1 1z"],fullscreen:["M3.41 2H5c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1v4c0 .55.45 1 1 1s1-.45 1-1V3.41L5.29 6.7c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L3.41 2zM6 9c-.28 0-.53.11-.71.29L2 12.59V11c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H3.41l3.29-3.29c.19-.18.3-.43.3-.71 0-.55-.45-1-1-1zm9 1c-.55 0-1 .45-1 1v1.59L10.71 9.3A.965.965 0 0010 9a1.003 1.003 0 00-.71 1.71l3.3 3.29H11c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1zm0-10h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.59l-3.3 3.29a1.003 1.003 0 001.42 1.42L14 3.41V5c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1z"],function:["M8.12 4.74H6.98c.33-1.29.75-2.24 1.28-2.84.33-.37.64-.56.95-.56.06 0 .11.02.15.05.04.04.06.09.06.15 0 .05-.04.15-.13.29-.09.14-.13.28-.13.4 0 .18.07.33.2.46.14.13.31.19.52.19.22 0 .41-.08.56-.23.15-.16.23-.37.23-.63 0-.3-.11-.55-.34-.74C10.1 1.09 9.74 1 9.24 1c-.78 0-1.49.22-2.12.67-.64.45-1.24 1.2-1.81 2.23-.2.36-.38.59-.56.69-.18.1-.46.15-.85.15l-.26.9h1.08l-1.59 6.12c-.27 1.01-.44 1.63-.54 1.86-.14.34-.34.63-.62.87-.11.1-.24.15-.4.15a.15.15 0 01-.11-.04l-.04-.05c0-.03.04-.08.12-.16.08-.08.12-.2.12-.36 0-.18-.06-.33-.19-.44-.12-.12-.3-.18-.54-.18-.28 0-.51.08-.68.23-.16.14-.25.32-.25.53 0 .22.1.42.31.59.21.17.53.25.97.25.7 0 1.32-.18 1.87-.54.54-.36 1.02-.92 1.42-1.67.41-.75.82-1.96 1.25-3.63l.91-3.54h1.1l.29-.89zm5.43 1.52c.2-.15.41-.23.62-.23.08 0 .23.03.45.09s.41.09.57.09c.23 0 .42-.08.57-.23.16-.16.24-.36.24-.61 0-.26-.08-.47-.23-.62-.15-.15-.37-.23-.66-.23-.25 0-.5.06-.72.18-.23.12-.51.38-.86.78-.26.3-.64.81-1.15 1.55-.2-.91-.55-1.75-1.05-2.51l-2.72.46-.06.29c.2-.04.37-.06.51-.06.27 0 .49.11.67.34.28.36.67 1.45 1.17 3.26-.39.52-.66.85-.8 1.01-.24.26-.44.42-.59.5-.12.06-.25.09-.41.09-.11 0-.3-.06-.56-.18-.18-.08-.34-.12-.48-.12-.27 0-.48.08-.66.25-.17.17-.26.38-.26.64 0 .25.08.44.24.6.16.15.37.23.64.23.26 0 .5-.05.73-.16.23-.11.52-.34.86-.69.35-.35.82-.9 1.43-1.67.23.73.44 1.25.61 1.58s.37.57.59.71c.22.15.5.22.83.22.32 0 .65-.11.98-.34.44-.3.88-.81 1.34-1.53l-.26-.15c-.31.43-.54.7-.69.8-.1.07-.22.1-.35.1-.16 0-.32-.1-.48-.3-.27-.34-.62-1.27-1.06-2.8.4-.68.73-1.13 1-1.34z"],"gantt-chart":["M10 10c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1h-4c-.55 0-1 .45-1 1zM6 7c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H7c-.55 0-1 .45-1 1zm9 5H2V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM4 5h3c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1z"],geofence:["M6 9c.55 0 1 .45 1 1v4c0 .55-.45 1-1 1s-1-.45-1-1v-1.59l-3.29 3.3A1.003 1.003 0 010 15c0-.28.11-.53.3-.71L3.59 11H2c-.55 0-1-.45-1-1s.45-1 1-1zM9.088.004l.097.013.097.024.057.018.1.042.054.029.095.061.052.04 6 5 .05.046.076.08.053.07.06.095.051.11c.056.141.079.294.067.446l-.014.105-.037.143-.035.087-.043.083-4 7-.034.056-.059.08-.038.044-.096.092-.114.082-.116.062-.086.034-.109.03-.1.017-.069.006H8.83c.088-.25.144-.515.163-.79L9 13v-3a3 3 0 00-2.824-2.995L6 7H3c-.351 0-.689.06-1.002.171L2 5l.002-.07.013-.1.015-.073.025-.085.043-.104.056-.101.045-.066.079-.093.084-.078.083-.062 6-4 .07-.043.12-.056.111-.036.108-.022.083-.01h.031c.046-.002.083 0 .12.003z"],geolocation:["M-.01 6.66l7.34 2 2 7.33 6.66-16z"],geosearch:["M8.82 12.4h.66c.23 0 .36-.17.36-.4v-1.48l.19-.18c-.27.03-.55.06-.83.06-.28 0-.56-.03-.84-.07.02.04.05.08.07.13V12c0 .23.15.4.39.4zM6.4 15.1A5.51 5.51 0 01.9 9.6c0-.49.06-.98.18-1.43.03 0 .05-.01.08-.01h.08v.44c0 .19.17.34.36.34.03 0 .07-.01.1-.01l.71.7c.07.07.19.07.26 0s.07-.19 0-.26l-.7-.72c0-.02.03-.03.03-.05v-.11c0-.15.08-.2.23-.33h.42c.08 0 .15-.01.22-.04h.02c.02-.02.03-.02.04-.04.01-.01.01-.01.02-.01l.02-.01.9-.9c-.13-.26-.24-.52-.34-.8h-.5v-.43c0-.01.05.05.04-.08h.31c-.03-.13-.06-.26-.08-.39h-.57c.16-.12.34-.24.51-.36-.02-.23-.04-.46-.04-.7 0-.12.01-.23.02-.34A6.385 6.385 0 000 9.6C0 13.13 2.87 16 6.4 16c3.1 0 5.67-2.22 6.26-5.15l-.78-.88c-.21 2.85-2.58 5.13-5.48 5.13zm-1.7-2.93v-.28h.12c.23 0 .39-.19.39-.42v-.54s.01-.01 0-.01L3.77 9.45h-.62c-.23 0-.38.19-.38.42v1.6c0 .23.14.42.38.42h.26v1.61c0 .23.22.41.45.41s.45-.18.45-.41v-.97H4.3c.24 0 .4-.13.4-.36zm11.07-2.34l-2.94-2.94c.11-.17.21-.34.3-.52.01-.03.03-.06.04-.09.08-.18.16-.36.22-.55v-.01c.06-.19.1-.38.14-.58.01-.05.01-.09.02-.14.03-.2.05-.4.05-.61a4.4 4.4 0 00-4.4-4.4C6.77 0 4.8 1.97 4.8 4.4s1.97 4.4 4.4 4.4c.21 0 .41-.02.61-.05.04 0 .09-.01.14-.02.2-.03.39-.08.58-.14h.01c.19-.06.37-.14.55-.22.03-.01.06-.03.09-.04.18-.09.35-.19.52-.3l2.94 2.94a.8.8 0 00.57.23c.44 0 .8-.36.8-.8a.895.895 0 00-.24-.57zM9.2 7.6C7.43 7.6 6 6.17 6 4.4c0-1.77 1.43-3.2 3.2-3.2s3.2 1.43 3.2 3.2c0 1.77-1.43 3.2-3.2 3.2zm1.54 4.26v-.52c0-.09-.1-.17-.19-.17s-.19.07-.19.17v.52c0 .09.1.17.19.17s.19-.07.19-.17z"],"git-branch":["M12 1c-1.66 0-3 1.34-3 3 0 1.25.76 2.32 1.85 2.77A2.02 2.02 0 019 8H7c-.73 0-1.41.2-2 .55V5.82C6.16 5.4 7 4.3 7 3c0-1.66-1.34-3-3-3S1 1.34 1 3c0 1.3.84 2.4 2 2.82v4.37c-1.16.4-2 1.51-2 2.81 0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.04-.53-1.95-1.32-2.49.35-.31.81-.51 1.32-.51h2c1.92 0 3.52-1.35 3.91-3.15A2.996 2.996 0 0012 1zM4 2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 12c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm8-9c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-commit":["M15 7h-3.14c-.45-1.72-2-3-3.86-3S4.59 5.28 4.14 7H1c-.55 0-1 .45-1 1s.45 1 1 1h3.14c.45 1.72 2 3 3.86 3s3.41-1.28 3.86-3H15c.55 0 1-.45 1-1s-.45-1-1-1zm-7 3c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"],"git-merge":["M12 6c-1.3 0-2.4.84-2.82 2H9c-1.62 0-3-.96-3.63-2.34C6.33 5.16 7 4.16 7 3c0-1.66-1.34-3-3-3S1 1.34 1 3c0 1.3.84 2.4 2 2.81v4.37C1.84 10.6 1 11.7 1 13c0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.3-.84-2.4-2-2.82V8.43A5.89 5.89 0 009 10h.18A2.996 2.996 0 0015 9c0-1.66-1.34-3-3-3zm-8 8c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zM4 4c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm8 6c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-new-branch":["M14 2h-1V1c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1V4h1c.55 0 1-.45 1-1s-.45-1-1-1zm-3.18 4.8C10.51 7.51 9.82 8 9 8H7c-.73 0-1.41.2-2 .55V5.82C6.16 5.4 7 4.3 7 3c0-1.66-1.34-3-3-3S1 1.34 1 3c0 1.3.84 2.4 2 2.82v4.37c-1.16.4-2 1.51-2 2.81 0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.04-.53-1.95-1.32-2.49.35-.31.81-.51 1.32-.51h2c1.9 0 3.49-1.33 3.89-3.11-.29.07-.58.11-.89.11-.41 0-.8-.08-1.18-.2zM4 2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 12c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-pull":["M3 1C1.34 1 0 2.34 0 4c0 1.3.84 2.4 2 2.82v3.37C.84 10.6 0 11.7 0 13c0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.3-.84-2.4-2-2.82V6.82C5.16 6.4 6 5.3 6 4c0-1.66-1.34-3-3-3zm0 13c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm0-9c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm11 5.18V6c0-1.66-1.34-3-3-3H9.41l1.29-1.29c.19-.18.3-.43.3-.71A1.003 1.003 0 009.29.29l-3 3C6.11 3.47 6 3.72 6 4c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L9.41 5H11c.55 0 1 .45 1 1v4.18A2.996 2.996 0 0013 16c1.66 0 3-1.34 3-3 0-1.3-.84-2.4-2-2.82zM13 14c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-push":["M4 6h1V5H4v1zm9 3c0-.28-.11-.53-.29-.71l-3-3C9.53 5.11 9.28 5 9 5s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42L8 8.41V15c0 .55.45 1 1 1s1-.45 1-1V8.41l1.29 1.29c.18.19.43.3.71.3.55 0 1-.45 1-1zM5 3H4v1h1V3zm10-3H1C.45 0 0 .45 0 1v13c0 .55.45 1 1 1h5v-2H2v-1h4v-1H3V2h11v9h-2v1h2v1h-2v2h3c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],"git-repo":["M5 9H4v1h1V9zm10-9H1C.45 0 0 .45 0 1v13c0 .55.45 1 1 1h3v1l2-1 2 1v-1h7c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM4 13H2v-1h2v1zm10 0H8v-1h6v1zm0-2H3V2h11v9zM5 3H4v1h1V3zm0 4H4v1h1V7zm0-2H4v1h1V5z"],glass:["M2 0v4c0 2.97 2.16 5.43 5 5.91V14H5c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1H9V9.91c2.84-.48 5-2.94 5-5.91V0H2z"],globe:["M4.45 7.83c-.26 0-.41.21-.41.46v1.75c0 .26.16.46.41.46h.29v1.77c0 .25.24.45.49.45s.49-.2.49-.45V11.2h-.01c.26 0 .44-.14.44-.4v-.3h.14c.26 0 .43-.2.43-.46v-.59s.01-.01 0-.01l-1.58-1.6h-.69zM8.51 3.9h.22c.06 0 .12-.01.12-.07 0-.06-.05-.07-.12-.07h-.22c-.06 0-.12.01-.12.07.01.06.06.07.12.07zm-2.33-.05c.07-.07.07-.19 0-.26l-.5-.5a.187.187 0 00-.26 0c-.07.07-.07.19 0 .26l.5.5c.07.07.19.07.26 0zm3.06.89c.07 0 .14-.06.14-.12v-.31c0-.07-.07-.12-.14-.12s-.14.06-.14.12v.31c0 .07.07.12.14.12zM8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6 0-.55.1-1.07.23-1.57h.11v.47c0 .2.18.37.39.37.03 0 .08-.01.11-.02l.78.77c.08.08.2.08.28 0 .08-.08.08-.2 0-.28l-.75-.78c0-.02.04-.04.04-.06v-.12c0-.16.09-.22.25-.36h.46c.09 0 .17-.01.24-.05h.02c.02-.01.03-.02.05-.03.01-.01.01-.01.02-.01l.02-.02 1.59-1.58c.18-.18.18-.46 0-.64s-.47-.15-.65.03l-.3.34h-.57v-.48c0-.01.05.05.05-.09h.64c.12 0 .22-.09.22-.21s-.1-.21-.22-.21H4.1c.18-.15.34-.31.54-.44l.01-.01c.21-.14.45-.25.68-.37.15-.07.29-.15.44-.21.17-.07.35-.11.53-.17.18-.05.35-.12.53-.16a6.05 6.05 0 013.47.35c.05.02.1.05.16.08.25.11.48.24.71.39.25.16.49.34.71.55H10.6s0-.03-.01-.03c-.04 0-.09 0-.13.03l-.51.51a.17.17 0 000 .23c.06.06.17.06.23 0l.42-.44.01-.02h.25c0 .14-.07.09-.07.12v.07c0 .22-.15.37-.36.37h-.38c-.19 0-.38.21-.38.4v.17h-.1c-.12 0-.2.06-.2.18v.25h-.23c-.17 0-.3.11-.3.28 0 .17.13.26.3.26.07 0 .14.03.19-.11l.04.01.49-.46h.17l.39.37c.03.03.08.02.12-.01.03-.03.03-.12 0-.15l-.32-.35h.23l.09.12c.18.18.48.17.66-.01l.09-.1h.4c.02 0 .08.05.08.05v.24l-.05-.01h-.36c-.11 0-.21.1-.21.21 0 .11.09.21.21.21h.41v.15c-.14.21-.24.42-.45.42h-.94v-.01l-.44-.44a.47.47 0 00-.66 0l-.42.43v.01H8.6c-.26 0-.49.21-.49.46v.92c0 .26.23.45.49.45h.9c.34.14.57.35.72.69v1.68c0 .26.17.44.42.44h.72c.26 0 .4-.18.4-.44V9l.89-.86.03-.02.02-.01h.03c.07-.08.15-.19.15-.31v-.91c0-.18-.16-.32-.31-.46H13c.01.28.21.42.46.42h.42c.08.37.12.76.12 1.15 0 3.31-2.69 6-6 6zm4.54-4.27c-.1 0-.21.08-.21.18v.57c0 .1.11.18.21.18.1 0 .21-.08.21-.18v-.57c0-.1-.11-.18-.21-.18zM8.37 3.19c0-.25-.2-.42-.46-.42h-.54c-.25 0-.42.18-.42.43 0 .03-.1.04.05.08v.47c0 .15.06.27.21.27s.21-.12.21-.27v-.14h.5c.24 0 .45-.16.45-.42z"],"globe-network":["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm5.17 5h-2.44c-.21-1.11-.51-2.03-.91-2.69 1.43.46 2.61 1.43 3.35 2.69zM10 8c0 .73-.05 1.39-.12 2H6.12C6.05 9.39 6 8.73 6 8s.05-1.39.12-2h3.76c.07.61.12 1.27.12 2zM8 2c.67 0 1.36 1.1 1.73 3H6.27C6.64 3.1 7.33 2 8 2zm-1.82.31c-.4.66-.71 1.58-.91 2.69H2.83a6.025 6.025 0 013.35-2.69zM2 8c0-.7.13-1.37.35-2h2.76C5.04 6.62 5 7.28 5 8s.04 1.38.11 2H2.35C2.13 9.37 2 8.7 2 8zm.83 3h2.44c.21 1.11.51 2.03.91 2.69A6.025 6.025 0 012.83 11zM8 14c-.67 0-1.36-1.1-1.73-3h3.46c-.37 1.9-1.06 3-1.73 3zm1.82-.31c.4-.66.7-1.58.91-2.69h2.44a6.025 6.025 0 01-3.35 2.69zM13.65 10h-2.76c.07-.62.11-1.28.11-2s-.04-1.38-.11-2h2.76c.22.63.35 1.3.35 2s-.13 1.37-.35 2z"],graph:["M14 3c-1.06 0-1.92.83-1.99 1.88l-1.93.97A2.95 2.95 0 008 5c-.56 0-1.08.16-1.52.43L3.97 3.34C3.98 3.23 4 3.12 4 3c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2c.24 0 .47-.05.68-.13l2.51 2.09C5.08 7.29 5 7.63 5 8c0 .96.46 1.81 1.16 2.35l-.56 1.69c-.91.19-1.6.99-1.6 1.96 0 1.1.9 2 2 2s2-.9 2-2c0-.51-.2-.97-.51-1.32l.56-1.69A2.99 2.99 0 0011 8c0-.12-.02-.24-.04-.36l1.94-.97c.32.21.69.33 1.1.33 1.1 0 2-.9 2-2s-.9-2-2-2z"],"graph-remove":["M12.89 8.11l-.01.01-.38-.38-.38.38-.02-.02c-.54.55-1.27.9-2.1.9-1.66 0-3-1.34-3-3 0-.83.35-1.56.9-2.1l-.02-.02.38-.38-.38-.38.01-.01C7.35 2.57 7 1.83 7 1c0-.34.07-.65.17-.96A8.004 8.004 0 000 8c0 4.42 3.58 8 8 8 4.14 0 7.54-3.14 7.96-7.17-.31.1-.62.17-.96.17-.83 0-1.57-.35-2.11-.89zm1.02-4.61l1.79-1.79c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-1.79 1.8L10.71.3A.965.965 0 0010 0a1.003 1.003 0 00-.71 1.71l1.79 1.79-1.79 1.79a1.003 1.003 0 001.42 1.42l1.79-1.79 1.79 1.79a1.003 1.003 0 001.42-1.42l-1.8-1.79z"],"greater-than":["M2.713 5.958a1 1 0 01.574-1.916l10 3c.95.285.95 1.63 0 1.916l-10 3a1 1 0 01-.574-1.916L9.52 8 2.713 5.958z"],"greater-than-or-equal-to":["M2.713 3.958a1 1 0 01.574-1.916l10 3c.95.285.95 1.63 0 1.916l-10 3a1 1 0 01-.574-1.916L9.52 6 2.713 3.958zM3 12h10a1 1 0 010 2H3a1 1 0 010-2z"],grid:["M15 9c.55 0 1-.45 1-1s-.45-1-1-1h-1V4h1c.55 0 1-.45 1-1s-.45-1-1-1h-1V1c0-.55-.45-1-1-1s-1 .45-1 1v1H9V1c0-.55-.45-1-1-1S7 .45 7 1v1H4V1c0-.55-.45-1-1-1S2 .45 2 1v1H1c-.55 0-1 .45-1 1s.45 1 1 1h1v3H1c-.55 0-1 .45-1 1s.45 1 1 1h1v3H1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1v-1h3v1c0 .55.45 1 1 1s1-.45 1-1v-1h3v1c0 .55.45 1 1 1s1-.45 1-1v-1h1c.55 0 1-.45 1-1s-.45-1-1-1h-1V9h1zm-8 3H4V9h3v3zm0-5H4V4h3v3zm5 5H9V9h3v3zm0-5H9V4h3v3z"],"grid-view":["M0 1v6h7V0H1C.45 0 0 .45 0 1zm0 14c0 .55.45 1 1 1h6V9H0v6zM15 0H9v7h7V1c0-.55-.45-1-1-1zM9 16h6c.55 0 1-.45 1-1V9H9v7z"],"group-objects":["M5 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6-3H5C2.24 3 0 5.24 0 8s2.24 5 5 5h6c2.76 0 5-2.24 5-5s-2.24-5-5-5zm0 9H5c-2.21 0-4-1.79-4-4s1.79-4 4-4h6c2.21 0 4 1.79 4 4s-1.79 4-4 4zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],"grouped-bar-chart":["M10 12c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1s-1 .45-1 1v8c0 .55.45 1 1 1zm3 0c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1s-1 .45-1 1v5c0 .55.45 1 1 1zm2 1H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm-9-1c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1s-1 .45-1 1v3c0 .55.45 1 1 1zm-3 0c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1v9c0 .55.45 1 1 1z"],hand:["M15 5c0-.55-.45-1-1-1-.41 0-.76.24-.91.59v.01s0 .01-.01.01L11.57 8h-.36l.78-4.84C12 3.11 12 3.05 12 3a1 1 0 00-1.99-.16v.01L9.18 8H9V1c0-.55-.45-1-1-1S7 .45 7 1v7h-.09l-.93-5.18A1 1 0 005 2c-.55 0-1 .45-1 1 0 .05 0 .11.01.16L5.26 11h-.04L2.83 7.44C2.65 7.18 2.35 7 2 7c-.55 0-1 .45-1 1 0 .17.04.33.12.47l3 5.69h.01v.01A5.002 5.002 0 0013 11v-.59l1.93-5.05c.05-.11.07-.23.07-.36z"],"hand-down":["M14.72 7.87c-1.54-.67-2.99-2.68-3.7-3.95C10.11 1.95 9.93 0 6.14 0 4.05 0 2.71.61 1.92 2.12 1.27 3.36 1 5.21 1 7.83v.79c0 .65.6 1.18 1.35 1.18.34 0 .64-.11.88-.29.17.48.68.84 1.29.84.41 0 .78-.16 1.03-.42.23.37.67.63 1.19.63.57 0 1.05-.31 1.25-.74l.01.63v4.05c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5V7.9c.58.41 1.55 1.21 2.47 1.29 1.57.14 1.82-1.07 1.25-1.32z"],"hand-left":["M12.08 4.97c-1.26-.71-3.27-2.15-3.95-3.7C7.88.7 6.67.96 6.81 2.52c.09.93.89 1.9 1.3 2.48H1.5C.67 5 0 5.67 0 6.5S.67 8 1.5 8h4.05l.63.01c-.44.2-.75.69-.75 1.25 0 .52.26.96.63 1.19-.26.25-.42.61-.42 1.03 0 .61.35 1.12.84 1.29-.18.24-.29.54-.29.88 0 .75.54 1.35 1.19 1.35h.79c2.62 0 4.47-.28 5.71-.92 1.51-.79 2.12-2.14 2.12-4.22 0-3.79-1.95-3.97-3.92-4.89z"],"hand-right":["M14.5 5H7.89c.41-.58 1.21-1.55 1.3-2.47C9.34.97 8.12.71 7.87 1.28c-.67 1.54-2.68 2.99-3.95 3.7C1.95 5.89 0 6.07 0 9.86c0 2.09.61 3.43 2.12 4.22 1.24.65 3.09.92 5.71.92h.79c.65 0 1.18-.6 1.18-1.35 0-.34-.11-.64-.29-.88.48-.17.84-.68.84-1.29 0-.41-.16-.78-.42-1.03.37-.23.63-.67.63-1.19 0-.57-.31-1.05-.74-1.25l.63-.01h4.05c.83 0 1.5-.67 1.5-1.5S15.33 5 14.5 5z"],"hand-up":["M13.65 6.19c-.34 0-.64.11-.88.29-.17-.48-.68-.84-1.29-.84-.41 0-.78.16-1.03.42-.23-.37-.67-.63-1.19-.63-.57 0-1.05.31-1.25.74L8 5.55V1.5C8 .67 7.33 0 6.5 0S5 .67 5 1.5v6.61c-.58-.41-1.55-1.21-2.48-1.3C.96 6.67.7 7.88 1.28 8.13c1.54.67 2.99 2.68 3.7 3.95C5.89 14.05 6.07 16 9.86 16c2.09 0 3.43-.61 4.22-2.12.64-1.24.92-3.09.92-5.71v-.79c0-.65-.6-1.19-1.35-1.19z"],hat:["M15 10c.495 0 .933.379.993.882L16 11v.505c0 1.461-3.524 2.45-7.707 2.493L8 14c-4.31 0-8-1-8-2.495V11c0-.561.466-1 1-1 .895 0 3 1 7 1l.381-.003C12.135 10.937 14.134 10 15 10zm-4-8c1.13 0 2.02 2.153 2.671 6.46-1.063.266-2.644.652-4.887.727l-.403.01L8 9.2c-2.664 0-4.488-.444-5.673-.74C2.98 4.153 3.87 2 5 2c2 0 1.329 2 3 2s1-2 3-2z"],header:["M13 1c-.55 0-1 .45-1 1v5H4V2c0-.55-.45-1-1-1s-1 .45-1 1v12c0 .55.45 1 1 1s1-.45 1-1V9h8v5c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1z"],"header-one":["M14.06 8c-.04.23-.12.44-.25.61-.13.17-.29.3-.48.41-.18.11-.39.18-.62.23-.23.04-.46.07-.71.07v1.03h1.74V16H15V8h-.94zM7 0c-.56 0-1 .45-1 1v4H2V1c0-.55-.45-1-1-1-.56 0-1 .45-1 1v10c0 .55.45 1 1 1 .56 0 1-.45 1-1V7h4v4c0 .55.45 1 1 1 .56 0 1-.45 1-1V1c0-.54-.45-1-1-1z"],"header-two":["M13.17 13.93c-.17.15-.33.29-.46.44-.13.16-.22.32-.27.49h3.55V16H11c.01-.65.16-1.22.44-1.71s.67-.91 1.17-1.27c.24-.18.49-.36.75-.54.25-.18.49-.36.71-.57.21-.2.39-.42.53-.65.14-.24.21-.51.22-.82 0-.14-.02-.29-.05-.45-.03-.16-.09-.31-.18-.45a1.13 1.13 0 00-.37-.35c-.16-.09-.37-.14-.63-.14-.24 0-.43.05-.59.15-.16.1-.29.24-.38.42-.1.17-.17.38-.21.62-.05.24-.07.5-.08.77h-1.19c0-.43.05-.83.16-1.2s.27-.69.49-.96c.21-.25.48-.46.79-.62.31-.15.67-.23 1.07-.23.45 0 .82.08 1.11.23.3.16.55.36.73.6.19.24.32.5.39.79.08.28.12.54.12.79 0 .31-.04.6-.13.85s-.22.49-.37.7c-.15.21-.32.41-.52.59s-.4.35-.61.51l-.63.45c-.21.14-.39.28-.57.42zM0 1c0-.55.44-1 1-1 .55 0 1 .46 1 1v10c0 .55-.44 1-1 1-.55 0-1-.46-1-1V1zm6 0c0-.55.44-1 1-1 .55 0 1 .46 1 1v10c0 .55-.44 1-1 1-.55 0-1-.46-1-1V1zM2 5h4v2H2V5z"],headset:["M14.85 6.34C14.18 2.72 11.37 0 8 0S1.82 2.72 1.15 6.34C.47 6.9 0 8.1 0 9.5 0 11.43.9 13 2 13c0 1.1.9 2 2 2h2c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1H7c-.55 0-1 .45-1 1H4c-.55 0-1-.45-1-1 .55 0 1-.45 1-1V7c0-.45-.3-.81-.71-.94C3.97 3.7 5.81 2 8 2s4.03 1.7 4.71 4.06c-.41.13-.71.49-.71.94v5c0 .55.45 1 1 1h1c1.1 0 2-1.57 2-3.5 0-1.4-.47-2.6-1.15-3.16z"],heart:["M16 5.095c0-2.255-1.88-4.083-4.2-4.083-1.682 0-3.13.964-3.8 2.352a4.206 4.206 0 00-3.8-2.352C1.88 1.012 0 2.84 0 5.095c0 .066.007.13.01.194H.004c.001.047.01.096.014.143l.013.142c.07.8.321 1.663.824 2.573C2.073 10.354 4.232 12.018 8 15c3.767-2.982 5.926-4.647 7.144-6.854.501-.905.752-1.766.823-2.562.007-.055.012-.11.016-.164.003-.043.012-.088.013-.13h-.006c.003-.066.01-.13.01-.195z"],"heart-broken":["M7.71 8.87L6.17 6.55l.02-.01A.906.906 0 016 6c0-.07.03-.13.04-.19h-.02l.78-3.92C6.09 1.34 5.19 1 4.2 1 1.88 1 0 2.83 0 5.09c0 .07.01.13.01.19H0c0 .05.01.1.01.14 0 .05.01.1.01.14.07.8.32 1.66.82 2.57 1.07 1.94 2.88 3.47 5.86 5.84l-.68-2.74h.02C6.03 11.16 6 11.08 6 11c0-.28.11-.53.29-.71l1.42-1.42zM16 5.09C16 2.83 14.12 1 11.8 1c-1.2 0-2.27.5-3.04 1.28l-.7 3.51 1.77 2.66-.01.01c.1.15.18.33.18.54 0 .28-.11.53-.29.71l-1.6 1.6.75 3.01c3.23-2.56 5.16-4.15 6.28-6.18.5-.91.75-1.77.82-2.56.01-.05.01-.11.02-.16 0-.04.01-.09.01-.13h-.01c.01-.07.02-.14.02-.2z"],"heat-grid":["M0 10h5V7H0v3zm1-2h3v1H1V8zm14-5h-4v3h5V4c0-.55-.45-1-1-1zm0 2h-3V4h3v1zM0 4v2h5V3H1c-.55 0-1 .45-1 1zm0 9c0 .55.45 1 1 1h4v-3H0v2zm6-7h4V3H6v3zm0 8h4v-3H6v3zm1-2h2v1H7v-1zm4 2h4c.55 0 1-.45 1-1v-2h-5v3zm0-4h5V7h-5v3zm-5 0h4V7H6v3z"],heatmap:["M2 11c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm11-7c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm3 4.5A2.5 2.5 0 0013.5 6c-.98 0-1.82.57-2.23 1.39-.6-.78-1.51-1.3-2.56-1.36.18-.49.29-.99.29-1.53C9 2.01 6.99 0 4.5 0S0 2.01 0 4.5 2.01 9 4.5 9c.19 0 .37-.03.56-.06-.03.19-.06.37-.06.56C5 11.43 6.57 13 8.5 13c1.63 0 2.98-1.11 3.37-2.62.44.38 1 .62 1.63.62A2.5 2.5 0 0016 8.5zM14.5 13c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z"],help:["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm1 13H7v-2h2v2zm1.93-6.52c-.14.32-.35.64-.62.97L9.25 8.83c-.12.15-.24.29-.28.42-.04.13-.09.3-.09.52V10H7.12V8.88s.05-.51.21-.71L8.4 6.73c.22-.26.35-.49.44-.68.09-.19.12-.38.12-.58 0-.3-.1-.55-.28-.75-.18-.19-.44-.28-.76-.28-.33 0-.59.1-.78.29-.19.19-.33.46-.4.81-.03.11-.1.15-.2.14l-1.7-.25c-.12-.01-.16-.08-.14-.19.12-.82.46-1.47 1.03-1.94.57-.48 1.32-.72 2.25-.72.47 0 .9.07 1.29.22s.72.34 1 .59c.28.25.49.55.65.89.15.35.22.72.22 1.12s-.07.75-.21 1.08z"],"helper-management":["M13 5h-2v2h2V5zm0 6h-2v2h2v-2zm0-3h-2v2h2V8zm2-8H1C.4 0 0 .4 0 1v14c0 .6.4 1 1 1h14c.6 0 1-.4 1-1V1c0-.6-.4-1-1-1zm-1 14H2V2h12v12zm-7-3H5v2h2v-2zm3 0H8v2h2v-2z"],"high-priority":["M9 14v2H7v-2h2zm1-14L9 12H7L6 0h4z"],highlight:["M9.12 11.07l2-2.02.71.71 4-4.04L10.17 0l-4 4.04.71.71-2 2.02 4.24 4.3zM2 12.97h4c.28 0 .53-.11.71-.3l1-1.01-3.42-3.45-3 3.03c-.18.18-.29.44-.29.72 0 .55.45 1.01 1 1.01zm13 1.01H1c-.55 0-1 .45-1 1.01S.45 16 1 16h14c.55 0 1-.45 1-1.01s-.45-1.01-1-1.01z"],history:["M8 3c-.55 0-1 .45-1 1v4c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42L9 7.59V4c0-.55-.45-1-1-1zm0-3a7.95 7.95 0 00-6 2.74V1c0-.55-.45-1-1-1S0 .45 0 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H3.54C4.64 2.78 6.23 2 8 2c3.31 0 6 2.69 6 6 0 2.61-1.67 4.81-4 5.63v-.01c-.63.23-1.29.38-2 .38-3.31 0-6-2.69-6-6 0-.55-.45-1-1-1s-1 .45-1 1c0 4.42 3.58 8 8 8 .34 0 .67-.03 1-.07.02 0 .04-.01.06-.01C12.98 15.4 16 12.06 16 8c0-4.42-3.58-8-8-8z"],home:["M2 10v5c0 .55.45 1 1 1h3v-5h4v5h3c.55 0 1-.45 1-1v-5L8 4l-6 6zm13.71-2.71L14 5.59V2c0-.55-.45-1-1-1s-1 .45-1 1v1.59L8.71.29C8.53.11 8.28 0 8 0s-.53.11-.71.29l-7 7a1.003 1.003 0 001.42 1.42L8 2.41l6.29 6.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],"horizontal-bar-chart":["M4 5h7c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zM1 1c-.55 0-1 .45-1 1v13c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1zm14 6H4c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h11c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm-6 5H4c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1z"],"horizontal-bar-chart-asc":["M1 3h5c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm0 4h7c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm14 6H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM1 11h10c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1z"],"horizontal-bar-chart-desc":["M15 1H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM8 9H1c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1zm-2 4H1c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1zm5-8H1c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1z"],"horizontal-distribution":["M2 0c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm13 0c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm-5 2H7c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1z"],"id-number":["M2 5v7h12V5H2zm0-2h12c1.1 0 2 .9 2 2v7c0 1.1-.9 2-2 2H2c-1.1 0-2-.9-2-2V5c0-1.1.9-2 2-2z","M7.9 10.48c-.14-.33-.84-.55-1.3-.75-.46-.2-.4-.33-.42-.5v-.07c.16-.14.29-.33.37-.56 0 0 0-.01.01-.02.02-.05.03-.1.05-.15.1-.01.16-.13.19-.23.03-.04.07-.15.06-.27-.02-.16-.08-.24-.15-.26v-.03c0-.2-.02-.48-.05-.67-.01-.05-.02-.1-.03-.16-.07-.23-.21-.44-.4-.58-.2-.15-.48-.23-.73-.23s-.53.08-.72.23c-.19.14-.33.35-.4.58-.02.05-.03.1-.03.16-.05.18-.06.47-.06.67v.03c-.07.03-.14.1-.15.26-.02.12.03.22.06.27.02.1.09.22.2.24.01.05.03.1.05.15v.01c.08.23.22.42.38.56v.07c-.02.17.03.29-.43.5-.46.2-1.16.42-1.3.75s-.09.52-.09.52H8c-.01 0 .05-.19-.1-.52zM10 6h2c.55 0 1 .45 1 1s-.45 1-1 1h-2c-.55 0-1-.45-1-1s.45-1 1-1zM10 9h2c.55 0 1 .45 1 1s-.45 1-1 1h-2c-.55 0-1-.45-1-1s.45-1 1-1z"],"image-rotate-left":["M13 2h-1.59l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2C8.11 2.47 8 2.72 8 3c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H13c.55 0 1 .45 1 1v3c0 .55.45 1 1 1s1-.45 1-1V5c0-1.66-1.34-3-3-3zm-5.5 9c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zM10 7H1c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm-1 6.33L7 12l-1 1-2-3-2 2.67V9h7v4.33z"],"image-rotate-right":["M5.71 5.71l2-2C7.89 3.53 8 3.28 8 3c0-.28-.11-.53-.29-.71l-2-2a1.003 1.003 0 00-1.42 1.42l.3.29H3C1.34 2 0 3.34 0 5v3c0 .55.45 1 1 1s1-.45 1-1V5c0-.55.45-1 1-1h1.59l-.3.29a1.003 1.003 0 001.42 1.42zM12.5 11c.28 0 .5-.22.5-.5s-.22-.5-.5-.5-.5.22-.5.5.22.5.5.5zM15 7H6c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm-1 6.33L12 12l-1 1-2-3-2 2.67V9h7v4.33z"],import:["M7.29 11.71c.18.18.43.29.71.29s.53-.11.71-.29l4-4a1.003 1.003 0 00-1.42-1.42L9 8.59V1c0-.55-.45-1-1-1S7 .45 7 1v7.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l4 4zM15 11c-.55 0-1 .45-1 1v2H2v-2c0-.55-.45-1-1-1s-1 .45-1 1v3c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1z"],inbox:["M13.91 2.6c-.16-.36-.51-.61-.92-.61h-10c-.41 0-.77.25-.92.61L-.01 7.45v5.54c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V7.45L13.91 2.6zm-1.92 5.39c-.55 0-1 .45-1 1v1h-6v-1c0-.55-.45-1-1-1H1.94l1.71-4h8.68l1.71 4h-2.05z"],"inbox-filtered":["M6.432 2c.094.14.202.273.324.394L8.42 4H3.66L1.95 8H4c.55 0 1 .45 1 1v1h6.557c.693 0 1.363-.262 1.837-.736l.103-.102.85-1.14a2.564 2.564 0 00.623-1.682V5.058L16 7.46V13c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V7.46l2.08-4.85C2.23 2.25 2.59 2 3 2h3.432zm9.048-2c.31 0 .52.26.52.57 0 .16-.06.3-.17.41l-2.86 2.73v2.63c0 .16-.06.3-.17.41l-.82 1.1c-.1.1-.25.17-.41.17-.31 0-.57-.26-.57-.57V3.71L8.17.98A.566.566 0 018 .57c0-.31.26-.57.57-.57h6.91z"],"inbox-geo":["M6.341 2A5.99 5.99 0 006 4H3.66L1.95 8H4c.55 0 1 .45 1 1v1h7a5.978 5.978 0 004-1.528V13c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V7.46l2.08-4.85C2.23 2.25 2.59 2 3 2h3.341zm3.679 2.145c0-.125.075-.23.205-.225h.345l.79.8c.005 0 0 .005 0 .005v.295c0 .13-.085.23-.215.23h-.07v.15c0 .13-.09.2-.215.2v.535c0 .125-.12.225-.245.225s-.245-.1-.245-.225V5.25h-.145c-.125 0-.205-.1-.205-.23v-.875zm2.235-2.195c-.03 0-.055-.005-.06-.035 0-.03.03-.035.06-.035h.11c.035 0 .06.005.06.035 0 .03-.03.035-.06.035h-.11zm-1.165-.025a.094.094 0 01-.13 0l-.25-.25a.094.094 0 010-.13.094.094 0 01.13 0l.25.25a.094.094 0 010 .13zm1.53.445c-.035 0-.07-.025-.07-.06v-.155c0-.03.035-.06.07-.06s.07.025.07.06v.155c0 .03-.035.06-.07.06zM12 0c2.21 0 4 1.79 4 4s-1.79 4-4 4-4-1.79-4-4 1.79-4 4-4zm0 7c1.655 0 3-1.345 3-3 0-.195-.02-.39-.06-.575h-.21c-.125 0-.225-.07-.23-.21h-.215c.075.07.155.14.155.23V3.9c0 .06-.04.115-.075.155h-.015l-.01.005-.015.01-.445.43v.815c0 .13-.07.22-.2.22h-.36c-.125 0-.21-.09-.21-.22v-.84a.627.627 0 00-.36-.345h-.45c-.13 0-.245-.095-.245-.225v-.46c0-.125.115-.23.245-.23l.13-.005.21-.215c.09-.09.24-.09.33 0l.22.225h.47c.105 0 .155-.105.225-.21v-.075h-.205a.106.106 0 01-.105-.105.11.11 0 01.105-.105h.18l.025.005v-.12s-.03-.025-.04-.025h-.2l-.045.05a.235.235 0 01-.33.005l-.045-.06h-.115l.16.175c.015.015.015.06 0 .075-.02.015-.045.02-.06.005l-.195-.185h-.085l-.245.23-.02-.005c-.025.07-.06.055-.095.055-.085 0-.15-.045-.15-.13s.065-.14.15-.14h.115v-.125c0-.06.04-.09.1-.09h.05V2.36c0-.095.095-.2.19-.2h.19c.105 0 .18-.075.18-.185V1.94c0-.015.035.01.035-.06h-.125l-.005.01-.21.22a.085.085 0 01-.115 0 .085.085 0 010-.115l.255-.255c.02-.015.045-.015.065-.015.005 0 .005.015.005.015h.64a2.327 2.327 0 00-.355-.275 2.452 2.452 0 00-.355-.195c-.03-.015-.055-.03-.08-.04a3.025 3.025 0 00-1.735-.175c-.09.02-.175.055-.265.08-.09.03-.18.05-.265.085-.075.03-.145.07-.22.105-.115.06-.235.115-.34.185l-.005.005c-.1.065-.18.145-.27.22h.455c.06 0 .11.045.11.105s-.05.105-.11.105h-.32c0 .07-.025.04-.025.045v.24h.285l.15-.17c.09-.09.235-.105.325-.015.09.09.09.23 0 .32l-.795.79-.01.01c-.005 0-.005 0-.01.005l-.025.015h-.01a.235.235 0 01-.12.025h-.23c-.08.07-.125.1-.125.18v.06c0 .01-.02.02-.02.03l.375.39c.04.04.04.1 0 .14-.04.04-.1.04-.14 0l-.39-.385a.213.213 0 01-.055.01c-.105 0-.195-.085-.195-.185v-.235h-.055A3.1 3.1 0 009 4c0 1.655 1.345 3 3 3zm2.27-2.135c.05 0 .105.04.105.09v.285c0 .05-.055.09-.105.09-.05 0-.105-.04-.105-.09v-.285c0-.05.055-.09.105-.09zm-2.085-3.27c0 .13-.105.21-.225.21h-.25v.07c0 .075-.03.135-.105.135s-.105-.06-.105-.135V1.64c-.075-.02-.025-.025-.025-.04 0-.125.085-.215.21-.215h.27c.13 0 .23.085.23.21z"],"inbox-search":["M5.639 2a5.391 5.391 0 00-.144 2H3.66L1.95 8H4c.55 0 1 .45 1 1v1h6V9c0-.088.012-.174.033-.255.12-.007.238-.019.39-.038.154-.008.252-.03.442-.077a5.34 5.34 0 00.24-.05h.05l.122-.04 1.266 1.271c.425.47 1.116.769 1.847.769.21 0 .414-.025.61-.071V13c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V7.46l2.08-4.85C2.23 2.25 2.59 2 3 2h2.639zM15.82 7.53c.1.12.17.27.18.44 0 .34-.27.61-.61.61a.57.57 0 01-.43-.18l-2.24-2.25c-.13.08-.26.16-.4.23-.02.01-.05.02-.07.03-.14.06-.27.12-.42.17h-.01c-.14.05-.29.08-.44.11-.04.01-.08.02-.11.02-.15.02-.3.04-.46.04-1.85 0-3.35-1.51-3.35-3.37S8.96.01 10.81 0c1.85 0 3.35 1.51 3.35 3.37 0 .16-.02.31-.04.47-.01.04-.01.07-.02.11-.02.15-.05.29-.1.44v.01c-.05.15-.11.28-.17.42-.01.02-.02.05-.03.07-.07.14-.14.27-.23.4l2.25 2.24zm-5.01-1.94c1.22 0 2.21-.99 2.21-2.22 0-1.23-.99-2.22-2.21-2.22S8.6 2.14 8.6 3.37c0 1.22.99 2.22 2.21 2.22z"],"inbox-update":["M8.1 2a5.023 5.023 0 000 2H3.66L1.95 8H4c.55 0 1 .45 1 1v1h6V9c0-.55.45-1 1-1h2.05c.708 0 1.352-.241 1.905-.645L16 7.46V13c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V7.46l2.08-4.85C2.23 2.25 2.59 2 3 2h5.1zM13 6a3 3 0 110-6 3 3 0 010 6z"],"info-sign":["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zM7 3h2v2H7V3zm3 10H6v-1h1V7H6V6h3v6h1v1z"],inheritance:["M5 8c0 1.66 1.34 3 3 3h4.59L11.3 9.71A.965.965 0 0111 9a1.003 1.003 0 011.71-.71l3 3c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-3 3a1.003 1.003 0 01-1.42-1.42l1.3-1.29H8c-2.76 0-5-2.24-5-5H1a1 1 0 01-1-1V1a1 1 0 011-1h6a1 1 0 011 1v6a1 1 0 01-1 1H5zM2 2v4h4V2H2z"],"inherited-group":["M1 7c.51 0 .935.388.993.884L2 8v3c0 .51.388.935.884.993L3 12h1.59l-.3-.29a1.003 1.003 0 011.324-1.504l.096.084 2 2c.18.18.29.43.29.71 0 .233-.076.446-.206.614l-.084.096-2 2A1.003 1.003 0 014 15c0-.24.08-.458.224-.629l.076-.081.29-.29H3a2.996 2.996 0 01-2.995-2.823L0 11V8c0-.55.45-1 1-1zm5.388-7c.629 0 1.338.21 1.838.6.48.38.85.91 1.019 1.52.04.13.07.27.09.4.09.48.14 1.22.14 1.73v.07c.18.08.34.27.37.67.03.32-.09.59-.16.71-.06.28-.21.58-.48.63-.03.13-.07.26-.12.39 0 .01-.01.04-.01.04-.22.58-.55 1.08-.949 1.45v.18c.04.45-.12.77 1.059 1.3 1.179.53 2.947 1.09 3.307 1.95.37.86.22 1.36.22 1.36H9c0-.539-.21-1.045-.583-1.417l-2-2A1.997 1.997 0 005 9c-.149 0-.296-.015-.442-.045.099-.19.082-.37.101-.575 0-.05.01-.11.01-.17-.41-.35-.75-.86-.969-1.45v-.01s-.01-.01-.01-.02c-.04-.12-.09-.26-.12-.39-.28-.05-.44-.36-.5-.64-.06-.12-.19-.39-.16-.71.04-.41.21-.6.39-.68v-.06c0-.51.05-1.26.14-1.74.02-.13.05-.27.09-.4.17-.6.54-1.13 1.02-1.51C5.048.21 5.757 0 6.387 0zm4.625 2.04c.49 0 1.05.16 1.439.46.38.29.67.7.8 1.17.03.1.05.21.07.31.07.37.11.94.11 1.33v.05c.139.06.269.21.289.51.02.25-.07.45-.13.54-.05.21-.16.44-.38.48a1.711 1.711 0 01-.1.33c-.17.44-.43.83-.749 1.11v.14c.03.35-.09.59.83 1 .929.41 2.317.84 2.597 1.5.29.66.17 1.04.17 1.04H13.66v.01c-.05-.24-.14-.5-.25-.76-.36-.86-1.119-1.33-2.687-2-.14-.06-.59-.25-.6-.25-.21-.09-.36-.15-.5-.22.02-.1.02-.2.03-.31 0-.04.01-.08.01-.13-.07-.06-.13-.12-.19-.19.22-.32.4-.67.54-1.05.02-.06.02-.06.03-.1.29-.23.48-.57.59-.96.16-.33.25-.73.21-1.16-.03-.4-.16-.76-.37-1.03-.02-.53-.07-1.13-.15-1.54-.01-.06-.02-.12-.03-.19.23-.06.48-.09.72-.09z"],"inner-join":["M6.6 3.3C5.3 4.4 4.5 6.1 4.5 8s.8 3.6 2.1 4.7c-.5.2-1 .3-1.6.3-2.8 0-5-2.2-5-5s2.2-5 5-5c.6 0 1.1.1 1.6.3zm-1.96 8.68C3.92 10.83 3.5 9.46 3.5 8s.42-2.83 1.14-3.98C2.6 4.2 1 5.91 1 8s1.6 3.8 3.64 3.98zM8 4c-1.2.9-2 2.4-2 4s.8 3.1 2 4c1.2-.9 2-2.3 2-4s-.8-3.1-2-4zm3-1c2.8 0 5 2.2 5 5s-2.2 5-5 5c-.6 0-1.1-.1-1.6-.3 1.3-1.1 2.1-2.9 2.1-4.7s-.8-3.5-2.1-4.7c.5-.2 1-.3 1.6-.3zm.35 1.02c.73 1.15 1.14 2.52 1.14 3.98s-.42 2.83-1.14 3.98c2.04-.18 3.64-1.9 3.64-3.98s-1.6-3.8-3.64-3.98z"],insert:["M5 9h2v2c0 .6.4 1 1 1s1-.4 1-1V9h2c.6 0 1-.4 1-1s-.4-1-1-1H9V5c0-.6-.4-1-1-1s-1 .4-1 1v2H5c-.6 0-1 .4-1 1s.4 1 1 1zm10-9H1C.4 0 0 .4 0 1v14c0 .6.4 1 1 1h14c.6 0 1-.4 1-1V1c0-.6-.4-1-1-1zm-1 14H2V2h12v12z"],intersection:["M10 3c-.92 0-1.76.26-2.5.69C6.76 3.26 5.92 3 5 3 2.24 3 0 5.24 0 8s2.24 5 5 5c.92 0 1.76-.26 2.5-.69.74.43 1.58.69 2.5.69 2.76 0 5-2.24 5-5s-2.24-5-5-5zm-4.1 7.85c-.29.09-.59.15-.9.15-1.66 0-3-1.34-3-3s1.34-3 3-3c.31 0 .61.06.9.15C5.33 5.96 5 6.94 5 8s.33 2.04.9 2.85zM10 11c-.31 0-.61-.06-.9-.15.57-.81.9-1.79.9-2.85s-.33-2.04-.9-2.85c.29-.09.59-.15.9-.15 1.66 0 3 1.34 3 3s-1.34 3-3 3z"],"ip-address":["M5 2.66C5 4.14 8 8 8 8s3-3.86 3-5.34C10.99 1.2 9.66 0 8 0S5 1.2 5 2.66zM7 3c0-.55.45-1 1-1s1 .45 1 1-.45 1-1 1-1-.45-1-1zM10.5 10H8v5h1v-4h1v1H9v1h2v-3h-.5zM2 9h12c.55 0 1 .45 1 1v5c0 .55-.45 1-1 1H2c-.55 0-1-.45-1-1v-5c0-.55.45-1 1-1zm4 1v5h1v-5H6z"],issue:["M8 16A8 8 0 118 0a8 8 0 010 16zm0-2A6 6 0 108 2a6 6 0 000 12zm1-2H7v-2h2v2zm0-3H7V4h2v5z"],"issue-closed":["M9.296.104a2.99 2.99 0 00-1.003.664 2.987 2.987 0 00-.75 1.25 6 6 0 106.28 4.527c.043-.039.085-.079.127-.12l1.456-1.456A8 8 0 119.296.105zm2.532 5.2a.997.997 0 01-.707-.294L9.707 3.596a1 1 0 011.414-1.414l.707.707 1.768-1.768a1 1 0 111.414 1.415L12.536 5.01a.997.997 0 01-.708.293zM9 12H7v-2h2v2zm0-3H7V4h2v5z"],"issue-new":["M10.568.421c-.01.04-.018.08-.026.121-.837.156-1.53.73-1.85 1.497a6 6 0 105.27 5.273 2.51 2.51 0 001.496-1.854c.04-.008.081-.016.121-.026A8 8 0 1110.568.421zM9 12H7v-2h2v2zm0-3H7V4h2v5zm1-6c0-.55.45-1 1-1h1V1c0-.55.45-1 1-1s1 .45 1 1v1h1c.55 0 1 .45 1 1s-.45 1-1 1h-1v1.005c0 .55-.45 1-1 1s-1-.45-1-1V4h-1c-.55 0-1-.45-1-1z"],italic:["M9.8 4H11c.5 0 1-.4 1-1s-.4-1-1-1H7c-.5 0-1 .4-1 1s.4 1 1 1h.8l-1.6 8H5c-.5 0-1 .4-1 1s.4 1 1 1h4c.5 0 1-.4 1-1s-.4-1-1-1h-.8l1.6-8z"],"join-table":["M15 5h-3V2c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h3v3c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-5-1v2H6V4h4zm0 6H6V7h4v3zM2 4h3v2H2V4zm0 5V7h3v2H2zm4 4v-2h4v2H6zm8 0h-3v-2h3v2zm0-3h-3V8h3v2z"],key:["M11 0C8.24 0 6 2.24 6 5c0 1.02.31 1.96.83 2.75L.29 14.29a1.003 1.003 0 001.42 1.42L3 14.41l1.29 1.29c.18.19.43.3.71.3s.53-.11.71-.29l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71L6.41 11l1.83-1.83c.8.52 1.74.83 2.76.83 2.76 0 5-2.24 5-5s-2.24-5-5-5zm0 8c-.23 0-.45-.03-.66-.08-.01 0-.02-.01-.03-.01-.21-.05-.41-.12-.6-.21a3.014 3.014 0 01-1.62-2c0-.01-.01-.02-.01-.03C8.03 5.45 8 5.23 8 5c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3z"],"key-backspace":["M15 2H6c-.28 0-.53.11-.71.29l-5 5C.11 7.47 0 7.72 0 8c0 .28.11.53.29.71l5 5c.18.18.43.29.71.29h9c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-2.29 7.29a1.003 1.003 0 01-1.42 1.42L10 9.41 8.71 10.7c-.18.19-.43.3-.71.3a1.003 1.003 0 01-.71-1.71L8.59 8l-1.3-1.29a1.003 1.003 0 011.42-1.42L10 6.59l1.29-1.29c.18-.19.43-.3.71-.3a1.003 1.003 0 01.71 1.71L11.41 8l1.3 1.29z"],"key-command":["M12 9h-1V7h1c1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3v1H7V4c0-1.66-1.34-3-3-3S1 2.34 1 4s1.34 3 3 3h1v2H4c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3v-1h2v1c0 1.66 1.34 3 3 3s3-1.34 3-3-1.34-3-3-3zm0-6c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zM4 13c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm0-8c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm5 4H7V7h2v2zm3 4c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"key-control":["M12.71 5.29l-4-4C8.53 1.11 8.28 1 8 1s-.53.11-.71.29l-4 4a1.003 1.003 0 001.42 1.42L8 3.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],"key-delete":["M15.71 7.29l-5-5A.997.997 0 0010 2H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h9c.28 0 .53-.11.71-.29l5-5c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zm-7 2a1.003 1.003 0 01-1.42 1.42L6 9.41 4.71 10.7c-.18.19-.43.3-.71.3a1.003 1.003 0 01-.71-1.71L4.59 8l-1.3-1.29a1.003 1.003 0 011.42-1.42L6 6.59 7.29 5.3c.18-.19.43-.3.71-.3a1.003 1.003 0 01.71 1.71L7.41 8l1.3 1.29z"],"key-enter":["M14 2c-.55 0-1 .45-1 1v3c0 1.66-1.34 3-3 3H4.41L5.7 7.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L4.41 11H10c2.76 0 5-2.24 5-5V3c0-.55-.45-1-1-1z"],"key-escape":["M2 7c.55 0 1-.45 1-1V4.41L7.29 8.7c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L4.41 3H6c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1zm7-5.9v2A5 5 0 113.1 9h-2c.49 3.39 3.38 6 6.9 6 3.87 0 7-3.13 7-7 0-3.52-2.61-6.41-6-6.9z"],"key-option":["M11 4h4c.55 0 1-.45 1-1s-.45-1-1-1h-4c-.55 0-1 .45-1 1s.45 1 1 1zm4 8h-3.43L5.86 2.49h-.02A.975.975 0 005 2H1c-.55 0-1 .45-1 1s.45 1 1 1h3.43l5.71 9.51.01-.01c.18.3.49.5.85.5h4c.55 0 1-.45 1-1s-.45-1-1-1z"],"key-shift":["M13.71 7.29l-5-5C8.53 2.11 8.28 2 8 2s-.53.11-.71.29l-5 5A1.003 1.003 0 003 9h2v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V9h2a1.003 1.003 0 00.71-1.71z"],"key-tab":["M15 10H4.41L5.7 8.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L2 9.59V8c0-.55-.45-1-1-1s-1 .45-1 1v6c0 .55.45 1 1 1s1-.45 1-1v-1.59l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L4.41 12H15c.55 0 1-.45 1-1s-.45-1-1-1zm0-9c-.55 0-1 .45-1 1v1.59L11.71 1.3A.965.965 0 0011 1a1.003 1.003 0 00-.71 1.71L11.59 4H1c-.55 0-1 .45-1 1s.45 1 1 1h10.59L10.3 7.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L14 6.41V8c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1z"],"known-vehicle":["M15 3a.997.997 0 00-.707.293L12 5.586l-1.293-1.293a1 1 0 10-1.414 1.414l2 2a.997.997 0 001.414 0l3-3A1 1 0 0015 3zm-.879 6.121l-.007-.007c-.313.309-.69.552-1.114.702V10h-.998H12h-1v-.184c-.424-.15-.8-.395-1.112-.704l-.01.01-2-2 .012-.012A2.978 2.978 0 017.184 6H3c-.176 0-.06-.824 0-1l.73-1.63C3.79 3.192 3.823 3 4 3H7.78C8.328 2.39 9.115 2 10 2c.768 0 1.461.293 1.987.77l.844-.844c-.238-.244-.524-.442-.794-.524C12.037 1.402 10.72 1 8 1c-2.72 0-4.037.402-4.037.402-.508.155-1.078.711-1.268 1.237l-.763 2.117H.88c-.484 0-.88.423-.88.939s.396.939.88.939h.375L1 7c-.034.685 0 1.436 0 2v5c0 .657.384 1 1 1s1-.343 1-1v-1h10v1c0 .657.384 1 1 1s1-.343 1-1V9l-.003-.754-.876.875zM5.001 10H3V8h2v2z"],"lab-test":["M11 1a1 1 0 010 2v3l3 7v1.25a.75.75 0 01-.75.75H2.75a.75.75 0 01-.75-.75V13l3-7V3a1 1 0 110-2h6zM9 3H7v3l-1.714 4h5.428L9 6V3z"],label:["M11 2H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V7l-5-5zm3 10H2V4h8v2H3v1h7v1h4v4zm-3-5V4l3 3h-3zm-8 3h10V9H3v1z"],layer:["M16 8c0-.37-.21-.68-.51-.85l.01-.01-7-4-.01.01C8.34 3.06 8.18 3 8 3s-.34.06-.49.15l-.01-.02-7 4 .01.01C.21 7.32 0 7.63 0 8s.21.68.51.85l-.01.01 7 4 .01-.01c.15.09.31.15.49.15s.34-.06.49-.15l.01.01 7-4-.01-.01c.3-.17.51-.48.51-.85z"],"layer-outline":["M7.504 3.132l-7 4a1 1 0 000 1.736l7 4a1 1 0 00.992 0l7-4a1 1 0 000-1.736l-7-4a1 1 0 00-.992 0zM8 5.152L12.983 8 8 10.847 3.016 8 8 5.152z"],layers:["M.55 4.89l7 3.5c.14.07.29.11.45.11s.31-.04.45-.11l7-3.5a.998.998 0 00-.06-1.81L8.4.08a1.006 1.006 0 00-.79 0l-6.99 3a.992.992 0 00-.07 1.81zM15 10c-.16 0-.31.04-.45.11L8 13.38 1.45 10.1c-.14-.06-.29-.1-.45-.1-.55 0-1 .45-1 1 0 .39.23.73.55.89l7 3.5c.14.07.29.11.45.11s.31-.04.45-.11l7-3.5c.32-.16.55-.5.55-.89 0-.55-.45-1-1-1zm0-3.5c-.16 0-.31.04-.45.11L8 9.88 1.45 6.61A.997.997 0 001 6.5c-.55 0-1 .45-1 1 0 .39.23.73.55.89l7 3.5c.14.07.29.11.45.11s.31-.04.45-.11l7-3.5c.32-.16.55-.5.55-.89 0-.55-.45-1-1-1z"],layout:["M14 4c-1.1 0-2 .9-2 2 0 .47.17.9.44 1.24l-.68.91A1.996 1.996 0 009.07 9.5H7.93C7.71 8.64 6.93 8 6 8c-.47 0-.9.17-1.24.44l-.91-.68c.1-.23.15-.49.15-.76 0-.37-.11-.71-.28-1.01l2.27-2.27c.3.17.64.28 1.01.28 1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2c0 .37.11.71.28 1.01L3.01 5.28C2.71 5.11 2.37 5 2 5 .9 5 0 5.9 0 7s.9 2 2 2c.47 0 .9-.17 1.24-.44l.91.68c-.1.23-.15.49-.15.76 0 .37.11.71.28 1.01l-1.27 1.27C2.71 12.11 2.37 12 2 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2c0-.37-.11-.71-.28-1.01l1.27-1.27c.3.17.64.28 1.01.28.93 0 1.71-.64 1.93-1.5h1.14c.22.86 1 1.5 1.93 1.5 1.1 0 2-.9 2-2 0-.47-.17-.9-.44-1.24l.68-.91c.23.1.49.15.76.15 1.1 0 2-.9 2-2s-.9-2-2-2z"],"layout-auto":["M14 9.5c-.56 0-1.06.23-1.42.59L8.99 8l3.59-2.09A2.002 2.002 0 0016 4.5c0-1.1-.9-2-2-2s-2 .9-2 2c0 .19.03.37.08.54L8.5 7.13v-3.2c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2S6 .9 6 2c0 .93.64 1.71 1.5 1.93v3.2L3.92 5.04c.05-.17.08-.35.08-.54 0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2c.56 0 1.06-.23 1.42-.59L7.01 8l-3.59 2.09A2.002 2.002 0 000 11.5c0 1.1.9 2 2 2s2-.9 2-2c0-.19-.03-.37-.08-.54L7.5 8.87v3.2c-.86.22-1.5 1-1.5 1.93 0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93v-3.2l3.58 2.09c-.05.17-.08.35-.08.54 0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2z"],"layout-balloon":["M14 11c-.2 0-.38.04-.56.09L12.42 9.4c.36-.36.58-.85.58-1.4 0-.55-.22-1.04-.58-1.4l1.01-1.69c.19.05.37.09.57.09 1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2c0 .55.22 1.04.58 1.4l-1.01 1.69C11.38 6.04 11.2 6 11 6c-.93 0-1.71.64-1.93 1.5H6.93C6.71 6.64 5.93 6 5 6c-.2 0-.38.04-.56.09L3.42 4.4C3.78 4.04 4 3.55 4 3c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2c.2 0 .38-.04.56-.09L3.58 6.6C3.22 6.96 3 7.45 3 8c0 .55.22 1.04.58 1.4l-1.01 1.69C2.38 11.04 2.2 11 2 11c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2c0-.55-.22-1.04-.58-1.4l1.01-1.69c.19.05.37.09.57.09.93 0 1.71-.64 1.93-1.5h2.14c.22.86 1 1.5 1.93 1.5.2 0 .38-.04.56-.09l1.01 1.69c-.35.36-.57.85-.57 1.4 0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2z"],"layout-circle":["M14.16 6.02c-.12-.36-.26-.7-.43-1.03.17-.29.27-.63.27-.99 0-1.1-.9-2-2-2-.36 0-.7.1-.99.27-.33-.17-.67-.31-1.03-.43A1.987 1.987 0 008 0C6.95 0 6.1.81 6.02 1.84c-.36.12-.7.26-1.03.43C4.7 2.1 4.36 2 4 2c-1.1 0-2 .9-2 2 0 .36.1.7.27.99-.17.33-.31.67-.43 1.03C.81 6.1 0 6.95 0 8c0 1.05.81 1.9 1.84 1.98.12.36.26.7.43 1.03-.17.29-.27.63-.27.99 0 1.1.9 2 2 2 .36 0 .7-.1.99-.27.33.17.67.32 1.03.43C6.1 15.19 6.95 16 8 16c1.05 0 1.9-.81 1.98-1.84.36-.12.7-.26 1.03-.43.29.17.63.27.99.27 1.1 0 2-.9 2-2 0-.36-.1-.7-.27-.99.17-.33.31-.67.43-1.03C15.19 9.9 16 9.05 16 8c0-1.05-.81-1.9-1.84-1.98zm-.99 3.79c-.05.16-.11.31-.17.46-.3-.17-.64-.27-1-.27-1.1 0-2 .9-2 2 0 .36.1.7.27 1-.15.07-.3.12-.46.17C9.5 12.48 8.81 12 8 12s-1.5.48-1.81 1.17c-.16-.06-.32-.11-.46-.17.17-.3.27-.64.27-1 0-1.1-.9-2-2-2-.36 0-.7.1-1 .27-.07-.15-.12-.3-.17-.46C3.52 9.5 4 8.81 4 8s-.48-1.5-1.17-1.81c.06-.16.11-.32.17-.46.3.17.64.27 1 .27 1.1 0 2-.9 2-2 0-.36-.1-.7-.27-1 .15-.07.3-.12.46-.17C6.5 3.52 7.19 4 8 4s1.5-.48 1.81-1.17c.16.06.32.11.46.17-.17.3-.27.64-.27 1 0 1.1.9 2 2 2 .36 0 .7-.1 1-.27.07.15.12.3.17.46C12.48 6.5 12 7.19 12 8s.48 1.5 1.17 1.81z"],"layout-grid":["M2 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6C.9 6 0 6.9 0 8s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6C.9 0 0 .9 0 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM8 0C6.9 0 6 .9 6 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM8 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],"layout-group-by":["M2 6C.9 6 0 6.9 0 8s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 5c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12-7c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM2 1C.9 1 0 1.9 0 3s.9 2 2 2 2-.9 2-2-.9-2-2-2zm7 8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm5 3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],"layout-hierarchy":["M14.5 12.07V9.93c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2-.93 0-1.71.64-1.93 1.5H9.93c-.18-.7-.73-1.25-1.43-1.43V3.93c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2S6 .9 6 2c0 .93.64 1.71 1.5 1.93v2.14c-.7.18-1.25.73-1.43 1.43H3.93C3.71 6.64 2.93 6 2 6 .9 6 0 6.9 0 8c0 .93.64 1.71 1.5 1.93v2.14c-.86.22-1.5 1-1.5 1.93 0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93V9.93c.7-.18 1.25-.73 1.43-1.43h2.14c.18.7.73 1.25 1.43 1.43v2.14c-.86.22-1.5 1-1.5 1.93 0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93V9.93c.7-.18 1.25-.73 1.43-1.43h2.14c.18.7.73 1.25 1.43 1.43v2.14c-.86.22-1.5 1-1.5 1.93 0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93z"],"layout-linear":["M14 6c-.93 0-1.71.64-1.93 1.5H9.93C9.71 6.64 8.93 6 8 6s-1.71.64-1.93 1.5H3.93C3.71 6.64 2.93 6 2 6 .9 6 0 6.9 0 8s.9 2 2 2c.93 0 1.71-.64 1.93-1.5h2.13C6.29 9.36 7.07 10 8 10s1.71-.64 1.93-1.5h2.13c.22.86 1 1.5 1.93 1.5 1.1 0 2-.9 2-2C16 6.9 15.1 6 14 6z"],"layout-skew-grid":["M2 6C.9 6 0 6.9 0 8s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12-2c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM2 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM2 0C.9 0 0 .9 0 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 9c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6-3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM8 3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm6 9c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],"layout-sorted-clusters":["M2 6C.9 6 0 6.9 0 8s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM2 0C.9 0 0 .9 0 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM8 9c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],learning:["M8.441 1.104a.985.985 0 00-.882 0L.365 5c-.487.253-.487.747 0 1L7.56 9.896a.985.985 0 00.882 0L15.635 6c.487-.253.487-.747 0-1L8.44 1.104z","M14 5.5l.016 4.514c.002.548.447.99.994.99a.99.99 0 00.99-.99V5.5h-2zM3.371 9.047l4.387 2.432a.5.5 0 00.485 0l4.39-2.432a.25.25 0 01.371.218v2.955a.25.25 0 01-.134.222l-4.635 2.436a.5.5 0 01-.466 0l-4.635-2.436A.25.25 0 013 12.22V9.265a.25.25 0 01.371-.218z"],"left-join":["M6.6 3.3C6.1 3.1 5.6 3 5 3 2.2 3 0 5.2 0 8s2.2 5 5 5c.6 0 1.1-.1 1.6-.3C5.3 11.6 4.5 9.9 4.5 8s.8-3.6 2.1-4.7zM8 4c-1.2.9-2 2.4-2 4s.8 3.1 2 4c1.2-.9 2-2.3 2-4s-.8-3.1-2-4zm3-1c2.8 0 5 2.2 5 5s-2.2 5-5 5c-.6 0-1.1-.1-1.6-.3 1.3-1.1 2.1-2.9 2.1-4.7s-.8-3.5-2.1-4.7c.5-.2 1-.3 1.6-.3zm.35 1.02c.73 1.15 1.14 2.52 1.14 3.98s-.42 2.83-1.14 3.98c2.04-.18 3.64-1.9 3.64-3.98s-1.6-3.8-3.64-3.98z"],"less-than":["M13.287 5.958a1 1 0 00-.574-1.916l-10 3c-.95.285-.95 1.631 0 1.916l10 3a1 1 0 00.574-1.916L6.48 8l6.807-2.042z"],"less-than-or-equal-to":["M13.287 3.958a1 1 0 00-.575-1.916l-10 3c-.95.285-.95 1.63 0 1.916l10 3a1 1 0 00.575-1.916L6.48 6l6.807-2.042zM13 12H3a1 1 0 000 2h10a1 1 0 000-2z"],lifesaver:["M9.405 11.746C8.968 11.91 8.495 12 8 12c-.494 0-.968-.09-1.405-.254l-.702 1.873C6.548 13.865 7.258 14 8 14c.742 0 1.452-.135 2.107-.38l-.702-1.874zm2.341-2.341l1.873.702C13.865 9.452 14 8.742 14 8c0-.742-.135-1.452-.38-2.107l-1.874.702c.164.437.254.91.254 1.405 0 .494-.09.968-.254 1.405zM9.405 4.254l.702-1.873A5.987 5.987 0 008 2c-.742 0-1.452.135-2.107.38l.702 1.874C7.032 4.09 7.505 4 8 4c.494 0 .968.09 1.405.254zM4.254 6.595L2.38 5.893A5.987 5.987 0 002 8c0 .742.135 1.452.38 2.107l1.874-.702A3.991 3.991 0 014 8c0-.494.09-.968.254-1.405zM8 16A8 8 0 118 0a8 8 0 010 16zm0-6a2 2 0 100-4 2 2 0 000 4z"],lightbulb:["M9.01 14h-2c-.55 0-1 .45-1 1s.45 1 1 1h2c.55 0 1-.45 1-1s-.44-1-1-1zm1-3h-4c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1s-.44-1-1-1zm-2-11C5.26 0 3.03 1.95 3.03 4.35c0 2.37 1.63 2.64 1.94 5.22 0 .24.22.44.5.44h5.09c.28 0 .5-.19.5-.44C11.37 6.99 13 6.72 13 4.35 13 1.95 10.77 0 8.01 0z"],link:["M4.99 11.99c.28 0 .53-.11.71-.29l6-6a1.003 1.003 0 00-1.42-1.42l-6 6a1.003 1.003 0 00.71 1.71zm3.85-2.02L6.4 12.41l-1 1-.01-.01c-.36.36-.85.6-1.4.6-1.1 0-2-.9-2-2 0-.55.24-1.04.6-1.4l-.01-.01 1-1 2.44-2.44c-.33-.1-.67-.16-1.03-.16-1.1 0-2.09.46-2.81 1.19l-.02-.02-1 1 .02.02c-.73.72-1.19 1.71-1.19 2.81 0 2.21 1.79 4 4 4 1.1 0 2.09-.46 2.81-1.19l.02.02 1-1-.02-.02c.73-.72 1.19-1.71 1.19-2.81 0-.35-.06-.69-.15-1.02zm7.15-5.98c0-2.21-1.79-4-4-4-1.1 0-2.09.46-2.81 1.19l-.02-.02-1 1 .02.02c-.72.72-1.19 1.71-1.19 2.81 0 .36.06.69.15 1.02l2.44-2.44 1-1 .01.01c.36-.36.85-.6 1.4-.6 1.1 0 2 .9 2 2 0 .55-.24 1.04-.6 1.4l.01.01-1 1-2.43 2.45c.33.09.67.15 1.02.15 1.1 0 2.09-.46 2.81-1.19l.02.02 1-1-.02-.02a3.92 3.92 0 001.19-2.81z"],list:["M1 3h14c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm14 10H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm0-4H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm0-4H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],"list-columns":["M6 1c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1s.45-1 1-1h5zm0 4c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1s.45-1 1-1h5zm0 4c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1s.45-1 1-1h5zm0 4c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1s.45-1 1-1h5zm9-12c.55 0 1 .45 1 1s-.45 1-1 1h-5c-.55 0-1-.45-1-1s.45-1 1-1h5zm0 4c.55 0 1 .45 1 1s-.45 1-1 1h-5c-.55 0-1-.45-1-1s.45-1 1-1h5zm0 4c.55 0 1 .45 1 1s-.45 1-1 1h-5c-.55 0-1-.45-1-1s.45-1 1-1h5zm0 4c.55 0 1 .45 1 1s-.45 1-1 1h-5c-.55 0-1-.45-1-1s.45-1 1-1h5z"],"list-detail-view":["M6 9H1c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1zm0 4H1c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1zm9-12h-5c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zM6 5H1c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1zm0-4H1c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1z"],locate:["M15 7h-.09A6.98 6.98 0 009 1.1V1c0-.55-.45-1-1-1S7 .45 7 1v.09A6.98 6.98 0 001.1 7H1c-.55 0-1 .45-1 1s.45 1 1 1h.1A6.969 6.969 0 007 14.91V15c0 .55.45 1 1 1s1-.45 1-1v-.09A6.98 6.98 0 0014.9 9h.1c.55 0 1-.45 1-1s-.45-1-1-1zm-6.02 5.9c-.05-.5-.46-.9-.98-.9s-.93.4-.98.9A5.017 5.017 0 013.1 8.98c.5-.05.9-.46.9-.98s-.4-.93-.9-.98A5.017 5.017 0 017.02 3.1c.05.5.46.9.98.9s.93-.4.98-.9c1.97.39 3.52 1.95 3.92 3.92-.5.05-.9.46-.9.98s.4.93.9.98a5.017 5.017 0 01-3.92 3.92zM8 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],lock:["M13.96 7H12V3.95C12 1.77 10.21 0 8 0S4 1.77 4 3.95V7H1.96c-.55 0-.96.35-.96.9v6.91c0 .54.41 1.19.96 1.19h12c.55 0 1.04-.65 1.04-1.19V7.9c0-.55-.49-.9-1.04-.9zM6 7V3.95c0-1.09.9-1.97 2-1.97s2 .88 2 1.97V7H6z"],"log-in":["M11 8c0-.28-.11-.53-.29-.71l-3-3a1.003 1.003 0 00-1.42 1.42L7.59 7H1c-.55 0-1 .45-1 1s.45 1 1 1h6.59L6.3 10.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71zm4-8H9c-.55 0-1 .45-1 1s.45 1 1 1h5v12H9c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],"log-out":["M7 14H2V2h5c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1zm8.71-6.71l-3-3a1.003 1.003 0 00-1.42 1.42L12.59 7H6c-.55 0-1 .45-1 1s.45 1 1 1h6.59l-1.29 1.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],manual:["M15.99 1.13c-.02-.41-.33-.77-.78-.87C12.26-.36 9.84.13 8 1.7 6.16.13 3.74-.36.78.26.33.35.03.72.01 1.13H0v12c0 .08 0 .17.02.26.12.51.65.82 1.19.71 2.63-.55 4.59-.04 6.01 1.57.02.03.06.04.08.06.02.02.03.04.05.06.04.03.09.04.13.07.05.03.09.05.14.07.11.04.23.07.35.07h.04c.12 0 .24-.03.35-.07.05-.02.09-.05.14-.07.04-.02.09-.04.13-.07.02-.02.03-.04.05-.06.03-.02.06-.03.08-.06 1.42-1.6 3.39-2.12 6.01-1.57.54.11 1.07-.21 1.19-.71.04-.09.04-.18.04-.26l-.01-12zM7 12.99c-1.4-.83-3.07-1.14-5-.93V1.96c2.11-.28 3.75.2 5 1.46v9.57zm7-.92c-1.93-.21-3.6.1-5 .93V3.42c1.25-1.26 2.89-1.74 5-1.46v10.11z"],"manually-entered-data":["M1 8h3.76l2-2H1c-.55 0-1 .45-1 1s.45 1 1 1zm14.49-4.01c.31-.32.51-.76.51-1.24C16 1.78 15.22 1 14.25 1c-.48 0-.92.2-1.24.51l-1.44 1.44 2.47 2.47 1.45-1.43zM1 4h7.76l2-2H1c-.55 0-1 .45-1 1s.45 1 1 1zm0 6c-.55 0-1 .45-1 1 0 .48.35.86.8.96L2.76 10H1zm9.95-6.43l-6.69 6.69 2.47 2.47 6.69-6.69-2.47-2.47zm4.25 2.47L13.24 8H15c.55 0 1-.45 1-1 0-.48-.35-.86-.8-.96zM2 15l3.86-1.39-2.46-2.44L2 15zm13-5h-3.76l-2 2H15c.55 0 1-.45 1-1s-.45-1-1-1z"],map:["M15.55 3.17l-4.49-3A.975.975 0 009.99.15L5.53 2.82 1.56.17A1.003 1.003 0 000 1v11c0 .35.18.65.45.83l4.49 3a.975.975 0 001.07.02l4.46-2.67 3.97 2.65A1.003 1.003 0 0016 15V4c0-.35-.18-.65-.45-.83zM5 13.46l-3-2v-8.6l2.94 1.96c.02.02.04.03.06.04v8.6zm5-2.32s-.01 0-.01.01L6 13.53V4.86s.01 0 .01-.01L10 2.47v8.67zm4 1.99l-2.94-1.96c-.02-.01-.04-.02-.05-.03v-8.6l3 2v8.59z"],"map-create":["M14 6.82v6.32l-2.94-1.96c-.02-.01-.04-.02-.05-.03V6.22c-.08-.07-.15-.16-.22-.24-.28-.02-.54-.08-.79-.16v5.32s-.01 0-.01.01L6 13.53V4.86s.01 0 .01-.01l2.05-1.23C8.02 3.42 8 3.21 8 3c0-.98.47-1.84 1.2-2.39l-3.67 2.2L1.56.17A1.003 1.003 0 000 1v11c0 .35.18.65.45.83l4.49 3a.975.975 0 001.07.02l4.46-2.67 3.97 2.65A1.003 1.003 0 0016 15V5.82c-.25.09-.52.14-.8.16-.33.36-.73.67-1.2.84zm-9 6.64l-3-2v-8.6l2.94 1.96c.02.02.04.03.06.04v8.6zM11 4h1v1c0 .55.45 1 1 1s1-.45 1-1V4h1c.55 0 1-.45 1-1s-.45-1-1-1h-1V1c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1z"],"map-marker":["M8.46 0C5.42 0 2.95 2.39 2.95 5.33 2.95 8.28 8.46 16 8.46 16s5.51-7.72 5.51-10.67C13.96 2.39 11.5 0 8.46 0zm0 8a2.5 2.5 0 010-5 2.5 2.5 0 010 5z"],maximize:["M5.99 8.99c-.28 0-.53.11-.71.29l-3.29 3.29v-1.59c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H3.41L6.7 10.7a1.003 1.003 0 00-.71-1.71zm9-9h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.59l-3.3 3.3a.99.99 0 00-.29.7 1.003 1.003 0 001.71.71l3.29-3.29V5c0 .55.45 1 1 1s1-.45 1-1V1c0-.56-.45-1.01-1-1.01z"],media:["M11.99 6.99c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm3-5h-14c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-10c0-.55-.45-1-1-1zm-1 9l-5-3-1 2-3-4-3 5v-7h12v7z"],menu:["M1 4h14c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm14 8H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm0-5H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],"menu-closed":["M14.99 6.99h-9c-.55 0-1 .45-1 1s.45 1 1 1h9c.55 0 1-.45 1-1s-.45-1-1-1zm-12-2c-.28 0-.53.11-.71.29l-2 2a1.014 1.014 0 000 1.42l2 2a1.003 1.003 0 001.71-.71v-4c0-.55-.45-1-1-1zm3-1h9c.55 0 1-.45 1-1s-.45-1-1-1h-9c-.55 0-1 .45-1 1s.45 1 1 1zm9 8h-9c-.55 0-1 .45-1 1s.45 1 1 1h9c.55 0 1-.45 1-1s-.45-1-1-1z"],"menu-open":["M9.99 11.99h-9c-.55 0-1 .45-1 1s.45 1 1 1h9c.55 0 1-.45 1-1s-.45-1-1-1zm0-5h-9c-.55 0-1 .45-1 1s.45 1 1 1h9c.55 0 1-.45 1-1s-.45-1-1-1zm0-5h-9c-.55 0-1 .45-1 1s.45 1 1 1h9c.55 0 1-.45 1-1s-.45-1-1-1zm5.71 5.3l-2-2a1.003 1.003 0 00-1.71.71v4a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71s-.11-.53-.29-.71z"],"merge-columns":["M5.71 5.29a1.003 1.003 0 00-1.42 1.42l.3.29H2V2h3v1.51c.52.06.99.29 1.34.65l.66.66V1c0-.55-.45-1-1-1H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-3.82l-.66.66c-.35.35-.82.59-1.34.65V14H2V9h2.59l-.3.29a1.003 1.003 0 001.42 1.42l2-2C7.89 8.53 8 8.28 8 8c0-.28-.11-.53-.29-.71l-2-2zM15 0h-5c-.55 0-1 .45-1 1v3.82l.66-.66c.35-.35.82-.59 1.34-.65V2h3v5h-2.59l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2C8.11 7.47 8 7.72 8 8c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H14v5h-3v-1.51c-.52-.06-.99-.29-1.34-.65L9 11.18V15c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],"merge-links":["M8 7c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0 4c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm0-8c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm6 3c-.93 0-1.71.64-1.93 1.5H11V3c0-1.66-1.34-3-3-3S5 1.34 5 3v4.5H3.93C3.71 6.64 2.93 6 2 6 .9 6 0 6.9 0 8s.9 2 2 2c.93 0 1.71-.64 1.93-1.5H5V13c0 1.66 1.34 3 3 3s3-1.34 3-3V8.5h1.07c.22.86 1 1.5 1.93 1.5 1.1 0 2-.9 2-2s-.9-2-2-2zm-4 7c0 1.1-.9 2-2 2s-2-.9-2-2V3c0-1.1.9-2 2-2s2 .9 2 2v10z"],minimize:["M15.99.99a1.003 1.003 0 00-1.71-.71l-3.29 3.29V1.99c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H12.4l3.3-3.29c.18-.18.29-.43.29-.71zm-10 8h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.59L.29 14.28a1.003 1.003 0 001.42 1.42L5 12.41V14c0 .55.45 1 1 1s1-.45 1-1v-4a1.02 1.02 0 00-1.01-1.01z"],minus:["M13 7H3c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1z"],"mobile-phone":["M12 0H4c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h8c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM8 15c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm3-3H5V3h6v9z"],"mobile-video":["M15 4c-.28 0-.53.11-.71.29L12 6.59V4c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V9.41l2.29 2.29c.18.19.43.3.71.3.55 0 1-.45 1-1V5c0-.55-.45-1-1-1z"],modal:["M15 1a1 1 0 011 1v12a1 1 0 01-1 1H1a1 1 0 01-1-1V2a1 1 0 011-1h14zm-1 4H2v8h12V5zm-3-3H9v2h2V2zm3 0h-2v2h2V2z"],"modal-filled":["M15 1H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zm1 4H0V3h16v2zm-3-2h-2V1h2v2z"],moon:["M15 11.38A7.835 7.835 0 017.85 16C3.51 16 0 12.49 0 8.15 0 4.97 1.89 2.23 4.62 1c-.45.99-.7 2.08-.7 3.23a7.85 7.85 0 007.85 7.85c1.15 0 2.24-.25 3.23-.7z"],more:["M2 6.03a2 2 0 100 4 2 2 0 100-4zM14 6.03a2 2 0 100 4 2 2 0 100-4zM8 6.03a2 2 0 100 4 2 2 0 100-4z"],mountain:["M16 13H3l6-9h1l2 2h1l3 7zm-2.5-3.5l-1-2.5h-1l-2-2-3 4.5L9 8l1 1 1-1 2.5 1.5zM5.94 7l-4.122 6H0l5-6h.94z"],move:["M15.71 7.29l-2-2a1.003 1.003 0 00-1.42 1.42l.3.29H9V3.41l.29.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-2-2C8.53.11 8.28 0 8 0s-.53.11-.71.29l-2 2a1.003 1.003 0 001.42 1.42l.29-.3V7H3.41l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2C.11 7.47 0 7.72 0 8c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42L3.41 9H7v3.59l-.29-.29A.965.965 0 006 12a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l2-2a1.003 1.003 0 00-1.42-1.42l-.29.3V9h3.59l-.29.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],mugshot:["M15 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14h-.15c-.03-.09-.04-.16-.08-.25-.34-.79-2.01-1.31-3.12-1.8-1.11-.49-.96-.79-1-1.2-.01-.06-.01-.12-.01-.18.38-.34.69-.8.89-1.33 0 0 .01-.03.01-.04.04-.12.08-.24.11-.36.25-.05.4-.33.46-.59.06-.1.18-.36.15-.65-.04-.37-.19-.55-.35-.62v-.06c0-.48-.04-1.16-.13-1.61-.02-.12-.05-.25-.08-.37-.16-.55-.51-1.05-.96-1.39C9.26 3.19 8.6 3 8 3c-.59 0-1.26.19-1.73.55-.45.35-.8.84-.96 1.39-.04.13-.06.25-.08.38-.09.45-.13 1.13-.13 1.61v.06c-.18.06-.33.24-.37.62-.03.29.09.54.15.65.06.26.21.54.47.59.03.12.07.25.11.36 0 .01.01.02.01.02v.01c.21.54.53 1.01.92 1.35 0 .05-.01.11-.01.16-.04.41.08.7-1.03 1.2-1.11.49-2.77 1.01-3.12 1.8-.04.09-.05.16-.08.25H2V2h12v12z"],"multi-select":["M12 3.98H4c-.55 0-1 .45-1 1v1h8v5h1c.55 0 1-.45 1-1v-5c0-.55-.45-1-1-1zm3-3H7c-.55 0-1 .45-1 1v1h8v5h1c.55 0 1-.45 1-1v-5c0-.55-.45-1-1-1zm-6 6H1c-.55 0-1 .45-1 1v5c0 .55.45 1 1 1h8c.55 0 1-.45 1-1v-5c0-.55-.45-1-1-1zm-1 5H2v-3h6v3z"],music:["M15 0c-.07 0-.13.03-.19.04V.02l-10 2v.02C4.35 2.13 4 2.52 4 3v9.12c-.31-.07-.65-.12-1-.12-1.66 0-3 .9-3 2s1.34 2 3 2 3-.9 3-2V6.32l8-1.6v5.4c-.31-.07-.65-.12-1-.12-1.66 0-3 .9-3 2s1.34 2 3 2 3-.9 3-2V1c0-.55-.45-1-1-1z"],"new-drawing":["M14.9 11c.6 0 1 .5 1 1 0 .257-.073.44-.22.614l-.08.086-3 3c-.2.2-.4.3-.7.3-.5 0-1-.4-1-1 0-.257.073-.44.22-.614l.08-.086 3-3c.2-.2.4-.3.7-.3zM1.3.1l6.734 2.45a3.005 3.005 0 002.095 3.322 3.005 3.005 0 003.401 2.081L13.9 9.8v.2c0 .257-.073.44-.22.614l-.08.086-3 3c-.171.171-.343.27-.577.294L9.9 14h-.2l-5-1-.1-.01c-.231-.05-.45-.26-.56-.49L4 12.4l-4-11 .3-.3 5.8 5.8c-.1.2-.2.4-.2.6 0 .8.6 1.5 1.5 1.5s1.5-.7 1.5-1.5S8.2 6 7.4 6c-.16 0-.32.064-.48.14l-.12.06L1 .4l.3-.3zM13 0c.55 0 1 .45 1 1v1h1c.55 0 1 .45 1 1s-.45 1-1 1h-1v1c0 .503-.376.922-.861.99l-.013.002A.999.999 0 0113 6l.097-.006-.027.004a1 1 0 01-.037.001L13 6c-.55 0-1-.45-1-1V4h-1a.993.993 0 01-.855-.482A1 1 0 0110 3c0-.55.45-1 1-1h1V1c0-.55.45-1 1-1z"],"new-grid-item":["M6 0H1C.45 0 0 .45 0 1v5c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm5 14c0-.55-.45-1-1-1s-1 .45-1 1v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1s-.45-1-1-1zM6 9H1c-.55 0-1 .45-1 1v5c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-5c0-.55-.45-1-1-1zm9 4c-.55 0-1 .45-1 1-.55 0-1 .45-1 1s.45 1 1 1h1c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm-4-4h-1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1s1-.45 1-1c.55 0 1-.45 1-1s-.45-1-1-1zm4-9h-5c-.55 0-1 .45-1 1v5c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm0 9h-1c-.55 0-1 .45-1 1s.45 1 1 1c0 .55.45 1 1 1s1-.45 1-1v-1c0-.55-.45-1-1-1z"],"new-layer":["M13.982 6.272l1.518.868-.01.01c.3.17.51.48.51.85s-.21.68-.51.85l.01.01-7 4-.01-.01A.94.94 0 018 13a.94.94 0 01-.49-.15l-.01.01-7-4 .01-.01A.977.977 0 010 8c0-.37.21-.68.51-.86L.5 7.13l7-4 .01.02A.94.94 0 018 3c.086 0 .168.014.246.038a2 2 0 105.736 3.234zM14 3c.55 0 1 .45 1 1s-.45 1-1 1h-1v1c0 .55-.45 1-1 1s-1-.45-1-1V5h-1c-.55 0-1-.45-1-1s.45-1 1-1h1V2c0-.55.45-1 1-1s1 .45 1 1v1h1z"],"new-layers":["M13 3h2a1 1 0 010 2h-2v2a1 1 0 01-2 0V5H9a1 1 0 110-2h2V1a1 1 0 012 0v2zm-3-1.983V2H9a2 2 0 100 4h1v1c0 .279.057.544.16.785l-1.71.855c-.14.07-.29.11-.45.11-.16 0-.31-.04-.45-.11l-7-3.5a.992.992 0 01.07-1.81l6.99-3a1.006 1.006 0 01.79 0l1.6.687zm.91 7.66a2 2 0 003.085-1.54l.555-.277c.14-.07.29-.11.45-.11.55 0 1 .45 1 1 0 .39-.23.73-.55.89l-7 3.5c-.14.07-.29.11-.45.11-.16 0-.31-.04-.45-.11l-7-3.5C.23 8.48 0 8.14 0 7.75c0-.55.45-1 1-1 .16 0 .31.04.45.11L8 10.13l2.91-1.453zM15 10.25c.55 0 1 .45 1 1 0 .39-.23.73-.55.89l-7 3.5c-.14.07-.29.11-.45.11-.16 0-.31-.04-.45-.11l-7-3.5c-.32-.16-.55-.5-.55-.89 0-.55.45-1 1-1 .16 0 .31.04.45.1L8 13.63l6.55-3.27c.14-.07.29-.11.45-.11z"],"new-link":["M15 3h-1V2c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1V5h1c.55 0 1-.45 1-1s-.45-1-1-1zm-3.5 6a2.5 2.5 0 00-2.45 2h-4.1a2.5 2.5 0 100 1h4.1a2.5 2.5 0 102.45-3z"],"new-object":["M8 4c0 .6.4 1 1 1h2v2c0 .6.4 1 1 1s1-.4 1-1V5h2c.6 0 1-.4 1-1s-.4-1-1-1h-2V1c0-.6-.4-1-1-1s-1 .4-1 1v2H9c-.6 0-1 .5-1 1zm6.5 2.5V7c0 1.4-1.1 2.5-2.5 2.5S9.5 8.4 9.5 7v-.5H9C7.6 6.5 6.5 5.4 6.5 4S7.6 1.5 9 1.5h.5V1c0-.3.1-.6.1-.8C9.1.1 8.6 0 8 0 3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8c0-.6-.1-1.3-.2-1.9-.4.3-.8.4-1.3.4z"],"new-person":["M9.12 12.69c-1.17-.53-1.01-.85-1.05-1.29-.01-.06-.01-.12-.01-.19.4-.37.73-.87.94-1.44 0 0 .01-.03.01-.04.05-.14.09-.27.12-.4.27-.06.43-.36.49-.63.06-.11.19-.39.16-.7-.04-.41-.2-.6-.38-.68v-.07c0-.51-.05-1.25-.14-1.74-.02-.13-.05-.27-.09-.4-.17-.6-.53-1.14-1.01-1.52C7.66 3.2 6.96 3 6.33 3c-.62 0-1.33.2-1.82.59-.49.38-.85.92-1.02 1.52-.04.13-.07.26-.09.4-.09.49-.13 1.23-.13 1.74v.06c-.19.08-.35.27-.39.68-.03.31.1.59.16.7.06.28.22.59.5.64.03.14.07.27.11.4 0 .01.01.02.01.02v.01c.22.59.55 1.1.96 1.46 0 .06-.01.12-.01.17-.04.44.08.76-1.09 1.29-1.17.53-2.93 1.1-3.29 1.95-.35.87-.2 1.37-.2 1.37h12.6s.15-.5-.22-1.36c-.36-.85-2.12-1.42-3.29-1.95zM14.89 2h-1V1c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1V4h1c.55 0 1-.45 1-1s-.45-1-1-1z"],"new-prescription":["M9.82 11.66l2.48-2.87c.12-.2.13-.37.04-.53-.11-.19-.3-.26-.52-.26h-1.29c-.27 0-.49.13-.63.34L8.44 9.9 6.95 8a.482.482 0 00-.08-.1L5.82 6.55c.57-.24 1.04-.57 1.42-1.01.49-.57.74-1.27.74-2.08 0-.51-.1-.99-.32-1.42-.21-.43-.51-.8-.89-1.11A4.1 4.1 0 005.42.24C4.91.08 4.34 0 3.72 0H.61C.26 0 0 .23 0 .56v9.89c0 .33.26.55.61.55h.8c.36 0 .61-.23.61-.56V6.99H3.3l3.73 4.74-2.71 3.48c-.12.2-.13.37-.04.53.11.19.3.26.52.26h1.27c.27 0 .51-.12.64-.34l1.69-2.15 1.66 2.14c.12.21.34.35.62.35h1.43c.2 0 .39-.08.5-.25.12-.18.09-.38-.02-.55l-2.77-3.54zM4.18 5H1.99V2.02h2.19c.62 0 1.08.13 1.38.37.29.22.44.62.44 1.08 0 .45-.15.94-.44 1.17-.31.23-.76.36-1.38.36zM15 2h-1V1c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1V4h1c.55 0 1-.45 1-1s-.45-1-1-1zM9.99 3.01c0 .02.01.04.01.06V2.95c0 .02-.01.04-.01.06z"],"new-text-box":["M5 6.5c0 .28.22.5.5.5H7v3.5c0 .28.22.5.5.5s.5-.22.5-.5V7h1.5c.28 0 .5-.22.5-.5S9.78 6 9.5 6h-4c-.28 0-.5.22-.5.5zM15 2h-1V1c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1V4h1c.55 0 1-.45 1-1s-.45-1-1-1zm-2 5c-.55 0-1 .45-1 1v5H3V4h5c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h11c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1z"],ninja:["M16 5s-2.52 2.11-4.96 1.99C11.03 4.89 10.39.23 5 0c0 0 2.11 2.54 1.96 4.99C4.86 5.01.23 5.65 0 11c0 0 2.56-2.12 5.02-1.95.02 2.11.67 6.72 5.98 6.95 0 0-2.09-2.54-1.94-4.99 2.11-.02 6.71-.68 6.94-6.01zM8 9.5c-.83 0-1.5-.67-1.5-1.5S7.17 6.5 8 6.5s1.5.67 1.5 1.5S8.83 9.5 8 9.5z"],"not-equal-to":["M7.58 5l.44-2.196a1 1 0 011.96.392L9.62 5H13a1 1 0 010 2H9.22l-.4 2H13a1 1 0 010 2H8.42l-.44 2.196a1 1 0 01-1.96-.392L6.38 11H3a1 1 0 010-2h3.78l.4-2H3a1 1 0 110-2h4.58z"],notifications:["M8 16c1.1 0 2-.9 2-2H6c0 1.1.9 2 2 2zm6-5c-.55 0-1-.45-1-1V6c0-2.43-1.73-4.45-4.02-4.9 0-.04.02-.06.02-.1 0-.55-.45-1-1-1S7 .45 7 1c0 .04.02.06.02.1A4.992 4.992 0 003 6v4c0 .55-.45 1-1 1s-1 .45-1 1 .45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1z"],"notifications-snooze":["M9 14c0 1.1-.9 2-2 2s-2-.9-2-2zM7 0c.404 0 .755.243.912.59L7.9.6c-.7.6-.9 1.36-.9 1.9 0 .8.267 1.433.8 1.9-.533.6-.795 1.222-.784 1.867l.004.358A2.8 2.8 0 009.82 9.4L12 9.399V10c0 .51.388.935.884.993L13 11c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1s.45-1 1-1 1-.45 1-1V6c0-2.43 1.73-4.45 4.02-4.9L6 1c0-.55.45-1 1-1z","M13 6.702a.632.632 0 00-.632-.632h-1.743l2.208-2.734A.75.75 0 0013 2.864v-.3A.565.565 0 0012.435 2H9.561a.561.561 0 100 1.123h1.814L9.221 5.795A1 1 0 009 6.423v.279c0 .349.283.631.632.631h2.736A.632.632 0 0013 6.702z"],"notifications-updated":["M8 16c1.1 0 2-.9 2-2H6c0 1.1.9 2 2 2zm3.399-13.667l-.413.412A2.99 2.99 0 009 1.99a3 3 0 00-3 2.99c0 .8.32 1.558.876 2.114l2.002 1.992A2.99 2.99 0 0013 9.184V10c0 .55.45 1 1 1s1 .45 1 1-.45 1-1 1H2c-.55 0-1-.45-1-1s.45-1 1-1 1-.45 1-1V6c0-2.43 1.73-4.45 4.02-4.9 0-.04-.02-.06-.02-.1 0-.55.45-1 1-1s1 .45 1 1c0 .04-.02.06-.02.1a4.97 4.97 0 012.419 1.233zM10.29 7.67l-2-1.99a.99.99 0 01-.29-.7 1 1 0 011-.99c.27 0 .52.11.7.29l1.29 1.29 3.28-3.28c.18-.18.42-.29.7-.29.55 0 1 .44 1 .99 0 .28-.11.52-.3.7l-3.98 3.98a.99.99 0 01-1.4 0z"],"numbered-list":["M2.76 7h1.26V0h-.94c-.04.21-.12.39-.25.54-.13.15-.29.27-.48.36-.18.09-.39.16-.62.2-.23.04-.46.06-.71.06v.9h1.74V7zm-.59 7.17c.18-.12.37-.25.58-.37a10.763 10.763 0 001.24-.83c.2-.16.37-.33.52-.51.15-.19.28-.39.37-.61.09-.22.14-.47.14-.74 0-.22-.04-.45-.12-.7-.08-.26-.21-.49-.4-.69-.18-.21-.43-.39-.72-.52-.3-.14-.68-.21-1.12-.21-.41 0-.77.07-1.08.2-.32.14-.58.32-.8.56-.22.23-.38.51-.49.84-.11.32-.16.67-.16 1.05h1.19c.01-.24.03-.47.08-.67.05-.21.11-.39.21-.54.09-.15.22-.27.38-.36.16-.09.35-.13.59-.13.26 0 .47.04.63.12.16.08.29.18.38.3.09.12.15.25.18.39s.05.27.05.4c-.01.27-.08.5-.22.71-.14.21-.32.4-.53.57-.22.18-.45.34-.71.49-.26.15-.51.31-.74.47-.5.31-.89.68-1.17 1.11-.3.41-.44.91-.45 1.48h5v-1H1.43c.05-.15.14-.29.27-.43.14-.13.29-.26.47-.38zM15.01 1.99h-7c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-1c0-.55-.44-1-1-1zm0 9h-7c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-1c0-.55-.44-1-1-1z"],numerical:["M2.79 4.61c-.13.17-.29.3-.48.41-.18.11-.39.18-.62.23-.23.04-.46.07-.71.07v1.03h1.74V12h1.26V4h-.94c-.04.23-.12.44-.25.61zm4.37 5.31c.18-.14.37-.28.58-.42l.63-.45c.21-.16.41-.33.61-.51s.37-.38.52-.59c.15-.21.28-.45.37-.7.09-.25.13-.54.13-.85 0-.25-.04-.52-.12-.8-.07-.29-.2-.55-.39-.79a2.18 2.18 0 00-.73-.6c-.29-.15-.66-.23-1.11-.23-.41 0-.77.08-1.08.23-.31.16-.58.37-.79.64-.22.27-.38.59-.49.96-.11.37-.16.77-.16 1.2h1.19c.01-.27.03-.53.08-.77.04-.24.11-.45.21-.62.09-.18.22-.32.38-.42.16-.1.35-.15.59-.15.26 0 .47.05.63.14.15.09.28.21.37.35.09.14.15.29.18.45.03.16.05.31.05.45-.01.31-.08.58-.22.82-.14.23-.32.45-.53.65-.22.21-.46.39-.71.57-.26.18-.51.36-.75.54-.5.36-.89.78-1.17 1.27-.28.49-.43 1.06-.44 1.71h5v-1.15H6.43c.05-.17.14-.33.27-.49.13-.15.29-.29.46-.44zm8.5-1.56c-.23-.35-.54-.57-.95-.65v-.02c.34-.13.6-.34.76-.63.16-.29.24-.63.24-1.02 0-.34-.06-.64-.19-.9s-.3-.47-.51-.64c-.21-.17-.45-.3-.72-.38-.27-.09-.54-.13-.82-.13-.36 0-.68.07-.96.2-.28.13-.53.32-.72.55-.2.23-.36.51-.47.83-.11.32-.18.66-.19 1.04h1.15c-.01-.2.01-.39.06-.58.05-.19.12-.36.22-.51.1-.15.22-.27.37-.36.15-.09.32-.13.53-.13.32 0 .59.1.79.3.21.2.31.46.31.79 0 .23-.05.43-.14.59-.09.16-.21.29-.35.38-.15.09-.32.16-.51.19-.19.04-.38.05-.57.04v.93c.23-.01.45 0 .67.02.22.02.42.08.59.17.18.09.32.23.43.4.11.18.16.41.16.71 0 .44-.13.78-.39 1.02s-.58.36-.97.36c-.45 0-.79-.16-1.02-.47-.23-.31-.33-.7-.32-1.17H11c.01.4.06.77.17 1.1.11.33.26.61.47.85.21.23.46.42.77.54.31.13.67.19 1.08.19.34 0 .66-.05.96-.16.3-.11.57-.27.8-.47.23-.2.41-.45.55-.74.13-.27.2-.6.2-.97 0-.5-.11-.92-.34-1.27z"],office:["M15 5h-3V1c0-.55-.45-1-1-1H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h3v-4h4v4h7c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zM5 10H2V7h3v3zm0-5H2V2h3v3zm5 5H7V7h3v3zm0-5H7V2h3v3zm4 9h-2v-2h2v2zm0-4h-2V7h2v3z"],offline:["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zM6 14l1-5H4l6-7-1 5h3l-6 7z"],"oil-field":["M15 14h-1.35l-3.34-7.51 2.46-.95 1.45 3.21c.09.2.36.3.6.23.1-.03.18-.08.24-.15.05-.08 1.23-1.56.87-4.2-.11-.79-.52-4.62-3.26-4.62-.93 0-1.68.62-1.67 1.37 0 .14.03.28.09.42l.87 1.92L.64 8.07v.01A.98.98 0 000 9c0 .55.45 1 1 1 .13 0 .25-.03.36-.07v.01l1.04-.4L3.67 14H2c-.55 0-1 .45-1 1s.45 1 1 1h13c.55 0 1-.45 1-1s-.45-1-1-1zM4.27 8.81L7.14 7.7 5.2 12.08l-.93-3.27zM6.54 14L9 8.46 11.46 14H6.54z"],"one-column":["M11.99-.01h-3c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-14c0-.55-.45-1-1-1zm-6 5c-.28 0-.53.11-.71.29l-2 2a1.014 1.014 0 000 1.42l2 2a1.003 1.003 0 001.71-.71v-4c0-.55-.45-1-1-1z"],outdated:["M8 0c4.42 0 8 3.58 8 8 0 4.06-3.02 7.4-6.94 7.92-.02 0-.04.01-.06.01-.33.04-.66.07-1 .07-4.42 0-8-3.58-8-8 0-.55.45-1 1-1s1 .45 1 1c0 3.31 2.69 6 6 6 .71 0 1.37-.15 2-.38v.01c2.33-.82 4-3.02 4-5.63 0-3.31-2.69-6-6-6-1.78 0-3.36.78-4.46 2H5c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1s1 .45 1 1v1.74A7.95 7.95 0 018 0zm1 12H7v-2h2v2zm0-3H7V4h2v5z"],"page-layout":["M15 .95H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-12c0-.55-.45-1-1-1zm-9 12H2v-6h4v6zm8 0H7v-6h7v6zm0-7H2v-3h12v3z"],"panel-stats":["M10 4h3v1h-3zM10 6h3v1h-3zM10 8h3v1h-3zM10 10h3v1h-3z","M15 1H1c-.6 0-1 .4-1 1v11c0 .6.4 1 1 1h14c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1zM8 12H2V3h6v9zm6 0H9V3h5v9z"],"panel-table":["M15 1H1c-.6 0-1 .4-1 1v11c0 .6.4 1 1 1h14c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1zM8 9H6V7h2v2zm0-3H6V4h2v2zm-6 6V3h3v9H2zm4 0v-2h2v2H6zm8 0H9v-2h5v2zm0-3H9V7h5v2zm0-3H9V4h5v2z"],paperclip:["M14.68 2.31A4.54 4.54 0 0011.46.99c-1.15 0-2.31.44-3.19 1.32L.95 9.63c-.63.63-.95 1.46-.95 2.28a3.21 3.21 0 003.23 3.22c.83 0 1.66-.31 2.3-.95l7.31-7.32c.76-.77.76-1.98.01-2.73s-1.99-.76-2.75 0l-6.07 6.08c-.24.25-.24.65.01.9s.65.25.91.01l6.07-6.08c.25-.25.67-.25.91-.01.25.25.25.67 0 .92l-7.31 7.32c-.75.75-2.04.74-2.76.01-.75-.75-.73-2.02.01-2.76L9.2 3.21c1.24-1.24 3.35-1.26 4.58-.03 1.24 1.24 1.24 3.36 0 4.6l-7.12 7.13c-.24.25-.24.64.01.88.24.24.63.24.88.01v.01l7.13-7.13A4.41 4.41 0 0016 5.51c0-1.16-.44-2.32-1.32-3.2z"],paragraph:["M13 1H6C3.8 1 2 2.8 2 5s1.8 4 4 4v5c0 .6.4 1 1 1s1-.5 1-1V3h2v11c0 .6.4 1 1 1s1-.5 1-1V3h1c.5 0 1-.4 1-1s-.4-1-1-1z"],path:["M14.5 0h-13C.67 0 0 .67 0 1.5S.67 3 1.5 3H7v3H3.5C2.67 6 2 6.67 2 7.5S2.67 9 3.5 9H7v3H5.5c-.83 0-1.5.67-1.5 1.5S4.67 15 5.5 15h5c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5H9V9h3.5c.83 0 1.5-.67 1.5-1.5S13.33 6 12.5 6H9V3h5.5c.83 0 1.5-.67 1.5-1.5S15.33 0 14.5 0z"],"path-search":["M15 14.62l-4-2.4V9.77c-.32.09-.66.15-1 .18v2.27l-4 2.4V8.71c-.38-.31-.72-.66-1-1.06v6.97l-4-2.4V8c.55 0 1-.45 1-1s-.45-1-1-1V1.38l3.15 1.89c.08-.34.18-.66.32-.97L.76.07v.01A.496.496 0 00.5 0C.22 0 0 .22 0 .5v12c0 .18.1.33.25.42v.01l5 3v-.01c.07.05.16.08.25.08s.18-.03.25-.08v.01l4.74-2.85 4.74 2.85v-.01c.09.05.18.08.27.08.28 0 .5-.22.5-.5v-3.78c-.3.17-.63.28-1 .28v2.62zM2 5c0 .55.45 1 1 1s1-.45 1-1-.45-1-1-1-1 .45-1 1zm6-1c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm7.75-.92l-1.19-.72c.18.43.29.9.36 1.38l.08.04v3.39l1 1V3.5c0-.18-.1-.33-.25-.42zM10 2c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm3.3 4.89c.44-.7.7-1.51.7-2.39C14 2.01 11.99 0 9.5 0S5 2.01 5 4.5 7.01 9 9.5 9c.88 0 1.69-.26 2.39-.7l2.41 2.41c.17.18.42.29.7.29a1.003 1.003 0 00.71-1.71l-2.41-2.4zM9.5 8C7.57 8 6 6.43 6 4.5S7.57 1 9.5 1 13 2.57 13 4.5 11.43 8 9.5 8z"],pause:["M6 3H4c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zm6 0h-2c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],people:["M13.69 13.98c-.05-.24-.14-.5-.25-.76-.36-.86-1.12-1.33-2.69-2-.14-.06-.59-.25-.6-.25-.21-.09-.36-.15-.5-.22.02-.1.02-.2.03-.31 0-.04.01-.08.01-.13-.07-.06-.13-.12-.19-.19.22-.32.4-.67.54-1.05.02-.06.02-.06.03-.1.29-.23.48-.57.59-.96.16-.33.25-.73.21-1.16-.03-.4-.16-.76-.37-1.03-.02-.53-.07-1.13-.15-1.54-.01-.06-.02-.12-.03-.19.23-.06.48-.09.72-.09.49 0 1.05.16 1.44.46.38.29.67.7.8 1.17.03.1.05.21.07.31.07.37.11.94.11 1.33v.05c.14.06.27.21.29.51.02.25-.07.45-.13.54-.05.21-.16.44-.38.48-.02.1-.05.2-.09.3 0 .01-.01.03-.01.03-.17.44-.43.83-.75 1.11v.14c.03.35-.09.59.83 1 .93.41 2.32.84 2.6 1.5.29.66.17 1.04.17 1.04h-2.3zm-1.17-.38c.37.86.22 1.36.22 1.36H.06s-.14-.5.22-1.36 2.13-1.43 3.31-1.96c1.17-.54 1.05-.86 1.09-1.3 0-.05.01-.11.01-.17-.41-.35-.75-.86-.97-1.45v-.01s-.01-.01-.01-.02c-.04-.12-.09-.26-.12-.39-.28-.05-.44-.36-.5-.64-.06-.12-.19-.39-.16-.71.04-.41.21-.6.39-.68v-.06c0-.51.05-1.26.14-1.74.02-.13.05-.27.09-.4.17-.6.54-1.13 1.02-1.51.5-.39 1.21-.6 1.84-.6s1.34.21 1.84.6c.48.38.85.91 1.02 1.52.04.13.07.27.09.4.09.48.14 1.22.14 1.73v.07c.18.08.34.27.37.67.03.32-.09.59-.16.71-.06.28-.21.58-.48.63-.03.13-.07.26-.12.39 0 .01-.01.04-.01.04-.22.58-.55 1.08-.95 1.45v.18c.04.45-.12.77 1.06 1.3 1.18.53 2.95 1.09 3.31 1.95z"],percentage:["M6 6V4c0-1.1-.9-2-2-2H3c-1.1 0-2 .9-2 2v2c0 1.1.9 2 2 2h1c1.1 0 2-.9 2-2zM3.5 6c-.28 0-.5-.22-.5-.5v-1c0-.28.22-.5.5-.5s.5.22.5.5v1c0 .28-.22.5-.5.5zM13 8h-1c-1.1 0-2 .9-2 2v2c0 1.1.9 2 2 2h1c1.1 0 2-.9 2-2v-2c0-1.1-.9-2-2-2zm0 3.5c0 .28-.22.5-.5.5s-.5-.22-.5-.5v-1c0-.28.22-.5.5-.5s.5.22.5.5v1zM12 3a1.003 1.003 0 00-1.87-.5l-5.99 9.98c-.09.15-.14.33-.14.52a1.003 1.003 0 001.87.5l5.99-9.98c.09-.15.14-.33.14-.52z"],person:["M15.68 14.32c-.46-1.05-2.68-1.75-4.16-2.4-1.48-.65-1.28-1.05-1.33-1.59-.01-.07-.01-.15-.01-.23.51-.45.92-1.07 1.19-1.78 0 0 .01-.04.02-.05.06-.15.11-.32.15-.48.34-.07.54-.44.61-.78.08-.14.23-.48.2-.87-.05-.5-.25-.73-.47-.82v-.09c0-.63-.06-1.55-.17-2.15A3.671 3.671 0 0010.32.72C9.68.25 8.79-.01 8-.01c-.79 0-1.68.25-2.31.73-.61.47-1.06 1.13-1.28 1.86-.05.17-.09.33-.11.5-.12.6-.17 1.51-.17 2.15v.08c-.24.09-.45.32-.5.83-.03.38.13.72.2.86.08.35.28.72.63.78.04.17.09.33.15.49 0 .01.01.02.01.03l.01.01c.27.72.7 1.35 1.22 1.8 0 .07-.01.14-.01.21-.05.54.1.94-1.37 1.59-1.48.65-3.7 1.35-4.16 2.4-.46 1.05-.27 1.67-.27 1.67h15.92c-.01.01.18-.61-.28-1.66z"],phone:["M15.9 12.41c-.06-.06-3.37-2-3.48-2.05a.794.794 0 00-.32-.08c-.15 0-.34.11-.57.32-.23.22-.94 1.19-1.15 1.4-.21.22-.38.32-.52.32-.07 0-.15-.02-.25-.06-.1-.04-1.16-.58-3.36-2.52-2.2-1.93-2.49-3.2-2.5-3.55 0-.14.11-.31.32-.52.22-.21.45-.41.7-.6.25-.19.49-.4.7-.62.22-.23.32-.42.32-.57 0-.11-.03-.21-.08-.32C5.66 3.46 3.66.15 3.59.08 3.44-.07 2.85 0 2.55.16.16 1.46-.03 3.2 0 3.89c.04.71.49 4.46 4.16 7.95C8.72 16.17 11.89 16 12.1 16c.69 0 2.82-.38 3.72-2.55.13-.32.25-.87.08-1.04z"],"pie-chart":["M7 1.08c-3.37.5-5.97 3.4-5.97 6.92 0 3.87 3.13 7 6.98 7 3.52 0 6.42-2.61 6.91-6H7V1.08z","M8 0v8h8c0-4.42-3.58-8-8-8z"],pin:["M9.41.92c-.51.51-.41 1.5.15 2.56L4.34 7.54C2.8 6.48 1.45 6.05.92 6.58l3.54 3.54-3.54 4.95 4.95-3.54 3.54 3.54c.53-.53.1-1.88-.96-3.42l4.06-5.22c1.06.56 2.04.66 2.55.15L9.41.92z"],pivot:["M4.57 7.02L.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4.27-4.27c-.58-.35-1.07-.84-1.41-1.42zM15 8c-.55 0-1 .45-1 1v.59l-2.57-2.57c-.34.58-.83 1.07-1.41 1.41L12.59 11H12c-.55 0-1 .45-1 1s.45 1 1 1h3c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zm-4-3c0-1.66-1.34-3-3-3S5 3.34 5 5s1.34 3 3 3 3-1.34 3-3zM8 6c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"pivot-table":["M2 4H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm0-4H1C.45 0 0 .45 0 1v1c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm11.71 4.29C13.53 4.11 13.28 4 13 4s-.53.11-.71.29l-2 2a1.003 1.003 0 001.42 1.42l.29-.3V9c0 1.66-1.34 3-3 3H7.41l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H9c2.76 0 5-2.24 5-5V7.41l.29.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-2-2zM15 0H5c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],play:["M12 8c0-.35-.19-.64-.46-.82l.01-.02-6-4-.01.02A.969.969 0 005 3c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1 .21 0 .39-.08.54-.18l.01.02 6-4-.01-.02c.27-.18.46-.47.46-.82z"],plus:["M13 7H9V3c0-.55-.45-1-1-1s-1 .45-1 1v4H3c-.55 0-1 .45-1 1s.45 1 1 1h4v4c0 .55.45 1 1 1s1-.45 1-1V9h4c.55 0 1-.45 1-1s-.45-1-1-1z"],"polygon-filter":["M14 5c-.24 0-.47.05-.68.13L9.97 2.34c.01-.11.03-.22.03-.34 0-1.1-.9-2-2-2S6 .9 6 2c0 .04.01.08.01.12L2.88 4.21C2.61 4.08 2.32 4 2 4 .9 4 0 4.9 0 6c0 .74.4 1.38 1 1.72v4.55c-.6.35-1 .99-1 1.73 0 1.1.9 2 2 2 .74 0 1.38-.4 1.72-1h4.55c.35.6.98 1 1.72 1 1.1 0 2-.9 2-2 0-.37-.11-.7-.28-1L14 9c1.11-.01 2-.9 2-2s-.9-2-2-2zm-4.01 7c-.73 0-1.37.41-1.71 1H3.73c-.18-.3-.43-.55-.73-.72V7.72c.6-.34 1-.98 1-1.72 0-.04-.01-.08-.01-.12l3.13-2.09c.27.13.56.21.88.21.24 0 .47-.05.68-.13l3.35 2.79c-.01.11-.03.22-.03.34 0 .37.11.7.28 1l-2.29 4z"],power:["M8 8c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1S7 .45 7 1v6c0 .55.45 1 1 1zm3-5.32v2.34c1.21.91 2 2.35 2 3.98 0 2.76-2.24 5-5 5s-5-2.24-5-5c0-1.63.79-3.06 2-3.98V2.68C2.64 3.81 1 6.21 1 9c0 3.87 3.13 7 7 7s7-3.13 7-7c0-2.79-1.64-5.19-4-6.32z"],"predictive-analysis":["M16 6.41c0-1.01-.49-1.94-1.29-2.49-.43-1.92-2.07-3.28-4-3.28-.46 0-.92.08-1.35.24C8.83.31 8.11 0 7.34 0c-.9 0-1.74.44-2.28 1.16-.12-.01-.24-.02-.36-.02-1.31 0-2.42.89-2.77 2.17C.78 3.72 0 4.84 0 6.13c0 .38.07.76.21 1.12C.07 7.6 0 7.98 0 8.36c0 1.11.58 2.11 1.51 2.63.54.56 1.27.87 2.03.87.49 0 .95-.12 1.37-.36a2.85 2.85 0 002.18 1.04c.52 0 1.03-.14 1.47-.42.49.39 1.07.65 1.69.73 1.04 1.15 1.84 2.63 1.84 2.64 0 0 .28.49.26.49.77 0 1.41-.16 1.32-1.04 0 .02-.73-2.31-.73-2.31.41-.21.75-.55.97-.98.9-.52 1.47-1.53 1.47-2.61 0-.24-.03-.48-.08-.71.45-.52.7-1.21.7-1.92zm-1.23 1.02l-.15-.16-.61-.67c-.27-.29-.54-.94-.58-1.39l-.1-1.01c-.05-.59-.94-.58-.91.11 0 .02.1 1.01.1 1.01.03.29.12.62.24.93-.06-.01-.12-.02-.18-.02 0 0-2.06-.1-2.05-.11-.58-.02-.71.97-.04 1l2.05.11c.42.02 1.04.3 1.29.58l.49.54.02.05c.08.21.12.44.12.66 0 .74-.41 1.41-1.07 1.75l-.16.08-.07.18c-.15.38-.48.66-.88.74l-.54.11.7 2.2c-.38-.61-.95-1.43-1.62-2.14l-.12-.13-.17-.01c-.41-.03-.8-.17-1.14-.38l1.36-1.18c.35-.31.83-.44.99-.39 0 0 .63.17.62.18.63.16.83-.74.23-.97l-.62-.18c-.55-.16-1.33.18-1.79.58l-1.53 1.33-.31.26c-.35.29-.75.44-1.2.44-.64 0-1.23-.33-1.58-.86V9.15c0-.4.17-.79.27-.85 0 0 .52-.34.51-.35.71-.53.18-1.23-.49-.89 0-.01-.52.35-.52.35-.26.15-.45.44-.58.77-.11-.11-.22-.2-.34-.28 0 0-1.53-1.01-1.53-1.02-.65-.45-1.2.51-.49.89 0-.01 1.51 1.02 1.51 1.02.37.24.62.78.62 1.09v.67c-.34.19-.63.29-.99.29-.54 0-1.05-.23-1.41-.63l-.05-.06-.07-.04c-.65-.34-1.05-1-1.05-1.73 0-.3.07-.6.2-.87l.12-.25L1.15 7c-.13-.27-.2-.56-.2-.87 0-.9.61-1.68 1.48-1.89l.31-.08.05-.34a1.926 1.926 0 012.38-1.58l.32.08.18-.31c.35-.6.99-.97 1.67-.97.44 0 .86.15 1.2.42l-.36.36v-.01l-.25.26c-.33.27-.74.42-.89.4 0 0-.67-.1-.67-.11-.67-.13-.87.86-.14 1.02.01 0 .67.11.67.11.02 0 .05 0 .07.01-.11.37-.15.77-.1 1.12 0 0 .17.99.15.99.11.52 1.06.36.93-.18 0-.01-.15-.99-.15-.99-.05-.37.12-.94.36-1.19l.39-.4c.05-.05.1-.09.15-.14l.74-.76c.4-.18.83-.27 1.27-.27 1.55 0 2.86 1.12 3.11 2.67l.04.25.21.12c.61.35.98 1 .98 1.7 0 .36-.1.7-.28 1.01z"],prescription:["M10.91 8.34c.14-.21.36-.34.63-.34h1.29c.22 0 .41.07.52.26.09.16.08.33-.04.53l-2.49 2.87 2.77 3.54c.12.17.14.37.02.55-.11.17-.3.25-.5.25h-1.44a.69.69 0 01-.61-.35L9.4 13.51l-1.69 2.15c-.13.21-.36.34-.63.34H5.8c-.22 0-.41-.07-.52-.26-.09-.16-.08-.33.04-.53l2.71-3.48L4.3 6.99H3.03v3.47c0 .33-.26.56-.62.56h-.8c-.35-.01-.61-.23-.61-.56V.56c0-.33.26-.56.62-.56h3.11c.62 0 1.19.08 1.7.24.51.16.96.39 1.34.69a3.194 3.194 0 011.21 2.53c0 .81-.25 1.5-.74 2.08-.37.44-.84.77-1.42 1.01L7.88 7.9c.04.04.07.08.08.1l1.49 1.9 1.46-1.56zM5.18 5c.62 0 1.08-.13 1.39-.37.29-.23.44-.71.44-1.16s-.15-.87-.44-1.1C6.26 2.12 5.8 2 5.18 2H2.99v3h2.19z"],presentation:["M15 1H9c0-.55-.45-1-1-1S7 .45 7 1H1c-.55 0-1 .45-1 1s.45 1 1 1v8c0 .55.45 1 1 1h3.59L3.3 14.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L7 13.41V15c0 .55.45 1 1 1s1-.45 1-1v-1.59l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L10.41 12H14c.55 0 1-.45 1-1V3c.55 0 1-.45 1-1s-.45-1-1-1zm-2 9H3V3h10v7z"],print:["M12 2.02c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v1h8v-1zm3 2H1c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h1v-3h12v3h1c.55 0 1-.45 1-1v-6c0-.56-.45-1-1-1zm-1 3h-2v-1h2v1zm-3 6H5v-3H3v4c0 .55.45 1 1 1h8c.55 0 1-.45 1-1v-4h-2v3z"],projects:["M14 3c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v1h12V3zm-2-3H4c-.55 0-1 .45-1 1h10c0-.55-.45-1-1-1zm3 5H1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-3 6c0 .55-.45 1-1 1H5c-.55 0-1-.45-1-1V9h1v2h6V9h1v2z"],properties:["M2 6C.9 6 0 6.9 0 8s.9 2 2 2 2-.9 2-2-.9-2-2-2zm4-3h9c.55 0 1-.45 1-1s-.45-1-1-1H6c-.55 0-1 .45-1 1s.45 1 1 1zm-4 9c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm13-5H6c-.55 0-1 .45-1 1s.45 1 1 1h9c.55 0 1-.45 1-1s-.45-1-1-1zm0 6H6c-.55 0-1 .45-1 1s.45 1 1 1h9c.55 0 1-.45 1-1s-.45-1-1-1zM2 0C.9 0 0 .9 0 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],property:["M3 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-.5-6.5a2.5 2.5 0 000 5 2.5 2.5 0 000-5zM7 3h8c.55 0 1-.45 1-1s-.45-1-1-1H7c-.55 0-1 .45-1 1s.45 1 1 1zm8 10H7c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1zM3 0C1.9 0 1 .9 1 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 6H7c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h8c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1z"],"publish-function":["M12.16 3.76c.15-.11.3-.16.47-.16.06 0 .17.02.34.06.16.04.31.06.43.06a.58.58 0 00.6-.6c0-.19-.06-.33-.17-.44-.11-.11-.28-.16-.49-.16-.19 0-.37.04-.54.13-.17.09-.39.27-.65.55-.2.21-.48.58-.87 1.11a5.22 5.22 0 00-.78-1.79l-2.05.32-.04.21c.15-.03.28-.04.39-.04.2 0 .37.08.5.25.21.26.5 1.03.88 2.33-.29.36-.49.6-.6.71-.18.19-.33.31-.45.36-.09.04-.19.07-.3.07-.09 0-.23-.04-.42-.13a.904.904 0 00-.36-.09c-.2 0-.36.06-.49.18a.59.59 0 00-.19.46c0 .18.06.32.18.43.12.11.28.16.48.16.2 0 .38-.04.55-.12.17-.08.39-.24.65-.49s.62-.65 1.07-1.19c.18.52.33.89.46 1.13.13.24.28.4.44.51.17.1.37.16.62.16.24 0 .49-.08.74-.25.33-.21.66-.58 1.01-1.09l-.21-.11c-.23.31-.41.5-.52.57a.44.44 0 01-.26.07c-.12 0-.24-.07-.36-.21-.2-.24-.46-.91-.8-2 .29-.49.54-.81.74-.96zM6.37 5.83l.68-2.53h.83l.2-.64h-.84c.24-.91.56-1.59.96-2.01.24-.27.48-.4.71-.4.05 0 .08.01.11.04s.04.06.04.1c0 .04-.03.11-.1.21-.06.1-.1.2-.1.29 0 .13.05.24.15.33.1.09.23.14.39.14.17 0 .31-.06.42-.17.12-.12.18-.27.18-.46 0-.21-.08-.39-.25-.52C9.57.07 9.3 0 8.93 0c-.59 0-1.12.16-1.59.48-.48.32-.93.85-1.36 1.59-.15.26-.29.42-.42.49s-.35.11-.64.1l-.19.65h.81L4.35 7.68c-.2.72-.33 1.16-.4 1.33-.1.24-.26.45-.46.62a.48.48 0 01-.31.1c-.03 0-.06-.01-.08-.03l-.03-.03c0-.02.03-.06.09-.11.06-.06.09-.15.09-.26 0-.13-.05-.23-.14-.32-.1-.09-.23-.13-.41-.13-.21 0-.38.05-.51.16A.52.52 0 002 9.4c0 .16.08.3.23.42.16.12.4.18.74.18.53 0 .99-.13 1.4-.39.41-.26.76-.65 1.07-1.19.3-.53.61-1.39.93-2.59zm2.34 3.46A.997.997 0 008 9c-.28 0-.53.11-.71.29l-2 2a1.003 1.003 0 001.42 1.42l.29-.3V15c0 .55.45 1 1 1s1-.45 1-1v-2.59l.29.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-2-2z"],pulse:["M15 8h-1.46l-1.7-2.55-.02.01A.984.984 0 0011 5c-.43 0-.79.27-.93.65h-.01l-1.69 4.51-1.38-8.32h-.02A.989.989 0 006 1c-.41 0-.77.25-.92.61L2.34 8H1c-.55 0-1 .45-1 1s.45 1 1 1h2c.41 0 .77-.25.92-.61l1.65-3.86 1.44 8.63h.02c.08.47.47.84.97.84.43 0 .79-.27.93-.65h.01l2.31-6.17.92 1.38.02-.01c.17.26.46.45.81.45h2c.55 0 1-.45 1-1s-.45-1-1-1z"],random:["M11.48 4h1.11l-.29.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-2-2a1.003 1.003 0 00-1.42 1.42l.3.29H11c-.32 0-.59.16-.77.38l-.01-.01L8.28 4.8l1.28 1.6L11.48 4zm2.23 6.29a1.003 1.003 0 00-1.42 1.42l.3.29h-1.11l-7.7-9.62h-.01A.996.996 0 003 2H1c-.55 0-1 .45-1 1s.45 1 1 1h1.52l7.7 9.62.01-.01c.18.23.45.39.77.39h1.59l-.29.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-2-2zM2.52 12H1c-.55 0-1 .45-1 1s.45 1 1 1h2c.32 0 .59-.16.77-.38l.01.01 1.94-2.42L4.44 9.6 2.52 12z"],record:["M8 3a5 5 0 100 10A5 5 0 108 3z"],redo:["M12 11c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm3.71-6.71l-3-3a1.003 1.003 0 00-1.42 1.42L12.59 4H5C2.24 4 0 6.24 0 9s2.24 5 5 5h4v-2H5c-1.66 0-3-1.34-3-3s1.34-3 3-3h7.59L11.3 7.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],refresh:["M14.99 6.99c-.55 0-1 .45-1 1 0 3.31-2.69 6-6 6-1.77 0-3.36-.78-4.46-2h1.46c.55 0 1-.45 1-1s-.45-1-1-1h-4c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1s1-.45 1-1v-1.74a7.95 7.95 0 006 2.74c4.42 0 8-3.58 8-8 0-.55-.45-1-1-1zm0-7c-.55 0-1 .45-1 1v1.74a7.95 7.95 0 00-6-2.74c-4.42 0-8 3.58-8 8 0 .55.45 1 1 1s1-.45 1-1c0-3.31 2.69-6 6-6 1.77 0 3.36.78 4.46 2h-1.46c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1z"],"regression-chart":["M13 6.5c0 .83.67 1.5 1.5 1.5S16 7.33 16 6.5 15.33 5 14.5 5 13 5.67 13 6.5zM8.5 5c.83 0 1.5-.67 1.5-1.5S9.33 2 8.5 2 7 2.67 7 3.5 7.67 5 8.5 5zM9 9.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5S11.33 8 10.5 8 9 8.67 9 9.5zM4.5 8C5.33 8 6 7.33 6 6.5S5.33 5 4.5 5 3 5.67 3 6.5 3.67 8 4.5 8zM15 12H3.26l12.03-8.59-.58-.81L2 11.67V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],remove:["M10.99 6.99h-6c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1zm-3-7c-4.42 0-8 3.58-8 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.68 6-6 6z"],"remove-column":["M14 0H4c-.55 0-1 .45-1 1v3h2V2h3v12H5v-2H3v3c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14h-3V2h3v12zm-8.71-3.29a1.003 1.003 0 001.42-1.42L4.41 8 5.7 6.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L3 6.59l-1.29-1.3A1.003 1.003 0 00.29 6.71L1.59 8 .29 9.29a1.003 1.003 0 001.42 1.42L3 9.41l1.29 1.3z"],"remove-column-left":["M4 9h4c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zm11-9H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-5 14H2V2h8v12zm4 0h-3V2h3v12z"],"remove-column-right":["M15 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM5 14H2V2h3v12zm9 0H6V2h8v12zM8 9h4c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1z"],"remove-row-bottom":["M15 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H2V6h12v8zm0-9H2V2h12v3zm-8 6h4c.55 0 1-.45 1-1s-.45-1-1-1H6c-.55 0-1 .45-1 1s.45 1 1 1z"],"remove-row-top":["M15 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H2v-3h12v3zm0-4H2V2h12v8zM6 7h4c.55 0 1-.45 1-1s-.45-1-1-1H6c-.55 0-1 .45-1 1s.45 1 1 1z"],repeat:["M10 5c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1s-1 .45-1 1v1.74A7.95 7.95 0 008 0C3.58 0 0 3.58 0 8c0 4.06 3.02 7.4 6.94 7.92.02 0 .04.01.06.01.33.04.66.07 1 .07 4.42 0 8-3.58 8-8 0-.55-.45-1-1-1s-1 .45-1 1c0 3.31-2.69 6-6 6-.71 0-1.37-.15-2-.38v.01C3.67 12.81 2 10.61 2 8c0-3.31 2.69-6 6-6 1.77 0 3.36.78 4.46 2H11c-.55 0-1 .45-1 1z"],reset:["M6 5c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V1c0-.55.45-1 1-1s1 .45 1 1v1.74A7.95 7.95 0 018 0c4.42 0 8 3.58 8 8 0 4.06-3.02 7.4-6.94 7.92-.02 0-.04.01-.06.01-.33.04-.66.07-1 .07-4.42 0-8-3.58-8-8 0-.55.45-1 1-1s1 .45 1 1c0 3.31 2.69 6 6 6 .71 0 1.37-.15 2-.38v.01c2.33-.82 4-3.02 4-5.63 0-3.31-2.69-6-6-6-1.77 0-3.36.78-4.46 2H5c.55 0 1 .45 1 1z"],resolve:["M6.6 3.3C6.1 3.1 5.6 3 5 3 2.2 3 0 5.2 0 8s2.2 5 5 5c.6 0 1.1-.1 1.6-.3C5.3 11.6 4.5 9.9 4.5 8s.8-3.6 2.1-4.7zM8 4c-1.2.9-2 2.4-2 4s.8 3.1 2 4c1.2-.9 2-2.3 2-4s-.8-3.1-2-4zm3-1c-.6 0-1.1.1-1.6.3 1.3 1.2 2.1 2.9 2.1 4.7s-.8 3.6-2.1 4.7c.5.2 1 .3 1.6.3 2.8 0 5-2.2 5-5s-2.2-5-5-5z"],rig:["M5.71 3c0 1.1.96 2 2.14 2C9.04 5 10 3.96 10 3c0-1.96-1.47-3-2.14-3H5c0 1.96 2.68 1.4.71 3zm2.5 3l.01.01s0-.01-.01-.01zm6.5 8.29L10 9.59V7c0-.55-.45-1-1-1H7c-.55 0-1 .45-1 1v2.58l-4.71 4.7c-.18.19-.29.44-.29.72a1.003 1.003 0 001.71.71L6 12.42V15c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-2.58l3.29 3.29a1.003 1.003 0 001.42-1.42z"],"right-join":["M6.6 3.3C5.3 4.4 4.5 6.1 4.5 8s.8 3.6 2.1 4.7c-.5.2-1 .3-1.6.3-2.8 0-5-2.2-5-5s2.2-5 5-5c.6 0 1.1.1 1.6.3zm-1.96 8.68C3.92 10.83 3.5 9.46 3.5 8s.42-2.83 1.14-3.98C2.6 4.2 1 5.91 1 8s1.6 3.8 3.64 3.98zM8 4c-1.2.9-2 2.4-2 4s.8 3.1 2 4c1.2-.9 2-2.3 2-4s-.8-3.1-2-4zm3-1c2.8 0 5 2.2 5 5s-2.2 5-5 5c-.6 0-1.1-.1-1.6-.3 1.3-1.1 2.1-2.9 2.1-4.7s-.8-3.5-2.1-4.7c.5-.2 1-.3 1.6-.3z"],ring:["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 12c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z"],"rotate-document":["M12 2h-1.59l.29-.29c.19-.18.3-.43.3-.71A1.003 1.003 0 009.29.29l-2 2C7.11 2.47 7 2.72 7 3c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H12c.55 0 1 .45 1 1v3c0 .55.45 1 1 1s1-.45 1-1V5c0-1.66-1.34-3-3-3zM5.71 5.29A.997.997 0 005 5H1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V9c0-.28-.11-.53-.29-.71l-3-3zM7 14H2V7h2v2c0 .55.45 1 1 1h2v4z"],"rotate-page":["M8 6H2c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h6c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1zm-1 8H3V8h4v6zm5-12h-1.59l.29-.29c.19-.18.3-.43.3-.71A1.003 1.003 0 009.29.29l-2 2C7.11 2.47 7 2.72 7 3c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H12c.55 0 1 .45 1 1v3c0 .55.45 1 1 1s1-.45 1-1V5c0-1.66-1.34-3-3-3z"],route:["M11.669 5.066l.099.189c.113.213.236.434.367.661.226.39.468.78.709 1.151l-.198-.004-.48-.004c-1.745.003-2.369.233-2.369.688 0 .053.226.19 1.038.436l.84.24C13.9 9.064 15 9.83 15 11.63c0 2.123-1.607 3.122-4.027 3.366-.651.065-1.266.075-2.043.05l-.958-.035H5.196l.268-.406c.336-.517.672-1.052.998-1.593h1.636l.572.023c.857.036 1.475.034 2.103-.03 1.526-.153 2.227-.59 2.227-1.375 0-.531-.402-.84-1.66-1.22l-.691-.198c-1.04-.293-1.764-.562-2.222-.946C8.8 8.366 9 7.612 9 6.997a5.03 5.03 0 00-.184-1.334c.645-.395 1.598-.562 2.853-.597zM4 3a4.007 4.007 0 014 3.997C8 9.21 4 15 4 15l-.416-.62C2.56 12.827 0 8.767 0 6.997A4.002 4.002 0 014 3zm0 2a2 2 0 10.001 4.001A2 2 0 004 5zm10-4c1.103 0 1.996.896 2 1.999C16 4.105 14 7 14 7l-.293-.44C13.15 5.707 12 3.838 12 2.999 12 1.896 12.897 1 14 1z"],satellite:["M3 9c0-.6.4-1 1-1s1 .4 1 1c0 1.1.9 2 2 2 .6 0 1 .4 1 1s-.4 1-1 1c-2.2 0-4-1.8-4-4zM0 9c0-.6.4-1 1-1s1 .4 1 1c0 2.8 2.2 5 5 5 .6 0 1 .4 1 1s-.4 1-1 1c-3.9 0-7-3.1-7-7zm7 1c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1zm1.3-2.8c-.4-.4-.4-1 0-1.4l4.5-4.5c.4-.4 1-.4 1.4 0l.5.5c.4.4.4 1 0 1.4l-4.5 4.5c-.4.4-1 .4-1.4 0l-.5-.5zM5.2.3c.4-.4 1-.4 1.4 0l2.1 2.1c.4.4.4 1 0 1.4l-.9.9c-.4.4-1 .4-1.4 0L4.3 2.6c-.4-.4-.4-1 0-1.4l.9-.9zm7 7c.4-.4 1-.4 1.4 0l2.1 2.1c.4.4.4 1 0 1.4l-.9.9c-.4.4-1 .4-1.4 0l-2.1-2.1c-.4-.4-.4-1 0-1.4l.9-.9z"],saved:["M6.71 9.29a1.003 1.003 0 00-1.42 1.42l2 2a.997.997 0 001.6-.27h.01l2-4h-.01c.06-.13.11-.28.11-.44 0-.55-.45-1-1-1-.39 0-.72.23-.89.56H9.1l-1.38 2.76-1.01-1.03zM9 0H3c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V5L9 0zm3 14H4V2h4v4h4v8z"],"scatter-plot":["M15 12H2V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm-.5-7c.83 0 1.5-.67 1.5-1.5S15.33 2 14.5 2 13 2.67 13 3.5 13.67 5 14.5 5zm-3 4c.83 0 1.5-.67 1.5-1.5S12.33 6 11.5 6 10 6.67 10 7.5 10.67 9 11.5 9zm-4-2C8.33 7 9 6.33 9 5.5S8.33 4 7.5 4 6 4.67 6 5.5 6.67 7 7.5 7zm-3 4c.83 0 1.5-.67 1.5-1.5S5.33 8 4.5 8 3 8.67 3 9.5 3.67 11 4.5 11z"],search:["M15.55 13.43l-2.67-2.68a6.94 6.94 0 001.11-3.76c0-3.87-3.13-7-7-7s-7 3.13-7 7 3.13 7 7 7c1.39 0 2.68-.42 3.76-1.11l2.68 2.67a1.498 1.498 0 102.12-2.12zm-8.56-1.44c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"],"search-around":["M13.5 11c-.51 0-.98.15-1.38.42l-2.4-2.41c.17-.3.28-.64.28-1.01s-.11-.71-.28-1.01l2.41-2.41c.39.27.86.42 1.37.42a2.5 2.5 0 000-5A2.5 2.5 0 0011 2.5c0 .51.15.98.42 1.38l-2.41 2.4C8.71 6.11 8.37 6 8 6s-.71.11-1.01.28l-2.41-2.4c.27-.4.42-.87.42-1.38a2.5 2.5 0 00-5 0A2.5 2.5 0 002.5 5c.51 0 .98-.15 1.38-.42l2.41 2.41C6.11 7.29 6 7.63 6 8s.11.71.28 1.01l-2.41 2.41c-.39-.27-.86-.42-1.37-.42a2.5 2.5 0 000 5A2.5 2.5 0 005 13.5c0-.51-.15-.98-.42-1.38l2.41-2.41c.3.18.64.29 1.01.29s.71-.11 1.01-.28l2.41 2.41c-.27.39-.42.86-.42 1.37a2.5 2.5 0 005 0 2.5 2.5 0 00-2.5-2.5zm0-10c.83 0 1.5.67 1.5 1.5S14.33 4 13.5 4 12 3.33 12 2.5 12.67 1 13.5 1zm-11 3C1.67 4 1 3.33 1 2.5S1.67 1 2.5 1 4 1.67 4 2.5 3.33 4 2.5 4zm0 11c-.83 0-1.5-.67-1.5-1.5S1.67 12 2.5 12s1.5.67 1.5 1.5S3.33 15 2.5 15zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"],"search-template":["M15.55 13.43l-2.67-2.67c.7-1.09 1.11-2.38 1.11-3.77 0-3.87-3.13-7-7-7s-7 3.13-7 7 3.13 7 7 7c1.39 0 2.68-.41 3.77-1.11l2.67 2.67a1.498 1.498 0 102.12-2.12zm-8.56-1.44c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm2.5-6h-5c-.28 0-.5.22-.5.5s.22.5.5.5h5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5zm0-2h-5c-.28 0-.5.22-.5.5s.22.5.5.5h5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5zm0 4h-5c-.28 0-.5.22-.5.5s.22.5.5.5h5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5z"],"search-text":["M9 4H5c-.55 0-1 .45-1 1s.45 1 1 1h1v3c0 .55.45 1 1 1s1-.45 1-1V6h1c.55 0 1-.45 1-1s-.45-1-1-1zm6.56 9.44l-2.67-2.67C13.59 9.68 14 8.39 14 7c0-3.87-3.13-7-7-7S0 3.13 0 7s3.13 7 7 7c1.39 0 2.68-.41 3.77-1.11l2.67 2.67a1.498 1.498 0 102.12-2.12zM7 12c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"],"segmented-control":["M15 4H1c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm-1 6H8V6h6v4z"],select:["M16 15c0-.28-.12-.52-.31-.69l.02-.02-3.12-3.12 3.41-.84-8.05-2.86c.03-.09.05-.17.05-.27V2c0-.55-.45-1-1-1H3c0-.55-.45-1-1-1S1 .45 1 1c-.55 0-1 .45-1 1s.45 1 1 1v4c0 .55.45 1 1 1h5.2c.1 0 .18-.02.27-.05L10.33 16l.85-3.41 3.12 3.12.02-.02c.16.19.4.31.68.31.04 0 .07-.02.1-.02s.06.02.1.02c.44 0 .8-.36.8-.8 0-.04-.02-.07-.02-.1s.02-.06.02-.1zM6 6H3V3h3v3z"],selection:["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zm0-9C6.34 5 5 6.34 5 8s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"],"send-message":["M15.398 9.01l-13.87 6.865c-.536.267-1.176.081-1.422-.427A.953.953 0 010 15v-4.838l8.67-2.168L0 5.923V1.001C0 .47.407 0 1.004 0c.169 0 .416.04.567.116L15.403 7.07a1.084 1.084 0 01-.005 1.939z"],"send-to":["M15 7.5c-.8 0-1.5-.4-2-1l-1.2 1.2c-.4.5-1.1.7-1.8.7-1.4.1-2.5-1-2.5-2.4 0-.7.3-1.3.7-1.8L9.5 3c-.6-.5-1-1.2-1-2 0-.3.1-.7.2-1H8C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8v-.7c-.3.1-.6.2-1 .2zM15 0h-4c-.6 0-1 .5-1 1s.4 1 1 1h1.6L9.3 5.3c-.2.2-.3.4-.3.7 0 .5.4 1 1 1 .3 0 .5-.1.7-.3L14 3.4V5c0 .6.4 1 1 1 .5 0 1-.4 1-1V1c0-.5-.4-1-1-1z"],"send-to-graph":["M6 9H2c-.55 0-1 .45-1 1s.45 1 1 1h1.59L.3 14.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L5 12.41V14c0 .55.45 1 1 1s1-.45 1-1v-4c0-.55-.45-1-1-1zm8 .5c-.56 0-1.06.23-1.42.59l-2.13-1.24L8.99 8l3.59-2.09A2.002 2.002 0 0016 4.5c0-1.1-.9-2-2-2s-2 .9-2 2c0 .19.03.37.08.54L8.5 7.13v-3.2c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2S6 .9 6 2c0 .93.64 1.71 1.5 1.93v3.2l-.88-.52-2.7-1.57c.05-.17.08-.35.08-.54 0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2c.56 0 1.06-.23 1.42-.59l2.13 1.24 3.84 2.24 2.7 1.57c-.06.17-.09.35-.09.54 0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2z"],"send-to-map":["M6 9H2c-.55 0-1 .45-1 1s.45 1 1 1h1.59L.3 14.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L5 12.41V14c0 .55.45 1 1 1s1-.45 1-1v-4c0-.55-.45-1-1-1zm9.55-5.83l-4.49-3A.975.975 0 009.99.15L5.53 2.82 1.56.17A1.003 1.003 0 000 1v6h2V2.87l2.94 1.96.06.03V7h1V4.86s.01 0 .01-.01L10 2.47v8.67s-.01 0-.01.01l-.99.58v2.33l1.47-.88 3.97 2.65A1.003 1.003 0 0016 15V4c0-.35-.18-.65-.45-.83zM14 13.13l-2.94-1.96c-.02-.01-.04-.02-.05-.03v-8.6l3 2v8.59z"],"series-add":["M10.68 7.9c.44.54 1.07.92 1.79 1.05l-2.76 2.76c-.18.18-.43.29-.71.29s-.53-.11-.71-.3L5 8.41l-3 3V13h13c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1s1 .45 1 1v4.59l2.29-2.3C4.47 6.11 4.72 6 5 6s.53.11.71.29L9 9.59l1.68-1.69zM15 3c.55 0 1 .45 1 1s-.45 1-1 1h-1v1c0 .55-.45 1-1 1s-1-.45-1-1V5h-1c-.55 0-1-.45-1-1s.45-1 1-1h1V2c0-.55.45-1 1-1s1 .45 1 1v1h1z"],"series-configuration":["M9.94 9.64c.65.23 1.34.36 2.06.36.14 0 .29-.01.43-.01L9.7 12.71c-.18.18-.43.29-.71.29-.28 0-.53-.11-.71-.3L5 9.41l-3 3V14h12.99c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1V5c0-.55.45-1 1-1s1 .45 1 1v4.59l2.29-2.3C4.47 7.11 4.72 7 5 7c.28 0 .53.11.71.29L9 10.59l.94-.95zm4.73-6.44h.92c.22 0 .4.18.4.4v.8c0 .22-.18.4-.4.4h-.93c-.06.2-.14.38-.24.55l.66.65c.15.15.15.4 0 .55l-.54.55c-.15.15-.4.15-.55 0l-.65-.65c-.17.1-.36.18-.55.24v.91c0 .22-.18.4-.4.4h-.8c-.22 0-.4-.18-.4-.4v-.93c-.18-.06-.36-.13-.52-.22l-.68.68c-.15.16-.41.16-.57 0l-.56-.56a.417.417 0 010-.57l.68-.68c-.08-.16-.16-.33-.22-.52h-.93c-.22 0-.4-.18-.4-.4v-.8c0-.22.18-.4.4-.4h.93c.06-.2.14-.38.24-.55l-.65-.64a.392.392 0 010-.55l.54-.55a.38.38 0 01.54 0l.65.65c.18-.1.36-.18.55-.24V.4c0-.22.18-.4.4-.4h.8c.22 0 .4.18.4.4v.93c.18.06.35.14.52.22l.68-.68c.15-.16.41-.16.57 0l.57.57c.15.16.15.41 0 .57l-.68.68c.09.16.16.33.22.51zm-4.18.8c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5c-.82 0-1.5.67-1.5 1.5z"],"series-derived":["M10.66 7.92c.44.54 1.07.91 1.8 1.03L9.71 11.7c-.18.19-.43.3-.71.3s-.53-.11-.71-.3L5 8.41l-3 3V13h13c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1s1 .45 1 1v4.59l2.29-2.3C4.47 6.11 4.72 6 5 6s.53.11.71.29L9 9.59l1.66-1.67zM12.3 5.3l.3-.3H8c-.6 0-1-.4-1-1s.4-1 1-1h4.6l-.3-.3c-.2-.2-.3-.4-.3-.7 0-.6.5-1 1-1 .3 0 .5.1.7.3l2 2c.2.2.3.4.3.7s-.1.5-.3.7l-2 2c-.2.2-.4.3-.7.3-.6 0-1-.4-1-1 0-.3.1-.5.3-.7z"],"series-filtered":["M9.29 9.3c.3.62.8 1.12 1.42 1.41l-1 1c-.18.18-.43.29-.71.29s-.53-.11-.71-.3L5 8.41l-3 3V13h13c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1s1 .45 1 1v4.59l2.29-2.3C4.47 6.11 4.72 6 5 6s.53.11.71.29L9 9.59l.29-.29zM15.48 1c.31 0 .52.26.52.57 0 .16-.06.3-.17.41l-2.86 2.73v2.63c0 .16-.06.3-.17.41l-.82 1.1c-.1.1-.25.17-.41.17-.31 0-.57-.26-.57-.57V4.71L8.17 1.98A.566.566 0 018 1.57c0-.31.26-.57.57-.57h6.91z"],"series-search":["M9.6 8.94a4.937 4.937 0 001.82.01c.1-.01.22-.04.39-.08l.23-.07c.04-.01.08-.02.11-.04l.22.22-2.7 2.72c-.18.19-.43.3-.71.3s-.53-.11-.71-.3L4.98 8.41l-2.99 3V13h12.94c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1V3.99c0-.55.45-1 1-1s1 .45 1 1v4.59l2.28-2.3c.17-.18.42-.29.7-.29s.53.11.7.29l3.28 3.3.64-.64zm6.22-.41c.1.12.17.27.18.44 0 .34-.27.61-.61.61a.57.57 0 01-.43-.18l-2.24-2.25c-.13.08-.26.16-.4.23-.02.01-.05.02-.07.03-.14.06-.27.12-.42.17h-.01c-.14.05-.29.08-.44.11-.04.01-.08.02-.11.02-.15.02-.3.04-.46.04-1.85 0-3.35-1.51-3.35-3.37S8.96 1.01 10.81 1c1.85 0 3.35 1.51 3.35 3.37 0 .16-.02.31-.04.47-.01.04-.01.07-.02.11-.02.15-.05.29-.1.44v.01c-.05.15-.11.28-.17.42-.01.02-.02.05-.03.07-.07.14-.14.27-.23.4l2.25 2.24zm-5.01-1.94c1.22 0 2.21-.99 2.21-2.22 0-1.23-.99-2.22-2.21-2.22S8.6 3.14 8.6 4.37c0 1.22.99 2.22 2.21 2.22z"],settings:["M3 1c0-.55-.45-1-1-1S1 .45 1 1v3h2V1zm0 4H1c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm12-4c0-.55-.45-1-1-1s-1 .45-1 1v2h2V1zM9 1c0-.55-.45-1-1-1S7 .45 7 1v6h2V1zM1 15c0 .55.45 1 1 1s1-.45 1-1v-5H1v5zM15 4h-2c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm-2 11c0 .55.45 1 1 1s1-.45 1-1V9h-2v6zM9 8H7c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zm-2 7c0 .55.45 1 1 1s1-.45 1-1v-2H7v2z"],shapes:["M5.92 8.139c.44-.282 1.006-.121 1.264.358l2.689 4.988c.083.155.127.33.127.51C10 14.55 9.587 15 9.077 15H3.924a.864.864 0 01-.438-.12c-.449-.263-.617-.873-.376-1.362l2.465-4.989c.08-.162.2-.297.346-.39zM12 4a3 3 0 110 6 3 3 0 010-6zM6 1a1 1 0 011 1v4a1 1 0 01-1 1H2a1 1 0 01-1-1V2a1 1 0 011-1h4z"],share:["M10.99 13.99h-9v-9h4.76l2-2H.99c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h11c.55 0 1-.45 1-1V7.24l-2 2v4.75zm4-14h-5c-.55 0-1 .45-1 1s.45 1 1 1h2.59L7.29 7.28a1 1 0 00-.3.71 1.003 1.003 0 001.71.71l5.29-5.29V6c0 .55.45 1 1 1s1-.45 1-1V1c0-.56-.45-1.01-1-1.01z"],"shared-filter":["M13.843 15.163c.232.53.138.837.138.837H6.017s-.088-.308.138-.837c.226-.53 1.338-.88 2.079-1.206.735-.332.66-.53.685-.8 0-.03.006-.068.006-.105a2.171 2.171 0 01-.61-.892v-.006s-.006-.006-.006-.012c-.025-.074-.056-.16-.075-.24-.176-.031-.276-.222-.314-.394a.8.8 0 01-.1-.437c.025-.253.131-.37.244-.419v-.037c0-.313.032-.775.088-1.07A1.835 1.835 0 018.85 8.37c.315-.24.76-.37 1.156-.37.396 0 .842.13 1.156.37.301.233.534.56.64.935.026.08.045.166.057.246.057.295.088.75.088 1.064v.043c.113.05.214.167.232.413a.75.75 0 01-.1.437c-.038.172-.132.357-.301.387a1.77 1.77 0 01-.076.24.136.136 0 01-.006.025 2.346 2.346 0 01-.597.892v.111c.025.277-.075.474.666.8.741.326 1.853.67 2.079 1.2z","M14.852 15h1.131s.083-.27-.12-.732c-.16-.373-.82-.641-1.411-.88a15.328 15.328 0 01-.409-.17c-.565-.25-.57-.412-.577-.61-.001-.03-.002-.06-.005-.09v-.097c.22-.2.401-.469.522-.781 0 0 .005-.016.005-.022.028-.07.05-.14.066-.21.149-.026.231-.188.264-.339a.655.655 0 00.088-.382c-.016-.215-.104-.318-.203-.36v-.039c0-.274-.028-.673-.077-.931a1.598 1.598 0 00-.61-1.034 1.736 1.736 0 00-1.285-.3c.236.285.42.622.529.996.038.124.065.248.083.36.048.257.079.578.093.867a1.736 1.736 0 01.08 1.624 1.65 1.65 0 01-.217.453 1.42 1.42 0 01-.176.209c-.08.204-.178.4-.292.585l.202.083c.285.117.64.261.9.387.226.11.475.245.698.414.213.161.476.408.63.764.034.08.065.159.091.235zM12.14 14.12l.09.037zM11 1c.55 0 1 .45 1 1 0 .28-.11.53-.29.7L8 6.41v1.374a2.813 2.813 0 00-.833 1.589 6.925 6.925 0 00-.092.86 1.64 1.64 0 00-.25.739l-.001.004c-.02.217.006.413.046.573L5.71 12.71A1.003 1.003 0 014 12V6.41L.29 2.71A1.003 1.003 0 011 1h10z"],shield:["M8 16c4.667-3.048 7-7.238 7-12.571-1.556 0-3.889-1.143-7-3.429-3.111 2.286-5.444 3.429-7 3.429C1 8.762 3.333 12.952 8 16zM8 2.121c2.005 1.388 3.715 2.304 5.186 2.735-.342 3.702-2.05 6.683-5.186 9.038V2.121z"],shop:["M3 2h10c.55 0 1-.45 1-1s-.45-1-1-1H3c-.55 0-1 .45-1 1s.45 1 1 1zm9 11H4v-3H2v5c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-5h-2v3zm4-6l-1.01-3.17C14.9 3.36 14.49 3 14 3H2c-.49 0-.9.36-.98.83L.01 7H0c0 1.1.9 2 2 2s2-.9 2-2c0 1.1.9 2 2 2s2-.9 2-2c0 1.1.9 2 2 2s2-.9 2-2c0 1.1.9 2 2 2s2-.9 2-2z"],"shopping-cart":["M14 10H7.72l-.33-1H13c.39 0 .72-.23.89-.56h.01l2-4h-.01c.06-.13.11-.28.11-.44 0-.55-.45-1-1-1H5.39l-.44-1.32h-.01C4.8 1.29 4.44 1 4 1H1c-.55 0-1 .45-1 1s.45 1 1 1h2.28l2.33 7H4c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2h6c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2zM6.05 5h7.33l-1 2H6.72l-.67-2z"],"signal-search":["M5.474 7.971A5.31 5.31 0 006.66 8.9l.007.019.018.056c.015.038.038.06.045.098l1.5 5.999a.75.75 0 01-1.455.36l-.42-1.68h-.704l-.42 1.68a.746.746 0 01-.907.547.746.746 0 01-.547-.907l1.5-6c.007-.037.03-.06.044-.097.015-.037.015-.075.038-.112a.722.722 0 01-.105-.36c0-.207.084-.394.22-.53zM2.795 5.277a.763.763 0 00-.015-1.065.756.756 0 00-1.065.015c-2.286 2.34-2.286 6.21 0 8.549a.747.747 0 101.072-1.042c-1.709-1.763-1.709-4.702.008-6.457zM7.808 9.388a5.318 5.318 0 001.58.211 2.236 2.236 0 01-.656.98.756.756 0 01-1.057-.098.756.756 0 01.097-1.057l.036-.036zM11.544 9.105l.378.378a6.02 6.02 0 01-1.638 3.285c-.285.3-.757.3-1.057.015a.74.74 0 01-.015-1.057 4.52 4.52 0 001.185-2.24c.4-.083.785-.212 1.147-.381z","M4.054 9.424c-.427-.352-.352-1.582-.03-1.822a.752.752 0 00.15-1.05.752.752 0 00-1.05-.15c-1.079.802-1.221 3.18-.03 4.177a.75.75 0 10.96-1.155zM9.318 0a4.318 4.318 0 014.317 4.318c0 .206-.02.402-.049.598-.01.05-.01.088-.02.138-.039.196-.078.382-.137.569v.01c-.059.186-.137.363-.216.54l-.039.087a5.285 5.285 0 01-.294.51l2.884 2.886a.878.878 0 01.236.559.787.787 0 01-.785.785.785.785 0 01-.56-.226L11.772 7.89a5.285 5.285 0 01-.51.295l-.089.039c-.176.079-.353.157-.54.216h-.01a3.701 3.701 0 01-.568.137c-.05.01-.099.02-.138.02-.196.03-.392.049-.598.049A4.318 4.318 0 015 4.327 4.332 4.332 0 019.318 0zm-.02 1.1A3.195 3.195 0 006.1 4.298a3.195 3.195 0 003.198 3.198 3.195 3.195 0 003.198-3.198A3.195 3.195 0 009.298 1.1z"],"sim-card":["M13.71 4.29l-4-4A.997.997 0 009 0H3c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V5c0-.28-.11-.53-.29-.71zM7 6h2v2H7V6zM4 6h2v2H4V6zm2 8H4v-2h2v2zm3 0H7v-2h2v2zm3 0h-2v-2h2v2zm0-3H4V9h8v2zm0-3h-2V6h2v2z"],slash:["M10 2a.99.99 0 00-.96.73l-2.99 9.96A1.003 1.003 0 007 14c.46 0 .85-.31.96-.73l2.99-9.96A1.003 1.003 0 0010 2z"],"small-cross":["M9.41 8l2.29-2.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L8 6.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42L6.59 8 4.3 10.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L8 9.41l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L9.41 8z"],"small-minus":["M11 7H5c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1z"],"small-plus":["M11 7H9V5c0-.55-.45-1-1-1s-1 .45-1 1v2H5c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V9h2c.55 0 1-.45 1-1s-.45-1-1-1z"],"small-tick":["M12 5c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z"],snowflake:["M13.364 9l.879.879a1 1 0 11-1.415 1.414l-2.12-2.121A1.003 1.003 0 0110.568 9H9v1.604c.042.03.083.065.121.103l2.122 2.121a1 1 0 01-1.415 1.415L9 13.414V15a1 1 0 01-2 0v-1.636l-.879.879a1 1 0 11-1.414-1.415l2.121-2.12c.054-.054.111-.1.172-.139V9H5.38c-.038.06-.084.118-.137.172l-2.122 2.12A1 1 0 111.707 9.88L2.586 9H1a1 1 0 110-2h1.536l-.829-.828a1 1 0 011.414-1.415L5.243 6.88c.038.038.072.079.103.121H7V5.38a1.003 1.003 0 01-.172-.137L4.708 3.12A1 1 0 016.12 1.707L7 2.586V1a1 1 0 112 0v1.536l.828-.829a1 1 0 011.415 1.414L9.12 5.243A1.007 1.007 0 019 5.346V7h1.604c.03-.042.065-.083.103-.121l2.121-2.122a1 1 0 011.415 1.415L13.414 7H15a1 1 0 010 2h-1.636z"],"social-media":["M9.5 4c.4 0 .8-.1 1.1-.3C12 4.5 12.9 6 13 7.6c0 .5.5.9 1 .9.6 0 1-.4 1-1v-.2c-.2-2.4-1.5-4.4-3.5-5.5-.1-1-.9-1.8-2-1.8s-2 .9-2 2 .9 2 2 2zM4 8.5c0-.7-.4-1.3-.9-1.7.3-1.4 1.2-2.6 2.5-3.3.3-.1.6-.4.6-.9s-.4-1-1-1c-.2 0-.3 0-.5.1-1.9 1-3.2 2.8-3.6 5C.4 7.1 0 7.8 0 8.5c0 1.1.9 2 2 2s2-.9 2-2zm8.8 1.2c-1.1 0-2 .9-2 2v.3c-.8.6-1.8.9-2.8.9-1.2 0-2.3-.4-3.2-1.1-.2-.2-.4-.3-.7-.3-.6 0-1 .4-1 1 0 .3.1.6.3.8C4.6 14.4 6.2 15 8 15c1.5 0 3-.5 4.1-1.3.2.1.5.1.7.1 1.1 0 2-.9 2-2s-.9-2.1-2-2.1z"],sort:["M5 12c-.28 0-.53.11-.71.29l-.29.3V9c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-.29-.29A.965.965 0 001 12a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l2-2A1.003 1.003 0 005 12zm3-9h7c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zm7 2H8c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1zm0 8H8c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1zm0-4H8c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1z"],"sort-alphabetical":["M6 12c-.28 0-.53.11-.71.29l-.29.3V9c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-.29-.29A.965.965 0 002 12a1.003 1.003 0 00-.71 1.71l2 2c.19.18.44.29.71.29.28 0 .53-.11.71-.29l2-2c.18-.18.29-.43.29-.71a.99.99 0 00-1-1zm7.93-.95v-1.04H9.25v1.11h2.94L9 14.96V16h5.02v-1.11h-3.27l3.18-3.84zm-1.42-4.84l.62 1.78H15L11.94.01H10.1L7 7.99h1.81l.64-1.78h3.06zm-1.52-4.24h.02l1.03 2.93H9.92l1.07-2.93z"],"sort-alphabetical-desc":["M5.99 11.99c-.28 0-.53.11-.71.29l-.29.29V8.99c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-.29-.29a1.003 1.003 0 00-1.42 1.42l2 2c.18.18.43.29.71.29.28 0 .53-.11.71-.29l2-2c.18-.18.29-.43.29-.71 0-.56-.45-1.01-1-1.01zM12.7 10h-1.38L9 15.99h1.36l.48-1.33h2.3l.46 1.33H15L12.7 10zm-1.51 3.67l.8-2.2h.02l.77 2.2h-1.59zm3.8-7.17h-4.57l4.45-5.12V0H8.34v1.48h4.1L7.99 6.59v1.39h7V6.5z"],"sort-asc":["M8 7h3c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zm0-4h1c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zm0 8h5c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zm-3 1c-.28 0-.53.11-.71.29l-.29.3V9c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-.29-.29A.965.965 0 001 12a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l2-2A1.003 1.003 0 005 12zm10 1H8c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1z"],"sort-desc":["M5 12c-.28 0-.53.11-.71.29l-.29.3V9c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-.29-.29A.965.965 0 001 12a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l2-2A1.003 1.003 0 005 12zm4 1H8c-.55 0-1 .45-1 1s.45 1 1 1h1c.55 0 1-.45 1-1s-.45-1-1-1zm4-8H8c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1zm-2 4H8c-.55 0-1 .45-1 1s.45 1 1 1h3c.55 0 1-.45 1-1s-.45-1-1-1zm4-8H8c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1z"],"sort-numerical":["M6 11.99c-.28 0-.53.11-.71.29l-.29.3V8.99c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-.29-.29c-.18-.18-.43-.3-.71-.3a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29.28 0 .53-.11.71-.29l2-2A1.003 1.003 0 006 11.99zm7.91-.08c-.06-.36-.17-.68-.33-.96-.16-.28-.37-.51-.64-.69-.27-.17-.61-.26-1.03-.26-.28 0-.54.06-.78.17-.23.11-.43.26-.6.45-.17.19-.3.41-.39.67a2.492 2.492 0 00-.04 1.52 1.623 1.623 0 00.89 1.03c.22.11.45.16.68.16.26 0 .5-.05.7-.15s.38-.26.53-.5l.02.02c-.01.16-.03.34-.07.54-.03.2-.09.4-.17.57-.08.18-.18.33-.31.45s-.29.19-.5.19a.63.63 0 01-.48-.21c-.13-.14-.21-.31-.25-.5H10.1c.03.25.1.48.19.68.1.2.22.37.38.5.16.14.33.24.54.31s.42.1.65.1c.39 0 .72-.09.99-.27.27-.18.49-.41.66-.7.17-.29.29-.61.37-.97.08-.36.12-.72.12-1.07 0-.36-.03-.72-.09-1.08zm-1.14.54c-.04.13-.09.24-.16.34a.78.78 0 01-.27.24c-.11.06-.24.09-.39.09a.75.75 0 01-.37-.09.777.777 0 01-.26-.25c-.07-.1-.12-.22-.15-.35-.03-.13-.05-.26-.05-.4 0-.13.02-.26.05-.39.04-.13.09-.24.16-.34.07-.1.16-.18.26-.24s.22-.09.35-.09c.14 0 .26.03.37.09.11.06.2.14.28.24a1.32 1.32 0 01.23.74c0 .15-.02.28-.05.41zm-1.56-4.47H13V0h-1.42c-.05.3-.16.56-.31.76-.16.21-.35.37-.58.5-.23.13-.49.21-.78.26-.3.05-.6.07-.91.06V2.8h2.21v5.18z"],"sort-numerical-desc":["M6 11.99c-.28 0-.53.11-.71.29l-.29.3V8.99c0-.55-.45-1-1-1s-1 .45-1 1v3.59l-.29-.29a.982.982 0 00-.71-.3 1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l2-2A1.003 1.003 0 006 11.99zm7.86-9.45c-.09-.48-.26-.9-.5-1.28S12.8.58 12.4.35C12 .12 11.49 0 10.86 0c-.43 0-.82.07-1.17.22s-.65.35-.9.6-.44.55-.58.89c-.14.34-.2.71-.2 1.11 0 .31.05.61.15.91.1.3.26.57.48.8.23.24.52.43.85.58.33.14.68.21 1.03.21.4 0 .75-.07 1.05-.2.3-.13.57-.35.79-.66l.02.02c-.02.21-.05.45-.1.73-.05.27-.13.53-.25.76-.12.24-.27.44-.47.6-.19.16-.44.25-.75.25a.98.98 0 01-.72-.29c-.19-.18-.31-.4-.37-.66H8.15c.05.34.14.64.29.9.15.26.34.49.57.67.23.18.5.32.8.41.31.1.63.15.98.15.58 0 1.08-.12 1.48-.36.4-.24.73-.55.99-.93.26-.39.44-.82.56-1.29.12-.48.18-.96.18-1.44s-.05-.96-.14-1.44zm-1.71.72c-.05.17-.14.32-.24.46-.11.13-.24.24-.41.31-.16.08-.36.12-.58.12-.21 0-.39-.04-.55-.13-.16-.08-.29-.19-.39-.33-.12-.14-.19-.29-.24-.46-.05-.17-.08-.35-.08-.54 0-.18.03-.35.08-.52.06-.16.14-.31.25-.44.11-.13.24-.24.4-.32.16-.08.33-.12.52-.12.21 0 .4.04.56.12.16.08.3.19.41.32.11.14.2.29.26.46.06.17.09.35.09.52 0 .2-.03.38-.08.55zm-.46 7.31c-.12.15-.26.28-.44.37-.17.09-.37.16-.58.2-.22.04-.44.05-.67.05v.92h1.65v3.88h1.33V10h-1.06c-.03.23-.11.42-.23.57z"],"split-columns":["M12 10a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-2-2a1.003 1.003 0 00-1.42 1.42l.3.29H9V2h3v1.71c.31-.13.64-.21 1-.21s.69.08 1 .21V1c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v2.71c.31-.13.64-.21 1-.21s.69.08 1 .21V2h3v5H3.41l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2C.11 7.47 0 7.72 0 8c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42L3.41 9H7v5H4v-1.71c-.31.13-.64.21-1 .21s-.69-.08-1-.21V15c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-2.71c-.31.13-.64.21-1 .21s-.69-.08-1-.21V14H9V9h3.59l-.29.29c-.19.18-.3.43-.3.71z"],square:["M15 0H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H2V2h12v12z"],"stacked-chart":["M10 2c0-.55-.45-1-1-1H8c-.55 0-1 .45-1 1v3h3V2zm3 10h1c.55 0 1-.45 1-1V8h-3v3c0 .55.45 1 1 1zm2-7c0-.55-.45-1-1-1h-1c-.55 0-1 .45-1 1v2h3V5zm-5 1H7v3h3V6zM5 7c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v1h3V7zm3 5h1c.55 0 1-.45 1-1v-1H7v1c0 .55.45 1 1 1zm7 1H2c-.55 0-1 .45-1 1s.45 1 1 1h13c.55 0 1-.45 1-1s-.45-1-1-1zM3 12h1c.55 0 1-.45 1-1V9H2v2c0 .55.45 1 1 1z"],star:["M8 0l2.5 5.3 5.5.8-4 4.1.9 5.8L8 13.3 3.1 16l.9-5.8-4-4.1 5.5-.8z"],"star-empty":["M16 6.11l-5.53-.84L8 0 5.53 5.27 0 6.11l4 4.1L3.06 16 8 13.27 12.94 16 12 10.21l4-4.1zM4.91 13.2l.59-3.62L3 7.02l3.45-.53L8 3.2l1.55 3.29 3.45.53-2.5 2.56.59 3.62L8 11.49 4.91 13.2z"],"step-backward":["M12 3c-.24 0-.44.09-.62.23l-.01-.01L7 6.72V4c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V9.28l4.38 3.5.01-.01c.17.14.37.23.61.23.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"step-chart":["M15 12H2v-2h3c.55 0 1-.45 1-1V7h2v1c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V5h1c.55 0 1-.45 1-1s-.45-1-1-1h-2c-.55 0-1 .45-1 1v3h-2V6c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v2H2V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],"step-forward":["M12 3h-1c-.55 0-1 .45-1 1v2.72l-4.38-3.5v.01A.987.987 0 005 3c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1 .24 0 .44-.09.62-.23l.01.01L10 9.28V12c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],stop:["M12 3H4c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h8c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],stopwatch:["M9 2v1.083A6.002 6.002 0 018 15 6 6 0 017 3.083V2H6a1 1 0 110-2h4a1 1 0 010 2H9zM8 5a4 4 0 104 4H8V5z"],strikethrough:["M14 7H8.65c-.38-.09-.73-.18-1.04-.26-.31-.08-.49-.13-.54-.14-.43-.11-.79-.29-1.05-.52-.27-.23-.4-.55-.4-.95 0-.29.07-.53.21-.72s.32-.34.54-.46c.22-.11.46-.19.72-.24.26-.05.52-.07.77-.07.74 0 1.36.15 1.84.46.32.2.55.5.68.9h2.22c-.06-.33-.17-.64-.32-.92-.25-.45-.59-.84-1.02-1.15-.43-.31-.93-.54-1.49-.7S8.59 2 7.95 2c-.55 0-1.1.07-1.63.2-.54.13-1.02.34-1.45.62-.42.28-.76.63-1.02 1.05-.26.42-.39.92-.39 1.5 0 .3.04.59.13.88.08.26.21.51.39.75H2c-.55 0-1 .45-1 1s.45 1 1 1h7.13c.25.07.49.14.71.22.25.09.48.23.7.44.21.21.32.53.32.97 0 .21-.05.43-.14.63-.09.21-.24.39-.45.55-.21.16-.48.29-.81.39-.33.1-.73.15-1.2.15-.44 0-.84-.05-1.21-.14-.37-.09-.7-.24-.99-.43-.29-.2-.51-.45-.67-.76-.01 0-.01-.01-.02-.02H3.14a3.68 3.68 0 001.39 2.03c.46.34 1 .58 1.62.74.61.15 1.27.23 1.97.23.61 0 1.2-.07 1.79-.2.58-.13 1.11-.34 1.56-.63.46-.29.83-.66 1.11-1.11.28-.45.42-1 .42-1.64 0-.3-.05-.6-.15-.9-.05-.19-.13-.36-.22-.52H14c.55 0 1-.45 1-1s-.45-1-1-1z"],style:["M14 14H2V2h8.76l2-2H1C.45 0 0 .45 0 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V6.24l-2 2V14zm1.4-14L9.7 5.7l2.1 2.1L16 3.6V0h-.6zM4 11.92c2.33.15 4.42.15 6.15-1.5.82-.83.82-2.25 0-3.08-.45-.38-.98-.6-1.5-.6-.53 0-1.05.22-1.43.6-.82.91-1.27 3.38-3.22 4.58z"],"swap-horizontal":["M0 7.02L.05 7H0v.02zm2-2.03h9.57l-1.29 1.29A1.003 1.003 0 0011.7 7.7l2.99-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-2.99-3a1.07 1.07 0 00-.71-.28 1.003 1.003 0 00-.71 1.71L11.57 3H2c-.55 0-1 .45-1 1a1 1 0 001 .99zM15.96 9H16v-.02l-.04.02zM14 11.01H4.43l1.29-1.29A1.003 1.003 0 004.3 8.3l-2.99 3a.99.99 0 00-.29.7c0 .28.11.53.29.71l2.99 3a1.003 1.003 0 001.42-1.42L4.43 13H14c.55 0 1-.45 1-1s-.45-.99-1-.99z"],"swap-vertical":["M9 0h-.02L9 .04V0zM7 16h.02L7 15.95V16zM4.7 1.31c-.18-.18-.43-.29-.7-.29s-.53.11-.71.29l-3 2.99a1.003 1.003 0 001.42 1.42L3 4.43V14c0 .55.45 1 1 1s1-.45 1-1V4.43l1.29 1.29c.18.18.43.29.7.29A1.003 1.003 0 007.7 4.3l-3-2.99zM15 9.99c-.28 0-.53.11-.71.29L13 11.57V2c0-.55-.45-1-1-1s-1 .45-1 1v9.57l-1.29-1.29a.99.99 0 00-.7-.29 1.003 1.003 0 00-.71 1.71l3 2.99c.18.18.43.29.71.29.28 0 .53-.11.71-.29l3-2.99c.18-.18.29-.43.29-.71-.01-.55-.46-1-1.01-1z"],switch:["M9.293 2.293l1.414 1.414-4.999 5a3 3 0 11-1.415-1.415l5-5zM13 7a3 3 0 110 6 3 3 0 010-6zM3 9a1 1 0 100 2 1 1 0 000-2zm10 0a1 1 0 100 2 1 1 0 000-2z"],"symbol-circle":["M8 3.01a5 5 0 100 10 5 5 0 100-10z"],"symbol-cross":["M12 6.01h-2v-2c0-.55-.45-1-1-1H7c-.55 0-1 .45-1 1v2H4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h2v2c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-2h2c.55 0 1-.45 1-1v-2c0-.56-.45-1-1-1z"],"symbol-diamond":["M12 8.01c0-.19-.07-.36-.16-.51l.01-.01-3-5-.01.01c-.17-.29-.48-.49-.84-.49s-.67.2-.84.49l-.02-.01-3 5 .02.01c-.09.15-.16.32-.16.51s.07.36.16.51h-.02l3 5 .01-.01c.18.29.49.5.85.5s.67-.2.84-.49l.01.01 3-5-.01-.01c.09-.16.16-.32.16-.51z"],"symbol-square":["M12 3.01H4c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h8c.55 0 1-.45 1-1v-8c0-.56-.45-1-1-1z"],"symbol-triangle-down":["M13 4.01c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1 0 .16.05.31.11.44H3.1l4 8h.01c.16.33.49.56.89.56s.72-.23.89-.56h.01l4-8h-.01c.06-.14.11-.28.11-.44z"],"symbol-triangle-up":["M12.89 11.56l-3.99-8h-.01c-.17-.32-.5-.55-.89-.55s-.72.23-.89.55H7.1l-4 8h.01c-.06.14-.11.29-.11.45 0 .55.45 1 1 1h8c.55 0 1-.45 1-1 0-.16-.05-.31-.11-.45z"],tag:["M1 3a2 2 0 012-2h4.584a2 2 0 011.414.586l5.413 5.412a2 2 0 010 2.829L9.827 14.41a2 2 0 01-2.829 0L1.586 8.998A2 2 0 011 7.584V3zm3.487-.007a1.494 1.494 0 100 2.988 1.494 1.494 0 000-2.988z"],"take-action":["M9 11a1.003 1.003 0 001.71.71l4-4a1.003 1.003 0 00-1.42-1.42l-4 4c-.18.18-.29.43-.29.71zM4 6c.28 0 .53-.11.71-.29l4-4A1.003 1.003 0 007.29.29l-4 4A1.003 1.003 0 004 6zm4 4l5-5-.79-.79.5-.5a1.003 1.003 0 00-1.42-1.42l-.5.5L10 2 5 7l.79.79-5.5 5.5a1.003 1.003 0 001.42 1.42l5.5-5.5L8 10zm7 4H7c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1z"],taxi:["M15.12 6.63h-.38L15 7c-.01.3-.01.64 0 .98V8c0 .07-.03.13-.04.19h.02L14 13.1v.9c0 .55-.45 1-1 1s-1-.45-1-1v-1H4v1c0 .55-.45 1-1 1s-1-.45-1-1v-.9l-.98-4.9h.02C1.03 8.13 1 8.07 1 8H.99c0-.33 0-.67.01-1l.26-.37H.88C.4 6.63 0 6.21 0 5.69s.4-.94.88-.94h1.05l.77-2.11c.19-.53.76-1.08 1.26-1.24 0 0 .68-.2 2.05-.32C6.01 1.05 6 1.03 6 1c0-.55.45-1 1-1h2c.55 0 1 .45 1 1 0 .03-.01.05-.02.08 1.37.12 2.05.32 2.05.32.51.15 1.08.71 1.27 1.24l.76 2.12h1.05c.49 0 .89.42.89.93 0 .52-.4.94-.88.94zM11 10h2V8h-2v2zm-8 0h2V8H3v2zm10-5l-.73-1.63C12.21 3.19 12.18 3 12 3H4c-.18 0-.21.19-.27.37L3 5c-.06.18-.18 1 0 1h10c.18 0 .06-.82 0-1z"],"text-highlight":["M9 10H2V6h7V4H1c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h8v-2zm4 3h-1V3h1c.55 0 1-.45 1-1s-.45-1-1-1h-1c-.37 0-.7.11-1 .28-.3-.17-.63-.28-1-.28H9c-.55 0-1 .45-1 1s.45 1 1 1h1v10H9c-.55 0-1 .45-1 1s.45 1 1 1h1c.37 0 .7-.11 1-.28.3.17.63.28 1 .28h1c.55 0 1-.45 1-1s-.45-1-1-1zm2-9h-2v2h1v4h-1v2h2c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1z"],th:["M15 1H1c-.6 0-1 .5-1 1v12c0 .6.4 1 1 1h14c.6 0 1-.4 1-1V2c0-.5-.4-1-1-1zM6 13H2v-2h4v2zm0-3H2V8h4v2zm0-3H2V5h4v2zm8 6H7v-2h7v2zm0-3H7V8h7v2zm0-3H7V5h7v2z"],"th-derived":["M5.6 10l-.3.3c-.2.2-.3.4-.3.7 0 .6.4 1 1 1 .3 0 .5-.1.7-.3l2-2c.2-.2.3-.4.3-.7s-.1-.5-.3-.7l-2-2C6.5 6.1 6.3 6 6 6c-.5 0-1 .4-1 1 0 .3.1.5.3.7l.3.3H1c-.6 0-1 .4-1 1s.4 1 1 1h4.6zM15 1H2c-.5 0-1 .5-1 1v5h2V5h11v2H8.8l.6.6c.1.1.2.3.3.4H14v2H9.7c-.1.1-.2.3-.3.4l-.6.6H14v2H3v-2H1v3c0 .5.5 1 1 1h13c.6 0 1-.5 1-1V2c0-.5-.4-1-1-1z"],"th-disconnect":["M12 1h3c.6 0 1 .5 1 1v12c0 .6-.4 1-1 1h-4.97l.286-2H14v-2h-3.398l.143-1H14V8h-2.97l.143-1H14V5h-2.541l.51-3.576C11.99 1.282 12 1.14 12 1zM5.97 1l-.572 4H2v2h3.112L4.97 8H2v2h2.684l-.143 1H2v2h2.255l-.225 1.576c-.02.142-.03.284-.03.424H1c-.6 0-1-.4-1-1V2c0-.5.4-1 1-1h4.97zM8.01.859a1 1 0 111.98.282l-2 14a1 1 0 11-1.98-.282l2-14z"],"th-filtered":["M10 10h3l1.78-2.226a1 1 0 00.22-.625V4.3l1-.9V14c0 .6-.4 1-1 1H1c-.6 0-1-.4-1-1V2c0-.5.4-1 1-1h4.333L9 4.3V5H7v2h2v1H7v2h3zm-4 3v-2H2v2h4zm0-3V8H2v2h4zm0-3V5H2v2h4zm8 6v-2H7v2h7z","M15.48 0c.31 0 .52.26.52.57 0 .16-.06.3-.17.41l-2.86 2.73v2.63c0 .16-.06.3-.17.41l-.82 1.1c-.1.1-.25.17-.41.17-.31 0-.57-.26-.57-.57V3.71L8.17.98A.566.566 0 018 .57c0-.31.26-.57.57-.57h6.91z"],"th-list":["M15 1H1c-.6 0-1 .5-1 1v12c0 .6.4 1 1 1h14c.6 0 1-.4 1-1V2c0-.5-.4-1-1-1zm-1 12H2v-2h12v2zm0-3H2V8h12v2zm0-3H2V5h12v2z"],"thumbs-down":["M2 2H0v7h2c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm13.99 4.38c.08-.58-.44-1.02-1.15-1.05-.25-.01-.52-.03-.81-.05.02 0 .05-.01.07-.01.7-.1 1.34-.49 1.41-1.07.06-.58-.46-.97-1.17-1.04-.25-.02-.52-.04-.79-.06.47-.15.84-.42.87-.93.04-.58-.79-1.03-1.5-1.09-.27-.02-.51-.04-.73-.05h-.09c-.23-.02-.43-.02-.62-.03C8.35.95 5.66 1.47 4 2.51v6c2.14 1.29 4.76 3.59 4.21 5.51-.18.59.31 1.05.98.98.81-.09 1.37-.91 1.4-1.78.04-1-.15-2.01-.5-2.91-.04-.25.01-.5.37-.53.49-.03 1.11-.06 1.59-.08.26 0 .51-.01.75-.02h.01c.41-.02.8-.05 1.13-.09.7-.09 1.35-.47 1.43-1.05.08-.58-.44-.97-1.15-1.05-.05-.01-.11-.01-.16-.02.17-.01.33-.03.49-.05.72-.08 1.37-.46 1.44-1.04z"],"thumbs-up":["M15.99 9.62c-.08-.58-.73-.96-1.43-1.05-.15-.02-.32-.04-.49-.05.06-.01.11-.01.16-.02.71-.08 1.23-.47 1.15-1.05-.08-.58-.73-.96-1.43-1.05-.34-.04-.72-.07-1.13-.09h-.01c-.24-.01-.49-.02-.75-.02-.48-.02-1.11-.04-1.59-.08-.36-.03-.41-.28-.37-.53.35-.9.54-1.91.5-2.91-.04-.85-.6-1.68-1.41-1.77-.67-.07-1.16.39-.99.98C8.76 3.91 6.13 6.2 4 7.49v6c1.66 1.03 4.35 1.56 7.48 1.5.19 0 .39-.01.62-.02h.09c.22-.01.46-.03.73-.05.71-.06 1.54-.51 1.5-1.09-.03-.51-.4-.79-.87-.93.27-.02.54-.04.79-.06.71-.06 1.24-.45 1.17-1.04-.06-.58-.7-.97-1.41-1.07-.02 0-.05-.01-.07-.01.29-.02.57-.03.81-.05.71-.03 1.23-.47 1.15-1.05zM2 7H0v7h2c.55 0 1-.45 1-1V8c0-.56-.45-1-1-1z"],tick:["M14 3c-.28 0-.53.11-.71.29L6 10.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42l4 4c.18.18.43.29.71.29s.53-.11.71-.29l8-8A1.003 1.003 0 0014 3z"],"tick-circle":["M8 16c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm4-11c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z"],time:["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm0 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zm1-6.41V4c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42L9 7.59z"],"timeline-area-chart":["M15 2.59L9.91 7.68 6.6 5.2l-.01.01C6.42 5.09 6.23 5 6 5c-.24 0-.44.09-.62.23v-.01L3 7.12V11h12V2.59zM15 12H2V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],"timeline-bar-chart":["M8 12h1c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1H8c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1zm5 0h1c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1h-1c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1zm2 1H2c-.55 0-1 .45-1 1s.45 1 1 1h13c.55 0 1-.45 1-1s-.45-1-1-1zM3 12h1c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1z"],"timeline-events":["M8 11H7v1h1v-1zm-4 0H3v1h1v-1zm7-8c.6 0 1-.5 1-1V1c0-.5-.4-1-1-1s-1 .5-1 1v1c0 .5.5 1 1 1zM4 3c.5 0 1-.5 1-1V1c0-.5-.5-1-1-1S3 .5 3 1v1c0 .5.5 1 1 1zm10-2h-1v1c0 1.1-.9 2-2 2s-2-.9-2-2V1H6v1c0 1.1-.9 2-2 2s-2-.9-2-2V1H1c-.5 0-1 .5-1 1v12c0 .5.5 1 1 1h13c.6 0 1-.5 1-1V2c0-.5-.4-1-1-1zM5 13H2v-3h3v3zm0-4H2V6h3v3zm4 4H6v-3h3v3zm0-4H6V6h3v3zm4 4h-3v-3h3v3zm0-4h-3V6h3v3zm-1-2h-1v1h1V7z"],"timeline-line-chart":["M15 12H2V9.41l3-3L8.29 9.7c.18.19.43.3.71.3s.53-.11.71-.29l6-6a1.003 1.003 0 00-1.42-1.42L9 7.59l-3.29-3.3C5.53 4.11 5.28 4 5 4s-.53.11-.71.29L2 6.59V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],tint:["M7.88 1s-4.9 6.28-4.9 8.9c.01 2.82 2.34 5.1 4.99 5.1 2.65-.01 5.03-2.3 5.03-5.13C12.99 7.17 7.88 1 7.88 1z"],torch:["M5 15c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-1H5v1zm7-15H4c-.55 0-1 .45-1 1v1h10V1c0-.55-.45-1-1-1zM5 7v6h6V7l2-4H3l2 4zm2 0c0-.55.45-1 1-1s1 .45 1 1v2c0 .55-.45 1-1 1s-1-.45-1-1V7z"],tractor:["M3.5 9a3.5 3.5 0 110 7 3.5 3.5 0 010-7zm9.5 1a3 3 0 110 6 3 3 0 010-6zm-9.5 1a1.5 1.5 0 100 3 1.5 1.5 0 000-3zm9.5 1a1 1 0 100 2 1 1 0 000-2zM5 0c1.46 0 2.527.668 3 2l.815 3.255a78.9 78.9 0 012.186.195L11 2h2l.001 3.688c.698.095 1.37.198 2.013.312.623.11.986.479.986 1v3.354a4.001 4.001 0 00-6.873 1.645H7.999l-.026-.002A4.5 4.5 0 00.659 9.01l-.654.001v-.829C.003 7.386.002 6.423 0 6.022 0 5.5.376 4.99 1 4.99V1a1 1 0 011-1h3zm1 2H3v2.99c1.29.024 2.554.069 3.781.135L6 2z"],train:["M13 14h-1l1 2H3l1-2H3c-1.1 0-2-.9-2-2V2C1 .9 4.13 0 8 0s7 .9 7 2v10c0 1.1-.9 2-2 2zm-2-2h2v-2h-2v2zM9 7h4V3H9v4zm-6 5h2v-2H3v2zm0-5h4V3H3v4z"],translate:["M15.89 14.56l-3.99-8h-.01c-.17-.33-.5-.56-.89-.56s-.72.23-.89.56h-.01L9 8.76 7.17 7.38l.23-.18C8.37 6.47 9 5.31 9 4V3h1c.55 0 1-.45 1-1s-.45-1-1-1H7c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1H1c-.55 0-1 .45-1 1s.45 1 1 1h6v1c0 .66-.32 1.25-.82 1.61l-.68.51-.68-.5C4.32 5.25 4 4.66 4 4H2c0 1.31.63 2.47 1.6 3.2l.23.17L1.4 9.2l.01.01C1.17 9.4 1 9.67 1 10c0 .55.45 1 1 1 .23 0 .42-.09.59-.21l.01.01 2.9-2.17 2.6 1.95-1.99 3.98h.01c-.07.13-.12.28-.12.44 0 .55.45 1 1 1 .39 0 .72-.23.89-.56h.01L8.62 14h4.76l.72 1.45h.01c.17.32.5.55.89.55.55 0 1-.45 1-1 0-.16-.05-.31-.11-.44zM9.62 12L11 9.24 12.38 12H9.62z"],trash:["M14.49 3.99h-13c-.28 0-.5.22-.5.5s.22.5.5.5h.5v10c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-10h.5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5zm-8.5 9c0 .55-.45 1-1 1s-1-.45-1-1v-6c0-.55.45-1 1-1s1 .45 1 1v6zm3 0c0 .55-.45 1-1 1s-1-.45-1-1v-6c0-.55.45-1 1-1s1 .45 1 1v6zm3 0c0 .55-.45 1-1 1s-1-.45-1-1v-6c0-.55.45-1 1-1s1 .45 1 1v6zm2-12h-4c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1h-4c-.55 0-1 .45-1 1v1h14v-1c0-.55-.45-1-1-1z"],tree:["M9 11.857V16H7v-4.143L1 13l3.885-4.44L3 9l3.07-4.297L5 5l3-5 3 5-1.07-.297L13 9l-1.885-.44L15 13l-6-1.143z"],"trending-down":["M15 7c-.55 0-1 .45-1 1v.59l-4.29-4.3A.997.997 0 009 4c-.16 0-.31.05-.44.11V4.1L5 5.88 1.45 4.11v.01C1.31 4.05 1.16 4 1 4c-.55 0-1 .45-1 1 0 .39.23.72.56.89v.01l4 2v-.01c.13.06.28.11.44.11s.31-.05.44-.11v.01L8.8 6.22 12.59 10H12c-.55 0-1 .45-1 1s.45 1 1 1h3c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1z"],"trending-up":["M15 4h-3c-.55 0-1 .45-1 1s.45 1 1 1h.59L8.8 9.78 5.45 8.11v.01C5.31 8.05 5.16 8 5 8s-.31.05-.44.11V8.1l-4 2v.01c-.33.17-.56.5-.56.89 0 .55.45 1 1 1 .16 0 .31-.05.44-.11v.01L5 10.12l3.55 1.78v-.01c.14.06.29.11.45.11.28 0 .53-.11.71-.29L14 7.41V8c0 .55.45 1 1 1s1-.45 1-1V5c0-.55-.45-1-1-1z"],truck:["M12.5 0a.5.5 0 01.5.5V9a1 1 0 011 1v2h.5a.5.5 0 01.5.5v1a.5.5 0 01-.5.5H13v1a1 1 0 01-2 0v-1H5v1a1 1 0 01-2 0v-1H1.5a.5.5 0 01-.5-.5v-1a.5.5 0 01.5-.5H2v-2a1 1 0 011-1V.5a.5.5 0 011 0V3a2 2 0 012-2h4a2 2 0 012 2V.5a.5.5 0 01.5-.5zM9 8H7a1 1 0 00-1 1v2a1 1 0 001 1h2a1 1 0 001-1V9a1 1 0 00-1-1zm3.5 3h-1a.5.5 0 100 1h1a.5.5 0 100-1zm-8 0h-1a.5.5 0 100 1h1a.5.5 0 100-1zM9 9a.5.5 0 01.5.5v1l-.008.09A.5.5 0 019 11H7l-.09-.008a.5.5 0 01-.41-.492v-1l.008-.09A.5.5 0 017 9zm2-5H5v2h6V4z"],"two-columns":["M3.99-.01h-3c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-14c0-.55-.45-1-1-1zm11.71 7.3l-2-2a1.003 1.003 0 00-1.71.71v4a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71s-.11-.53-.29-.71zM9.99-.01h-3c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-14c0-.55-.45-1-1-1z"],unarchive:["M13.382 0a1 1 0 01.894.553L16 4v11a1 1 0 01-1 1H1a1 1 0 01-1-1V4L1.724.553A1 1 0 012.618 0h10.764zM8 6c-.28 0-.53.11-.71.29l-2 2-.084.096A1.003 1.003 0 006.71 9.71l.29-.3V12l.007.116c.058.496.482.884.993.884.55 0 1-.45 1-1V9.41l.29.29.081.076A.97.97 0 0010 10a1.003 1.003 0 00.71-1.71l-2-2-.096-.084A1.002 1.002 0 008 6zm5-4H3L2 4h12l-1-2z"],underline:["M8 14c2.8 0 5-2.2 5-5V3c0-.6-.4-1-1-1s-1 .4-1 1v6c0 1.7-1.3 3-3 3s-3-1.3-3-3V3c0-.6-.4-1-1-1s-1 .4-1 1v6c0 2.8 2.2 5 5 5zM13.5 15h-11c-.3 0-.5.2-.5.5s.2.5.5.5h11c.3 0 .5-.2.5-.5s-.2-.5-.5-.5z"],undo:["M4 11c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm7-7H3.41L4.7 2.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3C.11 4.47 0 4.72 0 5c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L3.41 6H11c1.66 0 3 1.34 3 3s-1.34 3-3 3H7v2h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z"],"ungroup-objects":["M3.5 5C1.57 5 0 6.57 0 8.5S1.57 12 3.5 12 7 10.43 7 8.5 5.43 5 3.5 5zm9 0C10.57 5 9 6.57 9 8.5s1.57 3.5 3.5 3.5S16 10.43 16 8.5 14.43 5 12.5 5z"],"unknown-vehicle":["M10.507 9.75v-3.5c0-.089.023-.171.051-.25h-7.55c-.176 0-.061-.824 0-1l.729-1.63c.06-.177.095-.37.27-.37h4.5V1.01c-.166-.003-.32-.01-.5-.01-2.72 0-4.036.402-4.036.402-.508.155-1.079.711-1.268 1.237L1.94 4.756H.887c-.483 0-.88.423-.88.939s.397.939.88.939h.376L1.008 7c-.034.685 0 1.436 0 2v5c0 .657.384 1 1 1s1-.343 1-1v-1h10v1c0 .657.383 1 1 1s1-.343 1-1v-3.5h-3.75a.75.75 0 01-.75-.75zm-5.5.25h-2V8h2v2zm11-4.305zM15.34.826a2.807 2.807 0 00-.932-.598c-.386-.16-.868-.241-1.445-.241-.447 0-.851.076-1.213.228-.362.153-.67.364-.926.636s-.456.592-.598.963a3.535 3.535 0 00-.218 1.144V3h1.789c.003-.208.023-.405.069-.588.049-.193.124-.362.225-.506.102-.144.232-.259.39-.345.159-.087.348-.13.567-.13.325 0 .58.09.762.272.183.18.275.46.275.839.008.222-.031.407-.116.555a1.654 1.654 0 01-.335.408 7.4 7.4 0 01-.452.37c-.162.123-.316.27-.463.438a2.556 2.556 0 00-.384.611c-.11.239-.177.535-.2.889V6h1.645v-.1c.032-.248.111-.453.237-.618.126-.164.27-.31.433-.438.163-.128.335-.255.518-.383a2.413 2.413 0 00.878-1.117c.102-.255.152-.58.152-.975A2.241 2.241 0 0015.34.826zM12.007 7v2h2V7h-2z"],unlock:["M11.99-.01c-2.21 0-4 1.79-4 4v3h-7c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-7c0-.55-.45-1-1-1h-3v-3c0-1.1.9-2 2-2s2 .9 2 2v1c0 .55.45 1 1 1s1-.45 1-1v-1c0-2.21-1.79-4-4-4z"],unpin:["M9.39 1c-.5.5-.4 1.48.15 2.53L4.38 7.54C2.85 6.5 1.52 6.07 1 6.59l3.5 3.5c-.02.02-1.4 2.8-1.4 2.8l2.8-1.4 3.5 3.5c.53-.53.1-1.86-.95-3.38l4.02-5.16c1.04.55 2.01.65 2.51.14L9.39 1z"],unresolve:["M11 3c-.55 0-1.07.09-1.57.26a6.46 6.46 0 010 9.48c.5.17 1.02.26 1.57.26 2.76 0 5-2.24 5-5s-2.24-5-5-5zM9.78 9.38l.09-.27c.08-.36.13-.73.13-1.11s-.05-.75-.13-1.11l-.09-.27a5.32 5.32 0 00-.29-.79l-.12-.21c-.14-.27-.31-.52-.51-.76a.7.7 0 00-.08-.1c-.24-.27-.49-.52-.78-.74-.43-.32-.92-.58-1.45-.75l.01-.01c-.1-.03-.2-.05-.3-.08-.12-.03-.23-.07-.36-.09A5.28 5.28 0 005 3C2.24 3 0 5.24 0 8s2.24 5 5 5c.31 0 .61-.04.9-.09.12-.02.24-.06.36-.09.1-.03.21-.04.3-.08l-.01-.01c.88-.29 1.64-.8 2.22-1.49.03-.03.06-.07.09-.1.19-.24.36-.49.51-.76.04-.07.08-.14.11-.21.13-.25.23-.52.3-.79z"],updated:["M8 0a7.95 7.95 0 00-6 2.74V1c0-.55-.45-1-1-1S0 .45 0 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H3.54C4.64 2.78 6.22 2 8 2c3.31 0 6 2.69 6 6 0 2.61-1.67 4.81-4 5.63-.63.22-1.29.37-2 .37-3.31 0-6-2.69-6-6 0-.55-.45-1-1-1s-1 .45-1 1c0 4.42 3.58 8 8 8 .34 0 .67-.03 1-.07.02 0 .04-.01.06-.01C12.98 15.4 16 12.06 16 8c0-4.42-3.58-8-8-8zm3 5c-.28 0-.53.11-.71.29L7 8.58 5.71 7.29a1.003 1.003 0 00-1.42 1.42l2 2c.18.18.43.29.71.29.28 0 .53-.11.71-.29l4-4A1.003 1.003 0 0011 5z"],upload:["M8 0C3.58 0 0 3.58 0 8s3.58 8 8 8 8-3.58 8-8-3.58-8-8-8zm3 8c-.28 0-.53-.11-.71-.29L9 6.41V12c0 .55-.45 1-1 1s-1-.45-1-1V6.41l-1.29 1.3a1.003 1.003 0 01-1.42-1.42l3-3C7.47 3.11 7.72 3 8 3s.53.11.71.29l3 3A1.003 1.003 0 0111 8z"],user:["M7.99-.01A7.998 7.998 0 00.03 8.77c.01.09.03.18.04.28.02.15.04.31.07.47.02.11.05.22.08.34.03.13.06.26.1.38.04.12.08.25.12.37.04.11.08.21.12.32a6.583 6.583 0 00.3.65c.07.14.14.27.22.4.04.07.08.13.12.2l.27.42.1.13a7.973 7.973 0 003.83 2.82c.03.01.05.02.07.03.37.12.75.22 1.14.29l.2.03c.39.06.79.1 1.2.1s.81-.04 1.2-.1l.2-.03c.39-.07.77-.16 1.14-.29.03-.01.05-.02.07-.03a8.037 8.037 0 003.83-2.82c.03-.04.06-.08.09-.13.1-.14.19-.28.28-.42.04-.07.08-.13.12-.2.08-.13.15-.27.22-.41.04-.08.08-.17.12-.26.06-.13.11-.26.17-.39.04-.1.08-.21.12-.32.04-.12.08-.24.12-.37.04-.13.07-.25.1-.38.03-.11.06-.22.08-.34.03-.16.05-.31.07-.47.01-.09.03-.18.04-.28.02-.26.04-.51.04-.78-.03-4.41-3.61-7.99-8.03-7.99zm0 14.4c-1.98 0-3.75-.9-4.92-2.31.67-.36 1.49-.66 2.14-.95 1.16-.52 1.04-.84 1.08-1.27.01-.06.01-.11.01-.17-.41-.36-.74-.86-.96-1.44v-.01c0-.01-.01-.02-.01-.02-.05-.13-.09-.26-.12-.39-.28-.05-.44-.35-.5-.63-.06-.11-.18-.38-.15-.69.04-.41.2-.59.38-.67v-.06c0-.51.05-1.24.14-1.72.02-.13.05-.26.09-.39.17-.59.53-1.12 1.01-1.49.49-.38 1.19-.59 1.82-.59.62 0 1.32.2 1.82.59.48.37.84.9 1.01 1.49.04.13.07.26.09.4.09.48.14 1.21.14 1.72v.07c.18.08.33.26.37.66.03.31-.1.58-.16.69-.06.27-.21.57-.48.62-.03.13-.07.26-.12.38 0 .01-.01.04-.01.04-.21.57-.54 1.06-.94 1.42 0 .06.01.13.01.19.04.43-.12.75 1.05 1.27.65.29 1.47.6 2.14.95a6.415 6.415 0 01-4.93 2.31z"],variable:["M3.94 3.15c.47-.66 1.05-1.24 1.76-1.73l.13-.4c-1.11.45-2.05 1.01-2.84 1.7-1.02.88-1.8 1.9-2.32 3.05C.22 6.76 0 7.75 0 8.75c0 1.75.66 3.5 1.99 5.25l.13-.42c-.39-.94-.59-1.82-.59-2.63 0-1.28.22-2.64.67-4.1.45-1.45 1.03-2.69 1.74-3.7zm7.51 6.41l-.27-.15c-.3.41-.52.66-.66.77-.09.06-.21.1-.33.1-.15 0-.3-.1-.45-.28-.25-.33-.59-1.22-1.01-2.69.38-.65.69-1.08.95-1.28.19-.15.39-.22.59-.22.08 0 .22.03.43.08.2.06.39.08.54.08.22 0 .4-.07.54-.22.15-.15.22-.34.22-.57 0-.25-.07-.45-.22-.59-.15-.15-.35-.22-.63-.22-.24 0-.47.06-.69.17-.21.11-.49.36-.82.74-.25.28-.61.78-1.1 1.48a6.72 6.72 0 00-.97-2.38l-2.59.44-.05.27c.19-.04.36-.06.49-.06.26 0 .47.11.64.33.26.34.63 1.38 1.11 3.12-.37.49-.63.81-.77.96-.23.24-.41.4-.56.47-.11.06-.24.09-.39.09-.11 0-.29-.06-.53-.18-.17-.07-.32-.11-.45-.11-.25 0-.46.08-.62.24-.16.16-.24.37-.24.61 0 .23.08.42.23.57.15.15.35.22.61.22.25 0 .48-.05.7-.15.22-.1.49-.32.82-.65.33-.33.78-.86 1.36-1.59.22.69.42 1.19.58 1.51.16.31.35.54.56.68.21.14.47.21.79.21.31 0 .62-.11.93-.33.4-.29.82-.77 1.26-1.47zm2.56-8.54l-.12.42c.39.95.59 1.82.59 2.64 0 1.09-.17 2.26-.5 3.51-.26.96-.6 1.87-1.02 2.71-.42.85-.82 1.51-1.21 1.98-.39.48-.87.92-1.44 1.32l-.14.4c1.11-.45 2.05-1.02 2.84-1.7 1.03-.89 1.81-1.91 2.33-3.05.44-.99.66-1.99.66-3 0-1.73-.66-3.48-1.99-5.23z"],"vertical-bar-chart-asc":["M6 7c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1s1-.45 1-1V8c0-.55-.45-1-1-1zM2 9c-.55 0-1 .45-1 1v5c0 .55.45 1 1 1s1-.45 1-1v-5c0-.55-.45-1-1-1zm8-5c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1s1-.45 1-1V5c0-.55-.45-1-1-1zm4-4c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1z"],"vertical-bar-chart-desc":["M6 4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1s1-.45 1-1V5c0-.55-.45-1-1-1zM2 0c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm8 7c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1s1-.45 1-1V8c0-.55-.45-1-1-1zm4 2c-.55 0-1 .45-1 1v5c0 .55.45 1 1 1s1-.45 1-1v-5c0-.55-.45-1-1-1z"],"vertical-distribution":["M1 2h14c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1s.45 1 1 1zm14 11H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM3 5c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1H3z"],video:["M15 2H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zM5 11V5l6 3-6 3z"],virus:["M11.918 11.107l.737.737.052-.051A1 1 0 0114.2 13.12l-.078.087-1.414 1.414a1 1 0 01-1.492-1.327l.029-.033-.863-.863c-.426.231-.89.402-1.38.502L9 14l.117.007A1 1 0 019 16H7l-.117-.007A1 1 0 017 14v-1.1a4.967 4.967 0 01-1.447-.539l-.846.846.078.087a1 1 0 01-1.492 1.327l-1.414-1.414-.078-.087a1 1 0 011.492-1.327l.744-.744A4.986 4.986 0 013.23 9.5H2a1 1 0 01-1.993.117L0 9.5v-2a1 1 0 011.993-.117L2 7.5h1.025a4.973 4.973 0 01.905-2.405l-.512-.513-.125.125A1 1 0 011.8 3.38l.078-.087 1.414-1.414a1 1 0 011.529 1.277l.573.575a4.969 4.969 0 011.604-.63V2l-.116-.007a1 1 0 010-1.986L7 0h2a1 1 0 01.117 1.993L9 2l.001 1.1c.639.13 1.233.381 1.757.73l.535-.537-.078-.087a1 1 0 011.492-1.327l1.414 1.414.078.087a1 1 0 01-1.492 1.327l-.535.536a4.97 4.97 0 01.803 2.257H14l.007-.117A1 1 0 0116 7.5v2l-.007.117A1 1 0 0114 9.5h-1.229a4.987 4.987 0 01-.853 1.607zM10 9a1 1 0 100 2 1 1 0 000-2zM6.5 5a1.5 1.5 0 100 3 1.5 1.5 0 000-3z"],"volume-down":["M9 2c-.28 0-.53.11-.71.29L5.59 5H3c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h2.59l2.71 2.71c.17.18.42.29.7.29.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm3.57 1.44l-1.59 1.22C11.62 5.61 12 6.76 12 8s-.38 2.39-1.02 3.34l1.59 1.22C13.47 11.27 14 9.7 14 8c0-1.7-.53-3.27-1.43-4.56z"],"volume-off":["M11 2c-.28 0-.53.11-.71.29L7.59 5H5c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h2.59l2.71 2.71c.17.18.42.29.7.29.55 0 1-.45 1-1V3c0-.55-.45-1-1-1z"],"volume-up":["M7 1.86c-.28 0-.53.11-.71.29l-2.7 2.71H1c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h2.59l2.71 2.71a1.003 1.003 0 001.71-.71v-10c-.01-.55-.46-1-1.01-1zm6.74-.99l-1.58 1.22A9.985 9.985 0 0114 7.86c0 2.16-.69 4.15-1.85 5.78l1.58 1.22c1.42-1.97 2.26-4.38 2.26-7 .01-2.61-.84-5.02-2.25-6.99zM8.98 4.52C9.62 5.48 10 6.63 10 7.86s-.38 2.39-1.02 3.34l1.59 1.22c.9-1.29 1.43-2.86 1.43-4.56 0-1.7-.53-3.27-1.43-4.56L8.98 4.52z"],walk:["M13 8h-2c-.16 0-.31-.05-.44-.11v.01l-1.02-.51-.37 1.86 1.38.92-.01.02c.27.17.46.46.46.81v4c0 .55-.45 1-1 1s-1-.45-1-1v-3.46l-1.27-.85-1.8 4.67h-.01A.98.98 0 015 16c-.55 0-1-.45-1-1 0-.13.03-.25.07-.36h-.01L7.39 6H5.62l-.73 1.45h-.01C4.72 7.77 4.39 8 4 8c-.55 0-1-.45-1-1 0-.16.05-.31.11-.44H3.1l1-2h.01c.17-.33.5-.56.89-.56h3.16l.29-.75C8.17 2.9 8 2.47 8 2c0-1.1.9-2 2-2s2 .9 2 2c0 1-.73 1.82-1.69 1.97l-.5 1.32 1.43.71H13c.55 0 1 .45 1 1s-.45 1-1 1z"],"warning-sign":["M15.84 13.5l.01-.01-7-12-.01.01c-.17-.3-.48-.5-.85-.5s-.67.2-.85.5l-.01-.01-7 12 .01.01c-.09.15-.15.31-.15.5 0 .55.45 1 1 1h14c.55 0 1-.45 1-1 0-.19-.06-.35-.15-.5zm-6.85-.51h-2v-2h2v2zm0-3h-2v-5h2v5z"],"waterfall-chart":["M8 7c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm-4 4h1c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1zm7-6c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1s-1 .45-1 1v1c0 .55.45 1 1 1zm4-3h-1c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm0 10H2V3c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],widget:["M13 11h2V5h-2v6zM3 5H1v6h2V5zm11-1c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM2 12c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm12 0c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM5 3h6V1H5v2zM2 0C.9 0 0 .9 0 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm3 15h6v-2H5v2z"],"widget-button":["M1 3h14c.55 0 1 .45 1 1v8c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1zm1 2v6h12V5H2zm3 4c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm3 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm3 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"widget-footer":["M14 0H2c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H3v-3h10v3zm0-4H3V2h10v8z"],"widget-header":["M14 0H2c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 14H3V6h10v8zm0-9H3V2h10v3z"],wrench:["M15.83 3.7l-3.06 3.05-2.84-.7-.7-2.83L12.29.17a5.004 5.004 0 00-4.83 1.29 4.967 4.967 0 00-1.12 5.36L.58 12.58c-.36.36-.58.86-.58 1.41 0 1.1.9 2 2 2 .55 0 1.05-.22 1.41-.59l5.77-5.77c1.79.69 3.91.33 5.35-1.12 1.32-1.3 1.74-3.15 1.3-4.81z"],"zoom-in":["M7.99 5.99v-2c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1v-2h2c.55 0 1-.45 1-1s-.45-1-1-1h-2zm7.56 7.44l-2.67-2.68a6.94 6.94 0 001.11-3.76c0-3.87-3.13-7-7-7s-7 3.13-7 7 3.13 7 7 7c1.39 0 2.68-.42 3.76-1.11l2.68 2.67a1.498 1.498 0 102.12-2.12zm-8.56-1.44c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"],"zoom-out":["M3.99 5.99c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1h-6zm11.56 7.44l-2.67-2.68a6.94 6.94 0 001.11-3.76c0-3.87-3.13-7-7-7s-7 3.13-7 7 3.13 7 7 7c1.39 0 2.68-.42 3.76-1.11l2.68 2.67a1.498 1.498 0 102.12-2.12zm-8.56-1.44c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"],"zoom-to-fit":["M11 10a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-2-2a1.003 1.003 0 00-1.42 1.42L12.59 8 11.3 9.29c-.19.18-.3.43-.3.71zM1 5c.55 0 1-.45 1-1V2h2c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1v3c0 .55.45 1 1 1zm4 1a1.003 1.003 0 00-1.71-.71l-2 2C1.11 7.47 1 7.72 1 8c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42L3.41 8 4.7 6.71c.19-.18.3-.43.3-.71zm1-1c.28 0 .53-.11.71-.29L8 3.41 9.29 4.7c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-2-2C8.53 1.11 8.28 1 8 1s-.53.11-.71.29l-2 2A1.003 1.003 0 006 5zm9 6c-.55 0-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1h3c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1zm0-11h-3c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zM4 14H2v-2c0-.55-.45-1-1-1s-1 .45-1 1v3c0 .55.45 1 1 1h3c.55 0 1-.45 1-1s-.45-1-1-1zm6-3c-.28 0-.53.11-.71.29L8 12.59 6.71 11.3A.965.965 0 006 11a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l2-2A1.003 1.003 0 0010 11z"]},yc={add:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm5-9h-4V5c0-.55-.45-1-1-1s-1 .45-1 1v4H5c-.55 0-1 .45-1 1s.45 1 1 1h4v4c0 .55.45 1 1 1s1-.45 1-1v-4h4c.55 0 1-.45 1-1s-.45-1-1-1z"],"add-column-left":["M4 11h2v2c0 .55.45 1 1 1s1-.45 1-1v-2h2c.55 0 1-.45 1-1s-.45-1-1-1H8V7c0-.55-.45-1-1-1s-1 .45-1 1v2H4c-.55 0-1 .45-1 1s.45 1 1 1zM19 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-7 18H2V2h10v16zm6 0h-5V2h5v16z"],"add-column-right":["M10 11h2v2c0 .55.45 1 1 1s1-.45 1-1v-2h2c.55 0 1-.45 1-1s-.45-1-1-1h-2V7c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1zm9-11H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM7 18H2V2h5v16zm11 0H8V2h10v16z"],"add-location":["M10 0a1 1 0 010 2 8 8 0 108 8 1 1 0 012 0c0 5.523-4.477 10-10 10S0 15.523 0 10 4.477 0 10 0zm0 6a4 4 0 110 8 4 4 0 010-8zm6-6c.6 0 1 .4 1 1v2h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v2c0 .6-.4 1-1 1s-1-.4-1-1V5h-2c-.6 0-1-.4-1-1 0-.5.4-1 1-1h2V1c0-.6.4-1 1-1z"],"add-row-bottom":["M19 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H2V8h16v10zm0-11H2V2h16v5zM7 14h2v2c0 .55.45 1 1 1s1-.45 1-1v-2h2c.55 0 1-.45 1-1s-.45-1-1-1h-2v-2c0-.55-.45-1-1-1s-1 .45-1 1v2H7c-.55 0-1 .45-1 1s.45 1 1 1z"],"add-row-top":["M7 8h2v2c0 .55.45 1 1 1s1-.45 1-1V8h2c.55 0 1-.45 1-1s-.45-1-1-1h-2V4c0-.55-.45-1-1-1s-1 .45-1 1v2H7c-.55 0-1 .45-1 1s.45 1 1 1zm12-8H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H2v-5h16v5zm0-6H2V2h16v10z"],"add-to-artifact":["M13 12H1c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1zm0 4H1c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1zM1 6h9c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm12 2H1c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1zm6-4h-2V2c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V6h2c.55 0 1-.45 1-1s-.45-1-1-1z"],"add-to-folder":["M.01 10V6H20v10c0 .55-.45 1-1 1H9.995v-3.99C9.965 11.332 8.635 10 6.987 10H.01zM19 3c.55 0 1 .45.99 1v1H0V2c0-.55.45-1 1-1h5.997c.28 0 .53.11.71.29L9.414 3H19zM6.987 12c.55 0 .999.45 1.009 1.01v5c0 .55-.45 1-1 1s-.999-.45-.999-1v-2.59l-4.288 4.29a1.003 1.003 0 01-1.42-1.42L4.579 14H1.989c-.55 0-1-.45-1-1s.45-1 1-1h4.998z"],airplane:["M20 2c0-1.1-.9-2-2-2-.55 0-1.05.22-1.41.59l-4.84 4.84L2 1 1 3l7.53 5.64L4.17 13H1l-1 1 4 2 2 4 1-1v-3.17l4.36-4.36L17 19l2-1-4.43-9.74 4.84-4.84c.37-.37.59-.87.59-1.42z"],"align-center":["M5 5c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1H5zM1 3h18c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm12 12c.55 0 1-.45 1-1s-.45-1-1-1H7c-.55 0-1 .45-1 1s.45 1 1 1h6zm4 2H3c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm2-8H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],"align-justify":["M1 3h18c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm18 14H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm0-12H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm0 4H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm0 4H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],"align-left":["M1 7h10c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm0-4h18c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm14 14H1c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zm4-8H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zM1 15h6c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1z"],"align-right":["M19 17H5c-.55 0-1 .45-1 1s.45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1zM1 3h18c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm18 10h-6c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1zm0-4H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm0-4H9c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1z"],"alignment-bottom":["M12 16h4c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1h-4c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1zm7 2H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zM4 16h4c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1z"],"alignment-horizontal-center":["M19 9h-2V7c0-.55-.45-1-1-1h-4c-.55 0-1 .45-1 1v2H9V3c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v6H1c-.55 0-1 .45-1 1s.45 1 1 1h2v6c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-6h2v2c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-2h2c.55 0 1-.45 1-1s-.45-1-1-1z"],"alignment-left":["M1 0C.45 0 0 .45 0 1v18c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm11 11H5c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1zm7-8H5c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"alignment-right":["M19 0c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm-4 11H8c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1zm0-8H1c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"alignment-top":["M8 4H4c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm11-4H1C.45 0 0 .45 0 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm-3 4h-4c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1z"],"alignment-vertical-center":["M17 3h-6V1c0-.55-.45-1-1-1S9 .45 9 1v2H3c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h6v2H7c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1v-2h2c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1h-2V9h6c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],annotation:["M9.41 13.41l7.65-7.65-2.83-2.83-7.65 7.65 2.83 2.83zm10-10c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2-.55 0-1.05.22-1.41.59l-1.65 1.65 2.83 2.83 1.64-1.66zM18 18H2V2h8.93l2-2H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V7.07l-2 2V18zM4 16l4.41-1.59-2.81-2.79L4 16z"],"app-header":["M19 0a1 1 0 011 1v18a1 1 0 01-1 1H1a1 1 0 01-1-1V1a1 1 0 011-1h18zM8 6a1 1 0 00-1.993-.117L6 6v8a1 1 0 001.993.117L8 14v-3h4v3a1 1 0 001.993.117L14 14V6a1 1 0 00-1.993-.117L12 6v3H8V6z"],application:["M3.5 9h9c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-9c-.28 0-.5.22-.5.5s.22.5.5.5zm0 2h5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-5c-.28 0-.5.22-.5.5s.22.5.5.5zM19 1H1c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zm-1 16H2V6h16v11zM3.5 13h7c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-7c-.28 0-.5.22-.5.5s.22.5.5.5z"],applications:["M15 5H1c-.55 0-1 .45-1 1v13c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-1 13H2V8h12v10zM3.5 10h7c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-7c-.28 0-.5.22-.5.5s.22.5.5.5zm0 2h3c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-3c-.28 0-.5.22-.5.5s.22.5.5.5zm0 2h5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5h-5c-.28 0-.5.22-.5.5s.22.5.5.5zM19 0H5c-.55 0-1 .45-1 1v3h2V3h12v10h-1v2h2c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],archive:["M16.434 0a1 1 0 01.857.486L20 5v14a1 1 0 01-1 1H1a1 1 0 01-1-1V5L2.709.486A1 1 0 013.566 0h12.868zM10 8c-.55 0-1 .45-1 1v4.58l-1.29-1.29-.081-.073A.996.996 0 007 11.99a1.003 1.003 0 00-.71 1.71l3 3 .096.084c.168.13.38.206.614.206.28 0 .53-.11.71-.29l3-3 .084-.096a1.003 1.003 0 00-1.504-1.324L11 13.58V9l-.007-.116A1.004 1.004 0 0010 8zm6-6H4L2 5.002h16L16 2z"],array:["M19 0a1 1 0 01.993.883L20 1v18a1 1 0 01-.883.993L19 20h-4a1 1 0 01-.117-1.993L15 18h3V2h-3a1 1 0 01-.993-.883L14 1a1 1 0 01.883-.993L15 0h4zM5 0a1 1 0 01.117 1.993L5 2H2v16h3a1 1 0 01.993.883L6 19a1 1 0 01-.883.993L5 20H1a1 1 0 01-.993-.883L0 19V1A1 1 0 01.883.007L1 0h4zm5 9a1 1 0 110 2 1 1 0 010-2zM6 9a1 1 0 110 2 1 1 0 010-2zm8 0a1 1 0 110 2 1 1 0 010-2z"],"array-boolean":["M19 0a1 1 0 01.993.883L20 1v18a1 1 0 01-.883.993L19 20h-4a1 1 0 01-.117-1.993L15 18h3V2h-3a1 1 0 01-.993-.883L14 1a1 1 0 01.883-.993L15 0h4zM5 0a1 1 0 01.117 1.993L5 2H2v16h3a1 1 0 01.993.883L6 19a1 1 0 01-.883.993L5 20H1a1 1 0 01-.993-.883L0 19V1A1 1 0 01.883.007L1 0h4zm10 7a1 1 0 01.993.883L16 8v4a1 1 0 01-.883.993L15 13H5a1 1 0 01-.993-.883L4 12V8a1 1 0 01.883-.993L5 7h10zm0 1h-5v4h5V8z"],"array-date":["M19 0a1 1 0 01.993.883L20 1v18a1 1 0 01-.883.993L19 20h-4a1 1 0 01-.117-1.993L15 18h3V2h-3a1 1 0 01-.993-.883L14 1a1 1 0 01.883-.993L15 0h4zM5 0a1 1 0 01.117 1.993L5 2H2v16h3a1 1 0 01.993.883L6 19a1 1 0 01-.883.993L5 20H1a1 1 0 01-.993-.883L0 19V1A1 1 0 01.883.007L1 0h4zm2.5 5a.5.5 0 01.5.5V6h4v-.5a.5.5 0 01.5-.5h1a.5.5 0 01.5.5V6h1a1 1 0 01.993.883L16 7v7a1 1 0 01-.883.993L15 15H5a1 1 0 01-.993-.883L4 14V7a1 1 0 01.883-.993L5 6h1v-.5a.5.5 0 01.5-.5h1zM15 9H5v5h10V9z"],"array-numeric":["M19 0a1 1 0 01.993.883L20 1v18a1 1 0 01-.883.993L19 20h-4a1 1 0 01-.117-1.993L15 18h3V2h-3a1 1 0 01-.993-.883L14 1a1 1 0 01.883-.993L15 0h4zM5 0a1 1 0 01.117 1.993L5 2H2v16h3a1 1 0 01.993.883L6 19a1 1 0 01-.883.993L5 20H1a1 1 0 01-.993-.883L0 19V1A1 1 0 01.883.007L1 0h4zm8.995 6.09c.32 0 .603.047.85.14a1.679 1.679 0 011.015.985c.09.23.135.482.135.755 0 .287-.063.552-.19.795a1.642 1.642 0 01-.57.615v.02l.101.05c.068.039.138.09.209.155.107.097.203.215.29.355a2.09 2.09 0 01.3 1.09c0 .313-.053.597-.16.85a1.898 1.898 0 01-1.12 1.065 2.42 2.42 0 01-.85.145c-.533 0-.99-.127-1.37-.38a1.702 1.702 0 01-.73-1.08c-.013-.067.013-.11.08-.13l.87-.2.041-.003c.038.004.064.028.079.073.073.2.193.37.36.51.167.14.39.21.67.21.32 0 .567-.095.74-.285.173-.19.26-.432.26-.725 0-.347-.1-.618-.3-.815-.2-.197-.47-.295-.81-.295h-.29l-.044-.006c-.037-.013-.056-.044-.056-.094V9.1l.006-.044c.013-.037.044-.056.094-.056h.27l.145-.008a.925.925 0 00.575-.262c.18-.18.27-.42.27-.72 0-.273-.08-.495-.24-.665-.16-.17-.383-.255-.67-.255-.253 0-.453.063-.6.19-.147.127-.25.297-.31.51-.02.06-.06.083-.12.07l-.85-.2-.042-.015c-.035-.02-.048-.055-.038-.105a1.684 1.684 0 01.645-1.035c.17-.13.37-.232.6-.305.23-.073.482-.11.755-.11zm-7.99.11l.044.006c.037.013.056.044.056.094v6.6l-.006.044c-.013.037-.044.056-.094.056h-.92l-.044-.006c-.037-.013-.056-.044-.056-.094V7.54h-.02l-1.04.73-.04.02c-.047.016-.07-.01-.07-.08V7.19l.008-.051a.196.196 0 01.062-.089l1.09-.79.051-.033a.295.295 0 01.129-.027h.85zm3.34-.11c.32 0 .603.05.85.15.247.1.455.235.625.405.17.17.3.37.39.6.09.23.135.478.135.745 0 .307-.057.588-.17.845a3.16 3.16 0 01-.47.745l-1.98 2.4V12h2.52l.044.006c.037.013.056.044.056.094v.8l-.006.044c-.013.037-.044.056-.094.056h-3.82l-.044-.006c-.037-.013-.056-.044-.056-.094v-.75l.006-.05a.165.165 0 01.044-.08l2.4-2.99.124-.167c.077-.11.143-.222.196-.333.08-.167.12-.347.12-.54a.92.92 0 00-.235-.64c-.157-.173-.378-.26-.665-.26-.273 0-.487.077-.64.23-.153.153-.247.36-.28.62-.013.067-.05.093-.11.08l-.88-.18-.043-.015c-.035-.02-.047-.055-.037-.105a1.78 1.78 0 01.56-1.115c.167-.157.372-.282.615-.375a2.35 2.35 0 01.845-.14z"],"array-string":["M19 0a1 1 0 01.993.883L20 1v18a1 1 0 01-.883.993L19 20h-4a1 1 0 01-.117-1.993L15 18h3V2h-3a1 1 0 01-.993-.883L14 1a1 1 0 01.883-.993L15 0h4zM5 0a1 1 0 01.117 1.993L5 2H2v16h3a1 1 0 01.993.883L6 19a1 1 0 01-.883.993L5 20H1a1 1 0 01-.993-.883L0 19V1A1 1 0 01.883.007L1 0h4zm2.012 6c.643 0 1.203.266 1.68.797.477.53.715 1.246.715 2.145a4.472 4.472 0 01-.965 2.814c-.644.83-1.66 1.5-3.047 2.011v-.581l.26-.104a3.87 3.87 0 001.624-1.285c.457-.632.686-1.29.686-1.971 0-.148-.023-.256-.07-.326-.023-.047-.054-.07-.093-.07-.038 0-.1.031-.186.093-.248.179-.558.268-.93.268-.45 0-.843-.18-1.18-.541A1.817 1.817 0 015 7.965c0-.527.194-.986.581-1.378A1.934 1.934 0 017.011 6zm5.593 0c.643 0 1.203.266 1.68.797.477.53.715 1.246.715 2.145a4.472 4.472 0 01-.965 2.814c-.644.83-1.659 1.5-3.047 2.011v-.581l.26-.104a3.87 3.87 0 001.624-1.285c.457-.632.686-1.29.686-1.971 0-.148-.023-.256-.07-.326-.023-.047-.054-.07-.093-.07-.038 0-.1.031-.186.093-.248.179-.558.268-.93.268-.45 0-.843-.18-1.18-.541a1.817 1.817 0 01-.506-1.285c0-.527.194-.986.581-1.378A1.934 1.934 0 0112.604 6z"],"array-timestamp":["M19 0a1 1 0 01.993.883L20 1v18a1 1 0 01-.883.993L19 20h-4a1 1 0 01-.117-1.993L15 18h3V2h-3a1 1 0 01-.993-.883L14 1a1 1 0 01.883-.993L15 0h4zM5 0a1 1 0 01.117 1.993L5 2H2v16h3a1 1 0 01.993.883L6 19a1 1 0 01-.883.993L5 20H1a1 1 0 01-.993-.883L0 19V1A1 1 0 01.883.007L1 0h4zm5 4a6 6 0 110 12 6 6 0 010-12zm0 1a5 5 0 100 10 5 5 0 000-10zm2.854 2.146a.5.5 0 01.057.638l-.057.07-2.5 2.5a.5.5 0 01-.638.057l-.07-.057-1.5-1.5a.5.5 0 01.638-.765l.07.057L10 9.293l2.146-2.147a.5.5 0 01.708 0z"],"arrow-bottom-left":["M18 3a1.003 1.003 0 00-1.71-.71L4 14.59V7c0-.55-.45-1-1-1s-1 .45-1 1v10c0 .55.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1H5.41l12.3-12.29c.18-.18.29-.43.29-.71z"],"arrow-bottom-right":["M17 6c-.55 0-1 .45-1 1v7.59L3.71 2.29a1.003 1.003 0 00-1.42 1.42L14.59 16H7c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1z"],"arrow-down":["M16 11c-.3 0-.5.1-.7.3L11 15.6V2c0-.5-.4-1-1-1s-1 .5-1 1v13.6l-4.3-4.3c-.2-.2-.4-.3-.7-.3-.5 0-1 .4-1 1 0 .3.1.5.3.7l6 6c.2.2.4.3.7.3s.5-.1.7-.3l6-6c.2-.2.3-.4.3-.7 0-.6-.5-1-1-1z"],"arrow-left":["M18 9H4.41L8.7 4.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-6 6c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l6 6a1.003 1.003 0 001.42-1.42L4.41 11H18c.55 0 1-.45 1-1s-.45-1-1-1z"],"arrow-right":["M18.71 9.29l-6-6a1.003 1.003 0 00-1.42 1.42L15.59 9H2c-.55 0-1 .45-1 1s.45 1 1 1h13.59l-4.29 4.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l6-6c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],"arrow-top-left":["M17.71 16.29L5.41 4H13c.55 0 1-.45 1-1s-.45-1-1-1H3c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1s1-.45 1-1V5.41L16.29 17.7c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],"arrow-top-right":["M17 2H7c-.55 0-1 .45-1 1s.45 1 1 1h7.59L2.29 16.29a1.003 1.003 0 001.42 1.42L16 5.41V13c0 .55.45 1 1 1s1-.45 1-1V3c0-.55-.45-1-1-1z"],"arrow-up":["M16.7 7.3l-6-6c-.2-.2-.4-.3-.7-.3s-.5.1-.7.3l-6 6c-.2.2-.3.4-.3.7 0 .6.5 1 1 1 .3 0 .5-.1.7-.3L9 4.4V18c0 .5.4 1 1 1s1-.5 1-1V4.4l4.3 4.3c.2.2.4.3.7.3.5 0 1-.4 1-1 0-.3-.1-.5-.3-.7z"],"arrows-horizontal":["M19.7 9.3l-5-5c-.2-.2-.4-.3-.7-.3-.6 0-1 .4-1 1 0 .3.1.5.3.7L16.6 9H3.4l3.3-3.3c.2-.2.3-.4.3-.7 0-.6-.4-1-1-1-.3 0-.5.1-.7.3l-5 5c-.2.2-.3.4-.3.7s.1.5.3.7l5 5c.2.2.4.3.7.3.6 0 1-.4 1-1 0-.3-.1-.5-.3-.7L3.4 11h13.2l-3.3 3.3c-.2.2-.3.4-.3.7 0 .6.4 1 1 1 .3 0 .5-.1.7-.3l5-5c.2-.2.3-.4.3-.7s-.1-.5-.3-.7z"],"arrows-vertical":["M15 13c-.3 0-.5.1-.7.3L11 16.6V3.4l3.3 3.3c.2.2.4.3.7.3.6 0 1-.4 1-1 0-.3-.1-.5-.3-.7l-5-5c-.2-.2-.4-.3-.7-.3s-.5.1-.7.3l-5 5c-.2.2-.3.4-.3.7 0 .6.4 1 1 1 .3 0 .5-.1.7-.3L9 3.4v13.2l-3.3-3.3c-.2-.2-.4-.3-.7-.3-.6 0-1 .4-1 1 0 .3.1.5.3.7l5 5c.2.2.4.3.7.3s.5-.1.7-.3l5-5c.2-.2.3-.4.3-.7 0-.5-.4-1-1-1z"],asterisk:["M18.52 14.17l.01-.02L11.89 10l6.64-4.15-.01-.02A.97.97 0 0019 5c0-.55-.45-1-1-1-.2 0-.37.07-.52.17l-.01-.02L11 8.2V1c0-.55-.45-1-1-1S9 .45 9 1v7.2L2.53 4.15l-.01.02A.922.922 0 002 4c-.55 0-1 .45-1 1 0 .36.2.66.48.83l-.01.02L8.11 10l-6.64 4.15.01.02A.97.97 0 001 15c0 .55.45 1 1 1 .2 0 .37-.07.52-.17l.01.02L9 11.8V19c0 .55.45 1 1 1s1-.45 1-1v-7.2l6.47 4.04.01-.02c.15.11.32.18.52.18.55 0 1-.45 1-1 0-.36-.2-.66-.48-.83z"],"automatic-updates":["M10 18c-4.42 0-8-3.58-8-8 0-2.52 1.18-4.76 3-6.22V5c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1H2c-.55 0-1 .45-1 1s.45 1 1 1h2.06C1.61 3.82 0 6.71 0 10c0 5.52 4.48 10 10 10 .55 0 1-.45 1-1s-.45-1-1-1zm0-16c1.64 0 3.15.49 4.42 1.34l1.43-1.43A9.869 9.869 0 0010 0c-.55 0-1 .45-1 1s.45 1 1 1zm10 8c0-1.13-.2-2.21-.54-3.22L17.84 8.4A7.962 7.962 0 0115 16.22V15c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1h-2.06c2.45-1.82 4.06-4.71 4.06-8zm0-7a1.003 1.003 0 00-1.71-.71L12 8.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l7-7c.18-.18.29-.43.29-.71z"],backlink:["M18.387 19.79l-.094-.083L14 15.415V18a1 1 0 01-2 0l.003-5.075.017-.126.03-.111.044-.111.052-.098.067-.096.08-.09a1.01 1.01 0 01.112-.097l.11-.071.114-.054.105-.035.15-.03L13 12h5a1 1 0 110 2h-2.585l4.292 4.293a1 1 0 01-1.32 1.497zM7.036 9.136l-4.45 4.45-.117.127a2 2 0 002.818 2.818l.127-.117 4.45-4.449a4 4 0 01-.885 3.704l-.15.16-2 2A4 4 0 011.02 12.33l.15-.16 2-2a3.998 3.998 0 013.865-1.035zm6.671-3.843a1 1 0 01.083 1.32l-.083.094-7 7a1 1 0 01-1.497-1.32l.083-.094 7-7a1 1 0 011.414 0zm4.121-4.121a4 4 0 01.151 5.497l-.15.16-2 2a3.998 3.998 0 01-3.864 1.036l4.45-4.45.116-.128a2 2 0 00-2.818-2.818l-.127.117-4.45 4.45a4 4 0 01.885-3.705l.15-.16 2-2a4 4 0 015.657 0z"],badge:["M16.94 5.73c-.19-1.41.62-2.52 1.38-3.59L17.03.65C14.89 1.76 11.88 1.48 10 0 8.12 1.48 5.11 1.76 2.97.65L1.68 2.14c.76 1.07 1.57 2.18 1.38 3.59C2.68 8.59 0 10.94 1.4 14.08c.56 1.43 1.81 2.37 3.4 2.75 1.95.46 4.4.91 5.2 3.17.8-2.26 3.25-2.71 5.2-3.17 1.6-.38 2.84-1.32 3.4-2.75 1.4-3.14-1.28-5.49-1.66-8.35z"],"ban-circle":["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm5 11H5c-.55 0-1-.45-1-1s.45-1 1-1h10c.55 0 1 .45 1 1s-.45 1-1 1z"],"bank-account":["M19.2 8.02l-.78-.18C18.03 6.4 17.2 5.08 16.08 4l.5-2.28c.11-.42-.22-.78-.61-.72-1.06.12-2 .54-2.67 1.26-1.06-.42-2.34-.66-3.56-.66-3.12 0-5.79 1.5-7.4 3.72-.23-.05-.45-.11-.67-.11C.72 5.21 0 5.98 0 7c0 .72.39 1.32.95 1.62-.06.42-.12.9-.12 1.38 0 2.16.89 4.08 2.28 5.58l-.33 2.04c-.11.72.45 1.38 1.12 1.38h.72c.56 0 1-.42 1.11-1.02l.06-.48c1.17.54 2.5.9 3.95.9 1.39 0 2.78-.3 3.95-.9l.06.48c.11.6.56 1.02 1.11 1.02h.72c.67 0 1.22-.66 1.11-1.38l-.33-1.98c.78-.78 1.34-1.74 1.73-2.76l1-.24c.5-.12.89-.6.89-1.2V9.22c.11-.6-.28-1.08-.78-1.2zM15 10c-.6 0-1-.7-1-1.5S14.4 7 15 7s1 .7 1 1.5-.4 1.5-1 1.5zM7.55 5.83a.99.99 0 01-1.38-.28.99.99 0 01.28-1.38c2.34-1.56 4.77-1.56 7.11 0 .46.31.58.93.28 1.39-.31.46-.93.58-1.39.28-1.67-1.12-3.23-1.12-4.9-.01z"],barcode:["M6 16.98h2v-14H6v14zm3 0h1v-14H9v14zm-6 0h2v-14H3v14zm-3 0h2v-14H0v14zm16 0h2v-14h-2v14zm-4 0h1v-14h-1v14zm7-14v14h1v-14h-1zm-5 14h1v-14h-1v14z"],blank:[],"blocked-person":["M11.55 15.92c-1.48-.65-1.28-1.05-1.33-1.59-.01-.07-.01-.15-.01-.23.51-.45.92-1.07 1.19-1.78 0 0 .01-.04.02-.05.06-.15.11-.32.15-.48.34-.07.54-.44.61-.78.06-.11.14-.35.17-.62C10.33 9.42 8.92 7.38 8.92 5c0-.3.05-.58.09-.87-.33-.08-.67-.13-.99-.13-.79 0-1.68.25-2.31.73-.61.47-1.07 1.13-1.29 1.86-.05.16-.09.33-.11.5-.12.6-.17 1.51-.17 2.14v.08c-.24.09-.45.32-.49.83-.04.39.12.73.2.87.08.35.28.72.63.78.04.17.09.33.15.48 0 .01.01.02.01.03l.01.01c.27.72.7 1.35 1.22 1.8 0 .07-.01.14-.01.21-.05.54.1.94-1.38 1.59C3 16.56.77 17.26.32 18.31-.15 19.38.04 20 .04 20h15.95s.18-.62-.27-1.67c-.46-1.06-2.69-1.75-4.17-2.41zM14.97 0c-2.78 0-5.03 2.24-5.03 5s2.25 5 5.03 5S20 7.76 20 5s-2.25-5-5.03-5zm-3.03 5c0-1.66 1.35-3 3.02-3 .47 0 .9.11 1.29.3l-4.01 3.99c-.18-.4-.3-.83-.3-1.29zm3.03 3c-.47 0-.9-.11-1.29-.3l4.01-3.99c.19.39.3.82.3 1.29 0 1.66-1.36 3-3.02 3z"],bold:["M14.3 9c.4-.8.7-1.6.7-2.5C15 4 13 2 10.5 2H5c-.6 0-1 .4-1 1v13c0 .6.4 1 1 1h6.5c2.5 0 4.5-2 4.5-4.5 0-1.4-.7-2.7-1.7-3.5zM7 5h3.5c.8 0 1.5.7 1.5 1.5S11.3 8 10.5 8H7V5zm4.5 9H7v-3h4.5c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5z"],book:["M3 1v18c0 .55.45 1 1 1h2V0H4c-.55 0-1 .45-1 1zm14-1h-2v8l-2-2-2 2V0H7v20h10c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],bookmark:["M6 0c-.55 0-1 .45-1 1v18c0 .55.32.68.71.29L9.3 15.7a.996.996 0 011.41 0l3.59 3.59c.38.39.7.26.7-.29v-8-4.5V1c0-.55-.45-1-1-1H6z"],box:["M19.89 6.56l-2.99-6h-.01C16.72.23 16.39 0 16 0H4c-.39 0-.72.23-.89.56H3.1l-3 6h.01C.05 6.69 0 6.84 0 7v12c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V7c0-.16-.05-.31-.11-.44zM11 2h4.38l2 4H11V2zM4.62 2H9v4H2.62l2-4zM18 18H2V8h16v10zM8 12h4c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1z"],briefcase:["M19 5h-4V2c0-.55-.45-1-1-1H6c-.55 0-1 .45-1 1v3H1c-.55 0-1 .45-1 1v5h4v-1h2v1h8v-1h2v1h4V6c0-.55-.45-1-1-1zm-6 0H7V3h6v2zm3 8h-2v-1H6v1H4v-1H0v6c0 .55.45 1 1 1h18c.55 0 1-.45 1-1v-6h-4v1z"],"bring-data":["M18 18a1 1 0 010 2H2a1 1 0 010-2h16zM9.995 3.005c.55 0 1 .45 1 .999v9.584l1.29-1.288a1.002 1.002 0 011.42 1.419l-3 2.996a1.015 1.015 0 01-1.42 0l-3-2.997a1.002 1.002 0 011.42-1.419l1.29 1.29V4.013c0-.55.45-1.009 1-1.009zM16 0a1 1 0 110 2 1 1 0 010-2zm-3 0a1 1 0 110 2 1 1 0 010-2zm-3 0a1 1 0 110 2 1 1 0 010-2zM7 0a1 1 0 110 2 1 1 0 010-2zM4 0a1 1 0 110 2 1 1 0 010-2z"],build:["M19.43 16.67L9.31 7.81l1.47-1.56c.41-.44-.15-.8.15-1.6 1.08-2.76 4.19-2.99 4.19-2.99s.45-.47.87-.92C11.98-1 9.26.7 8.04 1.8L3.83 6.25l-.86.92c-.48.51-.48 1.33 0 1.84l-.87.92c-.48-.51-1.26-.51-1.74 0s-.48 1.33 0 1.84l1.74 1.84c.48.51 1.26.51 1.74 0s.48-1.33 0-1.84l.87-.92c.48.51 1.26.51 1.74 0l1.41-1.49 8.81 10.07c.76.76 2 .76 2.76 0 .76-.76.76-2 0-2.76z"],calculator:["M16 0H4c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM7 18H5v-2h2v2zm0-4H5v-2h2v2zm0-4H5V8h2v2zm4 8H9v-2h2v2zm0-4H9v-2h2v2zm0-4H9V8h2v2zm4 8h-2v-6h2v6zm0-8h-2V8h2v2zm0-4H5V2h10v4z"],calendar:["M15 5c.6 0 1-.4 1-1V2c0-.5-.4-1-1-1s-1 .5-1 1v2c0 .6.4 1 1 1zM5 5c.6 0 1-.4 1-1V2c0-.5-.4-1-1-1s-1 .5-1 1v2c0 .6.4 1 1 1zm13-2h-1v1c0 1.1-.9 2-2 2s-2-.9-2-2V3H7v1c0 1.1-.9 2-2 2s-2-.9-2-2V3H2c-.5 0-1 .5-1 1v14c0 .5.5 1 1 1h16c.5 0 1-.5 1-1V4c0-.5-.5-1-1-1zM7 17H3v-4h4v4zm0-5H3V8h4v4zm5 5H8v-4h4v4zm0-5H8V8h4v4zm5 5h-4v-4h4v4zm0-5h-4V8h4v4z"],camera:["M10 8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm9-4h-3.59L13.7 2.29A.956.956 0 0013 2H7c-.28 0-.53.11-.71.29L4.59 4H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h4.11c1.26 1.24 2.99 2 4.89 2s3.63-.76 4.89-2H19c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zM4 8H2V6h2v2zm6 8c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"],"caret-down":["M16 7c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1 0 .24.1.46.24.63l-.01.01 5 6 .01-.01c.19.22.45.37.76.37s.57-.15.76-.37l.01.01 5-6-.01-.01c.14-.17.24-.39.24-.63z"],"caret-left":["M13 4c-.24 0-.46.1-.63.24l-.01-.01-6 5 .01.01c-.22.19-.37.45-.37.76s.15.57.37.76l-.01.01 6 5 .01-.01c.17.14.39.24.63.24.55 0 1-.45 1-1V5c0-.55-.45-1-1-1z"],"caret-right":["M14 10c0-.31-.15-.57-.37-.76l.01-.01-6-5-.01.01C7.46 4.1 7.24 4 7 4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1 .24 0 .46-.1.63-.24l.01.01 6-5-.01-.01c.22-.19.37-.45.37-.76z"],"caret-up":["M15.76 12.37l.01-.01-5-6-.01.01C10.57 6.15 10.31 6 10 6s-.57.15-.76.37l-.01-.01-5 6 .01.01c-.14.17-.24.39-.24.63 0 .55.45 1 1 1h10c.55 0 1-.45 1-1 0-.24-.1-.46-.24-.63z"],"cell-tower":["M11.5 8.32c.31-.35.51-.81.51-1.32 0-1.1-.9-2-2-2s-2 .9-2 2c0 .51.2.97.51 1.32L5.06 18.69c-.17.52.11 1.09.63 1.26s1.09-.11 1.26-.63L8.39 15h3.23l1.44 4.32c.17.52.74.81 1.26.63s.81-.74.63-1.26L11.5 8.32zM10.95 13H9.06l.95-2.84.94 2.84zM5.31 10.73a.996.996 0 101.37-1.45c-1.4-1.33-1.28-3.35-.01-4.54.4-.38.43-1.01.05-1.41-.36-.41-1-.43-1.4-.06-2.09 1.95-2.28 5.3-.01 7.46z","M4.6 12.2C3 11.1 2 9 2 7c0-2.1.9-3.9 2.6-5.2.5-.3.5-1 .2-1.4-.3-.5-1-.5-1.4-.2C1.2 1.9-.1 4.2 0 7c.1 2.7 1.4 5.3 3.4 6.8.2.1.4.2.6.2.3 0 .6-.1.8-.4.4-.5.3-1.1-.2-1.4zM13.27 10.69c.38.4 1.01.42 1.41.04 2.27-2.16 2.08-5.51-.01-7.46a.996.996 0 10-1.36 1.46c1.28 1.19 1.39 3.21-.01 4.54-.39.39-.41 1.02-.03 1.42z","M16.6.2c-.4-.3-1.1-.3-1.4.2-.3.4-.3 1.1.2 1.4C17.1 3.1 18 4.9 18 7c0 2-1 4.1-2.6 5.2-.5.3-.6.9-.2 1.4.2.3.5.4.8.4.2 0 .4-.1.6-.2C18.7 12.3 20 9.7 20 7c.09-2.8-1.2-5.1-3.4-6.8z"],changes:["M18 16H2c-1.1 0-2 .9-2 2s.9 2 2 2h16c1.1 0 2-.9 2-2s-.9-2-2-2zM3 5c.28 0 .53-.11.71-.29L5 3.41V13c0 .55.45 1 1 1s1-.45 1-1V3.41L8.29 4.7c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3C6.53.11 6.28 0 6 0s-.53.11-.71.29l-3 3A1.003 1.003 0 003 5zm7.29 5.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3a1.003 1.003 0 00-1.42-1.42L15 10.59V1c0-.55-.45-1-1-1s-1 .45-1 1v9.59L11.71 9.3A.965.965 0 0011 9a1.003 1.003 0 00-.71 1.71z"],chart:["M7 11v8c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-8l-2 2-4-2zm-7 8c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-8l-6 3v5zM17 7l-3 3v9c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V8.74c-.26.15-.58.26-1 .26-1.92 0-2-2-2-2zm2-6h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.59L10.8 8.78 7.45 7.11v.01C7.31 7.05 7.16 7 7 7s-.31.05-.44.11V7.1l-6 3v.01c-.33.17-.56.5-.56.89 0 .55.45 1 1 1 .16 0 .31-.05.44-.11v.01L7 9.12l3.55 1.78v-.01c.14.06.29.11.45.11.28 0 .53-.11.71-.29L18 4.41V6c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1z"],chat:["M19 0H7c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h5.59l3.71 3.71c.17.18.42.29.7.29.55 0 1-.45 1-1v-3h1c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM7 13c-1.1 0-2-.9-2-2V4H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h1v3a1.003 1.003 0 001.71.71L7.41 16H13c.55 0 1-.45 1-1v-.17L12.17 13H7z"],"chevron-backward":["M8.41 10l5.29-5.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L7 8.59V4c0-.55-.45-1-1-1s-1 .45-1 1v12c0 .55.45 1 1 1s1-.45 1-1v-4.59l5.29 5.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L8.41 10z"],"chevron-down":["M16 6c-.28 0-.53.11-.71.29L10 11.59l-5.29-5.3a1.003 1.003 0 00-1.42 1.42l6 6c.18.18.43.29.71.29s.53-.11.71-.29l6-6A1.003 1.003 0 0016 6z"],"chevron-forward":["M13 3c-.55 0-1 .45-1 1v4.59l-5.29-5.3a1.003 1.003 0 00-1.42 1.42l5.3 5.29-5.29 5.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l5.29-5.3V16c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1z"],"chevron-left":["M8.41 10l5.29-5.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-6 6c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l6 6a1.003 1.003 0 001.42-1.42L8.41 10z"],"chevron-right":["M13.71 9.29l-6-6a1.003 1.003 0 00-1.42 1.42l5.3 5.29-5.29 5.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l6-6c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],"chevron-up":["M16.71 12.29l-6-6C10.53 6.11 10.28 6 10 6s-.53.11-.71.29l-6 6a1.003 1.003 0 001.42 1.42L10 8.41l5.29 5.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],circle:["M10 0C4.5 0 0 4.5 0 10s4.5 10 10 10 10-4.5 10-10S15.5 0 10 0zm0 18c-4.4 0-8-3.6-8-8s3.6-8 8-8 8 3.6 8 8-3.6 8-8 8z"],"circle-arrow-down":["M14 10c-.28 0-.53.11-.71.29L11 12.59V5c0-.55-.45-1-1-1s-1 .45-1 1v7.59L6.71 10.3A.965.965 0 006 10a1.003 1.003 0 00-.71 1.71l4 4c.18.18.43.29.71.29s.53-.11.71-.29l4-4A1.003 1.003 0 0014 10zM10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"],"circle-arrow-left":["M15 9H7.41L9.7 6.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L7.41 11H15c.55 0 1-.45 1-1s-.45-1-1-1zm-5-9C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"],"circle-arrow-right":["M15.71 9.29l-4-4a1.003 1.003 0 00-1.42 1.42L12.59 9H5c-.55 0-1 .45-1 1s.45 1 1 1h7.59l-2.29 2.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zM10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"],"circle-arrow-up":["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.71-13.71C10.53 4.11 10.28 4 10 4s-.53.11-.71.29l-4 4a1.003 1.003 0 001.42 1.42L9 7.41V15c0 .55.45 1 1 1s1-.45 1-1V7.41l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-4-4z"],citation:["M4 1C1.79 1 0 2.79 0 5s1.79 4 4 4c.1 0 .2-.01.3-.02C3.82 11.32 2.53 13 1 13c-.55 0-1 .45-1 1s.45 1 1 1c3.87 0 7-4.48 7-10 0-2.21-1.79-4-4-4zM16 1c-2.21 0-4 1.79-4 4s1.79 4 4 4c.1 0 .2-.01.3-.02C15.82 11.32 14.53 13 13 13c-.55 0-1 .45-1 1s.45 1 1 1c3.87 0 7-4.48 7-10 0-2.21-1.79-4-4-4z"],clean:["M7 0L5 5 0 6.998 5 9l2 5 2-5 5-1.995L9 5zM15 10l-1.5 3.496-3.5 1.499 3.5 1.498L15 20l1.5-3.507L20 15l-3.5-1.504z"],clipboard:["M13 2c0-.55-.45-1-1-1h-.78a1.98 1.98 0 00-3.44 0H7c-.55 0-1 .45-1 1v2h7V2z","M16 2h-2v3H5V2H3c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1z"],cloud:["M15 7c-.12 0-.24.03-.36.04C13.83 4.69 11.62 3 9 3 5.69 3 3 5.69 3 9c0 .05.01.09.01.14A3.98 3.98 0 000 13c0 2.21 1.79 4 4 4h11c2.76 0 5-2.24 5-5s-2.24-5-5-5z"],"cloud-download":["M15 4c-.12 0-.24.03-.36.04C13.83 1.69 11.62 0 9 0 5.69 0 3 2.69 3 6c0 .05.01.09.01.14A3.98 3.98 0 000 10c0 2.21 1.79 4 4 4h.78c.55-.61 1.34-1 2.22-1v-2c0-1.66 1.34-3 3-3s3 1.34 3 3v2c.88 0 1.66.38 2.2.98C17.87 13.87 20 11.69 20 9c0-2.76-2.24-5-5-5zm-2 11c-.28 0-.53.11-.71.29L11 16.59V11c0-.55-.45-1-1-1s-1 .45-1 1v5.59L7.71 15.3A.965.965 0 007 15a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 0013 15z"],"cloud-upload":["M10.71 10.29c-.18-.18-.43-.29-.71-.29s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42L9 13.41V19c0 .55.45 1 1 1s1-.45 1-1v-5.59l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3zM15 4c-.12 0-.24.03-.36.04C13.83 1.69 11.62 0 9 0 5.69 0 3 2.69 3 6c0 .05.01.09.01.14A3.98 3.98 0 000 10c0 2.21 1.79 4 4 4 0-.83.34-1.58.88-2.12l3-3a2.993 2.993 0 014.24 0l3 3-.01.01c.52.52.85 1.23.87 2.02C18.28 13.44 20 11.42 20 9c0-2.76-2.24-5-5-5z"],code:["M6 6a1.003 1.003 0 00-1.71-.71l-4 4C.11 9.47 0 9.72 0 10c0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L2.41 10 5.7 6.71c.19-.18.3-.43.3-.71zm6-4c-.46 0-.83.31-.95.73l-4 14c-.02.09-.05.17-.05.27 0 .55.45 1 1 1 .46 0 .83-.31.95-.73l4-14c.02-.09.05-.17.05-.27 0-.55-.45-1-1-1zm7.71 7.29l-4-4a1.003 1.003 0 00-1.42 1.42l3.3 3.29-3.29 3.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],"code-block":["M19 5h-2V3c0-.55-.45-1-1-1h-4c-.55 0-1 .45-1 1v2H9V3c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v2H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zM8.71 15.29a1.003 1.003 0 01-1.42 1.42l-4-4C3.11 12.53 3 12.28 3 12s.11-.53.29-.71l4-4a1.003 1.003 0 011.42 1.42L5.41 12l3.3 3.29zm8-2.58l-4 4a1.003 1.003 0 01-1.42-1.42l3.3-3.29-3.29-3.29A.965.965 0 0111 8a1.003 1.003 0 011.71-.71l4 4c.18.18.29.43.29.71s-.11.53-.29.71z"],cog:["M19 8h-2.31c-.14-.46-.33-.89-.56-1.3l1.7-1.7a.996.996 0 000-1.41l-1.41-1.41a.996.996 0 00-1.41 0l-1.7 1.7c-.41-.22-.84-.41-1.3-.55V1c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v2.33c-.48.14-.94.34-1.37.58L5 2.28a.972.972 0 00-1.36 0L2.28 3.64c-.37.38-.37.99 0 1.36L3.9 6.62c-.24.44-.44.89-.59 1.38H1c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h2.31c.14.46.33.89.56 1.3L2.17 15a.996.996 0 000 1.41l1.41 1.41c.39.39 1.02.39 1.41 0l1.7-1.7c.41.22.84.41 1.3.55V19c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-2.33c.48-.14.94-.35 1.37-.59L15 17.72c.37.37.98.37 1.36 0l1.36-1.36c.37-.37.37-.98 0-1.36l-1.62-1.62c.24-.43.45-.89.6-1.38H19c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zm-9 6c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z"],"collapse-all":["M9.29 8.71c.18.18.43.29.71.29s.53-.11.71-.29l6-6a1.003 1.003 0 00-1.42-1.42L10 6.59l-5.29-5.3a1.003 1.003 0 00-1.42 1.42l6 6zm1.42 2.58c-.18-.18-.43-.29-.71-.29s-.53.11-.71.29l-6 6a1.003 1.003 0 001.42 1.42l5.29-5.3 5.29 5.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-6-6z"],"column-layout":["M19 1H1c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zM5 17H2V3h3v14zm4 0H6V3h3v14zm9 0h-8V3h8v14z"],comment:["M19 1H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3v4a1.003 1.003 0 001.71.71l4.7-4.71H19c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zM4 10c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm6 0c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm6 0c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"],comparison:["M6 8H1c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zm13-6h-5c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm0 3h-5V3h5v2zM6 14H1c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1zM6 2H1c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm4-2c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm9 14h-5c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1zm0 3h-5v-2h5v2zm0-9h-5c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zm0 3h-5V9h5v2z"],compass:["M15 10c0 .14-.03.28-.09.4l-3.99 8.98-.01.02a.991.991 0 01-1.82 0l-.01-.02-3.99-8.98c-.06-.12-.09-.26-.09-.4s.03-.28.09-.4L9.08.62 9.09.6a.991.991 0 011.82 0l.01.02 3.99 8.98c.06.12.09.26.09.4zm-5-6.54L7.09 10h5.81L10 3.46z"],compressed:["M19.89 6.56l-2.99-6h-.01C16.72.23 16.39 0 16 0H4c-.39 0-.72.23-.89.56H3.1l-3 6h.01C.05 6.69 0 6.84 0 7v12c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V7c0-.16-.05-.31-.11-.44zM11 2h4.38l2 4H11V2zM4.62 2H9v4H2.62l2-4zM18 18H2V8h7v4.59L6.71 10.3A.965.965 0 006 10a1.003 1.003 0 00-.71 1.71l4 4c.18.18.43.29.71.29s.53-.11.71-.29l4-4a1.003 1.003 0 00-1.42-1.42L11 12.59V8h7v10z"],confirm:["M9.71 5.29a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l7-7a1.003 1.003 0 00-1.42-1.42L12 7.59l-2.29-2.3zm7.93 2.32c.23.75.36 1.56.36 2.39 0 4.42-3.58 8-8 8s-8-3.58-8-8a7.998 7.998 0 0111.8-7.04l1.46-1.46C13.73.56 11.93 0 10 0 4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10c0-1.4-.29-2.73-.81-3.95l-1.55 1.56z"],console:["M19 19H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1h18c.55 0 1 .45 1 1v16c0 .55-.45 1-1 1zM18 6H2v11h16V6zM4 8c.28 0 .53.11.71.29l2 2c.18.18.29.43.29.71s-.11.53-.29.71l-2 2a1.003 1.003 0 01-1.42-1.42L4.59 11l-1.3-1.29A1.003 1.003 0 014 8zm5 4h3c.55 0 1 .45 1 1s-.45 1-1 1H9c-.55 0-1-.45-1-1s.45-1 1-1z"],contrast:["M19 8h-1.26c-.19-.73-.48-1.42-.85-2.06l.94-.94a.996.996 0 000-1.41l-1.41-1.41a.996.996 0 00-1.41 0l-.94.94c-.65-.38-1.34-.67-2.07-.86V1c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v1.26c-.76.2-1.47.5-2.13.89L5 2.28a.972.972 0 00-1.36 0L2.28 3.64c-.37.38-.37.98 0 1.36l.87.87c-.39.66-.69 1.37-.89 2.13H1c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h1.26c.19.73.48 1.42.85 2.06l-.94.94a.996.996 0 000 1.41l1.41 1.41c.39.39 1.02.39 1.41 0l.94-.94c.64.38 1.33.66 2.06.85V19c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-1.26c.76-.2 1.47-.5 2.13-.89l.88.87c.37.37.98.37 1.36 0l1.36-1.36c.37-.38.37-.98 0-1.36l-.87-.87c.4-.65.7-1.37.89-2.13H19c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1zm-9 7c-2.76 0-5-2.24-5-5s2.24-5 5-5v10z"],control:["M17 10h-7v7h7v-7zm0-7h-7v6h7V3zM9 3H3v14h6V3zm10-3H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H2V2h16v16z"],"credit-card":["M19 3H1c-.55 0-1 .45-1 1v2h20V4c0-.55-.45-1-1-1zM0 16c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V8H0v8zm6.5-2h7c.28 0 .5.22.5.5s-.22.5-.5.5h-7c-.28 0-.5-.22-.5-.5s.22-.5.5-.5zm-4 0h2c.28 0 .5.22.5.5s-.22.5-.5.5h-2c-.28 0-.5-.22-.5-.5s.22-.5.5-.5z"],cross:["M11.41 10l4.29-4.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L10 8.59l-4.29-4.3a1.003 1.003 0 00-1.42 1.42L8.59 10 4.3 14.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4.29-4.3 4.29 4.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L11.41 10z"],crown:["M2 8l4 2 4-5 4 5 4-2-1 7H3L2 8zm8-6a1 1 0 110 2 1 1 0 010-2zM1 5a1 1 0 110 2 1 1 0 010-2zm18 0a1 1 0 110 2 1 1 0 010-2zM3 16h14v2H3v-2z"],cube:["M1.953 4.481l7.41-4.02c.394-.215.88-.215 1.275 0l7.409 4.02L10 9.22 1.953 4.48zm-.817.68L9.5 10.085v9.281a1.316 1.316 0 01-.138-.064l-7.714-4.186A1.211 1.211 0 011 14.057v-8.35c0-.193.048-.38.136-.547zm17.728 0c.088.166.136.353.136.546v8.35c0 .438-.247.842-.648 1.06l-7.714 4.186c-.045.024-.091.046-.138.064v-9.281l8.364-4.926z"],"cube-add":["M17 3h2a1 1 0 010 2h-2v2a1 1 0 01-2 0V5h-2a1 1 0 010-2h2V1a1 1 0 012 0v2zm-3.969 4.435L10 9.22 1.953 4.48l7.41-4.02c.394-.215.88-.215 1.275 0l1.33.721A3.001 3.001 0 0013 7c0 .148.01.293.031.435zm.319.972A3 3 0 0019 7v7.057c0 .438-.247.842-.648 1.06l-7.714 4.186c-.045.024-.091.046-.138.064v-9.281l2.85-1.679zM1.136 5.16L9.5 10.086v9.281a1.316 1.316 0 01-.138-.064l-7.714-4.186A1.211 1.211 0 011 14.057v-8.35c0-.193.048-.38.136-.547z"],"cube-remove":["M11.968 1.182A3.001 3.001 0 0013 7h.77L10 9.22 1.953 4.48l7.41-4.02c.394-.215.88-.215 1.275 0l1.33.721zM19 7v7.057c0 .438-.247.842-.648 1.06l-7.714 4.186c-.045.024-.091.046-.138.064v-9.281L15.74 7H19zM1.136 5.16L9.5 10.086v9.281a1.316 1.316 0 01-.138-.064l-7.714-4.186A1.211 1.211 0 011 14.057v-8.35c0-.193.048-.38.136-.547zM13 3h6a1 1 0 010 2h-6a1 1 0 010-2z"],"curved-range-chart":["M19 16H3.02l2.14-1.74c2.25 1.7 7.33.46 11.83-2.99l-1.29-1.5c-3.56 2.74-7.31 4.03-8.93 3.19l10.55-8.57-.63-.78-10.59 8.6c-.64-1.64 1.46-4.91 5.09-7.7L9.9 3.01c-4.6 3.54-6.91 8.12-5.41 10.51L2 15.54V3c0-.55-.45-1-1-1s-1 .45-1 1v14a.998.998 0 001 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],cut:["M16 2s.72-1.28 0-2l-5.29 6.25 1.28 1.54L16 2zm.08 10c-.55 0-1.07.12-1.54.32L4.31 0c-.7.72 0 2 0 2l4.45 6.56-3.19 3.77C5.09 12.12 4.56 12 4 12c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4c0-.65-.17-1.26-.45-1.8l2.54-3.67 2.49 3.67c-.27.54-.44 1.15-.44 1.8 0 2.21 1.76 4 3.92 4 2.17 0 3.92-1.79 3.92-4 .02-2.21-1.74-4-3.9-4zM4 18c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm12.08 0c-1.08 0-1.96-.9-1.96-2s.88-2 1.96-2 1.96.9 1.96 2-.88 2-1.96 2z"],cycle:["M16 10a4 4 0 110 8 4 4 0 010-8zM4 10a4 4 0 110 8 4 4 0 010-8zm7.299-5.543l.087.089 1.93 2.232 2.048.708a1 1 0 01.65 1.16l-.031.112a1 1 0 01-1.16.65l-.112-.031-2.302-.796a1 1 0 01-.337-.197l-.092-.094-1.387-1.603-1.891 1.982 2.046 2.274a1 1 0 01.25.547l.007.122v4.24a1 1 0 01-1.993.117l-.007-.117-.001-3.857-2.408-2.676a1 1 0 01-.063-1.26l.082-.099 3.29-3.45a1 1 0 011.394-.053zM16 12a2 2 0 100 4 2 2 0 000-4zM4 12a2 2 0 100 4 2 2 0 000-4zm9.5-10a1.5 1.5 0 110 3 1.5 1.5 0 010-3z"],dashboard:["M6 5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zM4 9c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm6-4c.55 0 1-.45 1-1s-.45-1-1-1-1 .45-1 1 .45 1 1 1zm0-5C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm6-9c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm-8 5c0 1.1.9 2 2 2s2-.9 2-2c0-.33-2-8-2-8s-2 7.67-2 8zm6-9c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z"],"data-connection":["M2 11.9c.935.674 2.339 1.217 4.023 1.536A6.996 6.996 0 009.393 20c-3.988-.019-7.231-1.083-7.387-2.4L2 17.5v-5.6zM13 8c3.315 0 6 2.685 6 6s-2.685 6-6 6-6-2.685-6-6 2.685-6 6-6zm1 1l-4 6h2.5l-.5 4 4-6h-2.5l.5-4zm3-4.6v3.855a7.003 7.003 0 00-10.779 3.992c-2.408-.391-4.097-1.202-4.214-2.142L2 10V4.4c1.525 1.1 4.3 1.85 7.5 1.85S15.475 5.5 17 4.4zM9.5 0C13.637 0 17 1.125 17 2.5S13.637 5 9.5 5C5.35 5 2 3.875 2 2.5S5.35 0 9.5 0z"],"data-lineage":["M1.053 0C.47 0 0 .471 0 1.053V4.21c0 .58.471 1.052 1.053 1.052h3.275a6.332 6.332 0 003.728 4.738 6.33 6.33 0 00-3.728 4.737l-3.275-.001C.47 14.737 0 15.208 0 15.789v3.158C0 19.53.471 20 1.053 20h7.435c.581 0 1.053-.471 1.053-1.053V15.79c0-.58-.472-1.052-1.053-1.052H5.406a5.293 5.293 0 015.195-4.21v2.105c0 .58.471 1.052 1.052 1.052h7.294c.582 0 1.053-.471 1.053-1.052V7.368c0-.58-.471-1.052-1.053-1.052h-7.294c-.581 0-1.052.471-1.052 1.052v2.106a5.293 5.293 0 01-5.194-4.21h3.081c.581 0 1.053-.472 1.053-1.053V1.053C9.54.47 9.069 0 8.488 0H1.053z"],database:["M2.01 5.1v5.4c0 1.38 3.58 2.5 8 2.5s8-1.12 8-2.5V5.1c-1.49 1.13-4.51 1.9-8 1.9-3.48 0-6.5-.77-8-1.9zm8 .9c4.42 0 8-1.12 8-2.5s-3.58-2.5-8-2.5-8 1.12-8 2.5S5.6 6 10.01 6zm-8 6.1v5.4c0 1.38 3.58 2.5 8 2.5s8-1.12 8-2.5v-5.4c-1.49 1.13-4.51 1.9-8 1.9-3.48 0-6.5-.77-8-1.9z"],delete:["M15 6a1.003 1.003 0 00-1.71-.71L10 8.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42L8.59 10 5.3 13.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3.29-3.3 3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L11.41 10l3.29-3.29c.19-.18.3-.43.3-.71zm-5-6C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"],delta:["M10 0L0 20h20L10 0zM9 6l6 12H3L9 6z"],"derive-column":["M7.1 8.2h-.99c.28-1.11.66-1.92 1.12-2.43.28-.32.56-.48.83-.48.05 0 .1.02.13.05.03.03.05.07.05.12 0 .04-.04.13-.11.25a.64.64 0 00-.12.35c0 .15.06.28.18.39.12.11.27.16.45.16.2 0 .36-.07.49-.2s.2-.31.2-.54c0-.26-.1-.47-.3-.63-.19-.16-.51-.24-.95-.24-.68 0-1.3.19-1.85.58-.56.38-1.09 1.02-1.59 1.91-.17.3-.34.5-.49.59-.15.08-.4.13-.74.12l-.23.77h.95l-1.39 5.24c-.23.86-.39 1.39-.47 1.59-.12.29-.3.54-.54.75-.1.08-.21.12-.35.12-.04 0-.07-.01-.1-.03l-.03-.04c0-.02.03-.07.1-.13.07-.07.1-.17.1-.31 0-.15-.05-.28-.16-.38-.11-.1-.27-.15-.47-.15-.25 0-.44.07-.59.2-.15.12-.23.28-.23.46 0 .19.09.36.27.5.19.14.47.21.86.21.61 0 1.16-.15 1.63-.46.48-.31.89-.78 1.25-1.43.35-.64.72-1.68 1.09-3.11l.8-3.03h.96l.24-.77zM19 0h-9c-.55 0-1 .45-1 1v3h2V2h7v16h-7v-2H9v3c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-8.79 13.49c.15.28.32.49.52.61.19.12.44.19.73.19.28 0 .57-.1.86-.3.38-.25.77-.69 1.17-1.31l-.25-.14c-.27.37-.48.6-.61.69-.09.06-.19.09-.31.09-.14 0-.28-.09-.42-.26-.23-.29-.54-1.09-.93-2.4.35-.59.64-.97.87-1.15.17-.13.35-.2.55-.2.07 0 .2.03.39.08s.36.08.5.08c.2 0 .37-.07.5-.2.15-.14.22-.31.22-.52 0-.22-.07-.4-.2-.53s-.33-.2-.58-.2c-.22 0-.43.05-.63.15-.2.1-.45.32-.75.67-.23.25-.56.7-1.01 1.33a6.52 6.52 0 00-.91-2.15l-2.39.39-.05.25c.18-.03.33-.05.45-.05.24 0 .43.1.59.3.25.31.59 1.24 1.02 2.8-.34.44-.58.73-.7.87-.21.22-.38.36-.52.43-.1.05-.22.08-.35.08-.1 0-.26-.05-.49-.16a1.01 1.01 0 00-.42-.11c-.23 0-.42.07-.57.22-.15.14-.23.33-.23.55 0 .21.07.38.21.51.14.13.33.2.56.2.23 0 .44-.05.64-.14.2-.09.45-.29.75-.59s.72-.78 1.25-1.43c.21.61.39 1.06.54 1.35z"],desktop:["M19 0H1C.45 0 0 .45 0 1v13c0 .55.45 1 1 1h5.67l-.5 3H5c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1h-1.17l-.5-3H19c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 13H2V2h16v11z"],diagnosis:["M4 2a1 1 0 01.117 1.993L4 4v5a2 2 0 001.85 1.995L6 11a2 2 0 001.995-1.85L8 9V4a1 1 0 01-.117-1.993L8 2h1a1 1 0 01.993.883L10 3v6a4.002 4.002 0 01-3 3.874V13a3 3 0 003 3 4 4 0 003.995-3.8L14 12V8.792a2.5 2.5 0 112 0V12a6 6 0 01-6 6 5 5 0 01-4.995-4.783L5 13v-.126A4.002 4.002 0 012.005 9.2L2 9V3a1 1 0 01.883-.993L3 2h1z"],"diagram-tree":["M19 10v5h-2v-4h-6v4H9v-4H3v4H1v-5a1 1 0 011-1h7V5h2v4h7a1 1 0 011 1zM1 16h2a1 1 0 011 1v2a1 1 0 01-1 1H1a1 1 0 01-1-1v-2a1 1 0 011-1zm16 0h2a1 1 0 011 1v2a1 1 0 01-1 1h-2a1 1 0 01-1-1v-2a1 1 0 011-1zm-8 0h2a1 1 0 011 1v2a1 1 0 01-1 1H9a1 1 0 01-1-1v-2a1 1 0 011-1zM9 0h2a1 1 0 011 1v2a1 1 0 01-1 1H9a1 1 0 01-1-1V1a1 1 0 011-1z"],"direction-left":["M20 3.02l-20 7 20 7-5-7z"],"direction-right":["M20 10.02l-20-7 5 7-5 7z"],disable:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zM2 10c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L3.69 14.9A7.902 7.902 0 012 10zm8 8c-1.85 0-3.55-.63-4.9-1.69L16.31 5.1A7.902 7.902 0 0118 10c0 4.42-3.58 8-8 8z"],document:["M11.98 0h-8c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V6l-6-6zm4 18h-11V2h6v5h5v11z"],"document-open":["M8 15c0 .55.45 1 1 1s1-.45 1-1v-5c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1h2.59L1.3 16.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L8 12.41V15zm5-15H5c-.55 0-1 .45-1 1v6h2V2h6v5h5v11H6v-.76L4.04 19.2c.1.45.48.8.96.8h13c.55 0 1-.45 1-1V6l-6-6z"],"document-share":["M14.09 10.09c-.31.31-.67.57-1.09.72V18H2V2h6v5h1.18c.15-.42.39-.8.7-1.11v-.01l2.45-2.45c-.42-.29-.78-.65-1.01-1.11L9 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V9.24l-.88.88-.03-.03zM19 0h-5c-.55 0-1 .45-1 1s.45 1 1 1h2.59L11.3 7.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L18 3.41V6c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1z"],dollar:["M15.57 11.19c-.27-.51-.63-.93-1.07-1.26-.44-.33-.95-.6-1.51-.79-.56-.2-1.14-.36-1.72-.5-.6-.14-1.19-.26-1.75-.38-.57-.13-1.07-.27-1.51-.44-.44-.17-.8-.38-1.07-.63s-.41-.59-.41-1c0-.33.09-.6.28-.81.19-.21.42-.36.69-.47.27-.11.57-.18.88-.22.31-.04.58-.06.8-.06.71 0 1.35.14 1.9.41.55.27.91.81 1.06 1.62h3.36c-.09-.84-.32-1.56-.69-2.16-.37-.6-.83-1.08-1.38-1.45-.56-.37-1.18-.64-1.86-.81-.19-.05-.38-.07-.57-.1V1c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v1.1c-.22.03-.43.05-.66.1-.73.13-1.39.37-1.98.71-.6.34-1.09.8-1.47 1.35-.39.56-.58 1.25-.58 2.08 0 .76.13 1.41.4 1.93.26.52.62.95 1.06 1.28.44.33.94.6 1.5.79.55.2 1.13.36 1.74.5.58.14 1.16.26 1.72.38s1.07.26 1.51.43c.44.17.8.39 1.09.66.28.27.43.63.45 1.06.02.43-.08.78-.3 1.04-.22.26-.49.47-.83.6-.34.14-.7.23-1.09.28-.39.05-.73.07-1.03.07-.87 0-1.61-.2-2.23-.59-.62-.39-.98-1.08-1.07-2.06H3c.02.9.19 1.68.52 2.34.33.66.78 1.21 1.35 1.65.57.44 1.25.77 2.03.98.35.1.71.16 1.08.21V19c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-1.13c.25-.04.5-.07.76-.13.77-.18 1.47-.46 2.1-.85.63-.39 1.14-.9 1.54-1.53.4-.63.59-1.39.59-2.29.01-.75-.13-1.37-.4-1.88z"],dot:["M10 6a4 4 0 100 8 4 4 0 100-8z"],"double-caret-horizontal":["M8 4c-.24 0-.46.1-.63.24l-.01-.01-6 5 .01.01c-.22.19-.37.45-.37.76s.15.57.37.76l-.01.01 6 5 .01-.01c.17.14.39.24.63.24.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm11 6c0-.31-.15-.57-.37-.76l.01-.01-6-5-.01.01C12.46 4.1 12.24 4 12 4c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1 .24 0 .46-.1.63-.24l.01.01 6-5-.01-.01c.22-.19.37-.45.37-.76z"],"double-caret-vertical":["M5 9h10c.55 0 1-.45 1-1 0-.24-.1-.46-.24-.63l.01-.01-5-6-.01.01C10.57 1.15 10.31 1 10 1s-.57.15-.76.37l-.01-.01-5 6 .01.01C4.1 7.54 4 7.76 4 8c0 .55.45 1 1 1zm10 2H5c-.55 0-1 .45-1 1 0 .24.1.46.24.63l-.01.01 5 6 .01-.01c.19.22.45.37.76.37s.57-.15.76-.37l.01.01 5-6-.01-.01c.14-.17.24-.39.24-.63 0-.55-.45-1-1-1z"],"double-chevron-down":["M9.29 10.71c.18.18.43.29.71.29s.53-.11.71-.29l6-6a1.003 1.003 0 00-1.42-1.42L10 8.59l-5.29-5.3a1.003 1.003 0 00-1.42 1.42l6 6zM16 9c-.28 0-.53.11-.71.29L10 14.59l-5.29-5.3a1.003 1.003 0 00-1.42 1.42l6 6c.18.18.43.29.71.29s.53-.11.71-.29l6-6A1.003 1.003 0 0016 9z"],"double-chevron-left":["M5.41 10l5.29-5.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-6 6c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l6 6a1.003 1.003 0 001.42-1.42L5.41 10zm6 0l5.29-5.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-6 6c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l6 6a1.003 1.003 0 001.42-1.42L11.41 10z"],"double-chevron-right":["M11 10c0-.28-.11-.53-.29-.71l-6-6a1.003 1.003 0 00-1.42 1.42L8.59 10 3.3 15.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l6-6c.18-.18.29-.43.29-.71zm5.71-.71l-6-6a1.003 1.003 0 00-1.42 1.42l5.3 5.29-5.29 5.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l6-6c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],"double-chevron-up":["M4 11c.28 0 .53-.11.71-.29L10 5.41l5.29 5.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-6-6A.997.997 0 0010 3c-.28 0-.53.11-.71.29l-6 6A1.003 1.003 0 004 11zm6.71-1.71A.997.997 0 0010 9c-.28 0-.53.11-.71.29l-6 6a1.003 1.003 0 001.42 1.42l5.29-5.3 5.29 5.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-6-6z"],"doughnut-chart":["M16 10c0 3.31-2.69 6-6 6s-6-2.69-6-6 2.69-6 6-6V0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10h-4zm-.09-1h4.04C19.48 4.28 15.72.52 11 .05V4.1A5.98 5.98 0 0115.91 9z"],download:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm4.71 11.71l-4 4c-.18.18-.43.29-.71.29s-.53-.11-.71-.29l-4-4a1.003 1.003 0 011.42-1.42L9 12.59V5c0-.55.45-1 1-1s1 .45 1 1v7.59l2.29-2.29c.18-.19.43-.3.71-.3a1.003 1.003 0 01.71 1.71z"],"drag-handle-horizontal":["M7.5 11c-.83 0-1.5.67-1.5 1.5S6.67 14 7.5 14 9 13.33 9 12.5 8.33 11 7.5 11zm-5-5C1.67 6 1 6.67 1 7.5S1.67 9 2.5 9 4 8.33 4 7.5 3.33 6 2.5 6zm0 5c-.83 0-1.5.67-1.5 1.5S1.67 14 2.5 14 4 13.33 4 12.5 3.33 11 2.5 11zm15-2c.83 0 1.5-.67 1.5-1.5S18.33 6 17.5 6 16 6.67 16 7.5 16.67 9 17.5 9zm-5 2c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm5 0c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm-10-5C6.67 6 6 6.67 6 7.5S6.67 9 7.5 9 9 8.33 9 7.5 8.33 6 7.5 6zm5 0c-.83 0-1.5.67-1.5 1.5S11.67 9 12.5 9 14 8.33 14 7.5 13.33 6 12.5 6z"],"drag-handle-vertical":["M7.5 6C6.67 6 6 6.67 6 7.5S6.67 9 7.5 9 9 8.33 9 7.5 8.33 6 7.5 6zm0 5c-.83 0-1.5.67-1.5 1.5S6.67 14 7.5 14 9 13.33 9 12.5 8.33 11 7.5 11zm0 5c-.83 0-1.5.67-1.5 1.5S6.67 19 7.5 19 9 18.33 9 17.5 8.33 16 7.5 16zm5-12c.83 0 1.5-.67 1.5-1.5S13.33 1 12.5 1 11 1.67 11 2.5 11.67 4 12.5 4zm-5-3C6.67 1 6 1.67 6 2.5S6.67 4 7.5 4 9 3.33 9 2.5 8.33 1 7.5 1zm5 10c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0 5c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5zm0-10c-.83 0-1.5.67-1.5 1.5S11.67 9 12.5 9 14 8.33 14 7.5 13.33 6 12.5 6z"],draw:["M17.7 12.7c0-.1 0-.2-.1-.3l-2-7c-.1-.3-.3-.6-.6-.7L1.8 0l-.6.5L7.7 7c.3-.2.6-.3 1-.3 1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2c0-.4.1-.7.3-1L.5 1.2l-.5.6L4.7 15c.1.3.4.5.7.6l7 2c.1 0 .2.1.3.1.3 0 .5-.1.7-.3l4-4c.2-.2.3-.5.3-.7zm1 1c-.3 0-.5.1-.7.3l-4 4c-.2.2-.3.4-.3.7 0 .5.4 1 1 1 .3 0 .5-.1.7-.3l4-4c.2-.2.3-.4.3-.7 0-.6-.5-1-1-1z"],"drawer-left":["M9 0a1 1 0 011 1v18a1 1 0 01-1 1H1a1 1 0 01-1-1V1a1 1 0 011-1h8zM8 2H2v16h6V2zm2 7h6.59L14.3 6.71A.965.965 0 0114 6a1.003 1.003 0 011.71-.71l4 4c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-4 4a1.003 1.003 0 01-1.42-1.42l2.3-2.29H10V9z"],"drawer-left-filled":["M1 0h8a1 1 0 011 1v18a1 1 0 01-1 1H1a1 1 0 01-1-1V1a1 1 0 011-1zm9 9h6.59L14.3 6.71A.965.965 0 0114 6a1.003 1.003 0 011.71-.71l4 4c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-4 4a1.003 1.003 0 01-1.42-1.42l2.3-2.29H10V9z"],"drawer-right":["M19 0a1 1 0 011 1v18a1 1 0 01-1 1h-8a1 1 0 01-1-1V1a1 1 0 011-1h8zm-1 2h-6v16h6V2zm-8 7H3.41L5.7 6.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4C.11 9.47 0 9.72 0 10c0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L3.41 11H10V9z"],"drawer-right-filled":["M11 0h8a1 1 0 011 1v18a1 1 0 01-1 1h-8a1 1 0 01-1-1V1a1 1 0 011-1zm-1 9H3.41L5.7 6.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4C.11 9.47 0 9.72 0 10c0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L3.41 11H10V9z"],"drive-time":["M20.01 7.7c0-.63-.5-1.14-1.1-1.14h-1.32l-.95-2.57c-.24-.64-.95-1.31-1.59-1.5 0 0-1.65-.49-5.05-.49s-5.04.49-5.04.49c-.63.19-1.35.86-1.59 1.5l-.95 2.57H1.1C.5 6.56 0 7.07 0 7.7c0 .63.5 1.14 1.1 1.14h.47l-.34.91c-.24.64-.43 1.72-.43 2.4v5.39c0 .8.63 1.45 1.4 1.45.77 0 1.4-.65 1.4-1.45v-.83h12.8v.83c0 .8.63 1.45 1.4 1.45s1.4-.65 1.4-1.45v-5.39c0-.68-.19-1.77-.43-2.4l-.34-.91h.47c.61 0 1.11-.51 1.11-1.14zm-16.47.34l1.12-3.16c.08-.22.32-.39.54-.39h9.6c.22 0 .46.17.54.39l1.12 3.16c.08.21-.04.39-.26.39H3.8c-.22-.01-.34-.18-.26-.39zm.96 4.94c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.68 1.5 1.5c0 .83-.67 1.5-1.5 1.5zm11 0c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"],duplicate:["M15 4H1c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm-1 14H2V6h12v12zm5-18H5c-.55 0-1 .45-1 1v2h2V2h12v12h-1v2h2c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],edit:["M4.59 12.59l2.83 2.83 7.65-7.65-2.83-2.83-7.65 7.65zM2 18l4.41-1.59-2.81-2.79L2 18zM16 2c-.55 0-1.05.22-1.41.59l-1.65 1.65 2.83 2.83 1.65-1.65A2.006 2.006 0 0016 2z"],eject:["M4 12h12c.55 0 1-.45 1-1 0-.25-.1-.47-.25-.64l.01-.01-6-7-.01.01C10.57 3.14 10.3 3 10 3s-.57.14-.75.36l-.01-.01-6 7 .01.01c-.15.17-.25.39-.25.64 0 .55.45 1 1 1zm12 1H4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1z"],emoji:["M10 0c5.523 0 10 4.477 10 10s-4.477 10-10 10S0 15.523 0 10 4.477 0 10 0zm0 2a8 8 0 100 16 8 8 0 000-16zm-4 8l.015.215C6.219 12.42 7.925 14 10 14a4 4 0 003.995-3.8L14 10h2l-.013.238C15.754 13.552 13.163 16 10 16a6 6 0 01-5.996-5.775L4 10h2zm1.5-4a1.5 1.5 0 110 3 1.5 1.5 0 010-3zm5 0a1.5 1.5 0 110 3 1.5 1.5 0 010-3z"],endorsed:["M19.83 9.38L18.81 7.6V5.62c0-.45-.23-.85-.61-1.08l-1.71-1-1.02-1.76a1.25 1.25 0 00-1.08-.61h-2.03l-1.74-1c-.38-.23-.87-.23-1.25 0l-1.74 1H5.65c-.44 0-.85.23-1.08.61L3.58 3.5l-1.8 1.04c-.38.24-.62.64-.62 1.08v2.06L.17 9.4c-.11.19-.17.4-.17.61s.06.42.17.61l.99 1.72v2.06c0 .45.23.85.61 1.08l1.78 1.02.99 1.72c.23.38.63.61 1.08.61h1.99l1.74 1c.19.11.41.17.62.17.21 0 .42-.06.61-.17l1.74-1h2.03c.44 0 .85-.23 1.08-.61l1.02-1.76 1.71-1c.38-.23.61-.64.61-1.08v-1.97l1.02-1.78c.27-.38.27-.85.04-1.25zm-5.08-.71l-5.01 5.01c-.18.18-.43.29-.71.29-.28 0-.53-.11-.71-.29l-3.01-3.01a1.003 1.003 0 011.42-1.42l2.3 2.3 4.31-4.3a1.003 1.003 0 011.71.71c0 .28-.12.53-.3.71z"],envelope:["M0 4.01v11.91l6.27-6.27L0 4.01zm18.91-1.03H1.09L10 10.97l8.91-7.99zm-5.18 6.66L20 15.92V4.01l-6.27 5.63zm-3.23 2.9c-.13.12-.31.19-.5.19s-.37-.07-.5-.19l-2.11-1.89-6.33 6.33h17.88l-6.33-6.33-2.11 1.89z"],equals:["M4 7h12a1 1 0 010 2H4a1 1 0 110-2zm0 4h12a1 1 0 010 2H4a1 1 0 010-2z"],eraser:["M18.71 8.43c.39-.4.39-1.05 0-1.45l-5.53-5.72a.967.967 0 00-1.4 0L1.29 12.1c-.39.4-.39 1.05 0 1.45l4.25 4.39 2.13 2.05h9.27c.02 0 .03.01.05.01.55 0 1-.45 1-1s-.45-1-1-1H9.46l.05-.05h.01l.81-.84 8.38-8.68zM7.52 17.94l-4.95-5.12 4.46-4.61 4.95 5.12-4.46 4.61z"],error:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm1 16H9v-2h2v2zm0-3H9V4h2v9z"],euro:["M8.89 4.47c.56-.31 1.23-.47 2.03-.47.44 0 .85.07 1.25.22.4.14.76.35 1.07.6.17.14.33.3.47.47l2.32-2.32c-.16-.15-.3-.32-.47-.46-.62-.49-1.33-.87-2.12-1.13-.8-.25-1.64-.38-2.52-.38-1.24 0-2.35.22-3.33.66-.99.44-1.82 1.05-2.49 1.82-.68.78-1.2 1.68-1.56 2.72-.09.26-.13.54-.2.8H2c-.55 0-1 .45-1 1s.45 1 1 1h1.04c-.01.2-.04.38-.04.58 0 .15.03.28.03.42H2c-.55 0-1 .45-1 1s.45 1 1 1h1.31c.07.3.13.6.23.89.36 1.02.88 1.92 1.56 2.67.68.76 1.51 1.35 2.49 1.79.98.43 2.09.65 3.33.65.99 0 1.9-.15 2.73-.46.83-.3 1.55-.74 2.17-1.32.03-.03.05-.06.08-.09l-2.41-2.15c-.01.01-.02.02-.02.03-.61.67-1.46 1-2.54 1-.8 0-1.47-.16-2.03-.47-.56-.31-1.01-.72-1.35-1.24-.28-.38-.47-.83-.63-1.3H12c.55 0 1-.45 1-1s-.45-1-1-1H6.56c0-.14-.02-.28-.02-.42 0-.2.02-.39.03-.58H13c.55 0 1-.45 1-1s-.45-1-1-1H6.94c.15-.46.34-.9.59-1.28.35-.52.8-.94 1.36-1.25zM18 11.38v0z"],exchange:["M2.5 8a2.5 2.5 0 000 5 2.5 2.5 0 000-5zm10.35 3.15a.495.495 0 10-.7.7L13.3 13H5.5c-.28 0-.5.22-.5.5s.22.5.5.5h7.79l-1.15 1.15c-.08.09-.14.21-.14.35a.495.495 0 00.85.35l2-2c.09-.09.15-.21.15-.35s-.06-.26-.15-.35l-2-2zM17.5 8a2.5 2.5 0 000 5 2.5 2.5 0 000-5zM7.15 9.85a.495.495 0 10.7-.7L6.71 8h7.79c.28 0 .5-.22.5-.5s-.22-.5-.5-.5H6.71l1.15-1.15c.08-.09.14-.21.14-.35a.495.495 0 00-.85-.35l-2 2c-.09.09-.15.21-.15.35s.06.26.15.35l2 2z"],"exclude-row":["M1 3h18c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zM0 13a1.003 1.003 0 001.71.71L4 11.41l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L5.41 10 7.7 7.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L4 8.59l-2.29-2.3A1.003 1.003 0 00.29 7.71L2.59 10 .3 12.29c-.19.18-.3.43-.3.71zm18-5h-7c-1.1 0-2 .9-2 2s.9 2 2 2h7c1.1 0 2-.9 2-2s-.9-2-2-2zm1 9H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],"expand-all":["M4 9c.28 0 .53-.11.71-.29L10 3.41l5.29 5.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-6-6C10.53 1.11 10.28 1 10 1s-.53.11-.71.29l-6 6A1.003 1.003 0 004 9zm12 2c-.28 0-.53.11-.71.29L10 16.59 4.71 11.3A.965.965 0 004 11a1.003 1.003 0 00-.71 1.71l6 6c.18.18.43.29.71.29s.53-.11.71-.29l6-6A1.003 1.003 0 0016 11z"],export:["M5 7c.28 0 .53-.11.71-.29L9 3.41V15c0 .55.45 1 1 1s1-.45 1-1V3.41l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-5-5C10.53.11 10.28 0 10 0s-.53.11-.71.29l-5 5A1.003 1.003 0 005 7zm14 7c-.55 0-1 .45-1 1v3H2v-3c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h18c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1z"],"eye-off":["M20 9.96v-.03-.01-.02-.02a.794.794 0 00-.21-.43c-.55-.69-1.19-1.3-1.85-1.87l-3.93 2.62a3.966 3.966 0 01-3.96 3.77c-.47 0-.91-.1-1.33-.24l-2.24 1.49c.52.21 1.05.39 1.6.51 1.21.27 2.43.28 3.64.05 1.11-.21 2.17-.64 3.17-1.18 1.56-.84 2.99-2 4.23-3.3.23-.24.46-.49.67-.75a.87.87 0 00.21-.43v-.02-.02-.01-.03V10v-.04zm-.46-5.14c.27-.18.46-.47.46-.82 0-.55-.45-1-1-1-.21 0-.39.08-.54.18l-.01-.02L15 5.46c-.95-.53-1.95-.96-3.01-1.2a9.158 9.158 0 00-3.65-.04c-1.11.21-2.17.64-3.17 1.18-1.56.84-2.99 2-4.23 3.3-.23.24-.46.48-.67.75-.27.34-.27.76 0 1.1.64.79 1.39 1.5 2.16 2.15.26.21.52.41.79.61L.44 15.16l.01.02A1 1 0 000 16c0 .55.45 1 1 1 .21 0 .39-.08.54-.18l.01.02 18-12-.01-.02zm-8.67 3.4c-.25-.12-.53-.2-.83-.2-1.1 0-1.99.89-1.99 1.99 0 .03.02.06.02.09l-1.78 1.19c-.14-.4-.22-.83-.22-1.28 0-2.19 1.78-3.97 3.98-3.97 1.01 0 1.91.38 2.61 1l-1.79 1.18z"],"eye-on":["M13.3 8.71c.18.18.43.29.71.29s.53-.11.71-.29l4.99-5a1.003 1.003 0 00-1.42-1.42L14 6.58l-2.29-2.29a.956.956 0 00-.7-.29 1.003 1.003 0 00-.71 1.71l3 3zM20 9.96v-.03-.01-.02-.02a.823.823 0 00-.21-.44c-.44-.55-.94-1.05-1.46-1.52l-2.2 2.2c-.55.54-1.3.88-2.12.88-.05 0-.09-.01-.14-.01a3.978 3.978 0 01-3.86 3.02 4.007 4.007 0 01-1.66-7.65A2.97 2.97 0 018.02 5c0-.28.05-.54.12-.8-1.05.22-2.07.64-3.02 1.15-1.57.85-3 2.02-4.24 3.33-.23.25-.46.5-.67.76-.28.35-.28.77 0 1.12.64.8 1.4 1.52 2.17 2.17 1.66 1.41 3.56 2.58 5.66 3.06 1.21.27 2.43.29 3.65.05 1.11-.21 2.18-.65 3.18-1.19 1.57-.85 3-2.02 4.24-3.33.23-.24.46-.49.67-.76.11-.12.18-.27.21-.44v-.02-.02-.01-.03V10c.01-.01.01-.03.01-.04zm-9.99 2.05c1.03 0 1.87-.79 1.98-1.8l-.09-.09-.01.01-2.1-2.11c-1 .11-1.77.95-1.77 1.98-.01 1.11.89 2.01 1.99 2.01z"],"eye-open":["M10.01 7.984A2.008 2.008 0 008.012 9.99c0 1.103.9 2.006 1.998 2.006a2.008 2.008 0 001.998-2.006c0-1.103-.9-2.006-1.998-2.006zM20 9.96v-.03-.01-.02-.02a.827.827 0 00-.21-.442c-.64-.802-1.398-1.514-2.168-2.166-1.658-1.404-3.566-2.587-5.664-3.058a8.982 8.982 0 00-3.656-.05c-1.11.2-2.178.641-3.177 1.183-1.569.852-2.997 2.016-4.246 3.33-.23.25-.46.49-.67.761-.279.351-.279.773 0 1.124.64.802 1.4 1.514 2.169 2.166 1.658 1.404 3.566 2.577 5.664 3.058 1.209.271 2.438.281 3.656.05 1.11-.21 2.178-.651 3.177-1.193 1.569-.852 2.997-2.016 4.246-3.33.23-.24.46-.49.67-.751.11-.12.179-.271.209-.442v-.02-.02-.01-.03V10v-.04zM10.01 14A4.003 4.003 0 016.014 9.99a4.003 4.003 0 013.996-4.011 4.003 4.003 0 013.996 4.011 4.003 4.003 0 01-3.996 4.011z"],"fast-backward":["M18 3c-.23 0-.42.09-.59.21l-.01-.01L11 8V4c0-.55-.45-1-1-1-.23 0-.42.09-.59.21L9.4 3.2l-8 6 .01.01C1.17 9.4 1 9.67 1 10s.17.6.41.79l-.01.01 8 6 .01-.01c.17.12.36.21.59.21.55 0 1-.45 1-1v-4l6.4 4.8.01-.01c.17.12.36.21.59.21.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"fast-forward":["M19 10c0-.33-.17-.6-.41-.79l.01-.01-8-6-.01.01C10.42 3.09 10.23 3 10 3c-.55 0-1 .45-1 1v4L2.6 3.2l-.01.01C2.42 3.09 2.23 3 2 3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1 .23 0 .42-.09.59-.21l.01.01L9 12v4c0 .55.45 1 1 1 .23 0 .42-.09.59-.21l.01.01 8-6-.01-.01c.24-.19.41-.46.41-.79z"],feed:["M2.5 15a2.5 2.5 0 000 5 2.5 2.5 0 000-5zm.5-5c-.55 0-1 .45-1 1s.45 1 1 1c2.76 0 5 2.24 5 5 0 .55.45 1 1 1s1-.45 1-1c0-3.87-3.13-7-7-7zM3 0c-.55 0-1 .45-1 1s.45 1 1 1c8.28 0 15 6.72 15 15 0 .55.45 1 1 1s1-.45 1-1C20 7.61 12.39 0 3 0zm0 5c-.55 0-1 .45-1 1s.45 1 1 1c5.52 0 10 4.48 10 10 0 .55.45 1 1 1s1-.45 1-1C15 10.37 9.63 5 3 5z"],"feed-subscribed":["M2.5 15a2.5 2.5 0 000 5 2.5 2.5 0 000-5zM3 2c1.76 0 3.44.31 5.01.87.03-.71.31-1.35.75-1.85C6.96.37 5.03 0 3 0c-.55 0-1 .45-1 1s.45 1 1 1zm10.32 4.67a.99.99 0 001.4 0l4.98-4.98c.19-.17.3-.42.3-.7 0-.55-.45-1-1-1a.99.99 0 00-.7.29l-4.27 4.27-2.28-2.28a.99.99 0 00-.7-.29c-.55 0-.99.45-.99 1 0 .28.11.52.29.7l2.97 2.99zM3 10c-.55 0-1 .45-1 1s.45 1 1 1c2.76 0 5 2.24 5 5 0 .55.45 1 1 1s1-.45 1-1c0-3.87-3.13-7-7-7zm13.94-2.69l-.82.82-.02-.02c-.2.2-.42.37-.67.51A14.8 14.8 0 0118 17c0 .55.45 1 1 1s1-.45 1-1c0-3.61-1.14-6.94-3.06-9.69zM3 5c-.55 0-1 .45-1 1s.45 1 1 1c5.52 0 10 4.48 10 10 0 .55.45 1 1 1s1-.45 1-1C15 10.37 9.63 5 3 5z"],film:["M19 2h-5v3H6V2H1c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h5v-3h8v3h5c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zM4 17H2v-2h2v2zm0-3H2v-2h2v2zm0-3H2V9h2v2zm0-3H2V6h2v2zm0-3H2V3h2v2zm10 8H6V7h8v6zm4 4h-2v-2h2v2zm0-3h-2v-2h2v2zm0-3h-2V9h2v2zm0-3h-2V6h2v2zm0-3h-2V3h2v2z"],filter:["M18 1H2a1.003 1.003 0 00-.71 1.71L7 8.41V18a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71V8.41l5.71-5.71c.18-.17.29-.42.29-.7 0-.55-.45-1-1-1z"],"filter-keep":["M15 2c0-.55-.45-1-1-1H1a1.003 1.003 0 00-.71 1.71L5 7.41V16a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71V7.41l4.71-4.71c.18-.17.29-.42.29-.7zm4 11c-.28 0-.53.11-.71.29L15 16.59l-1.29-1.29A.965.965 0 0013 15a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l4-4A1.003 1.003 0 0019 13z"],"filter-list":["M15 2c0-.55-.45-1-1-1H1a1.003 1.003 0 00-.71 1.71L5 7.41V16a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71V7.41l4.71-4.71c.18-.17.29-.42.29-.7zm-4 8c0 .55.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1h-7c-.55 0-1 .45-1 1zm8 7h-7c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1zm0-4h-7c-.55 0-1 .45-1 1s.45 1 1 1h7c.55 0 1-.45 1-1s-.45-1-1-1z"],"filter-open":["M15 2c0 .28-.11.53-.29.7L10 7.41V13c0 .28-.11.53-.29.71l-3 3A1.003 1.003 0 015 16V7.41L.29 2.71A1.003 1.003 0 011 1h13c.55 0 1 .45 1 1zm4.707 11.293a1 1 0 010 1.414l-4 4c-.63.63-1.707.184-1.707-.707v-8c0-.89 1.077-1.337 1.707-.707l4 4z"],"filter-remove":["M15 2c0-.55-.45-1-1-1H1a1.003 1.003 0 00-.71 1.71L5 7.41V16a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71V7.41l4.71-4.71c.18-.17.29-.42.29-.7zm2.91 13.5l1.79-1.79c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-1.79 1.79-1.79-1.79a1.003 1.003 0 00-1.42 1.42l1.79 1.79-1.79 1.79a1.003 1.003 0 001.42 1.42l1.79-1.79 1.79 1.79a1.003 1.003 0 001.42-1.42l-1.8-1.79z"],flag:["M3 3c-.55 0-1 .45-1 1v15c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1zm0-3c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm2 4.08v8.28c3.01-2.41 8.67 2.64 13 0V4.08C13.61 7.14 8.01 1 5 4.08z"],flame:["M11.622 0c0 1.71.49 3.077 1.472 4.103C16.364 6.496 18 9.23 18 12.308c0 3.418-1.962 5.983-5.887 7.692 2.887-3 2.453-4.23-.49-8C8.5 13.5 9 14.5 9.5 16.5c-1.048 0-2 0-2.5-.5 0 .684 1.197 2.5 1.952 4-3.924-1.026-8.123-7.18-6.651-7.692.981-.342 2.126-.171 3.434.513C4.1 6.667 6.062 2.393 11.622 0z"],flash:["M4.96 6.37a1.003 1.003 0 001.42-1.42l-2-2a1.07 1.07 0 00-.71-.28 1.003 1.003 0 00-.71 1.71l2 1.99zm9.37.3c.28 0 .53-.11.71-.29l2-2a1.003 1.003 0 00-1.42-1.42l-2 2a1.003 1.003 0 00.71 1.71zM10 5c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1S9 .45 9 1v3c0 .55.45 1 1 1zm-5 5c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1h3c.55 0 1-.45 1-1zm14-1h-3c-.55 0-1 .45-1 1s.45 1 1 1h3c.55 0 1-.45 1-1s-.45-1-1-1zm-9-3c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zm5.04 1.63a1.003 1.003 0 00-1.42 1.42l2 2a1.003 1.003 0 001.42-1.42l-2-2zM10 15c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1s1-.45 1-1v-3c0-.55-.45-1-1-1zm-4.33-1.67c-.28 0-.53.11-.71.29l-2 2a1.003 1.003 0 001.42 1.42l2-2a1.003 1.003 0 00-.71-1.71z"],"floppy-disk":["M14 1h-3v5h3V1zm5.71 2.29l-3-3A.997.997 0 0016 0h-1v7H5V0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V4c0-.28-.11-.53-.29-.71zM17 19H3v-8c0-.55.45-1 1-1h12c.55 0 1 .45 1 1v8z"],"flow-branch":["M14.425 7.953a3.98 3.98 0 01.562 2.045 3.98 3.98 0 01-.583 2.08L18 15.671V12.98c0-.248.097-.496.29-.689.379-.379 1.047-.38 1.426 0a.94.94 0 01.283.696l-.001 5.049a.957.957 0 01-.276.69.955.955 0 01-.69.273h-5.059a.971.971 0 01-.689-.289 1.026 1.026 0 010-1.417.972.972 0 01.69-.29h2.702l-3.634-3.573a3.998 3.998 0 01-5.924-2.431H1a1 1 0 010-2h6.12a3.998 3.998 0 015.96-2.409L16.665 3l-2.694-.001a.972.972 0 01-.689-.29 1.035 1.035 0 010-1.425.94.94 0 01.696-.283l5.05.001c.248 0 .497.083.69.276a.954.954 0 01.272.69l.001 5.052a.971.971 0 01-.29.689 1.028 1.028 0 01-1.419 0 .972.972 0 01-.29-.69V4.323l-3.567 3.63z"],"flow-end":["M12 9.919a3.998 3.998 0 014-3.92c2.21 0 4 1.79 4 3.997a3.998 3.998 0 01-4 3.996 3.998 3.998 0 01-4-3.916.967.967 0 01-.28.612L7.685 14.71a.958.958 0 01-.686.285c-.536 0-.994-.461-.994-.997 0-.273.107-.528.283-.704l2.379-2.302H.98c-.537 0-.976-.46-.976-.996s.44-.992.976-.992h7.676L6.287 6.687a.957.957 0 01-.283-.686c0-.536.458-.996.994-.996.274 0 .51.1.686.285l4.027 4.024c.159.158.27.365.29.605z"],"flow-linear":["M5.125 10.997H.976C.439 10.997 0 10.537 0 10c0-.536.44-.993.976-.993h4.148a4.002 4.002 0 017.752 0h3.776L14.293 6.69a.962.962 0 01-.285-.687c0-.537.46-1.001.996-1.001a.96.96 0 01.698.3l4.005 4.015c.176.176.293.41.293.683a.972.972 0 01-.283.693L15.702 14.7a.997.997 0 01-.698.297c-.537 0-.996-.453-.996-.99 0-.273.107-.517.283-.692l2.371-2.318h-3.787a4.002 4.002 0 01-7.75 0z"],"flow-review":["M6.13 9.004A4.005 4.005 0 0110.012 6c1.87 0 3.44 1.278 3.881 3.005h2.768l-2.354-2.317a.97.97 0 01-.283-.691c0-.536.462-.995 1-.995.273 0 .517.107.693.283l4 4.041a.97.97 0 01.284.692.956.956 0 01-.293.682l-3.991 3.997a.944.944 0 01-.694.292c-.537 0-1-.46-1-.997a.97.97 0 01.284-.692l2.345-2.29h-2.765a4.005 4.005 0 01-3.875 2.981 4.005 4.005 0 01-3.874-2.981H3.349l2.376 2.308a.97.97 0 01.283.691 1 1 0 01-.994.983.989.989 0 01-.713-.291L.293 10.699A.956.956 0 010 10.017a.97.97 0 01.283-.692l4.03-4.037a.996.996 0 01.701-.283c.537 0 .994.464.994 1a.97.97 0 01-.283.691L3.34 9.004h2.79z"],"flow-review-branch":["M13.04 13.424c-.6.36-1.302.568-2.052.568a4 4 0 01-3.868-2.999H3.342l2.372 2.31c.176.176.283.42.283.694 0 .537-.452.998-.988.998a.935.935 0 01-.691-.289L.292 10.683A.96.96 0 010 9.999c0-.274.107-.518.283-.694l4.035-4.04a.973.973 0 01.691-.288c.536 0 .988.47.988 1.007a.975.975 0 01-.283.694L3.332 8.984h3.786a4 4 0 013.87-3.006c.771 0 1.492.22 2.102.599l3.565-3.57-2.538-.003a.974.974 0 01-.69-.29c-.38-.38-.38-1.052-.002-1.431A.94.94 0 0114.122 1l4.896.005a.96.96 0 01.69.277c.193.193.27.442.27.69l.005 4.9a.971.971 0 01-.289.69 1.023 1.023 0 01-1.416 0 .975.975 0 01-.29-.691l-.003-2.54-3.554 3.62c.351.596.553 1.291.553 2.034 0 .763-.213 1.477-.583 2.084l3.595 3.595.003-2.54c0-.249.097-.497.29-.69.38-.38 1.05-.381 1.429-.002a.94.94 0 01.282.697l-.005 4.9a.927.927 0 01-.277.675.974.974 0 01-.69.291L13.974 19a.97.97 0 01-.69-.29 1.03 1.03 0 01.002-1.42.974.974 0 01.69-.29l2.696-.003-3.632-3.573z"],flows:["M17.5 7.93a2.5 2.5 0 00-2.45 2h-2.3l-4.01-4-.75.75 3.26 3.25h-6.3a2.5 2.5 0 100 1h6.3l-3.26 3.25.75.75 4.01-4h2.3a2.5 2.5 0 102.45-3z"],"folder-close":["M0 17c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V7H0v10zM19 4H9.41l-1.7-1.71A.997.997 0 007 2H1c-.55 0-1 .45-1 1v3h20V5c0-.55-.45-1-1-1z"],"folder-new":["M12.994 7c0 1.655 1.344 3 2.998 3a3.002 3.002 0 002.999-3H20v10c0 .55-.45 1-1 1H1.01c-.55 0-1-.45-1-1V7h12.984zM10.76 6H0V3c0-.55.45-1 1-1h3.998c.28 0 .53.11.71.29L7.415 4h2.579c0 .768.29 1.469.765 2zm8.23-3c.55 0 1 .45 1 1s-.45 1-1 1h-1.998v2c0 .55-.45 1-1 1s-1-.45-1-1V5h-1.998c-.55 0-1-.45-1-1s.45-1 1-1h1.999V1c0-.55.45-1 .999-1 .55 0 1 .45 1 1v2h1.999z"],"folder-open":["M20 9c0-.55-.45-1-1-1H5c-.43 0-.79.27-.93.65h-.01l-3 8h.01c-.04.11-.07.23-.07.35 0 .55.45 1 1 1h14c.43 0 .79-.27.93-.65h.01l3-8h-.01c.04-.11.07-.23.07-.35zM3.07 7.63C3.22 7.26 3.58 7 4 7h14V5c0-.55-.45-1-1-1H8.41l-1.7-1.71A.997.997 0 006 2H1c-.55 0-1 .45-1 1v12.31l3.07-7.68z"],"folder-shared":["M11 4H9.41l-1.7-1.71A.997.997 0 007 2H1c-.55 0-1 .45-1 1v3h11.78C11.3 5.47 11 4.77 11 4zm8-1h-5c-.55 0-1 .45-1 1s.45 1 1 1h2.59L12.3 9.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L18 6.41V9c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1zm-2.46 7.7l-1.42 1.42a2.996 2.996 0 11-4.24-4.24l.88-.88H0v10c0 .55.45 1 1 1h18c.55 0 1-.45 1-1v-5.18c-.31.11-.65.18-1 .18-1.02 0-1.92-.52-2.46-1.3z"],"folder-shared-open":["M3.07 7.63C3.22 7.26 3.58 7 4 7h7.76l.54-.54A2.97 2.97 0 0111 4H8.41l-1.7-1.71A.997.997 0 006 2H1c-.55 0-1 .45-1 1v12.31l3.07-7.68zm13.47 3.07l-1.42 1.42A2.996 2.996 0 0110 10c0-.77.3-1.47.78-2H5c-.43 0-.79.27-.93.65h-.01l-3 8h.01c-.04.11-.07.23-.07.35 0 .55.45 1 1 1h14c.43 0 .79-.27.93-.65h.01l2.01-5.36c-1-.01-1.88-.52-2.41-1.29zM19 3h-5c-.55 0-1 .45-1 1s.45 1 1 1h2.59L12.3 9.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L18 6.41V9c0 .55.45 1 1 1s1-.45 1-1V4c0-.55-.45-1-1-1z"],follower:["M11.54 15.92c-1.48-.65-1.28-1.05-1.33-1.59-.01-.07-.01-.15-.01-.23.51-.45.92-1.07 1.19-1.78 0 0 .01-.04.02-.05.06-.15.11-.32.15-.48.34-.07.54-.44.61-.78.08-.14.23-.48.2-.87-.05-.5-.25-.73-.47-.82v-.09c0-.63-.06-1.55-.17-2.15-.02-.17-.06-.33-.11-.5a3.69 3.69 0 00-1.29-1.86C9.69 4.25 8.8 4 8.01 4c-.8 0-1.69.25-2.32.73-.61.47-1.06 1.13-1.28 1.86-.05.17-.09.33-.11.5-.12.6-.18 1.51-.18 2.14v.08c-.23.09-.44.32-.49.83-.04.39.12.73.2.87.08.35.28.72.63.78.04.17.09.33.15.48 0 .01.01.02.01.03l.01.01c.27.72.7 1.35 1.22 1.8 0 .07-.01.14-.01.21-.05.54.1.94-1.38 1.59-1.48.65-3.71 1.35-4.16 2.4C-.16 19.38.02 20 .02 20h15.95s.18-.62-.27-1.67c-.46-1.06-2.68-1.75-4.16-2.41zm8.15-12.63l-3-3a.956.956 0 00-.7-.29 1.003 1.003 0 00-.71 1.71L16.58 3H13c-.55 0-1 .45-1 1s.45 1 1 1h3.58l-1.29 1.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.3-.71z"],following:["M11.55 15.92c-1.48-.65-1.28-1.05-1.33-1.59-.01-.07-.01-.15-.01-.23.51-.45.92-1.07 1.19-1.78 0 0 .01-.04.02-.05.06-.15.11-.32.15-.48.34-.07.54-.44.61-.78.08-.14.23-.48.2-.87-.05-.5-.25-.73-.47-.82v-.09c0-.63-.06-1.55-.17-2.15-.02-.17-.06-.33-.11-.5a3.69 3.69 0 00-1.29-1.86C9.7 4.25 8.81 4 8.02 4c-.79 0-1.68.25-2.31.73-.61.47-1.07 1.13-1.29 1.86-.05.16-.09.33-.11.5-.12.6-.18 1.51-.18 2.14v.08c-.23.09-.44.32-.48.83-.04.39.12.73.2.87.08.35.28.72.63.78.04.17.09.33.15.48 0 .01.01.02.01.03l.01.01c.27.72.7 1.35 1.22 1.8 0 .07-.01.14-.01.21-.05.54.1.94-1.38 1.59C3 16.56.77 17.26.32 18.31-.15 19.38.04 20 .04 20h15.95s.18-.62-.27-1.67c-.46-1.06-2.69-1.75-4.17-2.41zM19 3h-3.58l1.29-1.29A1.003 1.003 0 0015.29.29l-3 3c-.17.18-.28.43-.28.71 0 .28.11.53.29.71l3 3c.18.18.43.29.7.29a1.003 1.003 0 00.71-1.71L15.42 5H19c.55 0 1-.45 1-1s-.45-1-1-1z"],font:["M17.93 18.64l-7-18C10.78.27 10.42 0 10 0s-.78.27-.93.64l-7 18c-.04.11-.07.23-.07.36 0 .55.45 1 1 1 .42 0 .78-.27.93-.64L6.41 13h7.19l2.47 6.36c.15.37.51.64.93.64.55 0 1-.45 1-1 0-.13-.03-.25-.07-.36zM7.18 11L10 3.76 12.82 11H7.18z"],fork:["M16.71 11.29a1.003 1.003 0 00-1.42 1.42l1.3 1.29h-2.17l-8-8h10.17L15.3 7.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-3-3a1.003 1.003 0 00-1.42 1.42L16.59 4H1c-.55 0-1 .45-1 1s.45 1 1 1h2.59l9.71 9.71c.17.18.42.29.7.29h2.59l-1.29 1.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-3-3z"],form:["M2 13v4h4v-4H2zm-1-2h6c.55 0 1 .45 1 1v6c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1v-6c0-.55.45-1 1-1zm11-7h7c.55 0 1 .45 1 1s-.45 1-1 1h-7c-.55 0-1-.45-1-1s.45-1 1-1zM8 1a1.003 1.003 0 01.71 1.71l-5 6C3.53 8.89 3.28 9 3 9s-.53-.11-.71-.29l-2-2a1.003 1.003 0 011.42-1.42L3 6.59l4.29-5.3C7.47 1.11 7.72 1 8 1zm4 13h7c.55 0 1 .45 1 1s-.45 1-1 1h-7c-.55 0-1-.45-1-1s.45-1 1-1z"],"full-circle":["M9.96 0a10 10 0 100 20 10 10 0 100-20z"],"full-stacked-chart":["M15 16h2c.55 0 1-.45 1-1v-5h-4v5c0 .55.45 1 1 1zM12 2c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v4h4V2zm6 4h-4v3h4V6zm0-4c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v3h4V2zm-6 5H8v5h4V7zm-9 9h2c.55 0 1-.45 1-1v-3H2v3c0 .55.45 1 1 1zm6 0h2c.55 0 1-.45 1-1v-2H8v2c0 .55.45 1 1 1zm10 1H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zM6 2c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v3h4V2zm0 4H2v5h4V6z"],fullscreen:["M3.41 2H6c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1v5c0 .55.45 1 1 1s1-.45 1-1V3.41L7.29 8.7c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L3.41 2zM8 11c-.28 0-.53.11-.71.29L2 16.59V14c0-.55-.45-1-1-1s-1 .45-1 1v5c0 .55.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1H3.41l5.29-5.29c.19-.18.3-.43.3-.71 0-.55-.45-1-1-1zM19 0h-5c-.55 0-1 .45-1 1s.45 1 1 1h2.59L11.3 7.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L18 3.41V6c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm0 13c-.55 0-1 .45-1 1v2.59l-5.29-5.29A.965.965 0 0012 11a1.003 1.003 0 00-.71 1.71l5.3 5.29H14c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1v-5c0-.55-.45-1-1-1z"],function:["M10.14 5.82H8.73c.4-1.66.94-2.87 1.6-3.64.4-.48.8-.72 1.18-.72.08 0 .14.02.19.07.05.05.07.1.07.18 0 .07-.05.19-.16.37s-.16.36-.16.52c0 .23.08.43.25.59a.9.9 0 00.64.25c.28 0 .51-.1.7-.3.19-.2.28-.47.28-.81 0-.39-.14-.7-.42-.94-.28-.24-.74-.36-1.36-.36-.97 0-1.86.29-2.65.87-.79.56-1.54 1.52-2.26 2.85-.24.46-.48.75-.7.88-.22.13-.57.19-1.06.19l-.32 1.15H5.9l-1.99 7.85c-.33 1.29-.56 2.09-.67 2.39-.17.44-.43.81-.77 1.12a.74.74 0 01-.5.19c-.05 0-.1-.02-.14-.05l-.04-.07c0-.03.05-.1.15-.2.1-.1.15-.26.15-.47 0-.23-.08-.42-.23-.57-.16-.15-.38-.23-.67-.23-.35 0-.63.1-.85.29-.21.2-.32.43-.32.7 0 .29.13.54.39.75.25.22.65.33 1.2.33.88 0 1.66-.23 2.33-.69.68-.46 1.27-1.17 1.78-2.14.51-.96 1.03-2.52 1.56-4.66l1.14-4.54H9.8l.34-1.15zm6.8 1.95c.25-.2.51-.29.78-.29.1 0 .29.04.56.11.27.08.51.11.72.11.29 0 .52-.1.72-.3.18-.19.28-.45.28-.77 0-.33-.1-.6-.29-.8-.19-.2-.47-.29-.82-.29-.32 0-.62.08-.9.23-.28.15-.64.49-1.08 1-.33.38-.81 1.05-1.44 2a9.712 9.712 0 00-1.31-3.22l-3.4.59-.07.37c.25-.05.47-.08.64-.08.34 0 .62.15.84.44.35.46.84 1.85 1.46 4.19-.49.66-.82 1.09-1 1.3-.3.33-.55.54-.74.64-.15.08-.32.12-.51.12-.14 0-.38-.08-.7-.24-.22-.1-.42-.16-.59-.16-.33 0-.6.11-.82.32-.21.22-.32.49-.32.83 0 .31.1.57.3.77.2.2.47.29.8.29.32 0 .63-.07.92-.21.29-.14.64-.43 1.08-.88.43-.45 1.03-1.16 1.79-2.14.29.93.55 1.61.76 2.03.21.42.46.73.74.91.28.19.62.28 1.04.28.4 0 .81-.15 1.23-.44.55-.38 1.1-1.04 1.68-1.97l-.35-.21c-.39.55-.68.89-.87 1.03-.12.09-.27.13-.44.13-.2 0-.4-.13-.59-.38-.33-.43-.77-1.63-1.33-3.6.47-.86.89-1.44 1.23-1.71z"],"gantt-chart":["M4 7h5c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zm3 2v1c0 .55.45 1 1 1h6c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1H8c-.55 0-1 .45-1 1zm12 3h-6c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm0 4H2V3c0-.55-.45-1-1-1s-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],geofence:["M8 11l.075.003.126.017.111.03.111.044.098.052.096.067.09.08c.036.035.068.073.097.112l.071.11.054.114.035.105.03.148L9 12V18a1 1 0 01-1.993.117L7 18v-3.586l-5.293 5.293a1 1 0 01-1.497-1.32l.083-.094L5.584 13h-3.58a1 1 0 01-.117-1.993L2.004 11H8zm3.018-11a1.003 1.003 0 01.39.087l.12.063.031.02.1.078 8.027 7.026.062.064.068.086.044.068.064.128.04.117.024.113.011.108v.1l-.007.073-.019.103-.037.121-.039.09-.05.087-4.996 7.994c-.06.097-.137.183-.226.254l-.093.067-.095.053-.087.037-.125.037a1.018 1.018 0 01-.218.026H11v-5a3 3 0 00-2.824-2.995L8 9H3V6a1 1 0 01.321-.734l.098-.08 7-5a1.01 1.01 0 01.45-.178L11.018 0z"],geolocation:["M0 8.33l9.17 2.5 2.5 9.17L20 0z"],geosearch:["M8 18.88c-3.79 0-6.88-3.09-6.88-6.88 0-.61.08-1.22.23-1.79.03.01.06-.01.1-.01h.09v.55c0 .23.21.42.44.42.04 0 .09-.01.12-.02l.9.88c.09.09.23.09.32 0s.09-.23 0-.32l-.86-.9c0-.02.05-.04.05-.07v-.13c0-.18.1-.25.29-.41h.53c.1 0 .19-.01.27-.05.01-.01.02 0 .03-.01.02-.01.03-.02.05-.04.01-.01.02-.01.02-.02l.02-.02 1.13-1.13c-.16-.32-.3-.65-.42-.99h-.64v-.53c0-.01.06.06.06-.1h.38c-.04-.16-.08-.32-.1-.48h-.71c.2-.16.42-.31.64-.45C4.02 6.09 4 5.8 4 5.5c0-.14.01-.28.02-.43C1.62 6.46 0 9.04 0 12c0 4.41 3.59 8 8 8 3.87 0 7.09-2.77 7.82-6.44l-.97-1.1c-.26 3.57-3.23 6.42-6.85 6.42zm-2.12-3.67v-.35h.15c.29 0 .49-.23.49-.53v-.68c0-.01.01-.01 0-.02L4.71 11.8h-.77c-.29 0-.47.24-.47.53v2c0 .29.18.53.47.53h.33v2.02c0 .28.28.51.56.51s.56-.23.56-.51v-1.22h-.01c.29 0 .5-.16.5-.45zm13.83-2.92l-3.68-3.68c.14-.21.27-.42.38-.65.02-.04.04-.07.05-.11.11-.22.2-.45.28-.69v-.01c.07-.24.13-.48.17-.73l.03-.17c.04-.24.06-.49.06-.75C17 2.46 14.54 0 11.5 0S6 2.46 6 5.5 8.46 11 11.5 11c.26 0 .51-.02.76-.06l.17-.03c.25-.04.49-.1.73-.17h.01c.24-.08.47-.17.69-.28.04-.02.07-.04.11-.05.23-.11.44-.24.65-.38l3.68 3.68c.17.18.42.29.7.29a1.003 1.003 0 00.71-1.71zM11.5 9.5c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm1.93 5.33v-.65c0-.11-.13-.21-.24-.21-.11 0-.24.09-.24.21v.65c0 .11.13.21.24.21.11 0 .24-.1.24-.21zm-2.41.67h.83c.29 0 .46-.21.46-.5v-1.86l.23-.22c-.34.05-.69.08-1.04.08-.36 0-.7-.03-1.05-.08.03.05.06.1.08.16V15c.01.29.2.5.49.5z"],"git-branch":["M15 2c-1.66 0-3 1.34-3 3 0 1.3.84 2.4 2 2.82V9c0 1.1-.9 2-2 2H8c-.73 0-1.41.21-2 .55V5.82C7.16 5.4 8 4.3 8 3c0-1.66-1.34-3-3-3S2 1.34 2 3c0 1.3.84 2.4 2 2.82v8.37C2.84 14.6 2 15.7 2 17c0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.25-.77-2.3-1.85-2.75C6.45 13.52 7.16 13 8 13h4c2.21 0 4-1.79 4-4V7.82C17.16 7.4 18 6.3 18 5c0-1.66-1.34-3-3-3zM5 2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 16c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zM15 6c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-commit":["M19 9h-4.1a5 5 0 00-9.8 0H1c-.55 0-1 .45-1 1s.45 1 1 1h4.1a5 5 0 009.8 0H19c.55 0 1-.45 1-1s-.45-1-1-1zm-9 4c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z"],"git-merge":["M15 8c-1.3 0-2.4.84-2.82 2H11c-2.49 0-4.54-1.83-4.92-4.21A2.995 2.995 0 005 0C3.34 0 2 1.34 2 3c0 1.3.84 2.4 2 2.81v8.37C2.84 14.6 2 15.7 2 17c0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.3-.84-2.4-2-2.82V9.86C7.27 11.17 9.03 12 11 12h1.18A2.996 2.996 0 0018 11c0-1.66-1.34-3-3-3zM5 18c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zM5 4c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm10 8c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-new-branch":["M17 3h-1V2c0-.55-.45-1-1-1s-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1V5h1c.55 0 1-.45 1-1s-.45-1-1-1zm-3 4.86V9c0 1.1-.9 2-2 2H8c-.73 0-1.41.21-2 .55V5.82C7.16 5.4 8 4.3 8 3c0-1.66-1.34-3-3-3S2 1.34 2 3c0 1.3.84 2.4 2 2.82v8.37C2.84 14.6 2 15.7 2 17c0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.25-.77-2.3-1.85-2.75C6.45 13.52 7.16 13 8 13h4c2.21 0 4-1.79 4-4V7.86c-.32.08-.65.14-1 .14s-.68-.06-1-.14zM5 2c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm0 16c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-pull":["M17 14.18V7c0-2.21-1.79-4-4-4h-2.59l1.29-1.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3C7.11 3.47 7 3.72 7 4c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L10.41 5H13c1.1 0 2 .9 2 2v7.18A2.996 2.996 0 0016 20c1.66 0 3-1.34 3-3 0-1.3-.84-2.4-2-2.82zM16 18c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zM4 1C2.34 1 1 2.34 1 4c0 1.3.84 2.4 2 2.82v7.37C1.84 14.6 1 15.7 1 17c0 1.66 1.34 3 3 3s3-1.34 3-3c0-1.3-.84-2.4-2-2.82V6.82C6.16 6.4 7 5.3 7 4c0-1.66-1.34-3-3-3zm0 17c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zM4 5c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"git-push":["M15 11c0-.28-.11-.53-.29-.71l-3-3C11.53 7.11 11.28 7 11 7s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42l1.29-1.3V19c0 .55.45 1 1 1s1-.45 1-1v-8.59l1.29 1.29c.18.19.43.3.71.3.55 0 1-.45 1-1zm4-11H1C.45 0 0 .45 0 1v16c0 .55.45 1 1 1h7v-2H2v-2h6v-1H4V2h14v11h-4v1h4v2h-4v2h5c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM5 8h2V6H5v2zm2-5H5v2h2V3z"],"git-repo":["M7 3H5v2h2V3zm0 6H5v2h2V9zm0-3H5v2h2V6zm12-6H1C.45 0 0 .45 0 1v16c0 .55.45 1 1 1h4v2l2-1 2 1v-2h10c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 16H9v-1H5v1H2v-2h16v2zm0-3H4V2h14v11z"],glass:["M17 6V0H3v6c0 3.53 2.61 6.43 6 6.92V18H6c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1h-3v-5.08c3.39-.49 6-3.39 6-6.92z"],globe:["M7.53 4.37c.1-.1.1-.26 0-.35l-.68-.68c-.1-.1-.25-.1-.35 0-.1.1-.1.26 0 .35l.68.68c.1.1.25.1.35 0zm3.17.06h.3c.09 0 .16-.01.16-.1 0-.09-.07-.1-.16-.1h-.3c-.09 0-.16.01-.16.1s.07.1.16.1zm.98 1.15c.09 0 .19-.08.19-.17v-.42c0-.09-.1-.17-.19-.17s-.19.08-.19.17v.42c0 .09.1.17.19.17zm-6.5 4.19c-.35 0-.56.28-.56.63v2.37c0 .35.21.62.56.62h.39v2.4c0 .34.33.61.67.61s.67-.27.67-.61v-1.44h-.02c.35 0 .6-.19.6-.54v-.41h.18c.35 0 .58-.28.58-.62v-.81c0-.01.01-.01 0-.02L6.1 9.77h-.92zM10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8 0-.74.11-1.46.3-2.14h.03v.65c0 .28.25.5.53.5.05 0 .1-.01.15-.02l1.05 1.05c.1.11.28.11.38 0 .1-.1.11-.27 0-.38L3.42 8.59c0-.03.05-.05.05-.08v-.16c0-.22.12-.3.34-.49h.63c.12 0 .23-.01.32-.07.01-.01.02 0 .03-.01.02-.02.04-.03.06-.04.01-.01.02-.01.03-.02l.02-.02 2.15-2.15c.24-.24.24-.63 0-.86-.23-.24-.62-.19-.86.04l-.41.46H5v-.64c0-.01.07.07.07-.12h.87c.17 0 .3-.12.3-.29 0-.17-.13-.29-.3-.29H4.88C6.27 2.7 8.05 2 10 2s3.73.7 5.12 1.86h-1.58l-.01-.04c-.06 0-.12 0-.17.04l-.71.7c-.09.09-.09.23 0 .31.09.09.23.09.32 0l.56-.6.01-.03h.34c0 .19-.1.13-.1.16v.1c0 .29-.2.5-.49.5h-.51c-.25 0-.52.28-.52.54v.23h-.12c-.16 0-.27.08-.27.24v.33h-.32c-.23 0-.41.15-.41.38 0 .22.18.35.41.35.1 0 .19.04.26-.16l.06.01.66-.59h.23l.53.5c.04.04.11.03.16-.01.04-.04.04-.16 0-.2L13 6.15h.32l.12.16c.25.25.65.23.89-.02l.12-.14H15c.02 0 .11.07.11.07v.33s-.06-.01-.07-.01h-.49c-.16 0-.28.13-.28.29 0 .16.13.29.28.29h.49c.01 0 .07-.01.07-.01v.2c-.19.28-.33.57-.62.57h-1.28s0-.01-.01-.01l-.58-.58a.622.622 0 00-.89 0l-.58.58s0 .01-.01.01h-.34c-.35 0-.67.28-.67.63v1.25c0 .35.32.61.67.61h1.22c.46.19.78.48.97.94v2.28c0 .35.23.6.58.6h.98c.35 0 .54-.25.54-.6v-2.2l1.21-1.17.04-.02.02-.01h.04c.1-.11.2-.26.2-.42V8.49c0-.25-.22-.44-.42-.63h.58c.02.38.29.57.63.57h.43c.13.51.18 1.03.18 1.57 0 4.42-3.58 8-8 8zm6.16-5.65c-.14 0-.29.11-.29.25v.77c0 .14.15.25.29.25.14 0 .29-.11.29-.25v-.77c0-.14-.15-.25-.29-.25zM10.5 3.48c0-.34-.28-.57-.62-.57h-.74c-.34 0-.57.25-.57.59 0 .05-.13.06.06.1v.64c0 .2.09.36.29.36.2 0 .29-.16.29-.36v-.19h.68c.33 0 .61-.23.61-.57z"],"globe-network":["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm7.39 7h-3.63c-.31-1.99-.92-3.66-1.72-4.73 2.45.65 4.41 2.42 5.35 4.73zM13 10c0 .69-.04 1.36-.11 2H7.11a18.419 18.419 0 010-4h5.77c.08.64.12 1.31.12 2zm-3-8c1.07 0 2.25 2.05 2.75 5h-5.5c.5-2.95 1.68-5 2.75-5zm-2.04.27C7.16 3.34 6.55 5.01 6.24 7H2.61c.94-2.31 2.9-4.08 5.35-4.73zM2 10c0-.69.11-1.36.28-2h3.83a18.419 18.419 0 000 4H2.28c-.17-.64-.28-1.31-.28-2zm.61 3h3.63c.31 1.99.92 3.66 1.72 4.73A7.996 7.996 0 012.61 13zM10 18c-1.07 0-2.25-2.05-2.75-5h5.5c-.5 2.95-1.68 5-2.75 5zm2.04-.27c.79-1.07 1.4-2.74 1.72-4.73h3.63a7.996 7.996 0 01-5.35 4.73zM13.89 12a18.419 18.419 0 000-4h3.83c.17.64.28 1.31.28 2s-.11 1.36-.28 2h-3.83z"],graph:["M17.5 4A2.5 2.5 0 0015 6.5c0 .06.01.12.02.18l-1.9.84C12.38 6.6 11.27 6 10 6c-.83 0-1.59.25-2.23.68L4.91 4.14c.05-.21.09-.42.09-.64a2.5 2.5 0 00-5 0A2.5 2.5 0 002.5 6c.42 0 .81-.11 1.16-.3l2.79 2.48C6.17 8.73 6 9.34 6 10c0 1.41.73 2.64 1.83 3.35l-.56 1.67A2.498 2.498 0 005 17.5a2.5 2.5 0 005 0c0-.74-.32-1.39-.83-1.85l.56-1.68c.09.01.18.03.27.03 2.21 0 4-1.79 4-4 0-.22-.03-.44-.07-.65l2.02-.9c.43.34.96.55 1.55.55a2.5 2.5 0 000-5z"],"graph-remove":["M17.41 4l2.29-2.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L16 2.59 13.71.3A.965.965 0 0013 0a1.003 1.003 0 00-.71 1.71L14.59 4 12.3 6.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L16 5.41l2.29 2.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L17.41 4zM19 10c-.83 0-1.55-.36-2.09-.91l-.03.03-.88-.88-.88.88a2.996 2.996 0 11-4.24-4.24l.88-.88-.88-.88.03-.03C10.36 2.55 10 1.83 10 1c0-.35.07-.68.18-.99-.06 0-.12-.01-.18-.01C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10c0-.06-.01-.12-.01-.18-.31.11-.64.18-.99.18z"],"greater-than":["M12.838 10l-9.154 3.051a1 1 0 00.632 1.898l12-4c.912-.304.912-1.594 0-1.898l-12-4a1 1 0 00-.632 1.898L12.838 10z"],"greater-than-or-equal-to":["M3.684 11.051a1 1 0 00.632 1.898l12-4c.912-.304.912-1.594 0-1.898l-12-4a1 1 0 00-.632 1.898L12.838 8l-9.154 3.051zM4 15h12a1 1 0 110 2H4a1 1 0 010-2z"],grid:["M19 11c.55 0 1-.45 1-1s-.45-1-1-1h-2V5h2c.55 0 1-.45 1-1s-.45-1-1-1h-2V1c0-.55-.45-1-1-1s-1 .45-1 1v2h-4V1c0-.55-.45-1-1-1S9 .45 9 1v2H5V1c0-.55-.45-1-1-1S3 .45 3 1v2H1c-.55 0-1 .45-1 1s.45 1 1 1h2v4H1c-.55 0-1 .45-1 1s.45 1 1 1h2v4H1c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1v-2h4v2c0 .55.45 1 1 1s1-.45 1-1v-2h4v2c0 .55.45 1 1 1s1-.45 1-1v-2h2c.55 0 1-.45 1-1s-.45-1-1-1h-2v-4h2zM9 15H5v-4h4v4zm0-6H5V5h4v4zm6 6h-4v-4h4v4zm0-6h-4V5h4v4z"],"grid-view":["M0 19c0 .55.45 1 1 1h8v-9H0v8zM0 1v8h9V0H1C.45 0 0 .45 0 1zm19-1h-8v9h9V1c0-.55-.45-1-1-1zm-8 20h8c.55 0 1-.45 1-1v-8h-9v9z"],"group-objects":["M6 7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm8-3H6c-3.31 0-6 2.69-6 6s2.69 6 6 6h8c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 11H6c-2.76 0-5-2.24-5-5s2.24-5 5-5h8c2.76 0 5 2.24 5 5s-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"],"grouped-bar-chart":["M12 16h1c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1h-1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1zm7 1H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm-3-1h1c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1h-1c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1zm-9 0h1c.55 0 1-.45 1-1v-5c0-.55-.45-1-1-1H7c-.55 0-1 .45-1 1v5c0 .55.45 1 1 1zm-4 0h1c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v13c0 .55.45 1 1 1z"],hand:["M17 5c-.42 0-.79.27-.93.64L14.38 10h-.77l1.34-6.67c.03-.1.05-.21.05-.33a.998.998 0 00-1.98-.19h-.01L11.57 10H11V1c0-.55-.45-1-1-1S9 .45 9 1v9h-.2L6.97 2.76a.997.997 0 00-1.73-.41l-.03.03c-.01.02-.02.03-.03.04-.01.02-.01.03-.02.04v.01c-.01.01-.02.02-.02.03v.01c-.02.01-.02.02-.03.03 0 0 0 .01-.01.01 0 .01 0 .02-.01.03 0 0 0 .01-.01.01 0 .01-.01.02-.01.03 0 0 0 .01-.01.01 0 .01-.01.02-.01.03 0 .01 0 .01-.01.02 0 .01-.01.02-.01.03 0 .01 0 .01-.01.02 0 .01-.01.02-.01.03v.02c0 .01 0 .02-.01.03V3c0 .05 0 .09.01.14l1.45 10.25L6 12.7v.01L3.84 9.45h-.01A.98.98 0 003 9c-.55 0-1 .45-1 1 0 .2.06.39.17.55L6 18.44C7.06 19.4 8.46 20 10 20c3.31 0 6-2.69 6-6v-1.84l.01-.03v-.06l1.94-5.75A1.003 1.003 0 0017 5z"],"hand-down":["M17.68 9.84C15.91 9 14.27 6.49 13.45 4.9 12.41 2.43 12.21 0 7.87 0 5.49 0 3.95.76 3.05 2.65 2.31 4.2 2 5.48 2 9.79v.99c0 .82.69 1.48 1.54 1.48.38 0 .73-.14 1-.36.19.6.78 1.05 1.47 1.05.47 0 .89-.2 1.17-.52.26.47.77.79 1.36.79.65 0 1.2-.39 1.43-.93l.03.77v5.44c0 .48.23.91.59 1.18.21.19.5.32.85.32h.06c.83 0 1.5-.67 1.5-1.5v-8.24l.01-.67c.85.98 1.92 1.76 3.24 1.89 1.79.19 2.09-1.33 1.43-1.64z"],"hand-left":["M15.1 6.54c-1.58-.81-4.09-2.46-4.94-4.23-.31-.65-1.82-.35-1.64 1.43.13 1.33.91 2.4 1.89 3.24L9.74 7H1.5C.67 7 0 7.67 0 8.5v.06c0 .36.13.64.32.85.27.36.7.59 1.18.59h5.44l.78.01c-.54.23-.93.78-.93 1.43 0 .59.32 1.1.79 1.36-.32.28-.52.7-.52 1.17 0 .69.44 1.28 1.05 1.47-.22.27-.36.62-.36 1 0 .85.66 1.54 1.48 1.54h.99c4.31 0 5.59-.31 7.14-1.05 1.89-.9 2.65-2.44 2.65-4.82-.01-4.32-2.44-4.52-4.91-5.57z"],"hand-right":["M20 8.5c0-.83-.67-1.5-1.5-1.5h-8.24l-.67-.01c.98-.85 1.76-1.92 1.89-3.24.18-1.79-1.33-2.08-1.65-1.43-.84 1.76-3.35 3.41-4.93 4.23C2.43 7.59 0 7.79 0 12.13c0 2.38.76 3.92 2.65 4.82C4.2 17.69 5.48 18 9.79 18h.99c.82 0 1.48-.69 1.48-1.54 0-.38-.14-.73-.36-1 .6-.19 1.05-.78 1.05-1.47 0-.47-.2-.89-.52-1.17.47-.26.79-.77.79-1.36 0-.65-.39-1.2-.93-1.43l.77-.03h5.44c.48 0 .91-.23 1.18-.59.19-.21.32-.49.32-.85v-.03-.03z"],"hand-up":["M16.46 7.74c-.38 0-.73.14-1 .36-.19-.6-.78-1.05-1.47-1.05-.47 0-.89.2-1.17.52-.26-.47-.77-.79-1.36-.79-.65 0-1.2.39-1.43.93L10 6.94V1.5c0-.48-.23-.91-.59-1.18C9.2.13 8.92 0 8.56 0H8.5C7.67 0 7 .67 7 1.5v8.24l-.01.67c-.84-.98-1.92-1.76-3.24-1.89-1.79-.18-2.08 1.33-1.43 1.65 1.77.84 3.41 3.35 4.23 4.94 1.05 2.47 1.25 4.9 5.58 4.9 2.38 0 3.92-.76 4.82-2.65.74-1.56 1.05-2.84 1.05-7.15v-.99c0-.81-.69-1.48-1.54-1.48z"],hat:["M18.5 13c1.118 0 1.466.534 1.498 1.366L20 14.5v.5c0 1.945-5.69 3-10 3S0 16.945 0 15v-.5c0-.908.323-1.5 1.5-1.5.895 0 3.5 1.2 8.5 1.2l.411-.003C15.143 14.134 17.631 13 18.5 13zm-5-10c1.725 0 2.954 2.729 3.688 8.186-1.455.263-3.805.72-6.392.801l-.434.01L10 12c-2.896 0-5.585-.524-7.189-.814C3.546 5.73 4.775 3 6.5 3 8.6 3 8.329 5.5 10 5.5S11.5 3 13.5 3z"],header:["M16 1c-.55 0-1 .45-1 1v7H5V2c0-.55-.45-1-1-1s-1 .45-1 1v16c0 .55.45 1 1 1s1-.45 1-1v-7h10v7c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1z"],"header-one":["M10 0c.55 0 1 .45 1 1v14c0 .55-.45 1-1 1s-1-.45-1-1V9H2v6c0 .55-.45 1-1 1s-1-.45-1-1V1c0-.55.45-1 1-1s1 .45 1 1v6h7V1c0-.55.45-1 1-1zm7.4 10.77c.17-.2.29-.46.34-.77H19v10h-1.5v-7.11H15v-1.24c.32 0 .63-.03.93-.08.31-.06.58-.16.83-.29.26-.12.47-.3.64-.51z"],"header-two":["M16.6 17.41c-.22.17-.4.36-.56.55-.16.19-.27.4-.33.61h4.28V20H14c.01-.81.18-1.52.53-2.13.35-.6.81-1.13 1.41-1.58.28-.23.58-.46.89-.68.31-.22.59-.46.85-.71.26-.26.48-.53.63-.83.16-.3.25-.64.26-1.02 0-.18-.02-.37-.06-.57-.04-.2-.11-.39-.22-.56s-.26-.31-.45-.43-.44-.18-.75-.18c-.28 0-.52.06-.71.19s-.34.3-.45.52c-.11.22-.2.48-.25.78-.05.3-.08.62-.09.97h-1.43c0-.54.07-1.04.2-1.5.13-.47.32-.87.58-1.2.26-.34.58-.6.95-.78.37-.19.81-.29 1.3-.29.54 0 .99.09 1.35.29.36.19.65.44.87.74.22.29.38.62.47.97.09.35.14.68.14 1 0 .4-.05.75-.16 1.07-.11.32-.26.61-.44.88-.19.27-.4.52-.63.74-.24.22-.48.43-.73.63s-.5.38-.75.56c-.26.17-.5.35-.71.53zM10 0c.55 0 1 .45 1 1v14c0 .55-.45 1-1 1s-1-.45-1-1V9H2v6c0 .55-.45 1-1 1s-1-.45-1-1V1c0-.55.45-1 1-1s1 .45 1 1v6h7V1c0-.55.45-1 1-1z"],headset:["M18.97 9H19A9 9 0 001 9h.03C.41 9.73 0 10.8 0 12c0 1.74.84 3.2 2 3.76V16c0 1.66 1.34 3 3 3h3c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1H5c-.55 0-1-.45-1-1 .55 0 1-.45 1-1V9c0-.55-.45-1-1-1h-.92C3.57 4.61 6.47 2 10 2s6.43 2.61 6.92 6H16c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h1c1.66 0 3-1.79 3-4 0-1.2-.41-2.27-1.03-3z"],heart:["M20 6.25C20 3.35 17.65 1 14.75 1c-1.02 0-1.95.31-2.75.82v-.04c-.09.06-.17.12-.26.19-.04.03-.09.06-.14.1-.68.51-1.24 1.18-1.6 1.96-.4-.86-1.04-1.57-1.8-2.1-.04-.02-.07-.05-.1-.08a7 7 0 00-.6-.33c-.13-.04-.23-.1-.35-.15-.05-.02-.1-.05-.15-.07v.02C6.45 1.13 5.87 1 5.25 1A5.25 5.25 0 000 6.25c0 .09.01.17.01.25H0c0 .06.01.12.02.18s.01.12.02.18C.13 7.89.44 9 1.07 10.17 2.23 12.33 4.1 14.11 7 16.53v.01c.9.75 1.89 1.55 3 2.46.71-.58 1.38-1.12 2-1.63 3.48-2.86 5.64-4.78 6.93-7.18.63-1.17.94-2.27 1.03-3.3.01-.07.01-.14.02-.21 0-.06.01-.11.02-.17h-.01c0-.09.01-.17.01-.26z"],"heart-broken":["M8.11 7.45C8.05 7.31 8 7.16 8 7c0-.07.03-.13.04-.19h-.02l.86-4.32A5.159 5.159 0 005.25 1 5.25 5.25 0 000 6.25c0 .09.01.17.01.25H0c0 .06.01.12.02.18s.01.12.02.18C.13 7.89.44 9 1.07 10.17c1.38 2.58 3.76 4.6 7.71 7.83l-.76-3.8h.02c-.01-.07-.04-.13-.04-.2 0-.21.08-.39.18-.54l-.02-.01 1.68-2.52-1.73-3.48zM20 6.25C20 3.35 17.65 1 14.75 1c-1.54 0-2.92.67-3.88 1.73l-.83 4.13 1.85 3.69h-.01c.07.14.12.29.12.45 0 .21-.08.39-.18.54l.02.01-1.77 2.66.81 4.07c4.16-3.39 6.63-5.45 8.05-8.1.63-1.17.94-2.27 1.03-3.3.01-.07.01-.14.02-.21 0-.06.01-.11.02-.17h-.01c0-.08.01-.16.01-.25z"],"heat-grid":["M14 12h6V8h-6v4zM0 12h6V8H0v4zm1-3h4v2H1V9zm-1 7c0 .55.45 1 1 1h5v-4H0v3zM19 3h-5v4h6V4c0-.55-.45-1-1-1zm0 3h-4V4h4v2zM0 4v3h6V3H1c-.55 0-1 .45-1 1zm7 3h6V3H7v4zm7 10h5c.55 0 1-.45 1-1v-3h-6v4zm-7 0h6v-4H7v4zm1-3h4v2H8v-2zm-1-2h6V8H7v4z"],heatmap:["M6 0a6 6 0 100 12A6 6 0 106 0z","M10.5 8a4.5 4.5 0 100 9 4.5 4.5 0 100-9z","M16.5 7a3.5 3.5 0 100 7 3.5 3.5 0 100-7zM18 16a2 2 0 100 4 2 2 0 100-4zM2.5 14a2.5 2.5 0 100 5 2.5 2.5 0 100-5zM16.5 0a2.5 2.5 0 100 5 2.5 2.5 0 100-5z"],help:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zM7.41 4.62c.65-.54 1.51-.82 2.56-.82.54 0 1.03.08 1.48.25.44.17.83.39 1.14.68.32.29.56.63.74 1.02.17.39.26.82.26 1.27s-.08.87-.24 1.23c-.16.37-.4.73-.71 1.11l-1.21 1.58c-.14.17-.28.33-.32.48-.05.15-.11.35-.11.6v.97H9v-2s.06-.58.24-.81l1.21-1.64c.25-.3.41-.56.51-.77s.14-.44.14-.67c0-.35-.11-.63-.32-.85s-.5-.33-.88-.33c-.37 0-.67.11-.89.33-.22.23-.37.54-.46.94-.03.12-.11.17-.23.16l-1.95-.29c-.12-.01-.16-.08-.14-.22.13-.93.52-1.67 1.18-2.22zM9 14h2.02L11 16H9v-2z"],"helper-management":["M17 10h-3v3h3v-3zm0 4h-3v3h3v-3zm0-8h-3v3h3V6zm2-6H1C.4 0 0 .4 0 1v18c0 .5.4 1 1 1h18c.5 0 1-.5 1-1V1c0-.6-.5-1-1-1zm-1 18H2V2h16v16zm-9-4H6v3h3v-3zm4 0h-3v3h3v-3z"],"high-priority":["M12 16v4H8v-4h4zm1-16l-1 14H8L7 0h6z"],highlight:["M11.22 14.09l3.03-3.03.71.71L20 6.73l-5.71-5.71-5.04 5.04.71.71-3.02 3.04 4.28 4.28zm6.8 3.91h-16c-.55 0-1 .45-1 1s.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1zm-15-1h4.04c.28 0 .53-.11.71-.3l2.02-2.02-3.44-3.45-4.04 4.04c-.18.18-.3.44-.3.71.01.57.46 1.02 1.01 1.02z"],history:["M10 0C6.71 0 3.82 1.6 2 4.05V2c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H3.76C5.23 3.17 7.47 2 10 2c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8c0-.55-.45-1-1-1s-1 .45-1 1c0 5.52 4.48 10 10 10s10-4.48 10-10S15.52 0 10 0zm0 3c-.55 0-1 .45-1 1v6c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L11 9.59V4c0-.55-.45-1-1-1z"],home:["M2 12v7c0 .55.45 1 1 1h5v-7h4v7h5c.55 0 1-.45 1-1v-7l-8-8-8 8zm17.71-2.71L17 6.59V3c0-.55-.45-1-1-1s-1 .45-1 1v1.59L10.71.3C10.53.11 10.28 0 10 0s-.53.11-.71.29l-9 9a1.003 1.003 0 001.42 1.42L10 2.41l8.29 8.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],"horizontal-bar-chart":["M1 1c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1zm3 5h11c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1zm8 8H4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h8c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1zm7-6H4c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h15c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1z"],"horizontal-bar-chart-asc":["M1 9h11c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zm0-5h9c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zm18 12H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h18c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zM1 14h14c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1z"],"horizontal-bar-chart-desc":["M10 16H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h9c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm2-5H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h11c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm3-5H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1zm4-5H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1z"],"horizontal-distribution":["M12 2H8c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zM1 0C.45 0 0 .45 0 1v18c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm18 0c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1z"],"id-number":["M2 5v10h16V5H2zm0-2h16c1.1 0 2 .9 2 2v10c0 1.1-.9 2-2 2H2c-1.1 0-2-.9-2-2V5c0-1.1.9-2 2-2z","M8.88 12.38c-.17-.39-1.01-.66-1.56-.9-.56-.24-.48-.39-.5-.6v-.09c.19-.17.35-.4.45-.67 0 0 0-.02.01-.02l.06-.18c.13-.03.2-.17.23-.29.03-.05.09-.18.08-.33-.04-.18-.11-.27-.2-.3v-.03c0-.24-.02-.58-.06-.81-.01-.06-.02-.12-.04-.19-.08-.27-.25-.52-.48-.7C6.63 7.09 6.3 7 6 7s-.63.09-.87.27c-.23.17-.4.42-.48.7-.02.06-.03.13-.04.19-.04.22-.06.57-.06.81V9c-.09.03-.17.12-.19.31-.01.14.05.27.08.32.03.14.1.27.23.3.02.06.03.12.06.18v.01c.11.27.27.51.47.68v.08c-.02.2.04.35-.51.6-.56.24-1.39.51-1.56.9-.19.39-.12.62-.12.62h5.98c-.01 0 .06-.23-.11-.62zM12 7h4c.55 0 1 .45 1 1s-.45 1-1 1h-4c-.55 0-1-.45-1-1s.45-1 1-1zM12 11h4c.55 0 1 .45 1 1s-.45 1-1 1h-4c-.55 0-1-.45-1-1s.45-1 1-1z"],"image-rotate-left":["M10.5 13c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5-1.5.67-1.5 1.5.67 1.5 1.5 1.5zM14 7H1c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm-1 10l-5-3-1 2-2-4-3 4.5V9h11v8zm3-15h-1.59l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H16c1.1 0 2 .9 2 2v3c0 .55.45 1 1 1s1-.45 1-1V6c0-2.21-1.79-4-4-4z"],"image-rotate-right":["M5.29 4.29a1.003 1.003 0 001.42 1.42l2-2C8.89 3.53 9 3.28 9 3c0-.28-.11-.53-.29-.71l-2-2a1.003 1.003 0 00-1.42 1.42l.3.29H4C1.79 2 0 3.79 0 6v3c0 .55.45 1 1 1s1-.45 1-1V6c0-1.1.9-2 2-2h1.59l-.3.29zM15.5 13c.83 0 1.5-.67 1.5-1.5s-.67-1.5-1.5-1.5-1.5.67-1.5 1.5.67 1.5 1.5 1.5zM19 7H6c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm-1 10l-5-3-1 2-2-4-3 4.5V9h11v8z"],import:["M9.29 15.71c.18.18.43.29.71.29s.53-.11.71-.29l5-5a1.003 1.003 0 00-1.42-1.42L11 12.59V1c0-.55-.45-1-1-1S9 .45 9 1v11.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42l5 5zM19 14c-.55 0-1 .45-1 1v3H2v-3c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h18c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1z"],inbox:["M16.92 3.56l-.01-.02c-.16-.35-.5-.6-.91-.6H4c-.41 0-.76.25-.91.6l-.01.02L0 10.49v6.46c0 .55.45 1 1 1h18c.55 0 1-.45 1-1v-6.46l-3.08-6.93zM15 10.95c-.55 0-1 .45-1 1v1H6v-1c0-.55-.45-1-1-1H1.98l2.67-6h10.7l2.67 6H15z"],"inbox-filtered":["M10.262 3l1.958 1.958v.05H4.65l-2.67 5.997H5c.55 0 1 .45 1 .999v1h8v-1c0-.55.45-1 1-1h3.02l-.635-1.426.625-.63c.354-.353.598-.8.707-1.289L20 10.545v6.456c0 .55-.45.999-1 .999H1c-.55 0-1-.45-1-1v-6.455L3.08 3.62l.01-.02c.15-.35.5-.6.91-.6h6.262zm9.088-3a.642.642 0 01.46 1.1l-3.03 3.03v2.95c0 .18-.07.34-.19.46l-1.28 1.29c-.11.1-.27.17-.45.17-.35 0-.64-.29-.64-.64V4.13L11.19 1.1a.642.642 0 01.45-1.1h7.71z"],"inbox-geo":["M7.427 3a7.467 7.467 0 00-.411 2.009H4.65l-2.67 5.996H5c.55 0 1 .45 1 .999v1h8V13c.165.01.332 0 .5 0a7.48 7.48 0 005.5-2.4V17c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1v-6.455L3.08 3.62l.01-.02c.15-.35.5-.6.91-.6h3.427zm5.715-.596a.133.133 0 01-.193 0l-.374-.374a.133.133 0 010-.193.133.133 0 01.193 0l.373.374a.133.133 0 010 .193zm1.743.033c-.05 0-.088-.006-.088-.055 0-.05.038-.056.088-.056h.165c.05 0 .088.006.088.055 0 .05-.038.056-.088.056h-.165zm.539.632c-.05 0-.104-.044-.104-.094v-.23c0-.05.054-.094.104-.094.05 0 .104.044.104.094v.23c0 .05-.055.094-.104.094zm-3.575 2.304h.506l1.182 1.2c.006.005 0 .005 0 .01v.446c0 .187-.126.341-.319.341h-.098v.226c0 .192-.138.296-.33.296h.01v.792c0 .188-.181.336-.368.336s-.369-.149-.369-.335v-1.32h-.214c-.193 0-.308-.149-.308-.341V5.72c0-.192.115-.346.308-.346zM14.5 0C17.536 0 20 2.464 20 5.5S17.536 11 14.5 11A5.502 5.502 0 019 5.5C9 2.464 11.464 0 14.5 0zm0 9.9c2.431 0 4.4-1.969 4.4-4.4 0-.297-.027-.583-.099-.864h-.236c-.188 0-.336-.104-.347-.313h-.319c.11.104.231.209.231.346v.705c0 .088-.055.17-.11.23h-.022l-.011.006-.022.011-.666.643v1.21c0 .193-.104.33-.296.33h-.54c-.192 0-.319-.137-.319-.33V6.221a.915.915 0 00-.533-.518h-.671c-.192 0-.368-.143-.368-.335V4.68c0-.192.176-.346.368-.346l.193-.005.319-.32a.342.342 0 01.489 0l.319.32c.005 0 .005.005.005.005h.704c.16 0 .237-.16.341-.313v-.11l-.038.005h-.27a.159.159 0 01-.153-.16c0-.087.066-.159.154-.159h.269l.039.006V3.42s-.05-.038-.061-.038h-.302l-.067.076a.342.342 0 01-.489.011l-.066-.088h-.176l.248.259c.021.022.021.088 0 .11-.028.022-.067.028-.088.006l-.292-.276h-.127l-.363.325-.033-.006c-.038.11-.087.089-.143.089-.126 0-.225-.072-.225-.193 0-.127.099-.209.225-.209h.176v-.182c0-.088.061-.131.149-.131h.066v-.127c0-.143.149-.297.286-.297h.28c.16 0 .27-.115.27-.275V2.42c0-.016.055.017.055-.088h-.187l-.005.017-.308.33a.123.123 0 01-.177 0c-.049-.044-.049-.121 0-.171l.391-.385c.027-.022.06-.022.094-.022l.005.022h.869A4.376 4.376 0 0014.5 1.1a4.402 4.402 0 00-2.816 1.018h.583c.094 0 .165.066.165.159s-.072.16-.165.16h-.478c0 .104-.039.06-.039.066v.351h.429l.226-.252c.132-.127.346-.155.473-.022a.332.332 0 010 .473l-1.183 1.182-.011.011c-.005.005-.011.005-.016.011a.115.115 0 00-.034.022c-.005.006-.01 0-.016.006a.309.309 0 01-.176.038h-.347c-.12.104-.187.148-.187.27v.088c0 .016-.027.027-.027.043l.561.589c.06.06.055.154 0 .209a.143.143 0 01-.209 0l-.578-.578a.425.425 0 01-.082.011c-.154 0-.292-.12-.292-.274v-.358h-.016c-.104.374-.165.77-.165 1.177 0 2.431 1.969 4.4 4.4 4.4zm3.388-3.107c.077 0 .16.06.16.137v.424c0 .077-.083.137-.16.137s-.16-.06-.16-.137V6.93c0-.077.083-.137.16-.137zm-3.113-4.879c0 .187-.154.314-.335.314h-.374v.104c0 .11-.05.198-.16.198s-.16-.088-.16-.198V1.98c-.104-.022-.033-.028-.033-.055 0-.187.127-.325.314-.325h.407c.187 0 .341.127.341.314z"],"inbox-search":["M7.136 3a6.327 6.327 0 00-.098 2.009H4.65l-2.67 5.996H5c.55 0 1 .45 1 .999v1h8v-1c0-.55.45-1 1-1h1.076l1.14 1.14a2.767 2.767 0 001.974.806c.282 0 .554-.042.81-.12V17c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1v-6.455L3.08 3.62l.01-.02c.15-.35.5-.6.91-.6h3.136zm3.244 1.33c0 1.62 1.31 2.93 2.93 2.93s2.93-1.31 2.93-2.93-1.31-2.93-2.93-2.93-2.93 1.31-2.93 2.93zm6.47 2.43l2.89 2.85c.13.15.22.35.23.56 0 .43-.35.78-.78.78-.23 0-.42-.08-.56-.22l-2.87-2.87c-.17.1-.33.2-.51.29-.03.01-.06.03-.09.04-.18.07-.35.15-.55.21-.19.06-.37.11-.57.14-.05.01-.1.02-.14.02-.2.03-.39.05-.6.05A4.3 4.3 0 019 4.31C9 1.93 10.93.01 13.3 0c2.37 0 4.3 1.93 4.3 4.3 0 .21-.02.4-.05.6-.01.05-.01.09-.02.14-.04.2-.08.38-.14.58-.05.19-.13.36-.21.54-.01.03-.03.06-.04.09-.08.18-.18.34-.29.51z"],"inbox-update":["M10.083 3a6.04 6.04 0 00.001 2.009H4.65l-2.67 5.996H5c.55 0 1 .45 1 .999v1h8v-1c0-.55.45-1 1-1h3.02l-.53-1.19a5.97 5.97 0 001.824-.811L20 10.545v6.456c0 .55-.45.999-1 .999H1c-.55 0-1-.45-1-1v-6.455L3.08 3.62l.01-.02c.15-.35.5-.6.91-.6h6.083zM16 8a4 4 0 110-8 4 4 0 010 8z"],"info-sign":["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zM9 4h2v2H9V4zm4 12H7v-1h2V8H8V7h3v8h2v1z"],inheritance:["M6 10c0 2.21 1.79 4 4 4h6.59l-2.29-2.29A.965.965 0 0114 11a1.003 1.003 0 011.71-.71l4 4c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-4 4a1.003 1.003 0 01-1.42-1.42l2.3-2.29H10c-3.31 0-6-2.69-6-6H1a1 1 0 01-1-1V1a1 1 0 011-1h8a1 1 0 011 1v8a1 1 0 01-1 1H6zM2 2v6h6V2H2z"],"inherited-group":["M1 9c.55 0 1 .45 1 1v4c0 1.1.9 2 2 2h2.59l-.3-.29a1.003 1.003 0 011.42-1.42l2 2c.18.18.29.43.29.71 0 .28-.11.53-.29.71l-2 2A1.003 1.003 0 016 19c0-.28.11-.53.3-.71l.29-.29H4c-2.21 0-4-1.79-4-4v-4c0-.55.45-1 1-1zm6.996-9c.79 0 1.68.25 2.309.73a3.63 3.63 0 011.4 2.36c.11.6.17 1.52.17 2.15v.09c.22.09.42.32.47.82.03.39-.12.73-.2.87-.07.34-.27.71-.61.78-.04.16-.09.33-.15.48-.01.01-.02.05-.02.05-.27.71-.68 1.33-1.19 1.78 0 .08 0 .16.01.23.05.55-.15.95 1.33 1.6 1.469.66 3.698 1.35 4.178 2.39.45 1.05.27 1.67.27 1.67h-5.227a1.982 1.982 0 00-.319-.417l-2-2A2.003 2.003 0 005 15H4c-.548 0-1-.452-1-1v-1.462c.511-.213 1.023-.413 1.468-.608 1.479-.65 1.329-1.05 1.379-1.59l.01-.21c-.52-.45-.95-1.08-1.22-1.8l-.01-.01-.01-.03c-.07-.15-.12-.32-.16-.49-.34-.06-.54-.43-.62-.78-.08-.14-.24-.48-.2-.87.05-.51.26-.74.49-.83v-.08c0-.64.05-1.55.17-2.15a3.648 3.648 0 011.4-2.36C6.317.25 7.207 0 7.996 0zm5.997 3c.59 0 1.26.19 1.73.55.46.35.8.85.97 1.4.04.13.07.25.08.38.08.45.13 1.14.13 1.61v.07c.16.07.31.24.35.62.02.29-.09.55-.15.65-.05.26-.2.53-.46.59-.03.12-.07.25-.11.36-.01.01-.01.04-.01.04-.2.53-.51 1-.89 1.34 0 .06 0 .12.01.17.04.41-.11.71 1 1.19 1.099.5 2.768 1.01 3.128 1.79.34.79.2 1.25.2 1.25h-3.039V15c-.06-.33-.17-.69-.33-1.06-.45-.97-1.37-1.52-3.238-2.3-.17-.07-.76-.31-.77-.32-.1-.04-.2-.08-.28-.12.05-.14.04-.29.06-.45l.01-.16c-.25-.21-.47-.48-.65-.79.22-.34.41-.71.56-1.12l.028-.078-.002.013-.006.035.06-.15c.36-.26.6-.67.72-1.13.18-.37.29-.82.25-1.3-.05-.5-.21-.92-.47-1.22-.02-.53-.06-1.11-.12-1.59.38-.17.83-.26 1.24-.26z"],"inner-join":["M8.7 4.7C7.4 6 6.5 7.9 6.5 10s.8 4 2.2 5.3c-.8.5-1.7.7-2.7.7-3.3 0-6-2.7-6-6s2.7-6 6-6c1 0 1.9.2 2.7.7zm-3.34 9.25c-.55-1.2-.86-2.54-.86-3.95s.31-2.75.86-3.95a4.001 4.001 0 000 7.9zM14 4c3.3 0 6 2.7 6 6s-2.7 6-6 6c-1 0-1.9-.2-2.7-.7 1.3-1.3 2.2-3.2 2.2-5.3s-.8-3.9-2.2-5.3C12.1 4.2 13 4 14 4zm.6 2.05c.55 1.2.86 2.54.86 3.95s-.31 2.75-.86 3.95c1.9-.31 3.36-1.96 3.36-3.95S16.5 6.36 14.6 6.05zM10 5.5C8.8 6.7 8 8.2 8 10s.8 3.3 2 4.4c1.2-1.1 2-2.7 2-4.5s-.8-3.3-2-4.4z"],insert:["M19 0H1C.4 0 0 .4 0 1v18c0 .5.4 1 1 1h18c.5 0 1-.5 1-1V1c0-.6-.5-1-1-1zm-1 18H2V2h16v16zM5 11h4v4c0 .6.4 1 1 1s1-.4 1-1v-4h4c.6 0 1-.4 1-1s-.4-1-1-1h-4V5c0-.6-.4-1-1-1s-1 .4-1 1v4H5c-.6 0-1 .4-1 1s.4 1 1 1z"],intersection:["M13 4c-1.31 0-2.51.43-3.5 1.14A5.977 5.977 0 006 4c-3.31 0-6 2.69-6 6s2.69 6 6 6c1.31 0 2.51-.43 3.5-1.14.99.71 2.19 1.14 3.5 1.14 3.31 0 6-2.69 6-6s-2.69-6-6-6zm-4.93 9.41c-.61.37-1.31.59-2.07.59-2.21 0-4-1.79-4-4s1.79-4 4-4c.76 0 1.46.22 2.07.59C7.4 7.56 7 8.73 7 10s.4 2.44 1.07 3.41zM13 14c-.76 0-1.46-.22-2.07-.59C11.6 12.44 12 11.27 12 10s-.4-2.44-1.07-3.41C11.54 6.22 12.24 6 13 6c2.21 0 4 1.79 4 4s-1.79 4-4 4z"],"ip-address":["M6 3.66C6 5.69 10 11 10 11s4-5.31 4-7.34C13.99 1.64 12.21 0 10 0S6 1.64 6 3.66zM8 4c0-1.1.9-2 2-2s2 .9 2 2-.9 2-2 2-2-.9-2-2zM14 13.5V13h-4v1h3v2h-2v1h3v-3.5zM3 12h14c.55 0 1 .45 1 1v6c0 .55-.45 1-1 1H3c-.55 0-1-.45-1-1v-6c0-.55.45-1 1-1zm4 1v6h1v-6H7zm3 1v5h1v-5h-1z"],issue:["M10 20C4.477 20 0 15.523 0 10S4.477 0 10 0s10 4.477 10 10-4.477 10-10 10zm0-2a8 8 0 100-16 8 8 0 000 16zm1-2H9v-2h2v2zm0-3H9V4h2v9z"],"issue-closed":["M15.364 5.9a.997.997 0 01-.707-.293l-2.121-2.122a1 1 0 111.414-1.414l1.414 1.414L18.192.657a1 1 0 011.414 1.414l-3.535 3.536a.997.997 0 01-.707.292zM11.78.157a3.002 3.002 0 00-1.437 1.85 8 8 0 107.1 5.055l.042-.042 1.472-1.472A9.959 9.959 0 0120 10c0 5.523-4.477 10-10 10S0 15.523 0 10 4.477 0 10 0c.608 0 1.202.054 1.78.158zM11 16H9v-2h2v2zm0-3H9V4h2v9z"],"issue-new":["M13.167.512a2.98 2.98 0 00-.131.524c-.74.115-1.39.5-1.848 1.052a8 8 0 106.724 6.724 2.997 2.997 0 001.052-1.848 2.98 2.98 0 00.524-.13A9.99 9.99 0 0120 10c0 5.523-4.477 10-10 10S0 15.523 0 10 4.477 0 10 0a9.99 9.99 0 013.167.512zM11 16H9v-2h2v2zm0-3H9V4h2v9zm6-10h1.5a1 1 0 010 2H17v1.5a1 1 0 01-2 0V5h-1.5a1 1 0 010-2H15V1.5a1 1 0 012 0V3z"],italic:["M11.7 4H14c.6 0 1-.4 1-1s-.4-1-1-1H7c-.6 0-1 .4-1 1s.4 1 1 1h2.2L7.3 15H5c-.6 0-1 .4-1 1s.4 1 1 1h7c.6 0 1-.4 1-1s-.4-1-1-1H9.8l1.9-11z"],"join-table":["M19 6h-4V2c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h4v4c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1zM6 12H2V9h4v3zm0-4H2V5h4v3zm7 9H7v-3h6v3zm0-4H7V9h6v4zm0-5H7V5h6v3zm5 9h-4v-3h4v3zm0-4h-4v-3h4v3z"],key:["M14 0c-3.31 0-6 2.69-6 6 0 1.11.32 2.14.85 3.03L.44 17.44a1.498 1.498 0 102.12 2.12l.79-.79.94.94c.18.18.43.29.71.29s.53-.11.71-.29l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-.94-.94 3.2-3.2A5.9 5.9 0 0014 12c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 9c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z"],"key-backspace":["M19 3H7c-.28 0-.53.11-.71.29l-6 6C.11 9.47 0 9.72 0 10c0 .28.11.53.29.71l6 6c.18.18.43.29.71.29h12c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zm-2.29 9.29a1.003 1.003 0 01-1.42 1.42L13 11.41l-2.29 2.29c-.18.19-.43.3-.71.3a1.003 1.003 0 01-.71-1.71l2.3-2.29-2.3-2.29a1.003 1.003 0 011.42-1.42L13 8.59l2.29-2.29c.18-.19.43-.3.71-.3a1.003 1.003 0 01.71 1.71L14.41 10l2.3 2.29z"],"key-command":["M15.5 12H14V8h1.5C17.43 8 19 6.43 19 4.5S17.43 1 15.5 1 12 2.57 12 4.5V6H8V4.5C8 2.57 6.43 1 4.5 1S1 2.57 1 4.5 2.57 8 4.5 8H6v4H4.5C2.57 12 1 13.57 1 15.5S2.57 19 4.5 19 8 17.43 8 15.5V14h4v1.5c0 1.93 1.57 3.5 3.5 3.5s3.5-1.57 3.5-3.5-1.57-3.5-3.5-3.5zm0-9c.83 0 1.5.67 1.5 1.5S16.33 6 15.5 6 14 5.33 14 4.5 14.67 3 15.5 3zm-11 14c-.83 0-1.5-.67-1.5-1.5S3.67 14 4.5 14s1.5.67 1.5 1.5S5.33 17 4.5 17zm0-11C3.67 6 3 5.33 3 4.5S3.67 3 4.5 3 6 3.67 6 4.5 5.33 6 4.5 6zm7.5 6H8V8h4v4zm3.5 5c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5z"],"key-control":["M16.71 7.29l-6-6C10.53 1.11 10.28 1 10 1s-.53.11-.71.29l-6 6a1.003 1.003 0 001.42 1.42L10 3.41l5.29 5.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71z"],"key-delete":["M19.71 9.29l-6-6A.997.997 0 0013 3H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h12c.28 0 .53-.11.71-.29l6-6c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zm-9 3a1.003 1.003 0 01-1.42 1.42L7 11.41 4.71 13.7c-.18.19-.43.3-.71.3a1.003 1.003 0 01-.71-1.71L5.59 10l-2.3-2.29a1.003 1.003 0 011.42-1.42L7 8.59 9.29 6.3c.18-.19.43-.3.71-.3a1.003 1.003 0 01.71 1.71L8.41 10l2.3 2.29z"],"key-enter":["M18 2c-.55 0-1 .45-1 1v5c0 2.21-1.79 4-4 4H4.41L6.7 9.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L4.41 14H13c3.31 0 6-2.69 6-6V3c0-.55-.45-1-1-1z"],"key-escape":["M2 8c.55 0 1-.45 1-1V4.41l6.29 6.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L4.41 3H7c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1v5c0 .55.45 1 1 1zm9-6.94V3.1c3.39.49 6 3.38 6 6.9 0 3.87-3.13 7-7 7-3.52 0-6.41-2.61-6.9-6H1.06c.5 4.5 4.31 8 8.94 8a9 9 0 009-9c0-4.63-3.5-8.44-8-8.94z"],"key-option":["M13 4h6c.55 0 1-.45 1-1s-.45-1-1-1h-6c-.55 0-1 .45-1 1s.45 1 1 1zm6 12h-4.42L6.87 2.5l-.02.01A.977.977 0 006 2H1c-.55 0-1 .45-1 1s.45 1 1 1h4.42l7.71 13.5.01-.01c.18.3.49.51.86.51h5c.55 0 1-.45 1-1s-.45-1-1-1z"],"key-shift":["M17.74 10.35l-6.99-8.01-.01.01C10.56 2.14 10.3 2 10 2s-.56.14-.74.35l-.01-.01-7 8 .01.01A.95.95 0 002 11c0 .55.45 1 1 1h3v5c0 .55.45 1 1 1h6c.55 0 1-.45 1-1v-5h3c.55 0 1-.45 1-1 0-.25-.1-.48-.26-.65z"],"key-tab":["M19 13H4.41l2.29-2.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L2 12.59V10c0-.55-.45-1-1-1s-1 .45-1 1v8c0 .55.45 1 1 1s1-.45 1-1v-2.59l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L4.41 15H19c.55 0 1-.45 1-1s-.45-1-1-1zm0-12c-.55 0-1 .45-1 1v2.59L14.71 1.3A.965.965 0 0014 1a1.003 1.003 0 00-.71 1.71L15.59 5H1c-.55 0-1 .45-1 1s.45 1 1 1h14.59L13.3 9.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L18 7.41V10c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1z"],"known-vehicle":["M19 4a.997.997 0 00-.707.293L14 8.586l-2.293-2.293a1 1 0 00-1.414 1.414l3 3a.997.997 0 001.414 0l5-5A1 1 0 0019 4zm-2.048 7.291c.011.072.048.134.048.209a1.5 1.5 0 01-1.5 1.5c-.225 0-.433-.057-.624-.145-.279.085-.57.145-.876.145a2.99 2.99 0 01-2.121-.879l-3-3 .007-.007A3.027 3.027 0 018.184 8H4V7l1-3h10l.19.568 1.307-1.308c-.336-.356-.758-.658-1.165-.772 0 0-1.74-.488-5.332-.488s-5.332.488-5.332.488c-.67.188-1.424.864-1.674 1.502L2.99 4H3L2 7H1a1 1 0 000 2h.333l-.28.84L1 10v7.5a1.5 1.5 0 103 0V17h12v.5a1.5 1.5 0 003 0V10l-.19-.568-1.858 1.86zM4.5 13a1.5 1.5 0 110-3 1.5 1.5 0 010 3z"],"lab-test":["M13 2a1 1 0 010 2v4l4 8v1a1 1 0 01-1 1H4a1 1 0 01-1-1v-1l4-8V4a1 1 0 110-2h6zm-2 2H9v4l-2 4h6l-2-4V4z"],label:["M3 12h14v-1H3v1zm11-9H1c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V9l-6-6zm4 12H2V5h11v3H3v1h10v1h5v5zm-4-6V5l4 4h-4z"],layer:["M19.5 9.1l-9-5c-.2-.1-.3-.1-.5-.1s-.3 0-.5.1l-9 5c-.3.2-.5.5-.5.9s.2.7.5.9l9 5c.2.1.3.1.5.1s.3 0 .5-.1l9-5c.3-.2.5-.5.5-.9s-.2-.7-.5-.9z"],"layer-outline":["M9.514 4.126l-9 5a1 1 0 000 1.748l9 5a1 1 0 00.972 0l9-5a1 1 0 000-1.748l-9-5a1 1 0 00-.972 0zM10 6.144l6.94 3.855L10 13.855 3.059 9.999 10 6.144z"],layers:["M.5 6.9l9 5c.2.1.3.1.5.1s.3 0 .5-.1l9-5c.3-.2.5-.5.5-.9s-.2-.7-.5-.9l-9-5c-.2-.1-.3-.1-.5-.1s-.3 0-.5.1l-9 5c-.3.2-.5.5-.5.9s.2.7.5.9z","M19 9c-.2 0-.3 0-.5.1L10 13.9 1.5 9.1C1.3 9 1.2 9 1 9c-.6 0-1 .4-1 1 0 .4.2.7.5.9l9 5c.2.1.3.1.5.1s.3 0 .5-.1l9-5c.3-.2.5-.5.5-.9 0-.6-.4-1-1-1z","M19 13c-.2 0-.3 0-.5.1L10 17.9l-8.5-4.7c-.2-.2-.3-.2-.5-.2-.6 0-1 .4-1 1 0 .4.2.7.5.9l9 5c.2.1.3.1.5.1s.3 0 .5-.1l9-5c.3-.2.5-.5.5-.9 0-.6-.4-1-1-1z"],layout:["M18 6c-1.1 0-2 .9-2 2 0 .37.11.71.28 1.01l-2.27 2.27c-.3-.17-.64-.28-1.01-.28-.93 0-1.71.64-1.93 1.5H8.93c-.22-.86-1-1.5-1.93-1.5-.37 0-.71.11-1.01.28L3.72 9.01C3.89 8.71 4 8.37 4 8c0-.34-.09-.66-.24-.94l3.66-3.38c.31.2.68.32 1.08.32 1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2c0 .34.09.66.24.94L3.08 6.32C2.77 6.12 2.4 6 2 6 .9 6 0 6.9 0 8s.9 2 2 2c.37 0 .71-.11 1.01-.28l2.27 2.27c-.17.3-.28.64-.28 1.01s.11.71.28 1.01l-2.27 2.27C2.71 16.11 2.37 16 2 16c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2c0-.37-.11-.71-.28-1.01l2.27-2.27c.3.17.64.28 1.01.28.93 0 1.71-.64 1.93-1.5h2.14c.22.86 1 1.5 1.93 1.5 1.1 0 2-.9 2-2 0-.37-.11-.71-.28-1.01l2.27-2.27c.3.17.64.28 1.01.28 1.1 0 2-.9 2-2s-.9-2-2-2z"],"layout-auto":["M18 13c-.53 0-1.01.21-1.37.55L11.9 10.6c.06-.19.1-.39.1-.6s-.04-.41-.1-.6l4.72-2.95c.37.34.85.55 1.38.55 1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2c0 .21.04.41.1.6l-4.73 2.96c-.24-.23-.54-.4-.87-.48V3.93c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2S8 .9 8 2c0 .93.64 1.71 1.5 1.93v4.14c-.33.09-.63.26-.87.48L3.9 5.6c.06-.19.1-.39.1-.6 0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2c.53 0 1.01-.21 1.37-.55L8.1 9.4c-.06.19-.1.39-.1.6s.04.41.1.6l-4.72 2.95C3.01 13.21 2.53 13 2 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2c0-.21-.04-.41-.1-.6l4.73-2.96c.24.23.54.4.87.48v4.14C8.64 16.29 8 17.07 8 18c0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93v-4.14c.33-.09.63-.26.87-.48l4.73 2.96c-.06.18-.1.38-.1.59 0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2z"],"layout-balloon":["M18 16c-.14 0-.28.02-.42.05l-1.73-3.45c.69-.45 1.14-1.22 1.14-2.1s-.46-1.65-1.14-2.1l1.73-3.45c.14.03.28.05.42.05 1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2c0 .6.27 1.13.69 1.5l-1.77 3.54c-.14-.02-.28-.04-.42-.04a2.5 2.5 0 00-2.45 2h-4.1A2.5 2.5 0 005.5 8c-.14 0-.28.02-.42.04L3.31 4.5C3.73 4.13 4 3.6 4 3c0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2c.14 0 .28-.02.42-.05L4.14 8.4C3.46 8.85 3 9.62 3 10.5s.46 1.65 1.14 2.1l-1.73 3.45A1.84 1.84 0 002 16c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2c0-.6-.27-1.13-.69-1.5l1.77-3.54c.14.02.28.04.42.04a2.5 2.5 0 002.45-2h4.1a2.5 2.5 0 002.45 2c.14 0 .28-.02.42-.04l1.77 3.54c-.42.37-.69.9-.69 1.5 0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2z"],"layout-circle":["M18.3 8c-.2-.9-.6-1.7-1.1-2.5.2-.3.3-.7.3-1 0-1.1-.9-2-2-2-.4 0-.7.1-1 .3-.8-.5-1.6-.8-2.5-1.1-.1-1-1-1.7-2-1.7S8.2.8 8 1.7c-.9.3-1.7.6-2.5 1.1-.3-.2-.7-.3-1-.3-1.1 0-2 .9-2 2 0 .4.1.7.3 1-.5.8-.8 1.6-1.1 2.5C.8 8.2 0 9 0 10s.8 1.8 1.7 2c.2.9.6 1.7 1.1 2.5-.2.3-.3.7-.3 1 0 1.1.9 2 2 2 .4 0 .7-.1 1-.3.8.5 1.6.8 2.5 1.1.1 1 1 1.7 2 1.7s1.8-.8 2-1.7c.9-.2 1.7-.6 2.5-1.1.3.2.7.3 1 .3 1.1 0 2-.9 2-2 0-.4-.1-.7-.3-1 .5-.8.8-1.6 1.1-2.5 1-.1 1.7-1 1.7-2s-.8-1.8-1.7-2zm-1.8 5.8c-.3-.2-.6-.3-1-.3-1.1 0-2 .9-2 2 0 .4.1.7.3 1-.6.3-1.2.6-1.9.8-.3-.7-1-1.3-1.9-1.3-.8 0-1.6.5-1.9 1.3-.7-.2-1.3-.4-1.9-.8.2-.3.3-.6.3-1 0-1.1-.9-2-2-2-.4 0-.7.1-1 .3-.3-.6-.6-1.2-.8-1.9.8-.3 1.3-1.1 1.3-1.9s-.5-1.6-1.2-1.8c.2-.7.4-1.3.8-1.9.3.2.6.3 1 .3 1.1 0 2-.9 2-2 0-.4-.1-.7-.3-1 .6-.3 1.2-.6 1.9-.8.2.7 1 1.2 1.8 1.2s1.6-.5 1.9-1.3c.7.2 1.3.4 1.9.8-.2.3-.3.6-.3 1 0 1.1.9 2 2 2 .4 0 .7-.1 1-.3.3.6.6 1.2.8 1.9-.8.3-1.3 1.1-1.3 1.9s.5 1.6 1.2 1.8c-.1.7-.4 1.4-.7 2z"],"layout-grid":["M2 0a2 2 0 100 4 2 2 0 100-4zM10 0a2 2 0 100 4 2 2 0 100-4zM18 0a2 2 0 100 4 2 2 0 100-4zM18 8a2 2 0 100 4 2 2 0 100-4zM18 16a2 2 0 100 4 2 2 0 100-4zM10 16a2 2 0 100 4 2 2 0 100-4zM2 16a2 2 0 100 4 2 2 0 100-4zM2 8a2 2 0 100 4 2 2 0 100-4zM10 8a2 2 0 100 4 2 2 0 100-4z"],"layout-group-by":["M2 2a2 2 0 100 4 2 2 0 100-4zM18 0a2 2 0 100 4 2 2 0 100-4zM18 8a2 2 0 100 4 2 2 0 100-4zM18 16a2 2 0 100 4 2 2 0 100-4zM2 14a2 2 0 100 4 2 2 0 100-4zM2 8a2 2 0 100 4 2 2 0 100-4zM13 12a2 2 0 100 4 2 2 0 100-4zM13 4a2 2 0 100 4 2 2 0 100-4z"],"layout-hierarchy":["M18.5 16.07v-4.14c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2-.93 0-1.71.64-1.93 1.5h-4.14c-.18-.7-.73-1.25-1.43-1.43V3.93c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2S8 .9 8 2c0 .93.64 1.71 1.5 1.93v4.14c-.7.18-1.25.73-1.43 1.43H3.93C3.71 8.64 2.93 8 2 8c-1.1 0-2 .9-2 2 0 .93.64 1.71 1.5 1.93v4.14c-.86.22-1.5 1-1.5 1.93 0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93v-4.14c.7-.18 1.25-.73 1.43-1.43h4.14c.18.7.73 1.25 1.43 1.43v4.14c-.86.22-1.5 1-1.5 1.93 0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93v-4.14c.7-.18 1.25-.73 1.43-1.43h4.14c.18.7.73 1.25 1.43 1.43v4.14c-.86.22-1.5 1-1.5 1.93 0 1.1.9 2 2 2s2-.9 2-2c0-.93-.64-1.71-1.5-1.93z"],"layout-linear":["M16.5 7a2.5 2.5 0 00-2.45 2h-2.1a2.5 2.5 0 00-4.9 0h-2.1a2.5 2.5 0 100 1h2.1a2.5 2.5 0 004.9 0h2.1a2.5 2.5 0 102.45-3z"],"layout-skew-grid":["M2 0a2 2 0 100 4 2 2 0 100-4zM18 0a2 2 0 100 4 2 2 0 100-4zM18 8a2 2 0 100 4 2 2 0 100-4zM18 16a2 2 0 100 4 2 2 0 100-4zM2 16a2 2 0 100 4 2 2 0 100-4zM2 8a2 2 0 100 4 2 2 0 100-4zM10 12a2 2 0 100 4 2 2 0 100-4zM10 4a2 2 0 100 4 2 2 0 100-4z"],"layout-sorted-clusters":["M2 8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM2 0C.9 0 0 .9 0 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm16 8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm-8 4c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],learning:["M10.551 1.127a1.256 1.256 0 00-1.102 0L.456 5.89c-.608.309-.608.913 0 1.222l8.993 4.762c.334.17.767.17 1.102 0l8.992-4.762c.61-.309.61-.913 0-1.222l-8.992-4.762z","M18 6.5l.016 4.514c.002.548.447.99.994.99a.99.99 0 00.99-.99V6.5h-2zM3.366 10.033l6.401 3.358a.5.5 0 00.465 0l6.406-3.358a.25.25 0 01.366.221v5.109a.25.25 0 01-.139.224l-6.64 3.302a.5.5 0 01-.446 0l-6.64-3.302A.25.25 0 013 15.363v-5.108a.25.25 0 01.366-.222z"],"left-join":["M8.7 4.7C7.4 6 6.5 7.9 6.5 10s.8 4 2.2 5.3c-.8.5-1.7.7-2.7.7-3.3 0-6-2.7-6-6s2.7-6 6-6c1 0 1.9.2 2.7.7zM14 4c3.3 0 6 2.7 6 6s-2.7 6-6 6c-1 0-1.9-.2-2.7-.7 1.3-1.3 2.2-3.2 2.2-5.3s-.8-3.9-2.2-5.3C12.1 4.2 13 4 14 4zm.6 2.05c.55 1.2.86 2.54.86 3.95s-.31 2.75-.86 3.95c1.9-.31 3.36-1.96 3.36-3.95S16.5 6.36 14.6 6.05zM10 5.5C8.8 6.7 8 8.2 8 10s.8 3.3 2 4.4c1.2-1.1 2-2.7 2-4.5s-.8-3.3-2-4.4z"],"less-than":["M7.162 10l9.154 3.052a1 1 0 01-.632 1.897l-12-4c-.912-.304-.912-1.594 0-1.897l12-4a1 1 0 01.632 1.897L7.162 10z"],"less-than-or-equal-to":["M16.316 11.051L7.162 8l9.154-3.051a1 1 0 10-.632-1.898l-12 4c-.912.304-.912 1.594 0 1.898l12 4a1 1 0 10.632-1.898zM16 15H4a1 1 0 100 2h12a1 1 0 100-2z"],lifesaver:["M8.143 14.644L7.028 17.43c.919.368 1.922.57 2.972.57s2.053-.202 2.972-.57l-1.115-2.786A4.986 4.986 0 0110 15a4.986 4.986 0 01-1.857-.356zm-2.787-2.787A4.986 4.986 0 015 10c0-.656.126-1.283.356-1.857L2.57 7.028A7.978 7.978 0 002 10c0 1.05.202 2.053.57 2.972l2.786-1.115zm2.787-6.5A4.986 4.986 0 0110 5c.656 0 1.283.126 1.857.356l1.115-2.786A7.978 7.978 0 0010 2c-1.05 0-2.053.202-2.972.57l1.115 2.786zm6.5 2.786c.23.574.357 1.2.357 1.857 0 .656-.126 1.283-.356 1.857l2.786 1.115c.368-.919.57-1.922.57-2.972s-.202-2.053-.57-2.972l-2.786 1.115zM10 13a3 3 0 100-6 3 3 0 000 6zm0 7C4.477 20 0 15.523 0 10S4.477 0 10 0s10 4.477 10 10-4.477 10-10 10z"],lightbulb:["M6.33 13.39c0 .34.27.61.6.61h6.13c.33 0 .6-.27.6-.61C14.03 9.78 16 9.4 16 6.09 16 2.72 13.31 0 10 0S4 2.72 4 6.09c0 3.31 1.97 3.69 2.33 7.3zM13 15H7c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1zm-1 3H8c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1z"],link:["M10.85 11.98l-4.44 4.44-1 1c-.36.36-.86.58-1.41.58-1.1 0-2-.9-2-2 0-.55.22-1.05.59-1.41l5.44-5.44C7.69 9.06 7.36 9 7 9c-1.11 0-2.09.46-2.82 1.18l-.01-.01-3 3 .01.01C.46 13.91 0 14.89 0 16c0 2.21 1.79 4 4 4 1.11 0 2.09-.46 2.82-1.18l.01.01 3-3-.01-.01C10.54 15.09 11 14.11 11 13c0-.36-.06-.69-.15-1.02zM20 4c0-2.21-1.79-4-4-4-1.11 0-2.09.46-2.82 1.18l-.01-.01-3 3 .01.01C9.46 4.91 9 5.89 9 7c0 .36.06.69.15 1.02l4.44-4.44 1-1c.36-.36.86-.58 1.41-.58 1.1 0 2 .9 2 2 0 .55-.22 1.05-.59 1.41l-5.44 5.44c.34.09.67.15 1.03.15 1.11 0 2.09-.46 2.82-1.18l.01.01 3-3-.01-.01C19.54 6.09 20 5.11 20 4zM5 14a1.003 1.003 0 001.71.71l8-8a1.003 1.003 0 00-1.42-1.42l-2 2-2 2-2 2-2 2c-.18.18-.29.43-.29.71z"],list:["M1.03 1C.46 1 0 1.46 0 2.03v.95C0 3.54.46 4 1.03 4h17.95C19.54 4 20 3.54 20 2.97v-.94C20 1.46 19.54 1 18.97 1H1.03zM0 17.97C0 18.54.46 19 1.03 19h17.95c.56 0 1.03-.46 1.03-1.03v-.95c0-.56-.46-1.03-1.03-1.03H1.03C.46 16 0 16.46 0 17.03v.94zM0 12.97C0 13.54.46 14 1.03 14h17.95c.56 0 1.03-.46 1.03-1.03v-.95c0-.56-.46-1.03-1.03-1.03H1.03C.46 11 0 11.46 0 12.03v.94zM0 7.97C0 8.54.46 9 1.03 9h17.95C19.54 9 20 8.54 20 7.97v-.94C20 6.46 19.54 6 18.97 6H1.03C.46 6 0 6.46 0 7.03v.94z"],"list-columns":["M0 2.973v-.936C0 1.468.46 1.01 1.029 1H7.97C8.541 1 9 1.468 9 2.027v.946C9 3.542 8.53 4 7.971 4H1.03C.459 4 0 3.542 0 2.973zm0 5v-.936C0 6.468.46 6.01 1.029 6H7.97C8.541 6 9 6.468 9 7.027v.946C9 8.542 8.53 9 7.971 9H1.03C.459 9 0 8.542 0 7.973zm0 5v-.936C0 11.468.46 11.01 1.029 11H7.97C8.541 11 9 11.468 9 12.027v.946C9 13.542 8.53 14 7.971 14H1.03C.459 14 0 13.542 0 12.973zm0 5v-.936C0 16.468.46 16.01 1.029 16H7.97C8.541 16 9 16.468 9 17.027v.946C9 18.542 8.53 19 7.971 19H1.03C.459 19 0 18.542 0 17.973zm11-15v-.936c0-.569.46-1.027 1.029-1.037h6.942C19.541 1 20 1.468 20 2.027v.946C20 3.542 19.53 4 18.971 4H12.03C11.459 4 11 3.542 11 2.973zm0 5v-.936c0-.569.46-1.027 1.029-1.037h6.942C19.541 6 20 6.468 20 7.027v.946C20 8.542 19.53 9 18.971 9H12.03C11.459 9 11 8.542 11 7.973zm0 5v-.936c0-.569.46-1.027 1.029-1.037h6.942c.57 0 1.029.468 1.029 1.027v.946c0 .569-.47 1.027-1.029 1.027H12.03c-.57 0-1.029-.458-1.029-1.027zm0 5v-.936c0-.569.46-1.027 1.029-1.037h6.942c.57 0 1.029.468 1.029 1.027v.946c0 .569-.47 1.027-1.029 1.027H12.03c-.57 0-1.029-.458-1.029-1.027z"],"list-detail-view":["M8 6H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1zm0 5H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm0 5H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zM8 1H1c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zm11 0h-7c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1z"],locate:["M10 8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm9 1h-1.07c-.45-3.61-3.32-6.45-6.93-6.91V1c0-.55-.45-1-1-1S9 .45 9 1v1.09C5.39 2.55 2.52 5.39 2.07 9H1c-.55 0-1 .45-1 1s.45 1 1 1h1.07c.45 3.61 3.32 6.45 6.93 6.91V19c0 .55.45 1 1 1s1-.45 1-1v-1.09c3.61-.46 6.48-3.29 6.93-6.91H19c.55 0 1-.45 1-1s-.45-1-1-1zm-4 2h.9a5.98 5.98 0 01-4.9 4.91V15c0-.55-.45-1-1-1s-1 .45-1 1v.91A5.98 5.98 0 014.1 11H5c.55 0 1-.45 1-1s-.45-1-1-1h-.9A5.98 5.98 0 019 4.09V5c0 .55.45 1 1 1s1-.45 1-1v-.91A5.98 5.98 0 0115.9 9H15c-.55 0-1 .45-1 1s.45 1 1 1z"],lock:["M15.93 9H14V4.99c0-2.21-1.79-4-4-4s-4 1.79-4 4V9H3.93c-.55 0-.93.44-.93.99v8c0 .55.38 1.01.93 1.01h12c.55 0 1.07-.46 1.07-1.01v-8c0-.55-.52-.99-1.07-.99zM8 9V4.99c0-1.1.9-2 2-2s2 .9 2 2V9H8z"],"log-in":["M19 0h-8c-.55 0-1 .45-1 1s.45 1 1 1h7v16h-7c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-4 10c0-.28-.11-.53-.29-.71l-5-5a1.003 1.003 0 00-1.42 1.42L11.59 9H1c-.55 0-1 .45-1 1s.45 1 1 1h10.59L8.3 14.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l5-5c.18-.18.29-.43.29-.71z"],"log-out":["M19.71 9.29l-5-5a1.003 1.003 0 00-1.42 1.42L16.59 9H6c-.55 0-1 .45-1 1s.45 1 1 1h10.59l-3.29 3.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l5-5c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zM9 18H2V2h7c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1z"],manual:["M20 1.1a.976.976 0 00-.83-.88C15.15-.43 12.07.34 10 2.5 7.93.34 4.85-.43.84.22.37.3.03.67 0 1.1v15.01c0 .07 0 .14.01.21.09.52.61.88 1.15.79 3.85-.62 6.4.16 8 2.46.02.02.03.04.05.07.02.02.04.04.06.07l.01.01a1.07 1.07 0 00.28.19c.01 0 .01.01.02.01.03.01.07.03.1.04.01 0 .02.01.04.01.03.01.07.02.1.02.01 0 .02 0 .04.01H10c.04 0 .09 0 .13-.01.01 0 .03 0 .04-.01.03-.01.06-.01.1-.02.01 0 .03-.01.04-.01.03-.01.07-.02.1-.04.01 0 .02-.01.03-.01.07-.03.13-.07.19-.11.01 0 .01-.01.02-.01.02-.02.04-.03.06-.05.01-.01.02-.02.03-.02l.05-.05c.01-.01.02-.02.02-.03.01-.02.02-.03.04-.05 1.61-2.3 4.15-3.09 8-2.46.54.09 1.06-.26 1.15-.79-.01-.05 0-.09 0-.13V1.1zM9 16.63c-1.78-1.31-4.12-1.83-7-1.55V2c3.26-.37 5.51.39 7 2.35v12.28zm9-1.56c-2.88-.28-5.22.24-7 1.55V4.34c1.49-1.96 3.74-2.71 7-2.35v13.08z"],"manually-entered-data":["M1 12h4.34l2-2H1c-.55 0-1 .45-1 1s.45 1 1 1zm16.77-3.94l1.65-1.65c.36-.36.58-.86.58-1.41 0-1.1-.9-2-2-2-.55 0-1.05.22-1.41.59l-1.65 1.65 2.83 2.82zM1 4h12.34l2-2H1c-.55 0-1 .45-1 1s.45 1 1 1zM0 15c0 .55.45 1 1 1h.34l2-2H1c-.55 0-1 .45-1 1zm1-7h8.34l2-2H1c-.55 0-1 .45-1 1s.45 1 1 1zm18 2h-.34l-2 2H19c.55 0 1-.45 1-1s-.45-1-1-1zm0 4h-4.34l-2 2H19c.55 0 1-.45 1-1s-.45-1-1-1zM4 19l4.41-1.59-2.81-2.79L4 19zM14.23 5.94l-7.65 7.65 2.83 2.83 7.65-7.65-2.83-2.83z"],map:["M19.54 4.18l.01-.02-6-4-.01.02C13.39.08 13.21 0 13 0s-.39.08-.54.18l-.01-.02L7 3.8 1.55.17l-.01.01A.969.969 0 001 0C.45 0 0 .45 0 1v14c0 .35.19.64.46.82l-.01.02 6 4 .01-.02c.15.1.33.18.54.18s.39-.08.54-.18l.01.02L13 16.2l5.45 3.63.01-.02c.15.11.33.19.54.19.55 0 1-.45 1-1V5c0-.35-.19-.64-.46-.82zM6 17.13l-4-2.67V2.87l4 2.67v11.59zm6-2.67l-4 2.67V5.54l4-2.67v11.59zm6 2.67l-4-2.67V2.87l4 2.67v11.59z"],"map-create":["M18 9.22v7.91l-4-2.67V9.22c-.61-.55-1-1.33-1-2.22-.35 0-.69-.07-1-.18v7.65l-4 2.67V5.54l2.02-1.35c0-.06-.02-.13-.02-.19 0-1.66 1.34-3 3-3 0-.34.07-.66.17-.97C13.12.02 13.06 0 13 0c-.21 0-.39.08-.54.18l-.01-.02L7 3.8 1.55.17l-.01.01A.969.969 0 001 0C.45 0 0 .45 0 1v14c0 .35.19.64.46.82l-.01.02 6 4 .01-.02c.15.1.33.18.54.18s.39-.08.54-.18l.01.02L13 16.2l5.45 3.63.01-.02c.15.11.33.19.54.19.55 0 1-.45 1-1V6.82c-.31.11-.65.18-1 .18 0 .89-.39 1.67-1 2.22zM6 17.13l-4-2.67V2.87l4 2.67v11.59zM12 4c0 .55.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V5h2c.55 0 1-.45 1-1s-.45-1-1-1h-2V1c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1z"],"map-marker":["M9.98 0c-3.87 0-7 2.98-7 6.67 0 3.68 7 13.33 7 13.33s7-9.65 7-13.33c0-3.68-3.14-6.67-7-6.67zm0 10c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3z"],maximize:["M19 0h-5c-.55 0-1 .45-1 1s.45 1 1 1h2.59L11.3 7.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L18 3.41V6c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zM8 11c-.28 0-.53.11-.71.29L2 16.59V14c0-.55-.45-1-1-1s-1 .45-1 1v5c0 .55.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1H3.41l5.29-5.29c.19-.18.3-.43.3-.71 0-.55-.45-1-1-1z"],media:["M15 9c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm4-7H1c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-1 13l-6-5-2 2-4-5-4 8V4h16v11z"],menu:["M1 6h18c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1s.45 1 1 1zm18 3H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm0 5H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],"menu-closed":["M8 6h11c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zM4 6c-.28 0-.53.11-.71.29l-3 3C.11 9.47 0 9.72 0 10c0 .28.11.53.29.71l3 3A1.003 1.003 0 005 13V7c0-.55-.45-1-1-1zm15 8H8c-.55 0-1 .45-1 1s.45 1 1 1h11c.55 0 1-.45 1-1s-.45-1-1-1zm0-5H8c-.55 0-1 .45-1 1s.45 1 1 1h11c.55 0 1-.45 1-1s-.45-1-1-1z"],"menu-open":["M12 9H1c-.55 0-1 .45-1 1s.45 1 1 1h11c.55 0 1-.45 1-1s-.45-1-1-1zm0 5H1c-.55 0-1 .45-1 1s.45 1 1 1h11c.55 0 1-.45 1-1s-.45-1-1-1zm0-10H1c-.55 0-1 .45-1 1s.45 1 1 1h11c.55 0 1-.45 1-1s-.45-1-1-1zm7.71 5.29l-3-3A1.003 1.003 0 0015 7v6a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],"merge-columns":["M6.71 6.29a1.003 1.003 0 00-1.42 1.42L6.59 9H2V2h5v2.18c.42.15.8.39 1.11.7l.01-.01.88.89V1c0-.55-.45-1-1-1H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-4.76l-.88.88-.01-.01c-.31.31-.69.56-1.11.71V18H2v-7h4.59L5.3 12.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-3-3zM19 0h-7c-.55 0-1 .45-1 1v4.76l.88-.88.01.01c.31-.31.69-.55 1.11-.7V2h5v7h-4.59l1.29-1.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L13.41 11H18v7h-5v-2.18c-.42-.15-.8-.39-1.11-.7l-.01.01-.88-.89V19c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],"merge-links":["M10 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm8-5c-.93 0-1.71.64-1.93 1.5H14V4c0-2.21-1.79-4-4-4S6 1.79 6 4v5.5H3.93C3.71 8.64 2.93 8 2 8c-1.1 0-2 .9-2 2s.9 2 2 2c.93 0 1.71-.64 1.93-1.5H6V16c0 2.21 1.79 4 4 4s4-1.79 4-4v-5.5h2.07c.22.86 1 1.5 1.93 1.5 1.1 0 2-.9 2-2s-.9-2-2-2zm-5 8c0 1.66-1.34 3-3 3s-3-1.34-3-3V4c0-1.66 1.34-3 3-3s3 1.34 3 3v12zM10 3c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],minimize:["M8 11H3c-.55 0-1 .45-1 1s.45 1 1 1h2.59L.3 18.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L7 14.41V17c0 .55.45 1 1 1s1-.45 1-1v-5c0-.55-.45-1-1-1zM20 1a1.003 1.003 0 00-1.71-.71L13 5.59V3c0-.55-.45-1-1-1s-1 .45-1 1v5c0 .55.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1h-2.59l5.29-5.29c.19-.18.3-.43.3-.71z"],minus:["M16 9H4c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1z"],"mobile-phone":["M15 0H5c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h10c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-5 19c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm4-3H6V3h8v13z"],"mobile-video":["M19 5c-.28 0-.53.11-.71.29L15 8.59V5c0-.55-.45-1-1-1H1c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h13c.55 0 1-.45 1-1v-3.59l3.29 3.29c.18.19.43.3.71.3.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z"],modal:["M19 1a1 1 0 011 1v16a1 1 0 01-1 1H1a1 1 0 01-1-1V2a1 1 0 011-1h18zm-1 4H2v12h16V5zm-3-3h-2v2h2V2zm3 0h-2v2h2V2z"],"modal-filled":["M20 5v13a1 1 0 01-1 1H1a1 1 0 01-1-1V5h20zm-3-4h2a1 1 0 011 1v1h-3V1zm-2 2H0V2a1 1 0 011-1h14v2z"],moon:["M19 14.15A9.94 9.94 0 019.94 20C4.45 20 0 15.55 0 10.06 0 6.03 2.4 2.56 5.85 1a9.811 9.811 0 00-.88 4.09c0 5.49 4.45 9.94 9.94 9.94 1.46 0 2.84-.31 4.09-.88z"],more:["M3.5 8a2.5 2.5 0 100 5 2.5 2.5 0 100-5zM17.5 8a2.5 2.5 0 100 5 2.5 2.5 0 100-5zM10.5 8a2.5 2.5 0 100 5 2.5 2.5 0 100-5z"],mountain:["M20 16H4l7-11h1l2 2h1l5 9zm-4-5l-1.5-3h-1l-1-1-1-1L8 11.5l3-1.5 1 1 1-1 3 1zM8.055 8L2.79 16H0l7-8h1.055z"],move:["M19.71 9.29l-3-3a1.003 1.003 0 00-1.42 1.42L16.59 9H11V3.41l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3C10.53.11 10.28 0 10 0s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42L9 3.41V9H3.41L4.7 7.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3C.11 9.47 0 9.72 0 10c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L3.41 11H9v5.59L7.71 15.3A.965.965 0 007 15a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3a1.003 1.003 0 00-1.42-1.42L11 16.59V11h5.59l-1.29 1.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z"],mugshot:["M19 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18h-.07c-.05-.2-.12-.42-.22-.67-.46-1.05-2.68-1.75-4.16-2.4-1.48-.65-1.28-1.05-1.33-1.59-.01-.07-.01-.15-.01-.23.51-.45.92-1.07 1.19-1.78 0 0 .01-.04.02-.05.06-.15.11-.32.15-.48.34-.07.54-.44.61-.78.08-.14.23-.48.2-.87-.05-.5-.25-.73-.47-.82v-.09c0-.63-.06-1.55-.17-2.15-.02-.17-.06-.33-.11-.5a3.67 3.67 0 00-1.29-1.86C11.7 3.25 10.81 3 10.02 3s-1.68.25-2.31.73c-.61.47-1.07 1.13-1.29 1.86-.05.16-.09.33-.11.5-.12.6-.17 1.51-.17 2.14v.08c-.24.09-.44.32-.49.83-.04.39.12.73.2.87.08.35.28.72.63.78.04.17.09.33.15.48 0 .01.01.02.01.03l.01.01c.27.72.7 1.35 1.22 1.8 0 .07-.01.14-.01.21-.05.54.1.94-1.38 1.59-1.48.65-3.7 1.35-4.16 2.4-.12.27-.18.49-.23.69H2V2h16v16z"],"multi-select":["M19 3H7c-.55 0-1 .45-1 1v1h12v6h1c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zm-6 6H1c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1zm-1 6H2v-4h10v4zm4-9H4c-.55 0-1 .45-1 1v1h12v6h1c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1z"],music:["M19 0c-.08 0-.16.03-.24.05V.03l-12 3v.02C6.33 3.16 6 3.53 6 4v11.35c-.59-.22-1.27-.35-2-.35-2.21 0-4 1.12-4 2.5S1.79 20 4 20c1.94 0 3.55-.86 3.92-2H8V7.78l10-2.5v7.07c-.59-.22-1.27-.35-2-.35-2.21 0-4 1.12-4 2.5s1.79 2.5 4 2.5c1.94 0 3.55-.86 3.92-2H20V1c0-.55-.45-1-1-1z"],"new-drawing":["M18.7 13.7c.5 0 1 .4 1 1 0 .257-.073.44-.22.614l-.08.086-4 4c-.2.2-.4.3-.7.3-.6 0-1-.5-1-1 0-.257.073-.44.22-.614L14 18l4-4c.2-.2.4-.3.7-.3zM1.8 0l8.378 2.982A3.003 3.003 0 0013 7a3.003 3.003 0 003.877 2.87l.723 2.53.049.06a.41.41 0 01.051.24c0 .167-.07.403-.208.593l-.092.107-4 4c-.2.2-.4.3-.7.3-.075 0-.15-.056-.225-.084L12.4 17.6l-7-2-.112-.042c-.223-.094-.431-.244-.542-.45L4.7 15 0 1.8l.5-.6L7 7.7c-.2.3-.3.6-.3 1 0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2a1.68 1.68 0 00-.871.22L7.7 7 1.2.5l.6-.5zM16 0c.55 0 1 .45 1 1v2h2c.55 0 1 .45 1 1s-.45 1-1 1h-2v2c0 .432-.278.803-.664.941l-.01.004A.989.989 0 0116 8c-.55 0-1-.45-1-1V5h-2c-.55 0-1-.45-1-1l.007-.116C12.065 3.388 12.489 3 13 3h2V1c0-.55.45-1 1-1z"],"new-grid-item":["M8 0H1C.45 0 0 .45 0 1v7c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm0 11H1c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h7c.55 0 1-.45 1-1v-7c0-.55-.45-1-1-1zm6 7h-1v-1c0-.55-.45-1-1-1s-1 .45-1 1v2c0 .55.45 1 1 1h2c.55 0 1-.45 1-1s-.45-1-1-1zm5-7h-2c-.55 0-1 .45-1 1s.45 1 1 1h1v1c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1zm0-11h-7c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-5 11h-2c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1s1-.45 1-1v-1h1c.55 0 1-.45 1-1s-.45-1-1-1zm5 5c-.55 0-1 .45-1 1v1h-1c-.55 0-1 .45-1 1s.45 1 1 1h2c.55 0 1-.45 1-1v-2c0-.55-.45-1-1-1z"],"new-layer":["M11.513 2.663A2 2 0 0013 6h1v1a2 2 0 104 0v-.733l1.5.833c.3.2.5.5.5.9s-.2.7-.5.9l-9 5c-.2.1-.3.1-.5.1s-.3 0-.5-.1l-9-5C.2 8.7 0 8.4 0 8s.2-.7.5-.9l9-5c.2-.1.3-.1.5-.1s.3 0 .5.1l1.013.563zM17 3h2a1 1 0 010 2h-2v2a1 1 0 01-2 0V5h-2a1 1 0 010-2h2V1a1 1 0 012 0v2z"],"new-layers":["M17 3h2a1 1 0 010 2h-2v2a1 1 0 01-2 0V5h-2a1 1 0 010-2h2V1a1 1 0 012 0v2zm-1.252 5.984L10.5 11.9c-.2.1-.3.1-.5.1s-.3 0-.5-.1l-9-5C.2 6.7 0 6.4 0 6s.2-.7.5-.9l9-5c.2-.1.3-.1.5-.1s.3 0 .5.1L13.92 2H13a2 2 0 100 4h1v1a2 2 0 001.748 1.984zm2.07-1.15C17.935 7.58 18 7.298 18 7V6h1c.353 0 .684-.091.972-.251.018.078.028.162.028.251 0 .4-.2.7-.5.9l-1.682.934zM19 9c.6 0 1 .4 1 1 0 .4-.2.7-.5.9l-9 5c-.2.1-.3.1-.5.1s-.3 0-.5-.1l-9-5c-.3-.2-.5-.5-.5-.9 0-.6.4-1 1-1 .2 0 .3 0 .5.1l8.5 4.8 8.5-4.8c.2-.1.3-.1.5-.1zm0 4c.6 0 1 .4 1 1 0 .4-.2.7-.5.9l-9 5c-.2.1-.3.1-.5.1s-.3 0-.5-.1l-9-5c-.3-.2-.5-.5-.5-.9 0-.6.4-1 1-1 .2 0 .3 0 .5.2l8.5 4.7 8.5-4.8c.2-.1.3-.1.5-.1z"],"new-link":["M14.5 12a2.5 2.5 0 00-2.45 2h-7.1a2.5 2.5 0 100 1h7.1a2.5 2.5 0 102.45-3zM19 5h-2V3c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V7h2c.55 0 1-.45 1-1s-.45-1-1-1z"],"new-object":["M12 4c0 .6.4 1 1 1h2v2c0 .6.4 1 1 1 .5 0 1-.4 1-1V5h2c.5 0 1-.4 1-1s-.5-1-1-1h-2V1c0-.6-.5-1-1-1-.6 0-1 .4-1 1v2h-2c-.6 0-1 .5-1 1zm7 3c0 1.7-1.3 3-3 3s-3-1.3-3-3c-1.7 0-3-1.3-3-3s1.3-3 3-3c0-.2 0-.4.1-.5-1-.3-2-.5-3.1-.5C4.5 0 0 4.5 0 10s4.5 10 10 10 10-4.5 10-10c0-1.1-.2-2.1-.5-3H19z"],"new-person":["M11.41 15.92c-1.46-.65-1.26-1.05-1.31-1.59-.01-.07-.01-.15-.01-.23.5-.45.91-1.07 1.18-1.78 0 0 .01-.04.02-.05.06-.15.11-.32.15-.48.33-.07.53-.44.6-.78.08-.14.23-.48.2-.87-.05-.5-.24-.73-.47-.82v-.09c0-.63-.06-1.55-.17-2.15-.02-.17-.06-.33-.11-.5-.22-.73-.67-1.4-1.27-1.86C9.58 4.25 8.7 4 7.92 4c-.78 0-1.66.25-2.28.73-.61.47-1.06 1.13-1.27 1.86-.05.16-.08.33-.11.5-.12.6-.18 1.51-.18 2.14v.08c-.23.09-.43.32-.48.83-.04.39.12.73.2.87.08.35.28.72.62.78.04.17.09.33.15.48 0 .01.01.02.01.03l.01.01c.27.72.69 1.35 1.21 1.8 0 .07-.01.14-.01.21-.05.54.1.94-1.36 1.59-1.46.65-3.66 1.35-4.11 2.4C-.14 19.38.04 20 .04 20h15.75s.18-.62-.27-1.67c-.45-1.06-2.65-1.75-4.11-2.41zM18.87 3h-2V1c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V5h2c.55 0 1-.45 1-1s-.45-1-1-1z"],"new-prescription":["M11.95 10.23c.16-.18.22-.22.46-.22h1.48c.25 0 .47.08.59.33.1.2.09.41-.05.66l-2.71 3.58L14.88 19c.13.21.16.46.03.69-.12.21-.34.31-.57.31H12.7c-.31 0-.56-.17-.7-.44l-1.9-2.67-1.93 2.68c-.15.27-.42.43-.73.43H5.98c-.25 0-.47-.08-.59-.33-.1-.2-.09-.41.05-.66l3.09-4.35L4.26 9H3v4.32c0 .41-.3.69-.7.69H.7c-.41 0-.7-.28-.7-.69V.69C0 .28.3 0 .7 0h4.42c.71 0 1.36.1 1.94.3.59.2 1.11.49 1.54.87.44.38.78.84 1.02 1.39.25.54.37 1.13.37 1.77 0 1.01-.28 1.88-.84 2.6-.43.54-1.35 1.29-2 1.59l3.09 3.94 1.71-2.23zM4.71 6.04c.71 0 1.45-.16 1.81-.46.33-.28.5-.69.5-1.25s-.17-.97-.5-1.25c-.35-.3-1.1-.46-1.81-.46h-1.7v3.42h1.7zM19 3c.55 0 1 .45 1 1s-.45 1-1 1h-2v2c0 .55-.45 1-1 1s-1-.45-1-1V5h-2c-.55 0-1-.45-1-1s.45-1 1-1h2V1c0-.55.45-1 1-1s1 .45 1 1v2h2z"],"new-text-box":["M19 3h-2V1c0-.55-.45-1-1-1s-1 .45-1 1v2h-2c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V5h2c.55 0 1-.45 1-1s-.45-1-1-1zM5 7.5v1c0 .28.22.5.5.5s.5-.22.5-.5V8h2v7h-.5c-.28 0-.5.22-.5.5s.22.5.5.5h2c.28 0 .5-.22.5-.5s-.22-.5-.5-.5H9V8h2v.5c0 .28.22.5.5.5s.5-.22.5-.5v-1c0-.28-.22-.5-.5-.5h-6c-.28 0-.5.22-.5.5zM16 9c-.55 0-1 .45-1 1v8H2V5h8c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1v15c0 .55.45 1 1 1h15c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1z"],ninja:["M20 6s-2.98 2.43-6.12 2.19C13.52 5.31 12.05 0 6 0c0 0 2.41 2.99 2.16 6.12C5.27 6.49 0 7.97 0 14c0 0 2.98-2.43 6.11-2.19C6.47 14.69 7.94 20 14 20c0 0-2.42-2.99-2.16-6.13C14.73 13.51 20 12.02 20 6zm-10 6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"],"not-equal-to":["M9.487 7l.532-3.196a1 1 0 011.962.392L11.513 7H16a1 1 0 010 2h-4.82l-.333 2H16a1 1 0 010 2h-5.487l-.532 3.196a1 1 0 01-1.962-.392L8.487 13H4a1 1 0 010-2h4.82l.333-2H4a1 1 0 110-2h5.487z"],notifications:["M10 20c1.1 0 2-.9 2-2H8c0 1.1.9 2 2 2zm7-5c-.55 0-1-.45-1-1V8c0-2.61-1.67-4.81-4-5.63V2c0-1.1-.9-2-2-2S8 .9 8 2v.37C5.67 3.19 4 5.39 4 8v6c0 .55-.45 1-1 1s-1 .45-1 1 .45 1 1 1h14c.55 0 1-.45 1-1s-.45-1-1-1z"],"notifications-snooze":["M10 18c0 1.1-.9 2-2 2s-2-.9-2-2zM8 0c.476 0 .914.168 1.258.448C8.508.878 8.09 1.562 8 2.5c-.133 1.4.4 2.367 1.6 2.9C8.533 6.6 8 7.467 8 8v1.2a2.8 2.8 0 002.8 2.8H14v2c0 .51.388.935.884.993L15 15c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1s.45-1 1-1 1-.45 1-1V8c0-2.61 1.67-4.81 4-5.63V2c0-1.1.9-2 2-2z","M16 9.25v-.395a.75.75 0 00-.75-.75h-2.813L15.834 3.9A.75.75 0 0016 3.43v-.68a.75.75 0 00-.75-.75h-4.5a.75.75 0 00-.75.75v.184c0 .414.336.75.75.75h2.813L10.22 7.831a1 1 0 00-.221.627v.792c0 .414.336.75.75.75h4.5a.75.75 0 00.75-.75z"],"notifications-updated":["M10 20c1.1 0 2-.9 2-2H8c0 1.1.9 2 2 2zm2-17.834A2.994 2.994 0 008 4.99c0 .808.319 1.557.876 2.114l2.97 2.99a2.99 2.99 0 004.154.072V14c0 .55.45 1 1 1s1 .45 1 1-.45 1-1 1H3c-.55 0-1-.45-1-1s.45-1 1-1 1-.45 1-1V8c0-2.61 1.67-4.81 4-5.63V2c0-1.1.9-2 2-2s2 .9 2 2v.166zm1.26 6.514l-2.97-2.99a.973.973 0 01-.29-.7c0-.55.44-1 .99-1 .27 0 .52.11.7.29l2.28 2.28 4.27-4.27a.99.99 0 01.7-.29c.55 0 1 .45 1 1 0 .28-.11.53-.3.7l-4.98 4.98a.99.99 0 01-1.4 0z"],"numbered-list":["M1.74 9.01h1.27V1h-.95c-.04.24-.12.45-.26.62-.13.17-.29.3-.47.41-.19.11-.4.18-.63.23-.23.04-.46.07-.71.07v1.03h1.75v5.65zm.43 7.93c.18-.14.37-.28.58-.43.21-.14.42-.29.63-.45.21-.16.41-.33.61-.5.2-.18.37-.38.52-.59.15-.21.28-.45.37-.7.09-.25.14-.54.14-.85 0-.25-.04-.52-.12-.8-.08-.28-.21-.54-.39-.78-.19-.24-.43-.44-.73-.59-.3-.17-.68-.25-1.12-.25-.41 0-.77.08-1.08.23-.32.16-.58.37-.8.64-.22.27-.38.59-.49.96-.11.37-.16.77-.16 1.21h1.19c.01-.28.03-.53.08-.77s.12-.45.21-.62c.09-.18.22-.31.38-.42.16-.1.35-.15.59-.15.26 0 .47.05.63.14.16.09.29.21.38.35.09.14.15.29.18.45.03.16.05.31.05.45-.01.31-.08.58-.22.81-.14.24-.32.45-.53.66-.22.2-.45.39-.71.57-.26.18-.51.36-.74.54-.5.36-.89.78-1.17 1.27-.3.47-.45 1.04-.46 1.69H5v-1.14H1.43c.05-.17.14-.33.27-.49.13-.15.29-.3.47-.44zM18 4.02H8c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-1c0-.56-.45-1-1-1zm0 9H8c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-1c0-.56-.45-1-1-1z"],numerical:["M2.39 5.75c-.17.21-.38.39-.63.52s-.52.23-.83.29c-.3.05-.61.08-.93.08v1.24h2.49V15h1.49V4.98H2.73c-.05.31-.17.57-.34.77zm17.2 4.71c-.27-.44-.65-.71-1.14-.82v-.02c.42-.16.72-.43.92-.79.2-.36.29-.79.29-1.27 0-.42-.08-.8-.23-1.12-.15-.33-.36-.59-.62-.8-.26-.21-.55-.37-.87-.48-.32-.11-.65-.16-.98-.16-.43 0-.82.08-1.16.25-.34.16-.63.39-.87.69-.24.29-.43.64-.57 1.04-.14.4-.22.83-.23 1.3h1.39c-.01-.25.02-.49.07-.72.06-.23.14-.44.26-.63s.27-.34.45-.45c.18-.11.39-.17.63-.17.39 0 .71.12.96.37s.37.58.37.99c0 .29-.05.54-.16.74-.11.2-.25.36-.43.47-.18.11-.38.19-.61.24-.23.05-.46.06-.68.05v1.17c.28-.01.55 0 .81.03s.5.1.71.21c.21.11.38.28.51.5.13.22.2.52.2.89 0 .55-.16.97-.47 1.27-.31.3-.7.45-1.17.45-.55 0-.95-.19-1.23-.58-.27-.39-.4-.88-.38-1.46h-1.39c.01.5.08.96.21 1.38.13.41.32.77.57 1.06.25.29.56.52.93.68.37.16.8.24 1.3.24.41 0 .79-.07 1.16-.21.37-.14.69-.33.96-.58.28-.25.5-.56.66-.92a3 3 0 00.24-1.23c0-.64-.14-1.17-.41-1.61zM8.58 12.41c.21-.18.45-.36.7-.53.25-.18.5-.36.75-.56.25-.2.49-.41.73-.63.23-.22.44-.47.63-.74.18-.27.33-.56.44-.88.11-.32.16-.67.16-1.07 0-.32-.05-.65-.14-1-.09-.35-.25-.68-.47-.97-.22-.3-.51-.55-.87-.74-.36-.2-.81-.29-1.35-.29-.49 0-.93.1-1.3.29-.37.18-.69.44-.95.78-.26.33-.45.73-.58 1.2-.13.46-.2.96-.2 1.5h1.43c.01-.35.04-.67.09-.97.05-.3.14-.56.25-.78.11-.22.26-.39.45-.52s.43-.19.71-.19c.31 0 .56.06.75.18.19.12.34.26.45.43.11.17.18.36.22.56.04.2.06.39.06.57-.01.38-.1.72-.26 1.02-.15.3-.37.57-.63.83-.26.25-.54.49-.85.71-.31.22-.61.45-.89.68-.6.45-1.06.98-1.41 1.58-.35.61-.52 1.32-.53 2.13h6.01v-1.43H7.69c.06-.21.17-.42.33-.61s.34-.38.56-.55z"],office:["M19 6h-5V1c0-.55-.45-1-1-1H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h4v-6h4v6h10c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1zM6 12H2V8h4v4zm0-6H2V2h4v4zm6 6H8V8h4v4zm0-6H8V2h4v4zm6 11h-4v-3h4v3zm0-5h-4V8h4v4z"],offline:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zM7 18l2-7H5l8-9-2 7h4l-8 9z"],"oil-field":["M19 17.99h-1.36l-4.35-9.57 2.91-.86 1.66 4.1c.11.27.43.4.72.31.12-.04.22-.11.28-.2.06-.11 1.47-2.08 1.05-5.6C19.79 5.12 19.3 0 16.01 0 14.89.01 13.99.83 14 1.84c0 .19.04.38.1.56l1.34 3.31L.72 10.03v.02c-.41.12-.72.49-.72.94 0 .55.45 1 1 1 .1 0 .19-.03.28-.06v.02l2-.59 1.47 6.63H3c-.55 0-1 .45-1 1s.45 1 1 1h16c.55 0 1-.45 1-1s-.45-1-1-1zM5.2 10.8l3.95-1.16-2.83 6.22L5.2 10.8zm2.35 7.19l3.95-8.68 3.95 8.68h-7.9z"],"one-column":["M14.94 0h-4c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-8 6c-.28 0-.53.11-.71.29l-3 3c-.18.18-.29.43-.29.71s.11.53.29.71l3 3A1.003 1.003 0 007.94 13V7c0-.55-.45-1-1-1z"],outdated:["M10 0c5.52 0 10 4.48 10 10s-4.48 10-10 10S0 15.52 0 10c0-.55.45-1 1-1s1 .45 1 1c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8C7.47 2 5.22 3.17 3.76 5H5c.55 0 1 .45 1 1s-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1s1 .45 1 1v2.05C3.82 1.6 6.71 0 10 0zm1 16H9v-2h2v2zm0-3H9V4h2v9z"],"page-layout":["M19 1H1c-.55 0-1 .45-1 1v16c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zM7 17H2V8h5v9zm11 0H8V8h10v9zm0-10H2V3h16v4z"],"panel-stats":["M1 1h18a1 1 0 011 1v15a1 1 0 01-1 1H1a1 1 0 01-1-1V2a1 1 0 011-1zm1 2v13h16V3H2zm9 0h1v13h-1V3zm2 7h3.952v1H13v-1zm0 2h3.952v1H13v-1zm0 2h3.952v1H13v-1zm0-6h3.952v1H13V8zm0-2h3.952v1H13V6zm0-2h3.952v1H13V4z"],"panel-table":["M19 1H1c-.6 0-1 .4-1 1v15c0 .6.4 1 1 1h18c.6 0 1-.4 1-1V2c0-.6-.4-1-1-1zm-9 11H7V9h3v3zm0-4H7V5h3v3zm-8 8V3h4v13H2zm5 0v-3h3v3H7zm11 0h-7v-3h7v3zm0-4h-7V9h7v3zm0-4h-7V5h7v3z"],paperclip:["M18.35 2.67A5.664 5.664 0 0014.33 1c-1.44 0-2.89.56-3.99 1.67l-9.16 9.27C.4 12.73 0 13.78 0 14.83s.39 2.1 1.18 2.9c.78.79 1.82 1.18 2.85 1.18 1.04 0 2.07-.39 2.87-1.2l9.14-9.27c.96-.96.96-2.5.02-3.45-.94-.95-2.49-.96-3.44 0l-7.59 7.69c-.31.32-.3.83.01 1.14.31.31.81.31 1.13.02l7.59-7.69c.31-.31.84-.31 1.13-.02.31.31.31.85 0 1.16l-9.14 9.27c-.93.95-2.54.93-3.45.02-.94-.95-.92-2.55.02-3.49l9.16-9.25c1.55-1.56 4.18-1.59 5.72-.03 1.56 1.57 1.55 4.26 0 5.82l-8.89 9.02c-.3.31-.3.81.01 1.11.3.3.79.31 1.1.01v.01l8.91-9.02A5.645 5.645 0 0020 6.73c0-1.48-.55-2.94-1.65-4.06z"],paragraph:["M16.5 1H7C4.2 1 2 3.2 2 6s2.2 5 5 5v6.5c0 .8.7 1.5 1.5 1.5s1.5-.7 1.5-1.5V4h2v13.5c0 .8.7 1.5 1.5 1.5s1.5-.7 1.5-1.5V4h1.5c.8 0 1.5-.7 1.5-1.5S17.3 1 16.5 1z"],path:["M18 0H2C.9 0 0 .9 0 2s.9 2 2 2h7v4H4c-1.1 0-2 .9-2 2s.9 2 2 2h5v4H6c-1.1 0-2 .9-2 2s.9 2 2 2h8c1.1 0 2-.9 2-2s-.9-2-2-2h-3v-4h5c1.1 0 2-.9 2-2s-.9-2-2-2h-5V4h7c1.1 0 2-.9 2-2s-.9-2-2-2z"],"path-search":["M4 7c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm15 11.69l-5-2.5v-3.63c-.32.11-.66.22-1 .29v3.32l-6 2.57v-7.25c-.36-.27-.69-.57-1-.9v8.1l-5-2.5V10c.55 0 1-.45 1-1s-.45-1-1-1V1.31l3.43 1.71c.11-.31.24-.62.39-.92L.72.05A.545.545 0 00.5 0C.22 0 0 .22 0 .5v16c0 .2.12.36.28.44l6 3c.07.04.14.06.22.06.07 0 .14-.01.2-.04l6.79-2.91 5.79 2.9c.07.03.14.05.22.05.28 0 .5-.22.5-.5v-4.21c-.31.13-.64.21-1 .21v3.19zM10 5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm3-1c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1zm6.72-.94l-1.43-.72c.2.43.36.89.48 1.36l.23.11V5.5c-.55 0-1 .45-1 1s.45 1 1 1v1.96l1 1V3.5c0-.2-.12-.36-.28-.44zm-3.69 5.56c.14-.21.27-.42.38-.65.02-.04.04-.07.05-.11.11-.22.2-.45.28-.69v-.01c.07-.24.13-.48.17-.73l.03-.17c.04-.25.06-.5.06-.76C17 2.46 14.54 0 11.5 0S6 2.46 6 5.5 8.46 11 11.5 11c.26 0 .51-.02.76-.06l.17-.03c.25-.04.49-.1.73-.17h.01c.24-.08.47-.17.69-.28.04-.02.07-.03.11-.05.23-.11.44-.24.65-.38l.18.18 3.5 3.5c.17.18.42.29.7.29a1.003 1.003 0 00.71-1.71l-3.68-3.67zm-4.53.88c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4z"],pause:["M7 3H4c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1zm9 0h-3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h3c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],people:["M16.94 17a4.92 4.92 0 00-.33-1.06c-.45-.97-1.37-1.52-3.24-2.3-.17-.07-.76-.31-.77-.32-.1-.04-.2-.08-.28-.12.05-.14.04-.29.06-.45 0-.05.01-.11.01-.16-.25-.21-.47-.48-.65-.79.22-.34.41-.71.56-1.12l.04-.11c-.01.02-.01.02-.02.08l.06-.15c.36-.26.6-.67.72-1.13.18-.37.29-.82.25-1.3-.05-.5-.21-.92-.47-1.22-.02-.53-.06-1.11-.12-1.59.38-.17.83-.26 1.24-.26.59 0 1.26.19 1.73.55.46.35.8.85.97 1.4.04.13.07.25.08.38.08.45.13 1.14.13 1.61v.07c.16.07.31.24.35.62.02.29-.09.55-.15.65-.05.26-.2.53-.46.59-.03.12-.07.25-.11.36-.01.01-.01.04-.01.04-.2.53-.51 1-.89 1.34 0 .06 0 .12.01.17.04.41-.11.71 1 1.19 1.1.5 2.77 1.01 3.13 1.79.34.79.2 1.25.2 1.25h-3.04zm-5.42-3.06c1.47.66 3.7 1.35 4.18 2.39.45 1.05.27 1.67.27 1.67H.04s-.19-.62.27-1.67c.46-1.05 2.68-1.75 4.16-2.4 1.48-.65 1.33-1.05 1.38-1.59 0-.07.01-.14.01-.21-.52-.45-.95-1.08-1.22-1.8l-.01-.01c0-.01-.01-.02-.01-.03-.07-.15-.12-.32-.16-.49-.34-.06-.54-.43-.62-.78-.08-.14-.24-.48-.2-.87.05-.51.26-.74.49-.83v-.08c0-.64.05-1.55.17-2.15a3.648 3.648 0 011.4-2.36C6.32 2.25 7.21 2 8 2s1.68.25 2.31.73a3.63 3.63 0 011.4 2.36c.11.6.17 1.52.17 2.15v.09c.22.09.42.32.47.82.03.39-.12.73-.2.87-.07.34-.27.71-.61.78-.04.16-.09.33-.15.48-.01.01-.02.05-.02.05-.27.71-.68 1.33-1.19 1.78 0 .08 0 .16.01.23.05.55-.15.95 1.33 1.6z"],percentage:["M15 10c-1.66 0-3 1.34-3 3v2c0 1.66 1.34 3 3 3s3-1.34 3-3v-2c0-1.66-1.34-3-3-3zm1 5c0 .55-.45 1-1 1s-1-.45-1-1v-2c0-.55.45-1 1-1s1 .45 1 1v2zM8 7V5c0-1.66-1.34-3-3-3S2 3.34 2 5v2c0 1.66 1.34 3 3 3s3-1.34 3-3zM4 7V5c0-.55.45-1 1-1s1 .45 1 1v2c0 .55-.45 1-1 1s-1-.45-1-1zm11-4a1.003 1.003 0 00-1.88-.48L5.14 16.49a1.003 1.003 0 101.74.99l7.99-13.97c.08-.15.13-.32.13-.51z"],person:["M19.61 17.91c-.57-1.32-3.35-2.19-5.19-3.01-1.85-.82-1.59-1.31-1.66-1.99-.01-.09-.01-.19-.02-.29.63-.56 1.15-1.33 1.49-2.22 0 0 .02-.05.02-.06.07-.19.13-.39.19-.6.42-.09.67-.55.76-.98.1-.17.29-.6.25-1.08-.06-.62-.31-.91-.59-1.03v-.11c0-.79-.07-1.93-.22-2.68A4.55 4.55 0 0012.9.92C12.11.32 11 0 10.01 0s-2.1.32-2.89.92a4.55 4.55 0 00-1.74 2.94c-.14.75-.22 1.89-.22 2.68v.1c-.29.11-.55.4-.61 1.04-.04.48.15.91.25 1.08.1.44.35.91.79.98.05.21.12.41.19.6 0 .01.01.03.01.04l.01.02c.34.91.87 1.69 1.52 2.25 0 .09-.01.18-.02.26-.07.68.13 1.17-1.72 1.99S.96 16.59.39 17.91C-.18 19.23.05 20 .05 20h19.9s.23-.77-.34-2.09z"],phone:["M19.91 15.51c-.08-.08-4.21-2.5-4.35-2.57a.876.876 0 00-.4-.1c-.19 0-.42.13-.71.4-.28.27-1.17 1.49-1.43 1.76s-.48.4-.65.4c-.08 0-.19-.02-.32-.07s-1.45-.73-4.2-3.15-3.11-4-3.13-4.44c0-.17.13-.39.4-.65.28-.25.57-.51.89-.74.32-.24.61-.5.88-.78s.4-.52.4-.71c0-.13-.03-.27-.1-.4C7.12 4.32 4.62.19 4.53.1c-.19-.18-.92-.1-1.29.1C.25 1.82 0 4 .05 4.86c.05.89.61 5.58 5.2 9.93 5.7 5.41 9.66 5.2 9.92 5.2.87 0 3.52-.48 4.65-3.19.16-.38.31-1.07.09-1.29z"],"pie-chart":["M9 .98c-4.5.5-8 4.31-8 8.94 0 4.97 4.03 9.04 9 9.04 4.63 0 8.44-3.96 8.94-7.96H9V.98z","M10-.08V10h10C20 4 15.52-.08 10-.08z"],pin:["M11.77 1.16c-.81.81-.74 2.28.02 3.76L6.1 8.71c-2.17-1.46-4.12-2-4.94-1.18l4.95 4.95-4.95 6.36 6.36-4.95 4.95 4.95c.82-.82.27-2.77-1.19-4.94l3.8-5.69c1.47.76 2.94.84 3.76.02l-7.07-7.07z"],pivot:["M5.83 9.75L.29 15.29a1.003 1.003 0 001.42 1.42l5.54-5.54c-.57-.37-1.05-.85-1.42-1.42zM19 11c-.55 0-1 .45-1 1v1.59l-3.83-3.83c-.37.56-.85 1.04-1.41 1.41L16.59 15H15c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1zm-5-4c0-2.21-1.79-4-4-4S6 4.79 6 7s1.79 4 4 4 4-1.79 4-4zm-4 2c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"],"pivot-table":["M3 5H1c-.55 0-1 .45-1 1v13c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm0-5H1C.45 0 0 .45 0 1v2c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm13.71 5.29C16.53 5.11 16.28 5 16 5s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42L15 8.41V11c0 2.21-1.79 4-4 4H8.41l1.29-1.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L8.41 17H11c3.31 0 6-2.69 6-6V8.41l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3zM19 0H6c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],play:["M16 10c0-.36-.2-.67-.49-.84l.01-.01-10-6-.01.01A.991.991 0 005 3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1 .19 0 .36-.07.51-.16l.01.01 10-6-.01-.01c.29-.17.49-.48.49-.84z"],plus:["M16 9h-5V4c0-.55-.45-1-1-1s-1 .45-1 1v5H4c-.55 0-1 .45-1 1s.45 1 1 1h5v5c0 .55.45 1 1 1s1-.45 1-1v-5h5c.55 0 1-.45 1-1s-.45-1-1-1z"],"polygon-filter":["M18 7c-.27 0-.52.05-.75.15l-6.28-4.88c.01-.09.03-.18.03-.27 0-1.1-.9-2-2-2S7 .9 7 2c0 .06.01.12.02.19l-4.19 3C2.57 5.07 2.29 5 2 5 .9 5 0 5.9 0 7c0 .74.4 1.38 1 1.72v7.55c-.6.35-1 .99-1 1.73 0 1.1.9 2 2 2 .74 0 1.38-.4 1.72-1h7.55c.35.6.98 1 1.72 1 1.1 0 2-.9 2-2 0-.37-.11-.72-.29-1.02L18.03 11A2 2 0 0018 7zm-5.03 9c-.72.01-1.35.41-1.69 1H3.72c-.17-.3-.42-.55-.72-.72V8.72c.6-.34 1-.98 1-1.72 0-.06-.01-.12-.02-.19l4.19-3c.26.12.54.19.83.19.27 0 .52-.05.75-.15l6.28 4.88c-.01.09-.03.18-.03.27 0 .37.11.72.29 1.02L12.97 16z"],power:["M10 10c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1S9 .45 9 1v8c0 .55.45 1 1 1zm3-7.45v2.16c2.36 1.12 4 3.5 4 6.29 0 3.87-3.13 7-7 7s-7-3.13-7-7c0-2.79 1.64-5.17 4-6.29V2.55C3.51 3.79 1 7.09 1 11a9 9 0 0018 0c0-3.91-2.51-7.21-6-8.45z"],"predictive-analysis":["M20 8.01c0-1.26-.61-2.43-1.61-3.12C17.86 2.5 15.8.79 13.4.79c-.58 0-1.14.1-1.69.29A3.533 3.533 0 009.17 0C8.05 0 7 .55 6.32 1.45c-.15-.02-.3-.03-.45-.03-1.63 0-3.03 1.12-3.46 2.71C.97 4.65 0 6.05 0 7.66c0 .48.09.95.26 1.4-.17.44-.26.91-.26 1.39 0 1.38.72 2.64 1.89 3.29.67.7 1.59 1.09 2.54 1.09.61 0 1.19-.15 1.71-.45.68.82 1.68 1.3 2.73 1.3.66 0 1.28-.18 1.83-.52.61.49 1.34.81 2.11.91 1.3 1.43 2.3 3.28 2.31 3.3 0 0 .35.61.33.61.96-.01 1.77-.2 1.64-1.3.01.02-.92-2.89-.92-2.89.52-.26.94-.69 1.21-1.23 1.12-.66 1.84-1.91 1.84-3.26 0-.3-.03-.6-.1-.89.57-.64.88-1.51.88-2.4zm-1.54 1.28l-.18-.2-.77-.84c-.33-.37-.67-1.17-.73-1.73 0 0-.13-1.25-.13-1.26-.06-.74-1.17-.73-1.13.14 0 .02.13 1.26.13 1.26.04.36.15.77.3 1.17-.08-.01-.15-.02-.22-.02 0 0-2.57-.12-2.57-.13-.73-.03-.89 1.22-.05 1.25l2.57.13c.53.03 1.29.37 1.61.72l.61.67.02.06c.1.27.14.55.14.83 0 .93-.51 1.77-1.34 2.18l-.2.1-.09.23c-.19.48-.6.82-1.1.93l-.67.14.87 2.75c-.48-.76-1.19-1.79-2.02-2.67l-.15-.16-.21-.02c-.51-.04-.99-.21-1.42-.48l1.7-1.48c.44-.39 1.04-.55 1.24-.49 0 0 .78.22.78.23.78.2 1.03-.92.29-1.21l-.78-.23c-.69-.2-1.67.22-2.24.72l-1.91 1.66-.39.32c-.44.36-.93.55-1.5.55-.8 0-1.54-.41-1.97-1.07v-1.88c0-.5.21-.98.34-1.07 0 0 .65-.43.64-.43.87-.69.21-1.57-.64-1.14 0-.01-.65.43-.65.43-.31.2-.54.56-.7.97-.13-.13-.28-.25-.43-.35 0 0-1.91-1.26-1.91-1.28-.81-.56-1.5.63-.61 1.11 0-.02 1.89 1.28 1.89 1.28.46.31.77.97.77 1.36v.84c-.43.24-.78.36-1.24.36-.67 0-1.31-.29-1.77-.79l-.07-.08-.09-.05a2.425 2.425 0 01-1.31-2.16c0-.38.09-.74.25-1.08l.15-.31-.14-.33c-.17-.34-.25-.7-.25-1.08 0-1.13.76-2.1 1.85-2.37l.39-.09.07-.43a2.41 2.41 0 012.39-2.05c.19 0 .39.02.58.07l.4.1.22-.38A2.41 2.41 0 019.17 1.3c.55 0 1.08.19 1.5.53l-.44.45-.01-.01-.31.31c-.41.35-.92.53-1.11.5 0 0-.84-.13-.84-.14-.83-.15-1.09 1.08-.18 1.29.01 0 .84.14.84.14.03 0 .06 0 .09.01-.14.46-.18.96-.12 1.4 0 0 .21 1.24.19 1.23.13.65 1.32.44 1.16-.22 0-.01-.19-1.23-.19-1.23-.07-.48.15-1.19.45-1.5l.48-.5c.07-.06.13-.12.19-.18l.93-.95c.5-.23 1.04-.34 1.59-.34 1.93 0 3.57 1.4 3.89 3.34l.05.31.26.15a2.445 2.445 0 01.87 3.4z"],prescription:["M13.95 10.23c.16-.18.22-.22.46-.22h1.48c.25 0 .47.08.59.33.1.2.09.41-.05.66l-2.71 3.58L16.88 19c.13.21.16.46.03.69-.12.21-.34.31-.57.31H14.7c-.31 0-.56-.17-.7-.44l-1.9-2.67-1.93 2.68c-.15.27-.42.43-.73.43H7.98c-.25 0-.47-.08-.59-.33-.1-.2-.09-.41.05-.66l3.09-4.35L6.26 9H5v4.32c0 .41-.3.69-.7.69H2.7c-.41 0-.7-.28-.7-.69V.69c0-.41.3-.69.7-.69h4.42c.71 0 1.36.1 1.94.3.59.2 1.11.49 1.54.87.44.38.78.84 1.02 1.39.24.54.36 1.14.36 1.78 0 1.01-.28 1.88-.84 2.6-.43.54-1.35 1.29-2 1.59l3.09 3.94 1.72-2.24zM6.71 6.04c.71 0 1.45-.16 1.81-.46.33-.28.5-.69.5-1.25s-.17-.97-.5-1.25c-.35-.3-1.1-.46-1.81-.46h-1.7v3.42h1.7z"],presentation:["M19 1h-8c0-.55-.45-1-1-1S9 .45 9 1H1c-.55 0-1 .45-1 1s.45 1 1 1h1v11c0 .55.45 1 1 1h4.59L4.3 18.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L9 16.41V19c0 .55.45 1 1 1s1-.45 1-1v-2.59l3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L12.41 15H17c.55 0 1-.45 1-1V3h1c.55 0 1-.45 1-1s-.45-1-1-1zm-3 12H4V3h12v10z"],print:["M14 16H6v-4H4v5c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-5h-2v4zm2-13c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v1h12V3zm3 2H1c-.55 0-1 .45-1 1v7c0 .55.45 1 1 1h2v-3h14v3h2c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-1 4h-2V7h2v2z"],projects:["M18 4c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v2h16V4zm-2-3c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v1h12V1zm3 6H1c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm-5 7c0 .55-.45 1-1 1H7c-.55 0-1-.45-1-1v-2h1v2h6v-2h1v2z"],properties:["M2 15c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0-7c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm5-4h12c.55 0 1-.45 1-1s-.45-1-1-1H7c-.55 0-1 .45-1 1s.45 1 1 1zM2 1C.9 1 0 1.9 0 3s.9 2 2 2 2-.9 2-2-.9-2-2-2zm17 8H7c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1zm0 7H7c-.55 0-1 .45-1 1s.45 1 1 1h12c.55 0 1-.45 1-1s-.45-1-1-1z"],property:["M3 5c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm5-1h11c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zM3 15c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm16 1H8c-.55 0-1 .45-1 1s.45 1 1 1h11c.55 0 1-.45 1-1s-.45-1-1-1zm-1-8H9c-1.1 0-2 .9-2 2s.9 2 2 2h9c1.1 0 2-.9 2-2s-.9-2-2-2zM3 7c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"],"publish-function":["M7.01 10.11c.35-.64.72-1.68 1.09-3.11l.8-3.03h.96l.24-.77h-.99c.28-1.11.66-1.92 1.12-2.43.28-.32.56-.48.83-.48.05 0 .1.02.13.05.03.03.05.07.05.12 0 .04-.04.13-.11.25-.08.12-.11.24-.11.35 0 .15.06.28.18.39.12.11.27.16.45.16.2 0 .36-.07.49-.2s.2-.31.2-.54c0-.26-.1-.47-.3-.63-.2-.16-.52-.24-.96-.24-.68 0-1.3.19-1.86.58-.55.38-1.08 1.02-1.58 1.91-.17.3-.34.5-.49.59-.15.08-.4.13-.74.12l-.23.77h.95L5.74 9.21c-.23.86-.39 1.39-.47 1.59-.12.29-.3.54-.54.75-.1.08-.21.12-.35.12-.04 0-.07-.01-.1-.03l-.03-.04c0-.02.03-.07.1-.13.07-.07.1-.17.1-.31 0-.15-.05-.28-.16-.38-.11-.1-.27-.15-.47-.15-.25 0-.44.07-.59.2-.15.12-.23.28-.23.46 0 .19.09.36.27.5.19.14.47.21.86.21.61 0 1.16-.15 1.63-.46.48-.31.89-.79 1.25-1.43zm3.7 1.18c-.18-.18-.43-.29-.71-.29s-.53.11-.71.29l-3 3a1.003 1.003 0 001.42 1.42L9 14.41V19c0 .55.45 1 1 1s1-.45 1-1v-4.59l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-3-3zm4.15-6.78c.17-.13.36-.2.55-.2.07 0 .2.03.39.08s.36.08.5.08c.2 0 .37-.07.5-.2.13-.14.2-.31.2-.52 0-.22-.07-.4-.2-.53s-.33-.2-.58-.2c-.22 0-.43.05-.63.15-.2.1-.45.32-.75.67-.23.25-.56.7-1.01 1.33a6.52 6.52 0 00-.91-2.15l-2.38.39-.05.25c.18-.03.33-.05.45-.05.24 0 .43.1.59.3.25.31.59 1.24 1.02 2.79-.34.44-.58.73-.7.87-.21.22-.38.36-.52.43-.1.05-.22.08-.35.08-.1 0-.26-.05-.49-.16a1.01 1.01 0 00-.42-.11c-.23 0-.42.07-.57.22-.17.14-.24.32-.24.55 0 .21.07.38.21.51.14.13.33.2.56.2.23 0 .44-.05.64-.14.2-.09.45-.29.75-.59s.72-.78 1.25-1.43c.2.62.38 1.07.53 1.35.15.28.32.49.52.61.19.12.44.19.73.19.28 0 .57-.1.86-.3.38-.25.77-.69 1.17-1.31l-.25-.14c-.27.37-.48.6-.61.69-.09.06-.19.09-.31.09-.14 0-.28-.09-.42-.26-.23-.29-.54-1.09-.93-2.4.37-.58.66-.96.9-1.14z"],pulse:["M19 10h-2.38L14.9 6.55h-.01c-.17-.32-.5-.55-.89-.55-.43 0-.79.28-.93.66h-.01l-2.75 7.57L7.98 1.82h-.02A.978.978 0 007 1c-.44 0-.8.29-.94.69h-.01L3.28 10H1c-.55 0-1 .45-1 1s.45 1 1 1h3c.44 0 .8-.29.94-.69h.01l1.78-5.34 2.29 12.21h.02c.08.46.47.82.96.82.43 0 .79-.28.93-.66h.01l3.21-8.82.96 1.92h.01c.16.33.49.56.88.56h3c.55 0 1-.45 1-1s-.45-1-1-1z"],random:["M14.47 5h2.12L15.3 6.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-3-3a1.003 1.003 0 00-1.42 1.42L16.59 3H14c-.31 0-.57.15-.76.37l-.01-.01-2.93 3.52 1.3 1.56L14.47 5zm2.24 7.29a1.003 1.003 0 00-1.42 1.42l1.3 1.29h-2.12L4.77 3.36l-.01.01A.998.998 0 004 3H1c-.55 0-1 .45-1 1s.45 1 1 1h2.53l9.7 11.64.01-.01c.19.22.45.37.76.37h2.59l-1.29 1.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-3-3zM3.53 15H1c-.55 0-1 .45-1 1s.45 1 1 1h3c.31 0 .57-.15.76-.37l.01.01 2.93-3.52-1.3-1.56L3.53 15z"],record:["M10 3a7 7 0 100 14 7 7 0 100-14z"],redo:["M19.71 5.29l-4-4a1.003 1.003 0 00-1.42 1.42L16.59 5H6c-3.31 0-6 2.69-6 6s2.69 6 6 6h5v-2H6c-2.21 0-4-1.79-4-4s1.79-4 4-4h10.59L14.3 9.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zM15 14c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"],refresh:["M19 1c-.55 0-1 .45-1 1v2.06C16.18 1.61 13.29 0 10 0 4.48 0 0 4.48 0 10c0 .55.45 1 1 1s1-.45 1-1c0-4.42 3.58-8 8-8 2.52 0 4.76 1.18 6.22 3H15c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zm0 8c-.55 0-1 .45-1 1 0 4.42-3.58 8-8 8-2.52 0-4.76-1.18-6.22-3H5c.55 0 1-.45 1-1s-.45-1-1-1H1c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1s1-.45 1-1v-2.06C3.82 18.39 6.71 20 10 20c5.52 0 10-4.48 10-10 0-.55-.45-1-1-1z"],"regression-chart":["M19 16H3.1L19.31 3.39l-.61-.79L2 15.59V3c0-.55-.45-1-1-1s-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm-9-9c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm-5 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm10-2c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2zm-5 4c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2-2 .9-2 2z"],remove:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm5-9H5c-.55 0-1 .45-1 1s.45 1 1 1h10c.55 0 1-.45 1-1s-.45-1-1-1z"],"remove-column":["M19 0H5c-.55 0-1 .45-1 1v4h2V2h5v16H6v-3H4v4c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18h-5V2h5v16zM6.29 13.71a1.003 1.003 0 001.42-1.42L5.41 10 7.7 7.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L4 8.59l-2.29-2.3A1.003 1.003 0 00.29 7.71L2.59 10 .3 12.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L4 11.41l2.29 2.3z"],"remove-column-left":["M4 11h6c.55 0 1-.45 1-1s-.45-1-1-1H4c-.55 0-1 .45-1 1s.45 1 1 1zM19 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-7 18H2V2h10v16zm6 0h-5V2h5v16z"],"remove-column-right":["M19 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zM7 18H2V2h5v16zm11 0H8V2h10v16zm-8-7h6c.55 0 1-.45 1-1s-.45-1-1-1h-6c-.55 0-1 .45-1 1s.45 1 1 1z"],"remove-row-bottom":["M7 14h6c.55 0 1-.45 1-1s-.45-1-1-1H7c-.55 0-1 .45-1 1s.45 1 1 1zM19 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H2V8h16v10zm0-11H2V2h16v5z"],"remove-row-top":["M7 8h6c.55 0 1-.45 1-1s-.45-1-1-1H7c-.55 0-1 .45-1 1s.45 1 1 1zm12-8H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H2v-5h16v5zm0-6H2V2h16v10z"],repeat:["M14 6c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1v2.05C16.18 1.6 13.29 0 10 0 4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10c0-.55-.45-1-1-1s-1 .45-1 1c0 4.42-3.58 8-8 8s-8-3.58-8-8 3.58-8 8-8c2.53 0 4.77 1.17 6.24 3H15c-.55 0-1 .45-1 1z"],reset:["M6 6c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V2c0-.55.45-1 1-1s1 .45 1 1v2.05C3.82 1.6 6.71 0 10 0c5.52 0 10 4.48 10 10s-4.48 10-10 10S0 15.52 0 10c0-.55.45-1 1-1s1 .45 1 1c0 4.42 3.58 8 8 8s8-3.58 8-8-3.58-8-8-8C7.47 2 5.23 3.17 3.76 5H5c.55 0 1 .45 1 1z"],resolve:["M8.7 4.7C7.9 4.2 7 4 6 4c-3.3 0-6 2.7-6 6s2.7 6 6 6c1 0 1.9-.2 2.7-.7C7.3 14 6.5 12.1 6.5 10s.9-4 2.2-5.3zM14 4c-1 0-1.9.2-2.7.7 1.4 1.4 2.2 3.2 2.2 5.3s-.9 4-2.2 5.3c.8.5 1.7.7 2.7.7 3.3 0 6-2.7 6-6s-2.7-6-6-6zm-4 1.5C8.8 6.7 8 8.2 8 10s.8 3.3 2 4.4c1.2-1.1 2-2.7 2-4.5s-.8-3.3-2-4.4z"],rig:["M7 4.2C7 5.75 8.34 7 10 7s3-1.46 3-2.8C13 1.45 10.94 0 10 0H6c0 2.74 3.76 1.96 1 4.2zm11.71 14.09L13 12.59V9.01c0-.55-.45-1-1-1H8c-.55 0-1 .45-1 1v3.58l-5.71 5.7a1.003 1.003 0 001.42 1.42L7 15.42V19c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-3.58l4.29 4.29a1.003 1.003 0 001.42-1.42zM10.21 8c.01 0 .01.01 0 0 .01.01.01 0 0 0z"],"right-join":["M8.7 4.7C7.4 6 6.5 7.9 6.5 10s.8 4 2.2 5.3c-.8.5-1.7.7-2.7.7-3.3 0-6-2.7-6-6s2.7-6 6-6c1 0 1.9.2 2.7.7zm-3.34 9.25c-.55-1.2-.86-2.54-.86-3.95s.31-2.75.86-3.95a4.001 4.001 0 000 7.9zM14 4c3.3 0 6 2.7 6 6s-2.7 6-6 6c-1 0-1.9-.2-2.7-.7 1.3-1.3 2.2-3.2 2.2-5.3s-.8-3.9-2.2-5.3C12.1 4.2 13 4 14 4zm-4 1.5C8.8 6.7 8 8.2 8 10s.8 3.3 2 4.4c1.2-1.1 2-2.7 2-4.5s-.8-3.3-2-4.4z"],ring:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 15c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5z"],"rotate-document":["M8.71 6.29A.997.997 0 008 6H3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h9c.55 0 1-.45 1-1v-8c0-.28-.11-.53-.29-.71l-4-4zM11 18H4V8h3v3c0 .55.45 1 1 1h3v6zm3-16h-1.59l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2C9.11 2.47 9 2.72 9 3c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H14c1.1 0 2 .9 2 2v3c0 .55.45 1 1 1s1-.45 1-1V6c0-2.21-1.79-4-4-4z"],"rotate-page":["M14 2h-1.59l.29-.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-2 2C9.11 2.47 9 2.72 9 3c0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42l-.3-.29H14c1.1 0 2 .9 2 2v3c0 .55.45 1 1 1s1-.45 1-1V6c0-2.21-1.79-4-4-4zm-2 5H3c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm-1 11H4V9h7v9z"],route:["M14.028 6.016c.146.275.31.57.485.872.304.524.628 1.047.952 1.545l.118.178-.208-.006-.577-.005c-2.093.004-2.841.303-2.841.895 0 .069.271.248 1.245.567l1.008.313c2.671.831 3.99 1.827 3.99 4.167 0 2.76-1.928 4.059-4.832 4.376-.782.085-1.52.098-2.452.066l-1.15-.046H6.221l.535-.811a67.46 67.46 0 001.122-1.787h2.04l.686.03c1.028.046 1.77.043 2.523-.039 1.832-.2 2.673-.767 2.673-1.789 0-.69-.483-1.09-1.992-1.585l-.83-.257c-1.192-.364-2.037-.7-2.59-1.165.399-1 .612-1.844.612-2.538a6.018 6.018 0 00-.382-2.098c.745-.573 1.884-.822 3.41-.883zM5 4.2c2.648 0 4.791 2.151 4.8 4.797C9.8 11.652 5 18.6 5 18.6l-.5-.744C3.273 15.993.2 11.121.2 8.997A4.802 4.802 0 015 4.2zm0 2.4a2.4 2.4 0 10.002 4.802A2.4 2.4 0 005 6.6zM17 .333a2.671 2.671 0 012.667 2.665C19.667 4.473 17 8.333 17 8.333l-.391-.587c-.741-1.137-2.276-3.629-2.276-4.748A2.668 2.668 0 0117 .333z"],satellite:["M9 18c.6 0 1 .4 1 1s-.4 1-1 1c-5 0-9-4-9-9 0-.6.4-1 1-1s1 .4 1 1c0 3.9 3.1 7 7 7zm0-4c.6 0 1 .4 1 1s-.4 1-1 1c-2.8 0-5-2.2-5-5 0-.6.4-1 1-1s1 .4 1 1c0 1.7 1.3 3 3 3zm5.7-3.7c.4-.4 1-.4 1.4 0l3.6 3.6c.4.4.4 1 0 1.4l-1.4 1.4c-.4.4-1 .4-1.4 0l-3.6-3.6c-.4-.4-.4-1 0-1.4l1.4-1.4zM4.7.3c.4-.4 1-.4 1.4 0l3.6 3.6c.4.4.4 1 0 1.4L8.3 6.7c-.4.4-1 .4-1.4 0L3.3 3.1c-.4-.4-.4-1 0-1.4L4.7.3zm11.1 1c.4-.4 1-.4 1.4 0l1.6 1.6c.4.4.4 1 0 1.4l-6.5 6.5c-.4.4-1 .4-1.4 0L9.3 9.2c-.4-.4-.4-1 0-1.4l6.5-6.5zM9 12c-.6 0-1-.4-1-1s.4-1 1-1 1 .4 1 1-.4 1-1 1z"],saved:["M12 0H4c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h13c.55 0 1-.45 1-1V6l-6-6zm4 18H5V2h6v5h5v11zm-8.29-6.71a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29.32 0 .59-.16.77-.38l.01.01 4-5-.01-.01c.14-.18.23-.38.23-.62 0-.55-.45-1-1-1-.32 0-.59.16-.77.38l-.01-.01-3.3 4.13-2.21-2.21z"],"scatter-plot":["M9 9c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm5 2c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm4-5c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm1 10H2V3c0-.55-.45-1-1-1s-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zM5 15c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2z"],search:["M19.56 17.44l-4.94-4.94A8.004 8.004 0 0016 8c0-4.42-3.58-8-8-8S0 3.58 0 8s3.58 8 8 8c1.67 0 3.21-.51 4.5-1.38l4.94 4.94a1.498 1.498 0 102.12-2.12zM8 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z"],"search-around":["M9.9 6.9a3 3 0 100 6 3 3 0 100-6zM3 14c-1.7 0-3 1.3-3 3s1.3 3 3 3 3-1.3 3-3-1.3-3-3-3zm0 5c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM3 0C1.3 0 0 1.3 0 3s1.3 3 3 3 3-1.3 3-3-1.3-3-3-3zm0 5c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM17 14c-1.7 0-3 1.3-3 3s1.3 3 3 3 3-1.3 3-3-1.3-3-3-3zm0 5c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM17 0c-1.7 0-3 1.3-3 3s1.3 3 3 3 3-1.3 3-3-1.3-3-3-3zm0 5c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2zM10 10L5 5","M5.379 4.671l5.02 5.02-.707.708-5.02-5.02zM10 10l5-5","M14.621 4.671l.707.708-5.02 5.02-.707-.707z","M10 10l5 5M10.379 9.671l5.02 5.02-.707.708-5.02-5.02z","M10 10l-5 5M9.621 9.671l.707.708-5.02 5.02-.707-.707z"],"search-template":["M13 8H5c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1zm0 3H5c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1zm0-6H5c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1zm6.56 12.44l-3.23-3.23A8.939 8.939 0 0018 9a9 9 0 10-9 9c1.94 0 3.74-.62 5.21-1.67l3.23 3.23a1.498 1.498 0 102.12-2.12zM9 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7z"],"search-text":["M19.56 17.44l-3.23-3.23A8.939 8.939 0 0018 9a9 9 0 10-9 9c1.94 0 3.74-.62 5.21-1.67l3.23 3.23a1.498 1.498 0 102.12-2.12zM9 16c-3.87 0-7-3.13-7-7s3.13-7 7-7 7 3.13 7 7-3.13 7-7 7zm3.5-11h-7c-.28 0-.5.22-.5.5v2c0 .28.22.5.5.5s.5-.22.5-.5V7h2v6h-.5c-.28 0-.5.22-.5.5s.22.5.5.5h3c.28 0 .5-.22.5-.5s-.22-.5-.5-.5H10V7h2v.5c0 .28.22.5.5.5s.5-.22.5-.5v-2c0-.28-.22-.5-.5-.5z"],"segmented-control":["M19 5H1c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-1 8h-8V7h8v6z"],select:["M19.71 18.29l-4.25-4.25L20 12.91 9.93 9.33c.04-.1.07-.21.07-.33V3c0-.55-.45-1-1-1H4V1c0-.55-.45-1-1-1S2 .45 2 1v1H1c-.55 0-1 .45-1 1s.45 1 1 1h1v5c0 .55.45 1 1 1h6c.12 0 .23-.03.34-.07L12.91 20l1.14-4.54 4.25 4.25c.17.18.42.29.7.29a1.003 1.003 0 00.71-1.71zM8 8H4V4h4v4z"],selection:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z","M10 6a4 4 0 100 8 4 4 0 100-8z"],"send-message":["M1.754.135L19.393 9.06c.57.288.775.943.458 1.462-.107.176-.266.32-.458.418l-17.64 8.924c-.57.289-1.288.102-1.604-.417A1.001 1.001 0 010 18.925v-6.851L11.021 10 0 7.938V1.075C0 .481.529 0 1.18 0c.201 0 .399.047.574.135z"],"send-to":["M19 0h-5c-.6 0-1 .4-1 1s.4 1 1 1h2.6l-4.3 4.3c-.2.2-.3.4-.3.7 0 .6.4 1 1 1 .3 0 .5-.1.7-.3L18 3.4V6c0 .5.5 1 1 1s1-.5 1-1V1c0-.6-.5-1-1-1zm0 9c-1 0-1.9-.5-2.5-1.3l-1.4 1.4c-.5.6-1.3.9-2.1.9-1.7 0-3-1.3-3-3 0-.8.3-1.6.9-2.1l1.4-1.4C11.5 2.9 11 2 11 1c0-.3.1-.6.2-.9-.4-.1-.8-.1-1.2-.1C4.5 0 0 4.5 0 10s4.5 10 10 10 10-4.5 10-10c0-.4 0-.8-.1-1.2-.3.1-.6.2-.9.2z"],"send-to-graph":["M8 11H3c-.55 0-1 .45-1 1s.45 1 1 1h2.59L.3 18.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L7 14.41V17c0 .55.45 1 1 1s1-.45 1-1v-5c0-.55-.45-1-1-1zm10 2c-.53 0-1.01.21-1.37.55L11.9 10.6c.06-.19.1-.39.1-.6 0-.21-.04-.41-.1-.6l4.72-2.95c.37.34.85.55 1.38.55 1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2c0 .21.04.41.1.6l-4.73 2.96c-.24-.23-.54-.4-.87-.48V3.93c.86-.22 1.5-1 1.5-1.93 0-1.1-.9-2-2-2S8 .9 8 2c0 .93.64 1.71 1.5 1.93v4.14c-.33.09-.63.26-.87.48L7.6 7.91 5.42 6.55 3.9 5.6c.06-.19.1-.39.1-.6 0-1.1-.9-2-2-2s-2 .9-2 2 .9 2 2 2c.53 0 1.01-.21 1.37-.55L9 9.96V10h.06L12 11.84l.4.25 1.51.94 2.19 1.37c-.06.19-.1.39-.1.6 0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2zm-7-2.96l-.06-.04H11v.04z"],"send-to-map":["M8 11H3c-.55 0-1 .45-1 1s.45 1 1 1h2.59L.3 18.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71L7 14.41V17c0 .55.45 1 1 1s1-.45 1-1v-5c0-.55-.45-1-1-1zm11.54-6.82l.01-.02-6-4-.01.02C13.39.08 13.21 0 13 0s-.39.08-.54.18l-.01-.02L7 3.8 1.55.17l-.01.01A.969.969 0 001 0C.45 0 0 .45 0 1v9c0-.55.45-1 1-1h1V2.87l4 2.67V9h2V5.54l4-2.67v11.6l-1 .67v2.4l2-1.33 5.45 3.63.01-.02c.15.1.33.18.54.18.55 0 1-.45 1-1V5c0-.35-.19-.64-.46-.82zM18 17.13l-4-2.67V2.87l4 2.67v11.59z"],"series-add":["M13.29 9.29c.3.62.8 1.12 1.42 1.42l-3 3c-.18.18-.43.29-.71.29s-.53-.11-.71-.3L7 10.41l-5 5V17h17c.55 0 1 .45 1 1s-.45 1-1 1H1a.998.998 0 01-1-1V4c0-.55.45-1 1-1s1 .45 1 1v8.59l4.29-4.3C6.47 8.11 6.72 8 7 8s.53.11.71.29l3.29 3.3 2.29-2.3zM12 5c0-.5.4-1 1-1h2V2c0-.6.4-1 1-1 .5 0 1 .4 1 1v2h2c.5 0 1 .4 1 1s-.5 1-1 1h-2v2c0 .6-.5 1-1 1-.6 0-1-.4-1-1V6h-2c-.6 0-1-.4-1-1z"],"series-configuration":["M11.91 10.67c.52.45 1.13.8 1.8 1.03l-2.01 2.01c-.18.18-.43.29-.71.29-.28 0-.53-.11-.71-.3L7 10.41l-5 5V17h16.99c.55 0 1 .45 1 1s-.45 1-1 1H1a.998.998 0 01-1-1V4c0-.55.45-1 1-1s1 .45 1 1v8.59l4.29-4.3C6.47 8.11 6.72 8 7 8c.28 0 .53.11.71.29l3.29 3.3.91-.92zM18.5 4.6h1.04c.25 0 .45.2.46.44v.9c0 .25-.2.45-.45.45h-1.04c-.07.22-.16.42-.27.62l.73.73c.17.17.17.44 0 .61l-.61.61c-.17.17-.44.17-.61 0l-.73-.73c-.2.11-.4.2-.62.26v1.05c0 .25-.2.45-.45.45h-.9c-.25 0-.45-.2-.45-.45V8.51c-.21-.06-.4-.15-.58-.25l-.76.77c-.17.17-.46.17-.64 0l-.64-.64a.465.465 0 010-.64l.76-.77c-.1-.19-.19-.38-.25-.59h-1.04c-.25 0-.45-.2-.45-.45v-.9c0-.25.2-.45.45-.45h1.04c.07-.22.16-.42.27-.61l-.73-.73a.429.429 0 010-.61l.61-.61c.17-.17.44-.17.61 0l.73.73c.2-.11.4-.2.62-.26V1.45a.44.44 0 01.44-.45h.9c.25 0 .45.2.45.45V2.5c.21.06.4.15.58.25l.76-.77c.17-.17.46-.17.64 0l.64.64c.17.17.17.46 0 .64l-.76.77c.1.17.19.36.25.57zm-4.69.9c0 .93.75 1.69 1.69 1.69.93 0 1.69-.75 1.69-1.69s-.75-1.69-1.69-1.69-1.69.76-1.69 1.69z"],"series-derived":["M18.82 6.58c-.03.05-.07.09-.11.13 0 0 0-.01-.01-.01l-2 2c-.2.2-.4.3-.7.3-.6 0-1-.4-1-1 0-.3.1-.5.3-.7L16.6 6H11c-.6 0-1-.4-1-1s.4-1 1-1h5.6l-1.3-1.3c-.2-.2-.3-.4-.3-.7 0-.6.4-1 1-1 .3 0 .5.1.7.3l3 3c.2.2.3.4.3.7s-.1.5-.3.7l-.88.88zm-5.53 2.71c.3.62.8 1.12 1.42 1.42l-3 3c-.18.18-.43.29-.71.29s-.53-.11-.71-.3L7 10.41l-5 5V17h17c.55 0 1 .45 1 1s-.45 1-1 1H1a.998.998 0 01-1-1V4c0-.55.45-1 1-1s1 .45 1 1v8.59l4.29-4.3C6.47 8.11 6.72 8 7 8s.53.11.71.29l3.29 3.3 2.29-2.3z"],"series-filtered":["M12.14 10.45c.21.67.65 1.23 1.22 1.61l-1.65 1.65c-.18.18-.43.29-.71.29s-.53-.11-.71-.3L7 10.41l-5 5V17h17c.55 0 1 .45 1 1s-.45 1-1 1H1a.998.998 0 01-1-1V4c0-.55.45-1 1-1s1 .45 1 1v8.59l4.29-4.3C6.47 8.11 6.72 8 7 8s.53.11.71.29l3.29 3.3 1.14-1.14zM19.35 1a.642.642 0 01.46 1.1l-3.03 3.03v2.95c0 .18-.07.34-.19.46l-1.28 1.29c-.11.1-.27.17-.45.17-.35 0-.64-.29-.64-.64V5.13L11.19 2.1a.642.642 0 01.45-1.1h7.71z"],"series-search":["M11.28 11.31l-.28.28-3.29-3.3C7.53 8.11 7.28 8 7 8s-.53.11-.71.29L2 12.59V4c0-.55-.45-1-1-1s-1 .45-1 1v14a.998.998 0 001 1h18c.55 0 1-.45 1-1s-.45-1-1-1H2v-1.59l5-5 3.29 3.29c.18.19.43.3.71.3s.53-.11.71-.29l2.09-2.09c-.17.02-.34.02-.51.02-.7 0-1.38-.12-2.01-.33zm-.93-6c0-1.62 1.31-2.93 2.93-2.93s2.93 1.31 2.93 2.93-1.31 2.93-2.93 2.93-2.93-1.31-2.93-2.93zm6.47 2.43c.11-.17.21-.33.29-.51.01-.03.03-.06.04-.09.08-.18.16-.35.21-.54.06-.2.1-.38.14-.58.01-.05.01-.09.02-.14.03-.2.05-.39.05-.6 0-2.37-1.93-4.3-4.3-4.3-2.37.01-4.3 1.93-4.3 4.31s1.93 4.3 4.3 4.3c.21 0 .4-.02.6-.05.04 0 .09-.01.14-.02.2-.03.38-.08.57-.14.2-.06.37-.14.55-.21.03-.01.06-.03.09-.04.18-.09.34-.19.51-.29l2.87 2.87c.14.14.33.22.56.22.43 0 .78-.35.78-.78a.938.938 0 00-.23-.56l-2.89-2.85z"],settings:["M4 1c0-.55-.45-1-1-1S2 .45 2 1v5h2V1zM2 19c0 .55.45 1 1 1s1-.45 1-1v-6H2v6zm9-18c0-.55-.45-1-1-1S9 .45 9 1v8h2V1zm7 0c0-.55-.45-1-1-1s-1 .45-1 1v3h2V1zM9 19c0 .55.45 1 1 1s1-.45 1-1v-3H9v3zm9-14h-2c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1zm-2 14c0 .55.45 1 1 1s1-.45 1-1v-8h-2v8zM4 7H2c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm7 3H9c-.55 0-1 .45-1 1v3c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-3c0-.55-.45-1-1-1z"],shapes:["M7.88 11.12a.958.958 0 011.277.33l3.719 6.207c.081.136.124.29.124.447 0 .495-.419.896-.936.896H4.936a.969.969 0 01-.436-.103.878.878 0 01-.392-1.21l3.409-6.208a.915.915 0 01.362-.36zM15 5a4 4 0 110 8 4 4 0 010-8zM8 1a1 1 0 011 1v6a1 1 0 01-1 1H2a1 1 0 01-1-1V2a1 1 0 011-1h6z"],share:["M15 18H2V5h8.76l2-2H1c-.55 0-1 .45-1 1v15c0 .55.45 1 1 1h15c.55 0 1-.45 1-1V7.24l-2 2V18zm4-18h-7c-.55 0-1 .45-1 1s.45 1 1 1h4.59l-7.3 7.29a1.003 1.003 0 001.42 1.42L18 3.41V8c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1z"],"shared-filter":["M13.917 17.209c1.01.454 2.543.928 2.873 1.643.31.722.186 1.148.186 1.148H6.026s-.13-.426.186-1.148 1.842-1.203 2.86-1.65c1.017-.447.914-.722.948-1.093 0-.048.007-.097.007-.145a3.067 3.067 0 01-.839-1.237l-.007-.007c0-.007-.006-.014-.006-.02a1.757 1.757 0 01-.11-.337c-.234-.042-.372-.296-.426-.537a1.045 1.045 0 01-.138-.598c.034-.35.179-.509.337-.57v-.056c0-.44.034-1.065.117-1.478a2.508 2.508 0 01.962-1.623c.426-.33 1.038-.501 1.58-.501.544 0 1.155.172 1.588.502a2.496 2.496 0 01.963 1.622c.075.413.117 1.045.117 1.478v.062c.15.062.288.22.323.564.02.268-.083.502-.138.598-.048.234-.185.488-.42.537a2.635 2.635 0 01-.116.364 3.094 3.094 0 01-.818 1.224c0 .055 0 .11.007.158.034.378-.103.653.914 1.1z","M14.976 16.57c-.24-.099-.455-.186-.65-.273l-.007-.004a3.801 3.801 0 01-.194-.091c.224-.288.41-.609.554-.946l.001-.002.013-.033c.018-.043.036-.087.052-.13l.011-.027.016-.04c.105-.092.19-.19.256-.284.129-.184.213-.38.265-.563.105-.226.225-.592.192-1.026l-.001-.011-.002-.011a1.854 1.854 0 00-.325-.91 9.924 9.924 0 00-.12-1.246 3.09 3.09 0 00-.106-.475l-.001-.006a3.543 3.543 0 00-.763-1.353c.27-.092.56-.139.83-.139.495 0 1.05.156 1.444.456a2.269 2.269 0 01.875 1.475c.069.375.106.95.106 1.344v.056c.138.056.263.2.294.513.019.244-.075.456-.125.543-.044.213-.169.444-.381.488-.025.1-.056.206-.094.3a2.815 2.815 0 01-.756 1.144c0 .05 0 .1.006.144.004.043.006.086.007.127.01.283.018.518.824.872.192.087.404.173.623.263.83.34 1.752.717 1.99 1.231.28.657.168 1.044.168 1.044h-2.081a3.864 3.864 0 00-.188-.542l-.005-.013-.006-.012c-.183-.397-.491-.681-.76-.88a5.614 5.614 0 00-.896-.522 17.36 17.36 0 00-.916-.4l-.15-.061zM14 1c.55 0 1 .45 1 1 0 .28-.11.53-.29.7L10 7.41v.897a3.182 3.182 0 00-.69.4 3.508 3.508 0 00-1.343 2.259c-.07.37-.107.836-.122 1.237a1.836 1.836 0 00-.339.926c-.046.458.09.84.195 1.06.053.178.138.376.27.56.055.08.125.162.21.242v.143l.053.052L6.71 16.71A1.003 1.003 0 015 16V7.41L.29 2.71A1.003 1.003 0 011 1h13z","M9.059 14.361c-.23-.044-.366-.296-.42-.535a1.045 1.045 0 01-.138-.598c.034-.35.179-.509.337-.57v-.056c0-.44.034-1.065.117-1.478A2.508 2.508 0 0110 9.441V13c0 .28-.11.53-.29.71l-.651.651z"],shield:["M10 20c6-3.81 9-9.048 9-15.714-2 0-5-1.429-9-4.286-4 2.857-7 4.286-9 4.286C1 10.952 4 16.19 10 20zm0-17.348c2.577 1.734 4.776 2.88 6.667 3.419-.44 4.627-2.636 8.353-6.667 11.297V2.652z"],shop:["M17.94 3.63c-.01-.02-.01-.03-.02-.04l-.03-.09h-.01c-.18-.3-.49-.5-.86-.5h-14c-.42 0-.77.25-.92.61L0 8.5h.02a2.5 2.5 0 005 0 2.5 2.5 0 005 0 2.5 2.5 0 005 0 2.5 2.5 0 005 0l-2.08-4.87zM3.02 2h14c.55 0 1-.45 1-1s-.45-1-1-1h-14c-.55 0-1 .45-1 1s.44 1 1 1zm13 14h-12v-4h-2v7c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-7h-2v4z"],"shopping-cart":["M18 14H8.72l-.67-2H17c.44 0 .8-.29.94-.69h.01l2-6h-.01c.03-.1.06-.2.06-.31 0-.55-.45-1-1-1H5.39l-.44-1.32h-.01C4.8 2.29 4.44 2 4 2H1c-.55 0-1 .45-1 1s.45 1 1 1h2.28l3.33 10H5c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2h9c0 1.1.9 2 2 2s2-.9 2-2-.9-2-2-2zM6.05 6h11.56l-1.33 4H7.39L6.05 6z"],"signal-search":["M7.15 10.33c.888.8 1.999 1.36 3.228 1.574l2.326 6.98a.846.846 0 01-.535 1.07.844.844 0 01-1.072-.535l-1.225-3.671H7.125L5.9 19.419a.85.85 0 01-1.072.536.85.85 0 01-.536-1.071l2.857-8.555zm1.353 1.305l-.808 2.413h1.607l-.8-2.413zM5 5.5c0 .76.13 1.49.37 2.17-.496 1.056-.313 2.356.704 3.29.385.353.404.94.038 1.311a.982.982 0 01-1.356.038c-2.183-2.01-2-5.125.01-6.94a.95.95 0 01.24-.156A6.421 6.421 0 005 5.5z","M3.874 13.185c-1.346-.918-2.187-2.67-2.187-4.34 0-1.752.757-3.254 2.187-4.339.42-.25.42-.834.168-1.168-.252-.418-.84-.418-1.177-.167C1.014 4.59-.08 6.509.005 8.846c.084 2.253 1.177 4.423 2.86 5.675.168.083.336.166.504.166.253 0 .505-.083.673-.333.337-.418.253-.918-.168-1.169zM12.246 12.309a.98.98 0 01-1.354-.037.917.917 0 01-.206-.324 6.54 6.54 0 001.959-.049 5.125 5.125 0 01-.399.41zM14.631 11.476l1.228 1.229a6.6 6.6 0 01-1.723 1.816c-.169.083-.337.166-.505.166-.253 0-.505-.083-.673-.333-.337-.418-.253-.918.168-1.169.62-.422 1.133-1.022 1.505-1.709z","M11.5 0C14.54 0 17 2.46 17 5.5c0 .26-.02.51-.06.75l-.03.17c-.04.25-.1.49-.17.73v.01c-.08.24-.17.47-.28.69-.01.04-.03.07-.05.11-.11.23-.24.44-.38.65l3.68 3.68A1.003 1.003 0 0119 14c-.28 0-.53-.11-.7-.29l-3.68-3.68c-.21.14-.42.27-.65.38-.04.01-.07.03-.11.05-.22.11-.45.2-.69.28h-.01c-.24.07-.48.13-.73.17l-.17.03c-.25.04-.5.06-.76.06C8.46 11 6 8.54 6 5.5S8.46 0 11.5 0zm0 1.5c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4z"],"sim-card":["M16.71 5.29l-5-5A.997.997 0 0011 0H4c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V6c0-.28-.11-.53-.29-.71zM9 7h2v3H9V7zM6 7h2v3H6V7zm2 11H6v-3h2v3zm3 0H9v-3h2v3zm3 0h-2v-3h2v3zm0-4H6v-3h8v3zm0-4h-2V7h2v3z"],slash:["M12 2c-.46 0-.85.32-.97.74L7.04 16.7c-.02.1-.04.2-.04.3 0 .55.45 1 1 1 .46 0 .85-.32.97-.74L12.96 3.3c.02-.1.04-.2.04-.3 0-.55-.45-1-1-1z"],"small-cross":["M11.41 10l3.29-3.29c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71L10 8.59l-3.29-3.3a1.003 1.003 0 00-1.42 1.42L8.59 10 5.3 13.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l3.29-3.3 3.29 3.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71L11.41 10z"],"small-minus":["M14 9H6c-.55 0-1 .45-1 1s.45 1 1 1h8c.55 0 1-.45 1-1s-.45-1-1-1z"],"small-plus":["M14 9h-3V6c0-.55-.45-1-1-1s-1 .45-1 1v3H6c-.55 0-1 .45-1 1s.45 1 1 1h3v3c0 .55.45 1 1 1s1-.45 1-1v-3h3c.55 0 1-.45 1-1s-.45-1-1-1z"],"small-tick":["M15 5c-.28 0-.53.11-.71.29L8 11.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l7-7A1.003 1.003 0 0015 5z"],snowflake:["M11 11.776v2.81l2.31 2.242a.987.987 0 010 1.415c-.399.39-1.044.39-1.442 0L11 17.414V19a.99.99 0 01-.996 1A.996.996 0 019 19v-1.636l-.912.879c-.398.39-1.043.39-1.441 0a.987.987 0 010-1.415L9 14.536v-2.79l-2.548 1.435-.837 3.063c-.146.534-.705.85-1.248.707a.998.998 0 01-.721-1.224l.309-1.132-1.4.793a1.03 1.03 0 01-1.393-.366.99.99 0 01.373-1.366l1.445-.818-1.224-.322a.998.998 0 01-.72-1.225c.145-.533.704-.85 1.248-.707l3.193.84 2.462-1.395-2.532-1.434-3.123.82a1.022 1.022 0 01-1.249-.706.998.998 0 01.721-1.225L2.91 7.18l-1.4-.793a.99.99 0 01-.373-1.366 1.03 1.03 0 011.392-.366l1.445.818-.328-1.2a.998.998 0 01.72-1.225 1.022 1.022 0 011.25.707l.855 3.132L9 8.311V5.414L6.647 3.121a.987.987 0 010-1.414 1.033 1.033 0 011.441 0L9 2.586V1c0-.552.44-1 1.004-1A.99.99 0 0111 1l-.007 1.536.875-.829a1.033 1.033 0 011.441 0 .987.987 0 010 1.414L11 5.364v2.918l2.53-1.42.855-3.131c.146-.534.705-.85 1.249-.707a.998.998 0 01.72 1.224l-.327 1.2 1.4-.792a1.03 1.03 0 011.392.366.99.99 0 01-.373 1.366l-1.355.768 1.153.303a.998.998 0 01.721 1.225c-.146.533-.705.85-1.249.707l-3.123-.821-2.576 1.459 2.506 1.42 3.193-.84a1.022 1.022 0 011.249.707.998.998 0 01-.72 1.225l-1.224.322 1.4.793a.99.99 0 01.373 1.366 1.03 1.03 0 01-1.393.366l-1.356-.768.31 1.132a.998.998 0 01-.721 1.224 1.022 1.022 0 01-1.249-.707l-.837-3.063L11 11.776z"],"social-media":["M11.5 5c.8 0 1.6-.4 2-1 2 1.2 3.3 3.3 3.5 5.7 0 .5.5.9 1 .9.6 0 1-.5 1-1v-.1c-.2-3.3-2.2-6.2-5.1-7.6C13.7.8 12.7 0 11.5 0 10.1 0 9 1.1 9 2.5S10.1 5 11.5 5zm5 7c-1.4 0-2.5 1.1-2.5 2.5 0 .4.1.7.2 1.1-1.1.9-2.6 1.4-4.2 1.4-1.9 0-3.6-.8-4.9-2-.2-.2-.5-.4-.8-.4-.5 0-1 .5-1 1 0 .3.1.5.3.7C5.3 18 7.5 19 10 19c2.2 0 4.2-.8 5.8-2.1.2.1.5.1.7.1 1.4 0 2.5-1.1 2.5-2.5S17.9 12 16.5 12zM5 10.5c0-1.1-.7-2.1-1.7-2.4.5-1.9 1.9-3.5 3.6-4.4.3-.2.6-.5.6-.9 0-.5-.4-1-1-1-.2 0-.4.1-.6.2-2.4 1.2-4.2 3.6-4.7 6.4C.5 8.9 0 9.6 0 10.5 0 11.9 1.1 13 2.5 13S5 11.9 5 10.5z"],sort:["M19 16h-9c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h9c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm0-5h-9c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h9c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zM7 15c-.28 0-.53.11-.71.29L5 16.59V11c0-.55-.45-1-1-1s-1 .45-1 1v5.59L1.71 15.3A.965.965 0 001 15a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 007 15zM19 1h-9c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1zm0 5h-9c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V7c0-.55-.45-1-1-1z"],"sort-alphabetical":["M8 15c-.28 0-.53.11-.71.29L6 16.59v-5.58c0-.55-.45-1-1-1s-1 .45-1 1v5.58L2.71 15.3c-.18-.18-.43-.3-.71-.3a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 008 15zm8.89-.79v-1.22H11.3v1.3h3.51L11 18.78V20h5.99v-1.3h-3.91l3.81-4.49zM14.97 0h-1.95L9.01 11.01h1.89l.98-2.92h4.17l.98 2.92h1.96L14.97 0zm-2.59 6.63l1.58-4.74H14l1.57 4.74h-3.19z"],"sort-alphabetical-desc":["M8.01 15c-.28 0-.53.11-.71.29L6 16.59v-5.58c0-.55-.45-1-1-1s-1 .45-1 1v5.58L2.71 15.3c-.18-.18-.43-.3-.71-.3a1.003 1.003 0 00-.71 1.71l3 3a1.014 1.014 0 001.42 0l3-3c.18-.18.29-.43.29-.71.01-.55-.44-1-.99-1zm4.44-5.65l6.4-7.88V0H10.5v1.67h5.91L10 9.44v1.57h9V9.35h-6.55zm1.27 3.64L11 20h1.59l.56-1.56h2.68l.55 1.56h1.64l-2.68-7.01h-1.62zm-.16 4.3l.93-2.57h.02l.9 2.57h-1.85z"],"sort-asc":["M10 8h5c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1h-5c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zm0 5h7c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1h-7c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zm0-10h3c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1h-3c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zm9 12h-9c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h9c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zM7 14c-.28 0-.53.11-.71.29L5 15.59V10c0-.55-.45-1-1-1s-1 .45-1 1v5.59L1.71 14.3A.965.965 0 001 14a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 007 14z"],"sort-desc":["M13 15h-3c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm-6-1c-.28 0-.53.11-.71.29L5 15.59V10c0-.55-.45-1-1-1s-1 .45-1 1v5.59L1.71 14.3A.965.965 0 001 14a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29s.53-.11.71-.29l3-3A1.003 1.003 0 007 14zM19 0h-9c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h9c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-4 10h-5c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h5c.55 0 1-.45 1-1v-1c0-.55-.45-1-1-1zm2-5h-7c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1h7c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z"],"sort-numerical":["M9 14.99c-.28 0-.53.11-.71.29L7 16.58v-5.59c0-.55-.45-1-1-1s-1 .45-1 1v5.59l-1.29-1.29a.965.965 0 00-.71-.3 1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29.28 0 .53-.11.71-.29l3-3c.18-.18.29-.43.29-.71a.99.99 0 00-1-1zm8.88.23c-.08-.42-.22-.79-.42-1.12-.2-.33-.47-.6-.8-.8-.33-.2-.76-.3-1.28-.3a2.333 2.333 0 00-1.72.71c-.21.22-.37.48-.49.78-.11.3-.17.62-.17.97 0 .27.04.54.13.8.08.26.22.5.4.7.19.21.43.38.71.5a2.142 2.142 0 001.72.02c.25-.12.47-.31.66-.58l.02.02c-.01.19-.04.4-.08.63-.04.24-.11.46-.21.67-.1.21-.23.38-.39.53a.92.92 0 01-.62.22c-.24 0-.44-.08-.6-.25-.16-.17-.27-.36-.31-.59h-1.31c.04.29.12.56.24.79.12.23.28.43.48.59.19.16.42.28.67.36.25.08.52.12.82.12.49 0 .9-.1 1.23-.31.34-.21.61-.48.82-.82.21-.34.37-.71.47-1.13.1-.42.15-.83.15-1.25 0-.43-.04-.85-.12-1.26zm-1.42.63c-.05.15-.11.28-.2.4-.09.12-.2.21-.34.27s-.3.1-.49.1c-.17 0-.33-.04-.46-.11s-.24-.17-.33-.29c-.08-.12-.15-.25-.19-.4-.04-.15-.06-.31-.06-.47 0-.15.02-.3.07-.45.05-.15.11-.28.2-.39.09-.12.2-.21.33-.28.13-.07.27-.11.44-.11.17 0 .33.04.47.11.14.07.25.17.34.28a1.387 1.387 0 01.28.86c.01.17-.02.33-.06.48zM15.32 11H17V0h-1.25c-.05.34-.17.62-.34.85-.17.23-.39.42-.63.57-.25.15-.52.25-.83.31-.3.06-.62.09-.94.09v1.41h2.31V11z"],"sort-numerical-desc":["M9 15c-.28 0-.53.11-.71.29L7 16.59v-5.58c0-.55-.45-1-1-1s-1 .45-1 1v5.58L3.71 15.3c-.18-.18-.43-.3-.71-.3a1.003 1.003 0 00-.71 1.71l3 3c.18.18.43.29.71.29.28 0 .53-.11.71-.29l3-3A1.003 1.003 0 009 15zm6.7-1.33a1.5 1.5 0 01-.44.43c-.17.11-.37.19-.58.23-.22.04-.44.06-.67.05v1.07h1.66V20H17v-6.99h-1.06c-.04.26-.12.48-.24.66zm3.15-10.3c-.11-.68-.29-1.26-.55-1.76-.26-.5-.62-.89-1.08-1.18C16.75.14 16.17 0 15.46 0c-.54 0-1.03.09-1.46.27-.43.18-.79.44-1.09.76-.3.33-.52.71-.67 1.15-.16.44-.24.92-.24 1.43 0 .54.08 1.04.23 1.47.15.44.37.81.65 1.12.28.31.61.55 1 .72.39.17.82.26 1.3.26.46 0 .88-.11 1.26-.33.38-.22.68-.53.9-.94l.03.03c-.03.35-.07.74-.12 1.16-.05.42-.15.81-.29 1.18-.14.37-.35.68-.61.92-.26.25-.62.37-1.06.37-.43 0-.77-.13-1.03-.4-.25-.27-.4-.62-.44-1.05h-1.64c.02.43.11.83.29 1.18.17.35.39.66.67.91a3.027 3.027 0 002.07.8c.71 0 1.3-.17 1.79-.5.48-.33.87-.76 1.17-1.29.3-.53.51-1.12.64-1.76.13-.64.19-1.28.19-1.92.01-.77-.05-1.49-.15-2.17zM17.1 4.44c-.08.27-.19.5-.34.71-.15.21-.34.37-.57.49-.23.12-.5.18-.8.18-.3 0-.56-.06-.78-.19-.22-.13-.4-.29-.55-.49-.14-.2-.25-.44-.32-.7-.07-.27-.11-.55-.11-.84 0-.28.04-.55.11-.82.07-.26.18-.49.32-.7.14-.2.33-.36.55-.48.22-.12.48-.17.78-.17.31 0 .57.06.8.18.23.12.42.28.57.48.15.2.26.43.34.69.08.26.11.53.11.82 0 .29-.04.57-.11.84z"],"split-columns":["M15 13a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-3-3a1.003 1.003 0 00-1.42 1.42L16.59 9H11V2h5v2c.77 0 1.47.3 2 .78V1c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v3.78C2.53 4.3 3.23 4 4 4V2h5v7H3.41L4.7 7.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-3 3C.11 9.47 0 9.72 0 10c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L3.41 11H9v7H4v-2c-.77 0-1.47-.3-2-.78V19c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-3.78c-.53.48-1.23.78-2 .78v2h-5v-7h5.59l-1.29 1.29c-.19.18-.3.43-.3.71z"],square:["M19 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H2V2h16v16z"],"stacked-chart":["M12 2c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v4h4V2zm3 14h2c.55 0 1-.45 1-1v-5h-4v5c0 .55.45 1 1 1zm3-10c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v3h4V6zm-6 1H8v5h4V7zm-9 9h2c.55 0 1-.45 1-1v-3H2v3c0 .55.45 1 1 1zm16 1H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zM6 9c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v2h4V9zm3 7h2c.55 0 1-.45 1-1v-2H8v2c0 .55.45 1 1 1z"],star:["M10 0l3.1 6.6 6.9 1-5 5.1 1.2 7.3-6.2-3.4L3.8 20 5 12.7 0 7.6l6.9-1z"],"star-empty":["M20 7.6l-6.9-1.1L10 0 6.9 6.6 0 7.6l5 5.1L3.8 20l6.2-3.4 6.2 3.4-1.2-7.2 5-5.2zM10 15l-4.5 2.4.9-5.2-3.6-3.6 5-.8L10 3.1l2.2 4.7 5 .8-3.6 3.7.9 5.2L10 15z"],"step-backward":["M15 3c-.23 0-.42.09-.59.21l-.01-.01L8 8V4c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-4l6.4 4.8.01-.01c.17.12.36.21.59.21.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"step-chart":["M19 16H2v-3h4c.55 0 1-.45 1-1V8h3v2c0 .55.45 1 1 1h5c.55 0 1-.45 1-1V6h2c.55 0 1-.45 1-1s-.45-1-1-1h-3c-.55 0-1 .45-1 1v4h-3V7c0-.55-.45-1-1-1H6c-.55 0-1 .45-1 1v4H2V3c0-.55-.45-1-1-1s-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],"step-forward":["M15 3h-2c-.55 0-1 .45-1 1v4L5.6 3.2l-.01.01C5.42 3.09 5.23 3 5 3c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1 .23 0 .42-.09.59-.21l.01.01L12 12v4c0 .55.45 1 1 1h2c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],stop:["M16 3H4c-.55 0-1 .45-1 1v12c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],stopwatch:["M10 6a6 6 0 106 6h-6V6zm-.998-1.938A1.015 1.015 0 019 4V2H7a1 1 0 110-2h6a1 1 0 010 2h-2v2c0 .02 0 .041-.002.062A8.001 8.001 0 0110 20a8 8 0 01-.998-15.938z"],strikethrough:["M18 9h-4.46a4.7 4.7 0 00-.4-.14c-.19-.05-.51-.14-.96-.25-.45-.11-.9-.23-1.37-.35-.47-.12-.89-.23-1.27-.33s-.6-.16-.65-.17c-.53-.15-.95-.37-1.27-.66-.32-.28-.49-.68-.49-1.19 0-.36.09-.66.26-.9s.39-.43.65-.57c.26-.14.55-.24.87-.3s.63-.09.93-.09c.89 0 1.63.19 2.21.57.45.3.75.76.89 1.38h2.63c-.06-.52-.2-.98-.42-1.4-.3-.57-.71-1.05-1.23-1.43a5.33 5.33 0 00-1.79-.87c-.7-.2-1.42-.3-2.19-.3-.66 0-1.31.08-1.96.25s-1.22.43-1.73.77-.92.79-1.23 1.32c-.31.52-.46 1.15-.46 1.87 0 .37.05.74.15 1.1.1.36.28.7.53 1.02.18.24.41.47.69.67H2c-.55 0-1 .45-1 1s.45 1 1 1h10.14c.02.01.05.02.07.02.3.11.58.29.84.55.25.26.38.67.38 1.21 0 .27-.06.53-.17.79-.11.26-.29.49-.54.69-.25.2-.57.36-.97.49s-.88.19-1.44.19c-.52 0-1.01-.06-1.45-.17-.45-.11-.84-.29-1.19-.54s-.61-.56-.8-.95c-.05-.08-.09-.18-.12-.28H4.11c.09.43.22.82.4 1.18.33.65.77 1.18 1.32 1.59.55.41 1.2.72 1.94.92.74.2 1.53.3 2.37.3.73 0 1.44-.08 2.14-.25.7-.17 1.33-.43 1.88-.79.55-.36.99-.83 1.33-1.39.34-.56.51-1.25.51-2.05 0-.37-.06-.75-.18-1.12a3.12 3.12 0 00-.15-.39H18c.55 0 1-.45 1-1s-.45-1-1-1z"],style:["M18 18H2V2h12.3l2-2H1C.4 0 0 .4 0 1v18c0 .6.4 1 1 1h18c.6 0 1-.4 1-1V7.7l-2 2V18zm1.2-18l-7.6 7.6 2.8 2.8L20 4.8V0h-.8zM4 15.9c3.1.2 5.9.2 8.2-2 1.1-1.1 1.1-3 0-4.1-.6-.5-1.3-.8-2-.8s-1.4.3-1.9.8C7.2 11 6.6 14.3 4 15.9z"],"swap-horizontal":["M16.02 10c-.01 0-.01 0 0 0H16h.02zM2 6h13.58l-2.29 2.29a1 1 0 00-.3.71 1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-4-4a1.003 1.003 0 00-1.42 1.42L15.58 4H2c-.55 0-1 .45-1 1s.45 1 1 1zm2 4h-.02H4zm14 4H4.42l2.29-2.29a1 1 0 00.3-.71 1.003 1.003 0 00-1.71-.71l-4 4c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L4.42 16H18c.55 0 1-.45 1-1s-.45-1-1-1z"],"swap-vertical":["M9.71 5.3l-4-4A.997.997 0 005 1.01c-.28 0-.53.11-.71.29l-4 4a1.003 1.003 0 001.42 1.42L4 4.42V18c0 .55.45 1 1 1s1-.45 1-1V4.42l2.29 2.29a1 1 0 00.71.3 1.003 1.003 0 00.71-1.71zM10 3.98c0 .01 0 .01 0 0V4v-.02zm0 12.04c0-.01 0-.01 0 0V16v.02zm9-3.03c-.28 0-.53.11-.71.29L16 15.58V2c0-.55-.45-1-1-1s-1 .45-1 1v13.58l-2.29-2.29a1.003 1.003 0 00-1.42 1.42l4 4c.18.18.43.29.71.29.28 0 .53-.11.71-.29l4-4c.18-.18.29-.43.29-.71 0-.56-.45-1.01-1-1.01z"],switch:["M12.293 2.293l1.414 1.414-7.127 7.129a3.5 3.5 0 11-1.415-1.415l7.128-7.128zM16.5 9a3.5 3.5 0 110 7 3.5 3.5 0 010-7zm-13 2a1.5 1.5 0 100 3 1.5 1.5 0 000-3zm13 0a1.5 1.5 0 100 3 1.5 1.5 0 000-3z"],"symbol-circle":["M10 4.01a6 6 0 100 12 6 6 0 100-12z"],"symbol-cross":["M15 8.01h-3v-3c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v3H5c-.55 0-1 .45-1 1v2c0 .55.45 1 1 1h3v3c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-3h3c.55 0 1-.45 1-1v-2c0-.56-.45-1-1-1z"],"symbol-diamond":["M15 10.01c0-.21-.08-.39-.18-.54l.02-.01-4-6-.02.01c-.18-.28-.47-.46-.82-.46s-.64.18-.82.45l-.01-.01-4 6 .02.01c-.11.16-.19.34-.19.55s.08.39.18.54l-.02.01 4 6 .02-.01c.18.27.47.46.82.46s.64-.19.82-.46l.02.01 4-6-.02-.01c.1-.16.18-.34.18-.54z"],"symbol-square":["M15 4.01H5c-.55 0-1 .45-1 1v10c0 .55.45 1 1 1h10c.55 0 1-.45 1-1v-10c0-.56-.45-1-1-1z"],"symbol-triangle-down":["M16 5c0-.55-.45-1-1-1H5c-.55 0-1 .45-1 1 0 .16.05.31.11.44H4.1l5 10h.01c.17.33.5.56.89.56s.72-.23.89-.56h.01l5-10h-.01c.06-.13.11-.28.11-.44z"],"symbol-triangle-up":["M15.89 14.56l-4.99-10h-.01c-.17-.33-.5-.56-.89-.56s-.72.23-.89.56H9.1l-5 10h.01c-.06.13-.11.28-.11.44 0 .55.45 1 1 1h10c.55 0 1-.45 1-1 0-.16-.05-.31-.11-.44z"],tag:["M2 4a2 2 0 012-2h4.588a2 2 0 011.414.586l7.41 7.41a2 2 0 010 2.828l-4.588 4.588a2 2 0 01-2.829 0l-7.41-7.41A2 2 0 012 8.588V4zm3.489-.006a1.495 1.495 0 100 2.99 1.495 1.495 0 000-2.99z"],"take-action":["M5 7c.28 0 .53-.11.71-.29l5-5A1.003 1.003 0 009.29.29l-5 5A1.003 1.003 0 005 7zm6 6a1.003 1.003 0 001.71.71l5-5a1.003 1.003 0 00-1.42-1.42l-5 5c-.18.18-.29.43-.29.71zm8 5h-1c0-.55-.45-1-1-1h-7c-.55 0-1 .45-1 1H8c-.55 0-1 .45-1 1s.45 1 1 1h11c.55 0 1-.45 1-1s-.45-1-1-1zm-9-6l6-6-1.29-1.29a1.003 1.003 0 00-1.42-1.42L12 2 6 8l1.29 1.29-7 7a1.003 1.003 0 001.42 1.42l7-7L10 12z"],taxi:["M19 9h-.33l.33 1v.5c0 .15-.03.3-.07.44h.01L17 17.23v.27c0 .83-.67 1.5-1.5 1.5s-1.5-.67-1.5-1.5V17H6v.5c0 .83-.67 1.5-1.5 1.5S3 18.33 3 17.5v-.27l-1.93-6.28h.01c-.05-.15-.08-.3-.08-.45V10s.02-.06.05-.16c.06-.17.16-.47.28-.84H1c-.55 0-1-.45-1-1s.45-1 1-1h1l1-3h-.01v-.01c.25-.64 1-1.31 1.67-1.5 0 0 .78-.21 2.33-.36V1c0-.55.45-1 1-1h4c.55 0 1 .45 1 1v1.13c1.55.14 2.33.36 2.33.36.67.19 1.42.86 1.67 1.5V4H17l1 3h1c.55 0 1 .45 1 1s-.45 1-1 1zM3 11.5c0 .83.67 1.5 1.5 1.5S6 12.33 6 11.5 5.33 10 4.5 10 3 10.67 3 11.5zM16 7l-1-3H5L4 7v1h12V7zm-.5 3c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z"],"text-highlight":["M16 17c-.55 0-1-.45-1-1V4c0-.55.45-1 1-1s1-.45 1-1-.45-1-1-1c-.77 0-1.47.3-2 .78-.53-.48-1.23-.78-2-.78-.55 0-1 .45-1 1s.45 1 1 1 1 .45 1 1v12c0 .55-.45 1-1 1s-1 .45-1 1 .45 1 1 1c.77 0 1.47-.3 2-.78.53.48 1.23.78 2 .78.55 0 1-.45 1-1s-.45-1-1-1zm-4-4H2V7h10V5H1c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h11v-2zm7-8h-3v2h2v6h-2v2h3c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1z"],th:["M19 1H1c-.6 0-1 .5-1 1v16c0 .5.4 1 1 1h18c.5 0 1-.5 1-1V2c0-.5-.5-1-1-1zM7 17H2v-3h5v3zm0-4H2v-3h5v3zm0-4H2V6h5v3zm11 8H8v-3h10v3zm0-4H8v-3h10v3zm0-4H8V6h10v3z"],"th-derived":["M5.3 13.3c-.2.2-.3.4-.3.7 0 .6.4 1 1 1 .3 0 .5-.1.7-.3l3-3c.2-.2.3-.4.3-.7s-.1-.5-.3-.7l-3-3C6.5 7.1 6.3 7 6 7c-.6 0-1 .4-1 1 0 .3.1.5.3.7L6.6 10H1c-.6 0-1 .4-1 1s.4 1 1 1h5.6l-1.3 1.3zM19 1H3c-.5 0-1 .5-1 1v6h1c0-1.7 1.3-3 3-3 .8 0 1.6.3 2.1.9l.1.1H9v.8l1 1V6h8v3h-6.8c.3.3.5.6.6 1H18v3h-6.8l-.1.1-.9.9H18v3h-8v-2.8l-1 1V17H4v-.8c-.6-.5-1-1.3-1-2.2H2v4c0 .5.5 1 1 1h16c.6 0 1-.5 1-1V2c0-.5-.5-1-1-1z"],"th-disconnect":["M14.25 1H19c.5 0 1 .5 1 1v16c0 .5-.5 1-1 1h-7.221l.278-2H18v-3h-5.527l.14-1H18v-3h-4.971l.139-1H18V6h-4.416l.637-4.587c.02-.139.03-.277.03-.413zM8.221 1l-.694 5H2v3h5.11l-.139 1H2v3h4.555l-.14 1H2v3h3.999l-.22 1.587c-.02.139-.03.277-.03.413H1c-.6 0-1-.5-1-1V2c0-.5.4-1 1-1h7.221zM10.26.862a1 1 0 011.98.276l-2.5 18a1 1 0 01-1.98-.276l2.5-18z"],"th-filtered":["M17.333 10l1.435-1.722a1 1 0 00.232-.64V4.85l1-.9V18c0 .5-.5 1-1 1H1c-.6 0-1-.5-1-1V2c0-.5.4-1 1-1h6.722L12 4.85V6H8v3h4v1H8v3h10v-3h-.667zM7 17v-3H2v3h5zm0-4v-3H2v3h5zm0-4V6H2v3h5zm11 8v-3H8v3h10z","M19.35 0a.642.642 0 01.46 1.1l-3.03 3.03v2.95c0 .18-.07.34-.19.46l-1.28 1.29c-.11.1-.27.17-.45.17-.35 0-.64-.29-.64-.64V4.13L11.19 1.1a.642.642 0 01.45-1.1h7.71z"],"th-list":["M19 1H1c-.6 0-1 .5-1 1v16c0 .5.4 1 1 1h18c.5 0 1-.5 1-1V2c0-.5-.5-1-1-1zm-1 16H2v-3h16v3zm0-4H2v-3h16v3zm0-4H2V6h16v3z"],"thumbs-down":["M18.55 6.56c-.31-.01-.65-.03-1.02-.06.03 0 .06-.01.09-.01.88-.12 1.68-.63 1.76-1.37.08-.75-.58-1.25-1.46-1.33-.32-.03-.65-.05-.99-.08.59-.19 1.05-.54 1.09-1.2.05-.75-.99-1.32-1.87-1.41-.34-.03-.64-.05-.91-.07h-.11c-.28-.02-.54-.02-.77-.02-3.92-.08-7.29.6-9.36 1.93v7.72c2.67 1.66 5.95 4.61 5.26 7.08-.21.76.39 1.35 1.23 1.26 1.01-.11 1.71-1.18 1.75-2.28.05-1.29-.19-2.59-.62-3.74-.05-.32.01-.65.47-.68.61-.04 1.39-.08 1.99-.1.32 0 .64-.01.94-.03h.01c.52-.03 1-.07 1.42-.12.88-.11 1.69-.6 1.79-1.35.1-.75-.55-1.25-1.44-1.35-.07-.01-.13-.02-.2-.02.21-.02.42-.04.61-.06.88-.11 1.69-.6 1.79-1.35.09-.75-.56-1.31-1.45-1.36zM3 3H0v8h3c.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"thumbs-up":["M3 9H0v8h3c.55 0 1-.45 1-1v-6c0-.55-.45-1-1-1zm16.99 3.09c-.1-.75-.91-1.24-1.79-1.35-.19-.02-.4-.05-.61-.06.07-.01.14-.01.2-.02.88-.1 1.53-.61 1.44-1.35-.1-.74-.91-1.24-1.79-1.35-.42-.05-.9-.09-1.42-.12h-.01l-.94-.03c-.6-.02-1.39-.05-1.99-.1-.45-.03-.51-.36-.47-.68.43-1.15.67-2.45.62-3.74-.04-1.11-.74-2.17-1.75-2.28-.84-.09-1.45.5-1.23 1.26.7 2.47-2.58 5.43-5.25 7.08v7.72c2.08 1.33 5.44 2.01 9.35 1.93.24 0 .49-.01.77-.02h.11c.27-.02.57-.04.91-.07.88-.08 1.92-.66 1.87-1.41-.04-.65-.5-1.01-1.09-1.2.34-.03.67-.05.99-.08.89-.08 1.55-.58 1.46-1.33-.08-.75-.88-1.25-1.76-1.37-.03 0-.06-.01-.09-.01.37-.02.71-.04 1.02-.06.91-.05 1.55-.61 1.45-1.36z"],tick:["M17 4c-.28 0-.53.11-.71.29L7 13.59 3.71 10.3A.965.965 0 003 10a1.003 1.003 0 00-.71 1.71l4 4c.18.18.43.29.71.29s.53-.11.71-.29l10-10A1.003 1.003 0 0017 4z"],"tick-circle":["M10 20C4.48 20 0 15.52 0 10S4.48 0 10 0s10 4.48 10 10-4.48 10-10 10zm5-14c-.28 0-.53.11-.71.29L8 12.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29.28 0 .53-.11.71-.29l7-7A1.003 1.003 0 0015 6z"],time:["M11 9.59V4c0-.55-.45-1-1-1s-1 .45-1 1v6c0 .28.11.53.29.71l3 3a1.003 1.003 0 001.42-1.42L11 9.59zM10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"],"timeline-area-chart":["M19 16H2V3c0-.55-.45-1-1-1s-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zm0-13.41l-7.07 7.07-4.3-3.44-.01.01A.987.987 0 007 6c-.24 0-.46.1-.63.24l-.01-.01L3 9.03V15h16V2.59z"],"timeline-bar-chart":["M19 17H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1zM9 16h2c.55 0 1-.45 1-1V2c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1v13c0 .55.45 1 1 1zm6 0h2c.55 0 1-.45 1-1V6c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1zM3 16h2c.55 0 1-.45 1-1V9c0-.55-.45-1-1-1H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1z"],"timeline-events":["M5 5c.6 0 1-.4 1-1V2c0-.5-.4-1-1-1s-1 .5-1 1v2c0 .6.4 1 1 1zm10 0c.6 0 1-.4 1-1V2c0-.5-.4-1-1-1s-1 .5-1 1v2c0 .6.4 1 1 1zm-9 9H4v2h2v-2zM17 3v1c0 1.1-.9 2-2 2s-2-.9-2-2V3H7v1c0 1.1-.9 2-2 2s-2-.9-2-2V3H2c-.5 0-1 .5-1 1v14c0 .5.5 1 1 1h16c.5 0 1-.5 1-1V4c0-.5-.5-1-1-1h-1zM7 17H3v-4h4v4zm0-5H3V8h4v4zm5 5H8v-4h4v4zm0-5H8V8h4v4zm5 5h-4v-4h4v4zm0-5h-4V8h4v4zm-6 2H9v2h2v-2zm5-5h-2v2h2V9z"],"timeline-line-chart":["M19 16H2v-1.59l5-5 3.29 3.29c.18.19.43.3.71.3s.53-.11.71-.29l7-7a1.003 1.003 0 00-1.42-1.42L11 10.59l-3.29-3.3C7.53 7.11 7.28 7 7 7s-.53.11-.71.29L2 11.59V3c0-.55-.45-1-1-1s-1 .45-1 1v14a.998.998 0 001 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],tint:["M9.86 2S3.98 9.18 3.98 12.17C3.99 15.4 6.78 18 9.96 18c3.18-.01 6.04-2.63 6.03-5.86C15.99 9.05 9.86 2 9.86 2z"],torch:["M6.97 19c0 .55.45 1 1 1h4c.55 0 1-.45 1-1v-2h-6v2zm-3-15l3 4v8h6V8l3-4h-12zm5 5c0-.55.45-1 1-1s1 .45 1 1v2c0 .55-.45 1-1 1s-1-.45-1-1V9zm6-9h-10c-.55 0-1 .45-1 1v2h12V1c0-.55-.45-1-1-1z"],tractor:["M4.5 11a4.5 4.5 0 110 9 4.5 4.5 0 010-9zm11.499 1a4 4 0 110 8 4 4 0 010-8zm-11.5 1.571a1.928 1.928 0 100 3.857 1.928 1.928 0 000-3.857zM16 14.667a1.333 1.333 0 100 2.666 1.333 1.333 0 000-2.666zM5.999 0C7.46 0 8.527.668 9 2l.851 4.256c1.433.096 2.82.217 4.147.362V2h2L16 6.862c.962.13 1.886.275 2.767.435.779.141 1.232.614 1.232 1.284L20 13a4.995 4.995 0 00-4-1.997A5.001 5.001 0 0011.099 15h-1.12a5.499 5.499 0 00-5.478-4.994 5.482 5.482 0 00-3.377 1.157H.004v-1.18L0 7.327c-.002-.597.37-1.18.999-1.302V1a1 1 0 011-1h4zm1 2H3v4h.75c1.386.027 2.749.073 4.079.139L6.999 2z"],train:["M16 18h-2l2 2H4l.12-.12L6 18H4c-1.1 0-2-.9-2-2V2c0-1.1 3.58-2 8-2s8 .9 8 2v14c0 1.1-.9 2-2 2zM5.5 15c.83 0 1.5-.67 1.5-1.5S6.33 12 5.5 12 4 12.67 4 13.5 4.67 15 5.5 15zM9 3H4v6h5V3zm7 0h-5v6h5V3zm-1.5 9c-.83 0-1.5.67-1.5 1.5s.67 1.5 1.5 1.5 1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z"],translate:["M19.89 18.56l-4.99-10h-.01c-.17-.33-.5-.56-.89-.56s-.72.23-.89.56h-.01l-1.73 3.46-2.8-2.3 1.99-1.64C11.44 7.34 12 6.23 12 5V4h1c.55 0 1-.45 1-1s-.45-1-1-1H8V1c0-.55-.45-1-1-1S6 .45 6 1v1H1c-.55 0-1 .45-1 1s.45 1 1 1h9v1c0 .62-.28 1.18-.73 1.54L7 8.42 4.73 6.54C4.28 6.18 4 5.62 4 5H2c0 1.23.56 2.34 1.44 3.07l1.99 1.64-3.06 2.52.01.01c-.23.18-.38.45-.38.76 0 .55.45 1 1 1 .24 0 .45-.1.63-.24l.01.01L7 11l3.36 2.77.01-.01c.02.02.05.03.08.05.01 0 .01.01.02.02l-2.36 4.73h.01c-.07.13-.12.28-.12.44 0 .55.45 1 1 1 .39 0 .72-.23.89-.56h.01L11.12 17h5.76l1.22 2.45h.01c.17.32.5.55.89.55.55 0 1-.45 1-1 0-.16-.05-.31-.11-.44zM12.12 15L14 11.24 15.88 15h-3.76z"],trash:["M17 1h-5c0-.55-.45-1-1-1H9c-.55 0-1 .45-1 1H3c-.55 0-1 .45-1 1v1h16V2c0-.55-.45-1-1-1zm.5 3h-15c-.28 0-.5.22-.5.5s.22.5.5.5H3v14c0 .55.45 1 1 1h12c.55 0 1-.45 1-1V5h.5c.28 0 .5-.22.5-.5s-.22-.5-.5-.5zM7 16c0 .55-.45 1-1 1s-1-.45-1-1V8c0-.55.45-1 1-1s1 .45 1 1v8zm4 0c0 .55-.45 1-1 1s-1-.45-1-1V8c0-.55.45-1 1-1s1 .45 1 1v8zm4 0c0 .55-.45 1-1 1s-1-.45-1-1V8c0-.55.45-1 1-1s1 .45 1 1v8z"],tree:["M11 15.542V20H9v-4.458L2 17l4.5-5.625L4 12l3.655-5.483L6 7l4-7 4 7-1.655-.483L16 12l-2.5-.625L18 17l-7-1.458z"],"trending-down":["M19 10c-.55 0-1 .45-1 1v1.37l-6.25-7.03-.01.01A.971.971 0 0011 5c-.23 0-.42.09-.59.21l-.01-.01-3.43 2.58-5.42-3.61-.01.01A.969.969 0 001 4c-.55 0-1 .45-1 1 0 .35.19.64.46.82l-.01.01 6 4 .01-.02c.15.11.33.19.54.19.23 0 .42-.09.59-.21l.01.01 3.26-2.45L16.77 14H15c-.55 0-1 .45-1 1s.45 1 1 1h4c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1z"],"trending-up":["M19 4h-4c-.55 0-1 .45-1 1s.45 1 1 1h1.77l-5.91 6.65L7.6 10.2l-.01.01C7.42 10.09 7.23 10 7 10c-.21 0-.39.08-.54.18l-.01-.02-6 4 .01.02c-.27.18-.46.47-.46.82 0 .55.45 1 1 1 .21 0 .39-.08.54-.18l.01.02 5.41-3.61 3.43 2.58.01-.01c.18.11.37.2.6.2.3 0 .56-.14.74-.34l.01.01L18 7.63V9c0 .55.45 1 1 1s1-.45 1-1V5c0-.55-.45-1-1-1z"],truck:["M16 0a1 1 0 011 1v11a1 1 0 011 1v3h.5a.5.5 0 01.5.5v1a.5.5 0 01-.5.5H17v1a1 1 0 01-1 1h-1a1 1 0 01-1-1v-1H6v1a1 1 0 01-1 1H4a1 1 0 01-1-1v-1H1.5a.5.5 0 01-.5-.5v-1a.5.5 0 01.5-.5H2v-3a1 1 0 011-1V1a1 1 0 112 0v3a2 2 0 012-2h6a2 2 0 012 2V1a1 1 0 011-1zm-4 10H8a1 1 0 00-1 1v4a1 1 0 001 1h4a1 1 0 001-1v-4a1 1 0 00-1-1zm-7 4H4a1 1 0 000 2h1a1 1 0 000-2zm11 0h-1a1 1 0 000 2h1a1 1 0 000-2zm-4.5 0a.5.5 0 110 1h-3l-.09-.008A.5.5 0 018.5 14zm0-1.5a.5.5 0 110 1h-3l-.09-.008a.5.5 0 01.09-.992zm0-1.5a.5.5 0 110 1h-3l-.09-.008A.5.5 0 018.5 11zM14 5H6v3h8V5z"],"two-columns":["M5 0H1C.45 0 0 .45 0 1v18c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm14.71 9.29l-3-3A1.003 1.003 0 0015 7v6a1.003 1.003 0 001.71.71l3-3c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71zM12 0H8c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h4c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],unarchive:["M16.434 0a1 1 0 01.857.486L20 5v14a1 1 0 01-1 1H1a1 1 0 01-1-1V5L2.709.486A1 1 0 013.566 0h12.868zM10 8c-.28 0-.53.11-.71.29l-3 3-.084.096A1.003 1.003 0 007.71 12.71L9 11.41v4.58l.007.116c.058.496.482.884.993.884.55 0 1-.45 1-1v-4.58l1.29 1.29.081.073c.171.139.389.227.629.227a1.003 1.003 0 00.71-1.71l-3-3-.096-.084A1.002 1.002 0 0010 8zm6-6H4L2 5.002h16L16 2z"],underline:["M10 17c3.3 0 6-2.7 6-6V3.5c0-.8-.7-1.5-1.5-1.5S13 2.7 13 3.5V11c0 1.7-1.3 3-3 3s-3-1.3-3-3V3.5C7 2.7 6.3 2 5.5 2S4 2.7 4 3.5V11c0 3.3 2.7 6 6 6zM16.5 19h-13c-.3 0-.5.2-.5.5s.2.5.5.5h13c.3 0 .5-.2.5-.5s-.2-.5-.5-.5z"],undo:["M5 14c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm9-9H3.41L5.7 2.71c.19-.18.3-.43.3-.71a1.003 1.003 0 00-1.71-.71l-4 4C.11 5.47 0 5.72 0 6c0 .28.11.53.29.71l4 4a1.003 1.003 0 001.42-1.42L3.41 7H14c2.21 0 4 1.79 4 4s-1.79 4-4 4H9v2h5c3.31 0 6-2.69 6-6s-2.69-6-6-6z"],"ungroup-objects":["M4.5 6C2.01 6 0 8.01 0 10.5S2.01 15 4.5 15 9 12.99 9 10.5 6.99 6 4.5 6zm11 0C13.01 6 11 8.01 11 10.5s2.01 4.5 4.5 4.5 4.5-2.01 4.5-4.5S17.99 6 15.5 6z"],"unknown-vehicle":["M13 11.988v-4H4v-1l1-3h6V2.003a35.867 35.867 0 00-1-.015c-3.593 0-5.332.488-5.332.488-.67.188-1.424.864-1.674 1.503l-.004.009H3l-1 3H1a1 1 0 100 2h.333l-.28.84-.053.16v7.5a1.5 1.5 0 103 0v-.5h12v.5a1.5 1.5 0 103 0v-4.5h-5a1 1 0 01-1-1zm-8.5 1a1.5 1.5 0 110-3 1.5 1.5 0 010 3zM19.83 2.782a2.392 2.392 0 00-.592-.853c-.276-.264-.64-.485-1.09-.663C17.695 1.09 17.132 1 16.457 1c-.523 0-.996.084-1.418.253a3.157 3.157 0 00-1.084.703c-.299.3-.532.656-.698 1.065-.166.41-.254.861-.264 1.353h2.096c0-.246.028-.476.085-.69.057-.214.145-.4.264-.56.119-.16.27-.287.456-.383.185-.095.406-.143.663-.143.38 0 .677.1.89.3.215.2.321.51.321.93.01.245-.035.45-.135.614-.1.164-.23.314-.392.45a8.598 8.598 0 01-.527.41 3.53 3.53 0 00-.542.485c-.171.187-.32.412-.45.676-.127.265-.206.592-.234.984v.614h1.924v-.519c.038-.273.13-.5.278-.683.147-.182.316-.343.506-.484a13.5 13.5 0 01.606-.424c.214-.14.408-.312.584-.512s.323-.442.442-.724.178-.642.178-1.079c0-.264-.059-.548-.178-.854zm-4.54 6.099v2.103h2.237V8.881H15.29z"],unlock:["M14 1c-2.21 0-4 1.79-4 4v4H2c-.55 0-1 .45-1 1v8c0 .55.45 1 1 1h12c.55 0 1-.45 1-1v-8c0-.55-.45-1-1-1h-2V5c0-1.1.9-2 2-2s2 .9 2 2v2c0 .55.45 1 1 1s1-.45 1-1V5c0-2.21-1.79-4-4-4z"],unpin:["M11.77 1.16c-.81.81-.74 2.28.02 3.76L6.1 8.71c-2.17-1.46-4.12-2-4.94-1.18l4.95 4.95-2.12 3.54 3.54-2.12 4.95 4.95c.82-.82.27-2.77-1.19-4.94l3.8-5.69c1.47.76 2.94.84 3.76.02l-7.08-7.08z"],unresolve:["M11.47 12.46c.16-.36.29-.74.38-1.14 0-.02.01-.04.01-.06.09-.4.14-.82.14-1.26 0-.44-.05-.86-.14-1.27 0-.02-.01-.04-.01-.06-.09-.4-.22-.78-.38-1.14-.01-.02-.02-.03-.02-.05a5.94 5.94 0 00-.61-1.03c0-.01-.01-.01-.01-.02a6.308 6.308 0 00-2.1-1.77c-.19-.1-.39-.18-.59-.26-.03-.01-.06-.02-.1-.03-.17-.07-.34-.12-.52-.17-.05-.01-.1-.03-.15-.04a4.34 4.34 0 00-.52-.09c-.05-.01-.11-.02-.17-.03C6.46 4.02 6.23 4 6 4c-3.31 0-6 2.69-6 6s2.69 6 6 6c.23 0 .46-.02.68-.04l.17-.03c.17-.02.34-.06.51-.09.05-.01.1-.03.15-.04.18-.05.36-.1.53-.17l.09-.03a5.973 5.973 0 002.68-2.04c0-.01.01-.01.01-.02.24-.32.44-.66.61-1.03.02-.01.03-.03.04-.05zM14 4c-.99 0-1.91.24-2.73.66a7.51 7.51 0 010 10.68c.82.42 1.74.66 2.73.66 3.31 0 6-2.69 6-6s-2.69-6-6-6z"],updated:["M10 0C6.71 0 3.82 1.6 2 4.05V2c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1h4c.55 0 1-.45 1-1s-.45-1-1-1H3.76C5.22 3.17 7.47 2 10 2c4.42 0 8 3.58 8 8s-3.58 8-8 8-8-3.58-8-8c0-.55-.45-1-1-1s-1 .45-1 1c0 5.52 4.48 10 10 10s10-4.48 10-10S15.52 0 10 0zm4 7c-.28 0-.53.11-.71.29L9 11.58 6.71 9.29a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29.28 0 .53-.11.71-.29l5-5A1.003 1.003 0 0014 7z"],upload:["M10 0C4.48 0 0 4.48 0 10s4.48 10 10 10 10-4.48 10-10S15.52 0 10 0zm4 10c-.28 0-.53-.11-.71-.29L11 7.41V15c0 .55-.45 1-1 1s-1-.45-1-1V7.41l-2.29 2.3a1.003 1.003 0 01-1.42-1.42l4-4c.18-.18.43-.29.71-.29s.53.11.71.29l4 4A1.003 1.003 0 0114 10z"],user:["M10 0C4.48 0 0 4.48 0 10c0 .33.02.65.05.97.01.12.03.23.05.35.03.2.05.4.09.59.03.14.06.28.1.42l.12.48c.05.16.1.31.15.46.05.13.09.27.15.4.06.16.13.32.21.48.05.11.1.22.16.33.09.17.17.34.27.5.05.09.1.17.15.25.11.18.22.35.34.52.04.06.08.11.12.17 1.19 1.62 2.85 2.86 4.78 3.53l.09.03c.46.15.93.27 1.42.36.08.01.17.03.25.04.49.07.99.12 1.5.12s1.01-.05 1.5-.12c.08-.01.17-.02.25-.04.49-.09.96-.21 1.42-.36l.09-.03c1.93-.67 3.59-1.91 4.78-3.53.04-.05.08-.1.12-.16.12-.17.23-.35.34-.53.05-.08.1-.16.15-.25.1-.17.19-.34.27-.51.05-.11.1-.21.15-.32.07-.16.14-.32.21-.49.05-.13.1-.26.14-.39.05-.15.11-.31.15-.46.05-.16.08-.32.12-.48.03-.14.07-.28.1-.42.04-.19.06-.39.09-.59.02-.12.04-.23.05-.35.05-.32.07-.64.07-.97 0-5.52-4.48-10-10-10zm0 18a7.94 7.94 0 01-6.15-2.89c.84-.44 1.86-.82 2.67-1.19 1.45-.65 1.3-1.05 1.35-1.59.01-.07.01-.14.01-.21-.51-.45-.93-1.08-1.2-1.8l-.01-.01c0-.01-.01-.02-.01-.03a4.42 4.42 0 01-.15-.48c-.33-.07-.53-.44-.61-.79-.08-.14-.23-.48-.2-.87.05-.51.26-.74.49-.83v-.08c0-.63.06-1.55.17-2.15.02-.17.06-.33.11-.5.21-.73.66-1.4 1.26-1.86.62-.47 1.5-.72 2.28-.72.78 0 1.65.25 2.27.73.6.46 1.05 1.12 1.26 1.86.05.16.08.33.11.5.11.6.17 1.51.17 2.15v.09c.22.1.42.33.46.82.04.39-.12.73-.2.87-.07.34-.27.71-.6.78-.04.16-.09.33-.15.48 0 .01-.02.05-.02.05-.26.71-.67 1.33-1.17 1.78 0 .08.01.16.01.23.05.54-.15.94 1.31 1.59.81.36 1.84.74 2.68 1.19A7.958 7.958 0 0110 18z"],variable:["M4.93 3.79a9.1 9.1 0 012.2-2.27L7.29 1c-1.38.59-2.57 1.33-3.55 2.22C2.46 4.39 1.49 5.72.83 7.23.28 8.51 0 9.81 0 11.12c0 2.28.83 4.57 2.49 6.86l.16-.55c-.49-1.23-.73-2.38-.73-3.44 0-1.67.28-3.46.84-5.36.55-1.9 1.28-3.51 2.17-4.84zm9.38 8.39l-.33-.2c-.37.54-.65.87-.82 1a.74.74 0 01-.42.12c-.19 0-.38-.12-.57-.37-.31-.42-.73-1.59-1.26-3.5.47-.85.86-1.41 1.19-1.67.23-.19.48-.29.74-.29.1 0 .28.04.53.11.26.07.48.11.68.11.27 0 .5-.1.68-.29.18-.19.27-.44.27-.75 0-.33-.09-.58-.27-.77-.18-.19-.44-.29-.78-.29-.3 0-.59.07-.86.22s-.61.47-1.02.97c-.31.37-.77 1.02-1.37 1.94a9.683 9.683 0 00-1.24-3.14l-3.24.59-.06.36c.24-.05.44-.07.61-.07.32 0 .59.14.8.43.33.45.8 1.8 1.39 4.07-.47.64-.78 1.06-.96 1.26-.28.32-.52.53-.7.62-.14.08-.3.11-.48.11-.14 0-.36-.08-.67-.23-.21-.1-.4-.15-.57-.15-.31 0-.57.11-.78.32s-.31.48-.31.8c0 .31.09.55.28.75.19.19.44.29.76.29.31 0 .6-.07.87-.2s.61-.42 1.02-.86c.41-.44.98-1.13 1.7-2.08.28.9.52 1.56.72 1.97.2.41.44.71.7.89.26.18.59.27.99.27.38 0 .77-.14 1.17-.43.54-.36 1.07-1 1.61-1.91zM17.51 1l-.15.54c.49 1.24.73 2.39.73 3.45 0 1.43-.21 2.96-.63 4.6-.33 1.26-.75 2.45-1.27 3.55-.52 1.11-1.02 1.97-1.51 2.6-.49.62-1.09 1.2-1.8 1.72l-.17.53c1.38-.59 2.57-1.34 3.55-2.23 1.29-1.17 2.26-2.5 2.91-4 .55-1.28.83-2.59.83-3.91 0-2.27-.83-4.56-2.49-6.85z"],"vertical-bar-chart-asc":["M8 7H7c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zM3 9H2c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1zm10-5h-1c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm5-4h-1c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1z"],"vertical-bar-chart-desc":["M3 0H2c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm5 4H7c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm5 3h-1c-.55 0-1 .45-1 1v11c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1zm5 2h-1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h1c.55 0 1-.45 1-1v-9c0-.55-.45-1-1-1z"],"vertical-distribution":["M1 2h18c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1s.45 1 1 1zm2 5c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V8c0-.55-.45-1-1-1H3zm16 11H1c-.55 0-1 .45-1 1s.45 1 1 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],video:["M19 2H1c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zM7 14V6l6 4-6 4z"],virus:["M15.249 13.835l1.251 1.251.354-.354.087-.077a1 1 0 011.327 1.491l-2.122 2.122-.087.077a1 1 0 01-1.327-1.491l.354-.354-1.251-1.251A6.466 6.466 0 0111 16.424L10.999 18h.501a1 1 0 01.117 1.993L11.5 20h-3a1 1 0 01-.117-1.993L8.5 18h.499v-1.577a6.46 6.46 0 01-2.538-.97L5.414 16.5l.354.354a1 1 0 01-1.327 1.491l-.087-.077-2.122-2.122a1 1 0 011.327-1.491l.087.077.354.354.97-.97a6.472 6.472 0 01-1.384-3.057l-.025.002L2 11.06v.44a1 1 0 01-1.993.117L0 11.5v-3a1 1 0 011.993-.117L2 8.5v.56h1.567A6.471 6.471 0 014.97 5.883l-.971-.969-.353.354-.087.077a1 1 0 01-1.327-1.491l2.122-2.122.087-.077a1 1 0 011.327 1.491l-.354.353 1.047 1.048A6.46 6.46 0 019 3.577L9 2h-.5A1 1 0 018.383.007L8.5 0h3a1 1 0 01.117 1.993L11.5 2H11v1.577a6.466 6.466 0 012.838 1.176l.04-.046L15.086 3.5l-.353-.353a1 1 0 011.327-1.491l.087.077 2.122 2.122a1 1 0 01-1.327 1.491l-.087-.077-.354-.354-1.207 1.207-.046.041a6.467 6.467 0 011.16 2.733H18V8.5a1 1 0 011.993-.117L20 8.5v3a1 1 0 01-1.993.117L18 11.5v-.605h-1.561a6.466 6.466 0 01-1.19 2.94zM12.5 11a1.5 1.5 0 100 3 1.5 1.5 0 000-3zM8 6a2 2 0 100 4 2 2 0 000-4z"],"volume-down":["M15.92 3.93l-1.6 1.18A7.948 7.948 0 0116 10c0 1.84-.63 3.54-1.68 4.89l1.6 1.18A9.878 9.878 0 0018 10c0-2.29-.78-4.39-2.08-6.07zM11 3c-.28 0-.53.11-.71.29L7.59 6H3c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h4.59l2.71 2.71c.17.18.42.29.7.29.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"volume-off":["M14 3c-.28 0-.53.11-.71.29L10.59 6H6c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h4.59l2.71 2.71c.17.18.42.29.7.29.55 0 1-.45 1-1V4c0-.55-.45-1-1-1z"],"volume-up":["M9 3.43c-.28 0-.53.11-.71.29l-2.7 2.71H1c-.55 0-1 .45-1 1v6c0 .55.45 1 1 1h4.59l2.71 2.71a1.003 1.003 0 001.71-.71v-12c-.01-.55-.46-1-1.01-1zm8.31-1.56l-1.62 1.2C17.14 5.16 18 7.69 18 10.43s-.86 5.27-2.31 7.37l1.62 1.2C19 16.57 20 13.62 20 10.43c0-3.18-1-6.13-2.69-8.56zm-3.39 2.49l-1.6 1.18A7.948 7.948 0 0114 10.43c0 1.84-.63 3.54-1.68 4.89l1.6 1.18A9.94 9.94 0 0016 10.43c0-2.28-.78-4.38-2.08-6.07z"],walk:["M16 10h-2c-.23 0-.42-.09-.59-.21l-.01.01-1.69-1.27-.63 3.14 2.62 2.62c.19.18.3.43.3.71v4c0 .55-.45 1-1 1s-1-.45-1-1v-3.59L9.39 12.8l-2.45 6.55h-.01c-.14.38-.5.65-.93.65-.55 0-1-.45-1-1 0-.12.03-.24.07-.35h-.01L9.43 7h-2.9l-1.7 2.55-.01-.01c-.18.27-.47.46-.82.46-.55 0-1-.45-1-1 0-.21.08-.39.18-.54l-.01-.01 2-3 .02.01C5.36 5.19 5.65 5 6 5h4.18l.36-.96c-.33-.43-.54-.96-.54-1.54a2.5 2.5 0 015 0A2.5 2.5 0 0112.5 5c-.06 0-.12-.01-.18-.02l-.44 1.18L14.33 8H16c.55 0 1 .45 1 1s-.45 1-1 1z"],"warning-sign":["M19.86 17.52l.01-.01-9-16-.01.01C10.69 1.21 10.37 1 10 1s-.69.21-.86.52l-.01-.01-9 16 .01.01c-.08.14-.14.3-.14.48 0 .55.45 1 1 1h18c.55 0 1-.45 1-1 0-.18-.06-.34-.14-.48zM11 17H9v-2h2v2zm0-3H9V6h2v8z"],"waterfall-chart":["M13 7h2c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1h-2c-.55 0-1 .45-1 1v1c0 .55.45 1 1 1zm-9 8h1c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1H4c-.55 0-1 .45-1 1v4c0 .55.45 1 1 1zm4-6h2c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1zm11-5h-1c-.55 0-1 .45-1 1v9c0 .55.45 1 1 1h1c.55 0 1-.45 1-1V5c0-.55-.45-1-1-1zm0 12H2V3c0-.55-.45-1-1-1s-1 .45-1 1v14a.998.998 0 001 1h18c.55 0 1-.45 1-1s-.45-1-1-1z"],widget:["M18 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zM2 16c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm15-1h2V5h-2v10zM3 5H1v10h2V5zM2 0C.9 0 0 .9 0 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm3 3h10V1H5v2zm13 13c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zM5 19h10v-2H5v2z"],"widget-button":["M1 4h18c.55 0 1 .45 1 1v10c0 .55-.45 1-1 1H1c-.55 0-1-.45-1-1V5c0-.55.45-1 1-1zm1 2v8h16V6H2zm4 5c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm4 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm4 0c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1z"],"widget-footer":["M17 0H3c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H4v-4h12v4zm0-5H4V2h12v11z"],"widget-header":["M17 0H3c-.55 0-1 .45-1 1v18c0 .55.45 1 1 1h14c.55 0 1-.45 1-1V1c0-.55-.45-1-1-1zm-1 18H4V7h12v11zm0-12H4V2h12v4z"],wrench:["M19.8 4.44L16.13 8.1l-3.55-.71-.71-3.53L15.54.21c-2.01-.53-4.23-.03-5.8 1.53-1.86 1.85-2.23 4.6-1.14 6.83L.59 16.59C.22 16.95 0 17.45 0 18a2 2 0 002 2c.55 0 1.05-.22 1.41-.59l8.03-8.04c2.23 1.05 4.97.67 6.82-1.16 1.57-1.56 2.07-3.77 1.54-5.77z"],"zoom-in":["M19.56 17.44l-4.94-4.94A8.004 8.004 0 0016 8c0-4.42-3.58-8-8-8S0 3.58 0 8s3.58 8 8 8c1.67 0 3.21-.51 4.5-1.38l4.94 4.94a1.498 1.498 0 102.12-2.12zM8 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6zm3-7H9V5c0-.55-.45-1-1-1s-1 .45-1 1v2H5c-.55 0-1 .45-1 1s.45 1 1 1h2v2c0 .55.45 1 1 1s1-.45 1-1V9h2c.55 0 1-.45 1-1s-.45-1-1-1z"],"zoom-out":["M11 7H5c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1zm8.56 10.44l-4.94-4.94A8.004 8.004 0 0016 8c0-4.42-3.58-8-8-8S0 3.58 0 8s3.58 8 8 8c1.67 0 3.21-.51 4.5-1.38l4.94 4.94a1.498 1.498 0 102.12-2.12zM8 14c-3.31 0-6-2.69-6-6s2.69-6 6-6 6 2.69 6 6-2.69 6-6 6z"],"zoom-to-fit":["M1 7c.55 0 1-.45 1-1V2h4c.55 0 1-.45 1-1s-.45-1-1-1H1C.45 0 0 .45 0 1v5c0 .55.45 1 1 1zm5 1a1.003 1.003 0 00-1.71-.71l-2 2c-.18.18-.29.43-.29.71 0 .28.11.53.29.71l2 2a1.003 1.003 0 001.42-1.42L4.41 10 5.7 8.71c.19-.18.3-.43.3-.71zm2-2c.28 0 .53-.11.71-.29L10 4.41l1.29 1.29c.18.19.43.3.71.3a1.003 1.003 0 00.71-1.71l-2-2C10.53 2.11 10.28 2 10 2s-.53.11-.71.29l-2 2A1.003 1.003 0 008 6zM6 18H2v-4c0-.55-.45-1-1-1s-1 .45-1 1v5c0 .55.45 1 1 1h5c.55 0 1-.45 1-1s-.45-1-1-1zm8-6a1.003 1.003 0 001.71.71l2-2c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71l-2-2a1.003 1.003 0 00-1.42 1.42l1.3 1.29-1.29 1.29c-.19.18-.3.43-.3.71zm5-12h-5c-.55 0-1 .45-1 1s.45 1 1 1h4v4c0 .55.45 1 1 1s1-.45 1-1V1c0-.55-.45-1-1-1zm-7 14c-.28 0-.53.11-.71.29L10 15.59 8.71 14.3A.965.965 0 008 14a1.003 1.003 0 00-.71 1.71l2 2c.18.18.43.29.71.29s.53-.11.71-.29l2-2A1.003 1.003 0 0012 14zm7-1c-.55 0-1 .45-1 1v4h-4c-.55 0-1 .45-1 1s.45 1 1 1h5c.55 0 1-.45 1-1v-5c0-.55-.45-1-1-1z"]},bc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}var n;return Ql(t,e),n=t,t.prototype.render=function(){var e=this.props.icon;if(null==e||"boolean"==typeof e)return null;if("string"!=typeof e)return e;var t=this.props,i=t.className,s=t.color,r=t.htmlTitle,a=t.iconSize,o=void 0===a?n.SIZE_STANDARD:a,l=t.intent,c=t.title,h=void 0===c?e:c,d=t.tagName,u=void 0===d?"span":d,p=ec(t,["className","color","htmlTitle","iconSize","intent","title","tagName"]),m=o>=n.SIZE_LARGE?n.SIZE_LARGE:n.SIZE_STANDARD,f=this.renderSvgPaths(m,e),g=lc()(Po,function(e){if(null!=e)return 0===e.indexOf(wa+"-icon-")?e:wa+"-icon-"+e}(e),Ro(l),i),v="0 0 "+m+" "+m;return qr.createElement(u,Zl(Zl({},p),{className:g,title:r}),qr.createElement("svg",{fill:s,"data-icon":e,width:o,height:o,viewBox:v},h&&qr.createElement("desc",null,h),f))},t.prototype.renderSvgPaths=function(e,t){var i=(e===n.SIZE_STANDARD?vc:yc)[t];return null==i?null:i.map((function(e,t){return qr.createElement("path",{key:t,d:e,fillRule:"evenodd"})}))},t.displayName="Blueprint3.Icon",t.SIZE_STANDARD=16,t.SIZE_LARGE=20,t=n=tc([gc.polyfill],t)}(dc),_c=45,Mc="M 50,50 m 0,-45 a 45,45 0 1 1 0,90 a 45,45 0 1 1 0,-90",wc=280,Sc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}var n;return Ql(t,e),n=t,t.prototype.componentDidUpdate=function(e){e.value!==this.props.value&&this.forceUpdate()},t.prototype.render=function(){var e,t=this.props,i=t.className,s=t.intent,r=t.value,a=t.tagName,o=void 0===a?"div":a,l=this.getSize(),c=lc()(ko,Ro(s),((e={})[To]=null!=r,e),i),h=Math.min(16,4*n.SIZE_LARGE/l),d=wc-wc*(null==r?.25:function(e,t,n){if(null==e)return e;if(n=0||n.indexOf(Ea)>=0)&&console.warn("[Blueprint] Classes.SMALL/LARGE are ignored if size prop is set.")},t.prototype.getSize=function(){var e=this.props,t=e.className,i=void 0===t?"":t,s=e.size;return null==s?i.indexOf(Da)>=0?n.SIZE_SMALL:i.indexOf(Ea)>=0?n.SIZE_LARGE:n.SIZE_STANDARD:Math.max(10,s)},t.prototype.getViewBox=function(e){var t=_c+e/2,n=(50-t).toFixed(2),i=(2*t).toFixed(2);return n+" "+n+" "+i+" "+i},t.displayName="Blueprint3.Spinner",t.SIZE_SMALL=20,t.SIZE_STANDARD=50,t.SIZE_LARGE=100,t=n=tc([gc.polyfill],t)}(dc),Lc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={isActive:!1},t.handleKeyDown=function(e){var n,i;cc(e.which)&&(e.preventDefault(),e.which!==t.currentKeyDown&&t.setState({isActive:!0})),t.currentKeyDown=e.which,null===(i=(n=t.props).onKeyDown)||void 0===i||i.call(n,e)},t.handleKeyUp=function(e){var n,i,s;cc(e.which)&&(t.setState({isActive:!1}),null===(n=t.buttonRef)||void 0===n||n.click()),t.currentKeyDown=void 0,null===(s=(i=t.props).onKeyUp)||void 0===s||s.call(i,e)},t.handleBlur=function(e){var n,i;t.state.isActive&&t.setState({isActive:!1}),null===(i=(n=t.props).onBlur)||void 0===i||i.call(n,e)},t}return Ql(t,e),t.prototype.getCommonButtonProps=function(){var e,t=this.props,n=t.active,i=t.alignText,s=t.fill,r=t.large,a=t.loading,o=t.outlined,l=t.minimal,c=t.small,h=t.tabIndex,d=this.props.disabled||a;return{className:lc()(ja,((e={})[Sa]=!d&&(n||this.state.isActive),e[Ca]=d,e[Ta]=s,e[Ea]=r,e[za]=a,e[Aa]=l,e[Ha]=o,e[Da]=c,e),Oo(i),Ro(this.props.intent),this.props.className),disabled:d,onBlur:this.handleBlur,onClick:d?void 0:this.props.onClick,onKeyDown:this.handleKeyDown,onKeyUp:this.handleKeyUp,tabIndex:d?-1:h}},t.prototype.renderChildren=function(){var e=this.props,t=e.children,n=e.icon,i=e.loading,s=e.rightIcon,r=e.text;return[i&&qr.createElement(Sc,{key:"loading",className:Wa,size:bc.SIZE_LARGE}),qr.createElement(bc,{key:"leftIcon",icon:n}),(!uc(r)||!uc(t))&&qr.createElement("span",{key:"text",className:Ga},r,t),qr.createElement(bc,{key:"rightIcon",icon:s})]},t}(dc),kc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buttonRef=null,t.handleRef=ac(t,"buttonRef",t.props.elementRef),t}return Ql(t,e),t.prototype.render=function(){return qr.createElement("button",Zl({type:"button",ref:this.handleRef},sc(this.props),this.getCommonButtonProps()),this.renderChildren())},t.prototype.componentDidUpdate=function(e){e.elementRef!==this.props.elementRef&&(rc(e.elementRef,null),this.handleRef=ac(this,"buttonRef",this.props.elementRef),rc(this.props.elementRef,this.buttonRef))},t.displayName="Blueprint3.Button",t}(Lc),xc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.buttonRef=null,t.handleRef=ac(t,"buttonRef",t.props.elementRef),t}return Ql(t,e),t.prototype.render=function(){var e=this.props,t=e.href,n=e.tabIndex,i=void 0===n?0:n,s=this.getCommonButtonProps();return qr.createElement("a",Zl({role:"button",ref:this.handleRef},sc(this.props),s,{href:s.disabled?void 0:t,tabIndex:s.disabled?-1:i}),this.renderChildren())},t.prototype.componentDidUpdate=function(e){e.elementRef!==this.props.elementRef&&(rc(e.elementRef,null),this.handleRef=ac(this,"buttonRef",this.props.elementRef),rc(this.props.elementRef,this.buttonRef))},t.displayName="Blueprint3.AnchorButton",t}(Lc);function Cc(e,t){return function(n){var i=n.className,s=n.elementRef,r=ec(n,["className","elementRef"]);return qr.createElement(e,Zl(Zl({},r),{className:lc()(t,i),ref:s}))}}Cc("h1",Ia),Cc("h2",Ia),Cc("h3",Ia);var Tc=Cc("h4",Ia),Ec=(Cc("h5",Ia),Cc("h6",Ia)),zc=(Cc("blockquote",Va),Cc("code",Na),Cc("pre",$a),Cc("label",Za),Cc("ol",Fa),Cc("ul",Fa),n(1350));function Ac(e){return"function"==typeof e}var Hc=!Ac(Jr.createPortal),Dc={blueprintPortalClassName:function(e,t){if(null!=e[t]&&"string"!=typeof e[t])return new Error("[Blueprint] context blueprintPortalClassName must be string")}},Pc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.context={},t.state={hasMounted:!1},t.portalElement=null,t}return Ql(t,e),t.prototype.render=function(){return Hc||"undefined"==typeof document||!this.state.hasMounted||null===this.portalElement?null:Jr.createPortal(this.props.children,this.portalElement)},t.prototype.componentDidMount=function(){this.props.container&&(this.portalElement=this.createContainerElement(),this.props.container.appendChild(this.portalElement),this.setState({hasMounted:!0},this.props.onChildrenMount),Hc&&this.unstableRenderNoPortal())},t.prototype.componentDidUpdate=function(e){null!=this.portalElement&&e.className!==this.props.className&&(void 0!==e.className&&this.portalElement.classList.remove(e.className),Oc(this.portalElement.classList,this.props.className)),Hc&&this.unstableRenderNoPortal()},t.prototype.componentWillUnmount=function(){null!=this.portalElement&&(Hc&&Jr.unmountComponentAtNode(this.portalElement),this.portalElement.remove())},t.prototype.createContainerElement=function(){var e=document.createElement("div");return e.classList.add(Lo),Oc(e.classList,this.props.className),null!=this.context&&Oc(e.classList,this.context.blueprintPortalClassName),e},t.prototype.unstableRenderNoPortal=function(){null!==this.portalElement&&Jr.unstable_renderSubtreeIntoContainer(this,qr.createElement("div",null,this.props.children),this.portalElement)},t.displayName="Blueprint3.Portal",t.contextTypes=Dc,t.defaultProps={container:"undefined"!=typeof document?document.body:void 0},t}(qr.Component);function Oc(e,t){null!=t&&""!==t&&e.add.apply(e,t.split(" "))}var Yc=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={hasEverOpened:t.props.isOpen},t.containerElement=null,t.refHandlers={container:function(e){return t.containerElement=(0,Jr.findDOMNode)(e)}},t.maybeRenderChild=function(e){if(Ac(e)&&(e=e()),null==e)return null;var n="object"==typeof e?qr.cloneElement(e,{className:lc()(e.props.className,lo),tabIndex:t.props.enforceFocus||t.props.autoFocus?0:void 0}):qr.createElement("span",{className:lo},e),i=t.props,s=i.onOpening,r=i.onOpened,a=i.onClosing,o=i.onClosed,l=i.transitionDuration,c=i.transitionName,h=zc.CSSTransition;return qr.createElement(h,{classNames:c,onEntering:s,onEntered:r,onExiting:a,onExited:o,timeout:l,addEndListener:t.handleTransitionAddEnd},n)},t.handleBackdropMouseDown=function(e){var n,i=t.props,s=i.backdropProps,r=i.canOutsideClickClose,a=i.enforceFocus,o=i.onClose;r&&(null==o||o(e)),a&&t.bringFocusInsideOverlay(),null===(n=null==s?void 0:s.onMouseDown)||void 0===n||n.call(s,e)},t.handleDocumentClick=function(e){var i=t.props,s=i.canOutsideClickClose,r=i.isOpen,a=i.onClose,o=e.composed?e.composedPath()[0]:e.target,l=n.openStack.indexOf(t),c=n.openStack.slice(l).some((function(e){var t=e.containerElement;return t&&t.contains(o)&&!t.isSameNode(o)}));r&&s&&!c&&(null==a||a(e))},t.handleDocumentFocus=function(e){var n=e.composed?e.composedPath()[0]:e.target;t.props.enforceFocus&&null!=t.containerElement&&n instanceof Node&&!t.containerElement.contains(n)&&(e.preventDefault(),e.stopImmediatePropagation(),t.bringFocusInsideOverlay())},t.handleKeyDown=function(e){var n=t.props,i=n.canEscapeKeyClose,s=n.onClose;27===e.which&&i&&(null==s||s(e),e.preventDefault())},t.handleTransitionAddEnd=function(){},t}var n;return Ql(t,e),n=t,t.getDerivedStateFromProps=function(e){var t=e.isOpen;return t?{hasEverOpened:t}:null},t.prototype.render=function(){var e,t;if(this.props.lazy&&!this.state.hasEverOpened)return null;var n=this.props,i=n.children,s=n.className,r=n.usePortal,a=n.isOpen,o=a&&null!==(t=qr.Children.map(i,this.maybeRenderChild))&&void 0!==t?t:[],l=this.maybeRenderBackdrop();null!==l&&o.unshift(l);var c=lc()(ao,((e={})[ho]=a,e[co]=!r,e),s),h=qr.createElement(zc.TransitionGroup,{appear:!0,className:c,component:"div",onKeyDown:this.handleKeyDown,ref:this.refHandlers.container},o);return r?qr.createElement(Pc,{className:this.props.portalClassName,container:this.props.portalContainer},h):h},t.prototype.componentDidMount=function(){this.props.isOpen&&this.overlayWillOpen()},t.prototype.componentDidUpdate=function(e){e.isOpen&&!this.props.isOpen?this.overlayWillClose():!e.isOpen&&this.props.isOpen&&this.overlayWillOpen()},t.prototype.componentWillUnmount=function(){this.overlayWillClose()},t.prototype.bringFocusInsideOverlay=function(){var e=this;return this.requestAnimationFrame((function(){if(null!=e.containerElement&&null!=document.activeElement&&e.props.isOpen&&!e.containerElement.contains(document.activeElement)){var t=e.containerElement.querySelector("[autofocus]"),n=e.containerElement.querySelector("[tabindex]");null!=t?t.focus():null!=n&&n.focus()}}))},t.prototype.maybeRenderBackdrop=function(){var e=this.props,t=e.backdropClassName,n=e.backdropProps,i=e.hasBackdrop,s=e.isOpen,r=e.transitionDuration,a=e.transitionName;return i&&s?qr.createElement(zc.CSSTransition,{classNames:a,key:"__backdrop",timeout:r,addEndListener:this.handleTransitionAddEnd},qr.createElement("div",Zl({},n,{className:lc()(oo,t,null==n?void 0:n.className),onMouseDown:this.handleBackdropMouseDown,tabIndex:this.props.canOutsideClickClose?0:void 0}))):null},t.prototype.overlayWillClose=function(){document.removeEventListener("focus",this.handleDocumentFocus,!0),document.removeEventListener("mousedown",this.handleDocumentClick);var e=n.openStack,t=e.indexOf(this);if(-1!==t){if(e.splice(t,1),e.length>0){var i=n.getLastOpened();i.props.enforceFocus&&document.addEventListener("focus",i.handleDocumentFocus,!0)}0===e.filter((function(e){return e.props.usePortal&&e.props.hasBackdrop})).length&&document.body.classList.remove(ho)}},t.prototype.overlayWillOpen=function(){var e=n.openStack;e.length>0&&document.removeEventListener("focus",n.getLastOpened().handleDocumentFocus,!0),e.push(this),this.props.autoFocus&&this.bringFocusInsideOverlay(),this.props.enforceFocus&&document.addEventListener("focus",this.handleDocumentFocus,!0),this.props.canOutsideClickClose&&!this.props.hasBackdrop&&document.addEventListener("mousedown",this.handleDocumentClick),this.props.hasBackdrop&&this.props.usePortal&&document.body.classList.add(ho)},t.displayName="Blueprint3.Overlay",t.defaultProps={autoFocus:!0,backdropProps:{},canEscapeKeyClose:!0,canOutsideClickClose:!0,enforceFocus:!0,hasBackdrop:!0,isOpen:!1,lazy:!0,transitionDuration:300,transitionName:ao,usePortal:!0},t.openStack=[],t.getLastOpened=function(){return n.openStack[n.openStack.length-1]},t=n=tc([gc.polyfill],t)}(dc),Rc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ql(t,e),t.prototype.render=function(){return qr.createElement(Yc,Zl({},this.props,{className:uo,hasBackdrop:!0}),qr.createElement("div",{className:Ka},qr.createElement("div",{className:lc()(Ua,this.props.className),style:this.props.style},this.maybeRenderHeader(),this.props.children)))},t.prototype.validateProps=function(e){null==e.title&&(null!=e.icon&&console.warn("[Blueprint] iconName is ignored if title is omitted."),null!=e.isCloseButtonShown&&console.warn("[Blueprint] isCloseButtonShown prop is ignored if title is omitted."))},t.prototype.maybeRenderCloseButton=function(){return!1!==this.props.isCloseButtonShown?qr.createElement(kc,{"aria-label":"Close",className:Xa,icon:qr.createElement(bc,{icon:"small-cross",iconSize:bc.SIZE_LARGE}),minimal:!0,onClick:this.props.onClose}):void 0},t.prototype.maybeRenderHeader=function(){var e=this.props,t=e.icon,n=e.title;if(null!=n)return qr.createElement("div",{className:qa},qr.createElement(bc,{icon:t,iconSize:bc.SIZE_LARGE}),qr.createElement(Tc,null,n),this.maybeRenderCloseButton())},t.defaultProps={canOutsideClickClose:!0,isOpen:!1},t.displayName="Blueprint3.Dialog",t=tc([gc.polyfill],t)}(dc),Vc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ql(t,e),t.prototype.render=function(){var e=this.props,t=e.className,n=e.tagName,i=void 0===n?"div":n,s=ec(e,["className","tagName"]),r=lc()(Ja,t);return qr.createElement(i,Zl(Zl({},s),{className:r}))},t.displayName="Blueprint3.Divider",t=tc([gc.polyfill],t)}(dc),Nc=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ql(t,e),t.prototype.render=function(){var e,t=this.props,n=t.className,i=t.disabled,s=t.elementRef,r=t.fill,a=t.iconProps,o=t.large,l=t.minimal,c=t.options,h=void 0===c?[]:c,d=ec(t,["className","disabled","elementRef","fill","iconProps","large","minimal","options"]),u=lc()(Qa,((e={})[Ca]=i,e[Ta]=r,e[Ea]=o,e[Aa]=l,e),n),p=h.map((function(e){var t="object"==typeof e?e:{value:e};return qr.createElement("option",Zl({},t,{key:t.value,children:t.label||t.value}))}));return qr.createElement("div",{className:u},qr.createElement("select",Zl({disabled:i,ref:s},d,{multiple:!1}),p,d.children),qr.createElement(bc,Zl({icon:"double-caret-vertical"},a)))},t=tc([gc.polyfill],t)}(dc),$c=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ql(t,e),t.prototype.render=function(){var e=this.props,t=e.className,n=e.title;return null==n?qr.createElement("li",{className:lc()(so,t)}):qr.createElement("li",{className:lc()(ro,t)},qr.createElement(Ec,null,n))},t.displayName="Blueprint3.MenuDivider",t}(qr.Component);function Ic(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Fc(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var jc=n(626),Bc=n.n(jc),Wc=n(1265),Gc=n.n(Wc),Uc=Gc()(),Kc=Gc()(),Xc=function(e){function t(){for(var t,n=arguments.length,i=new Array(n),s=0;s1?t-1:0),i=1;i=0)return 1;return 0}();var rh=ih&&window.Promise?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then((function(){t=!1,e()})))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout((function(){t=!1,e()}),sh))}};function ah(e){return e&&"[object Function]"==={}.toString.call(e)}function oh(e,t){if(1!==e.nodeType)return[];var n=e.ownerDocument.defaultView.getComputedStyle(e,null);return t?n[t]:n}function lh(e){return"HTML"===e.nodeName?e:e.parentNode||e.host}function ch(e){if(!e)return document.body;switch(e.nodeName){case"HTML":case"BODY":return e.ownerDocument.body;case"#document":return e.body}var t=oh(e),n=t.overflow,i=t.overflowX,s=t.overflowY;return/(auto|scroll|overlay)/.test(n+s+i)?e:ch(lh(e))}function hh(e){return e&&e.referenceNode?e.referenceNode:e}var dh=ih&&!(!window.MSInputMethodContext||!document.documentMode),uh=ih&&/MSIE 10/.test(navigator.userAgent);function ph(e){return 11===e?dh:10===e?uh:dh||uh}function mh(e){if(!e)return document.documentElement;for(var t=ph(10)?document.body:null,n=e.offsetParent||null;n===t&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&"BODY"!==i&&"HTML"!==i?-1!==["TH","TD","TABLE"].indexOf(n.nodeName)&&"static"===oh(n,"position")?mh(n):n:e?e.ownerDocument.documentElement:document.documentElement}function fh(e){return null!==e.parentNode?fh(e.parentNode):e}function gh(e,t){if(!(e&&e.nodeType&&t&&t.nodeType))return document.documentElement;var n=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=n?e:t,s=n?t:e,r=document.createRange();r.setStart(i,0),r.setEnd(s,0);var a,o,l=r.commonAncestorContainer;if(e!==l&&t!==l||i.contains(s))return"BODY"===(o=(a=l).nodeName)||"HTML"!==o&&mh(a.firstElementChild)!==a?mh(l):l;var c=fh(e);return c.host?gh(c.host,t):gh(e,fh(t).host)}function vh(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"top",n="top"===t?"scrollTop":"scrollLeft",i=e.nodeName;if("BODY"===i||"HTML"===i){var s=e.ownerDocument.documentElement,r=e.ownerDocument.scrollingElement||s;return r[n]}return e[n]}function yh(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=vh(t,"top"),s=vh(t,"left"),r=n?-1:1;return e.top+=i*r,e.bottom+=i*r,e.left+=s*r,e.right+=s*r,e}function bh(e,t){var n="x"===t?"Left":"Top",i="Left"===n?"Right":"Bottom";return parseFloat(e["border"+n+"Width"])+parseFloat(e["border"+i+"Width"])}function _h(e,t,n,i){return Math.max(t["offset"+e],t["scroll"+e],n["client"+e],n["offset"+e],n["scroll"+e],ph(10)?parseInt(n["offset"+e])+parseInt(i["margin"+("Height"===e?"Top":"Left")])+parseInt(i["margin"+("Height"===e?"Bottom":"Right")]):0)}function Mh(e){var t=e.body,n=e.documentElement,i=ph(10)&&getComputedStyle(n);return{height:_h("Height",t,n,i),width:_h("Width",t,n,i)}}var wh=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},Sh=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]&&arguments[2],i=ph(10),s="HTML"===t.nodeName,r=Ch(e),a=Ch(t),o=ch(e),l=oh(t),c=parseFloat(l.borderTopWidth),h=parseFloat(l.borderLeftWidth);n&&s&&(a.top=Math.max(a.top,0),a.left=Math.max(a.left,0));var d=xh({top:r.top-a.top-c,left:r.left-a.left-h,width:r.width,height:r.height});if(d.marginTop=0,d.marginLeft=0,!i&&s){var u=parseFloat(l.marginTop),p=parseFloat(l.marginLeft);d.top-=c-u,d.bottom-=c-u,d.left-=h-p,d.right-=h-p,d.marginTop=u,d.marginLeft=p}return(i&&!n?t.contains(o):t===o&&"BODY"!==o.nodeName)&&(d=yh(d,t)),d}function Eh(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.ownerDocument.documentElement,i=Th(e,n),s=Math.max(n.clientWidth,window.innerWidth||0),r=Math.max(n.clientHeight,window.innerHeight||0),a=t?0:vh(n),o=t?0:vh(n,"left"),l={top:a-i.top+i.marginTop,left:o-i.left+i.marginLeft,width:s,height:r};return xh(l)}function zh(e){var t=e.nodeName;if("BODY"===t||"HTML"===t)return!1;if("fixed"===oh(e,"position"))return!0;var n=lh(e);return!!n&&zh(n)}function Ah(e){if(!e||!e.parentElement||ph())return document.documentElement;for(var t=e.parentElement;t&&"none"===oh(t,"transform");)t=t.parentElement;return t||document.documentElement}function Hh(e,t,n,i){var s=arguments.length>4&&void 0!==arguments[4]&&arguments[4],r={top:0,left:0},a=s?Ah(e):gh(e,hh(t));if("viewport"===i)r=Eh(a,s);else{var o=void 0;"scrollParent"===i?"BODY"===(o=ch(lh(t))).nodeName&&(o=e.ownerDocument.documentElement):o="window"===i?e.ownerDocument.documentElement:i;var l=Th(o,a,s);if("HTML"!==o.nodeName||zh(a))r=l;else{var c=Mh(e.ownerDocument),h=c.height,d=c.width;r.top+=l.top-l.marginTop,r.bottom=h+l.top,r.left+=l.left-l.marginLeft,r.right=d+l.left}}var u="number"==typeof(n=n||0);return r.left+=u?n:n.left||0,r.top+=u?n:n.top||0,r.right-=u?n:n.right||0,r.bottom-=u?n:n.bottom||0,r}function Dh(e){return e.width*e.height}function Ph(e,t,n,i,s){var r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf("auto"))return e;var a=Hh(n,i,r,s),o={top:{width:a.width,height:t.top-a.top},right:{width:a.right-t.right,height:a.height},bottom:{width:a.width,height:a.bottom-t.bottom},left:{width:t.left-a.left,height:a.height}},l=Object.keys(o).map((function(e){return kh({key:e},o[e],{area:Dh(o[e])})})).sort((function(e,t){return t.area-e.area})),c=l.filter((function(e){var t=e.width,i=e.height;return t>=n.clientWidth&&i>=n.clientHeight})),h=c.length>0?c[0].key:l[0].key,d=e.split("-")[1];return h+(d?"-"+d:"")}function Oh(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,s=i?Ah(t):gh(t,hh(n));return Th(n,s,i)}function Yh(e){var t=e.ownerDocument.defaultView.getComputedStyle(e),n=parseFloat(t.marginTop||0)+parseFloat(t.marginBottom||0),i=parseFloat(t.marginLeft||0)+parseFloat(t.marginRight||0);return{width:e.offsetWidth+i,height:e.offsetHeight+n}}function Rh(e){var t={left:"right",right:"left",bottom:"top",top:"bottom"};return e.replace(/left|right|bottom|top/g,(function(e){return t[e]}))}function Vh(e,t,n){n=n.split("-")[0];var i=Yh(e),s={width:i.width,height:i.height},r=-1!==["right","left"].indexOf(n),a=r?"top":"left",o=r?"left":"top",l=r?"height":"width",c=r?"width":"height";return s[a]=t[a]+t[l]/2-i[l]/2,s[o]=n===o?t[o]-i[c]:t[Rh(o)],s}function Nh(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function $h(e,t,n){return(void 0===n?e:e.slice(0,function(e,t,n){if(Array.prototype.findIndex)return e.findIndex((function(e){return e[t]===n}));var i=Nh(e,(function(e){return e[t]===n}));return e.indexOf(i)}(e,"name",n))).forEach((function(e){e.function&&console.warn("`modifier.function` is deprecated, use `modifier.fn`!");var n=e.function||e.fn;e.enabled&&ah(n)&&(t.offsets.popper=xh(t.offsets.popper),t.offsets.reference=xh(t.offsets.reference),t=n(t,e))})),t}function Ih(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=Oh(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=Ph(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=Vh(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?"fixed":"absolute",e=$h(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function Fh(e,t){return e.some((function(e){var n=e.name;return e.enabled&&n===t}))}function jh(e){for(var t=[!1,"ms","Webkit","Moz","O"],n=e.charAt(0).toUpperCase()+e.slice(1),i=0;i1&&void 0!==arguments[1]&&arguments[1],n=td.indexOf(e),i=td.slice(n+1).concat(td.slice(0,n));return t?i.reverse():i}var id="flip",sd="clockwise",rd="counterclockwise";function ad(e,t,n,i){var s=[0,0],r=-1!==["right","left"].indexOf(i),a=e.split(/(\+|\-)/).map((function(e){return e.trim()})),o=a.indexOf(Nh(a,(function(e){return-1!==e.search(/,|\s/)})));a[o]&&-1===a[o].indexOf(",")&&console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");var l=/\s*,\s*|\s+/,c=-1!==o?[a.slice(0,o).concat([a[o].split(l)[0]]),[a[o].split(l)[1]].concat(a.slice(o+1))]:[a];return c=c.map((function(e,i){var s=(1===i?!r:r)?"height":"width",a=!1;return e.reduce((function(e,t){return""===e[e.length-1]&&-1!==["+","-"].indexOf(t)?(e[e.length-1]=t,a=!0,e):a?(e[e.length-1]+=t,a=!1,e):e.concat(t)}),[]).map((function(e){return function(e,t,n,i){var s=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+s[1],a=s[2];if(!r)return e;if(0===a.indexOf("%")){return xh("%p"===a?n:i)[t]/100*r}if("vh"===a||"vw"===a)return("vh"===a?Math.max(document.documentElement.clientHeight,window.innerHeight||0):Math.max(document.documentElement.clientWidth,window.innerWidth||0))/100*r;return r}(e,s,t,n)}))})),c.forEach((function(e,t){e.forEach((function(n,i){qh(n)&&(s[t]+=n*("-"===e[i-1]?-1:1))}))})),s}var od={shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,n=t.split("-")[0],i=t.split("-")[1];if(i){var s=e.offsets,r=s.reference,a=s.popper,o=-1!==["bottom","top"].indexOf(n),l=o?"left":"top",c=o?"width":"height",h={start:Lh({},l,r[l]),end:Lh({},l,r[l]+r[c]-a[c])};e.offsets.popper=kh({},a,h[i])}return e}},offset:{order:200,enabled:!0,fn:function(e,t){var n=t.offset,i=e.placement,s=e.offsets,r=s.popper,a=s.reference,o=i.split("-")[0],l=void 0;return l=qh(+n)?[+n,0]:ad(n,r,a,o),"left"===o?(r.top+=l[0],r.left-=l[1]):"right"===o?(r.top+=l[0],r.left+=l[1]):"top"===o?(r.left+=l[0],r.top-=l[1]):"bottom"===o&&(r.left+=l[0],r.top+=l[1]),e.popper=r,e},offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var n=t.boundariesElement||mh(e.instance.popper);e.instance.reference===n&&(n=mh(n));var i=jh("transform"),s=e.instance.popper.style,r=s.top,a=s.left,o=s[i];s.top="",s.left="",s[i]="";var l=Hh(e.instance.popper,e.instance.reference,t.padding,n,e.positionFixed);s.top=r,s.left=a,s[i]=o,t.boundaries=l;var c=t.priority,h=e.offsets.popper,d={primary:function(e){var n=h[e];return h[e]l[e]&&!t.escapeWithReference&&(i=Math.min(h[n],l[e]-("right"===e?h.width:h.height))),Lh({},n,i)}};return c.forEach((function(e){var t=-1!==["left","top"].indexOf(e)?"primary":"secondary";h=kh({},h,d[t](e))})),e.offsets.popper=h,e},priority:["left","right","top","bottom"],padding:5,boundariesElement:"scrollParent"},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,n=t.popper,i=t.reference,s=e.placement.split("-")[0],r=Math.floor,a=-1!==["top","bottom"].indexOf(s),o=a?"right":"bottom",l=a?"left":"top",c=a?"width":"height";return n[o]r(i[o])&&(e.offsets.popper[l]=r(i[o])),e}},arrow:{order:500,enabled:!0,fn:function(e,t){var n;if(!Zh(e.instance.modifiers,"arrow","keepTogether"))return e;var i=t.element;if("string"==typeof i){if(!(i=e.instance.popper.querySelector(i)))return e}else if(!e.instance.popper.contains(i))return console.warn("WARNING: `arrow.element` must be child of its popper element!"),e;var s=e.placement.split("-")[0],r=e.offsets,a=r.popper,o=r.reference,l=-1!==["left","right"].indexOf(s),c=l?"height":"width",h=l?"Top":"Left",d=h.toLowerCase(),u=l?"left":"top",p=l?"bottom":"right",m=Yh(i)[c];o[p]-ma[p]&&(e.offsets.popper[d]+=o[d]+m-a[p]),e.offsets.popper=xh(e.offsets.popper);var f=o[d]+o[c]/2-m/2,g=oh(e.instance.popper),v=parseFloat(g["margin"+h]),y=parseFloat(g["border"+h+"Width"]),b=f-e.offsets.popper[d]-v-y;return b=Math.max(Math.min(a[c]-m,b),0),e.arrowElement=i,e.offsets.arrow=(Lh(n={},d,Math.round(b)),Lh(n,u,""),n),e},element:"[x-arrow]"},flip:{order:600,enabled:!0,fn:function(e,t){if(Fh(e.instance.modifiers,"inner"))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var n=Hh(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),i=e.placement.split("-")[0],s=Rh(i),r=e.placement.split("-")[1]||"",a=[];switch(t.behavior){case id:a=[i,s];break;case sd:a=nd(i);break;case rd:a=nd(i,!0);break;default:a=t.behavior}return a.forEach((function(o,l){if(i!==o||a.length===l+1)return e;i=e.placement.split("-")[0],s=Rh(i);var c=e.offsets.popper,h=e.offsets.reference,d=Math.floor,u="left"===i&&d(c.right)>d(h.left)||"right"===i&&d(c.left)d(h.top)||"bottom"===i&&d(c.top)d(n.right),f=d(c.top)d(n.bottom),v="left"===i&&p||"right"===i&&m||"top"===i&&f||"bottom"===i&&g,y=-1!==["top","bottom"].indexOf(i),b=!!t.flipVariations&&(y&&"start"===r&&p||y&&"end"===r&&m||!y&&"start"===r&&f||!y&&"end"===r&&g),_=!!t.flipVariationsByContent&&(y&&"start"===r&&m||y&&"end"===r&&p||!y&&"start"===r&&g||!y&&"end"===r&&f),M=b||_;(u||v||M)&&(e.flipped=!0,(u||v)&&(i=a[l+1]),M&&(r=function(e){return"end"===e?"start":"start"===e?"end":e}(r)),e.placement=i+(r?"-"+r:""),e.offsets.popper=kh({},e.offsets.popper,Vh(e.instance.popper,e.offsets.reference,e.placement)),e=$h(e.instance.modifiers,e,"flip"))})),e},behavior:"flip",padding:5,boundariesElement:"viewport",flipVariations:!1,flipVariationsByContent:!1},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,n=t.split("-")[0],i=e.offsets,s=i.popper,r=i.reference,a=-1!==["left","right"].indexOf(n),o=-1===["top","left"].indexOf(n);return s[a?"left":"top"]=r[n]-(o?s[a?"width":"height"]:0),e.placement=Rh(t),e.offsets.popper=xh(s),e}},hide:{order:800,enabled:!0,fn:function(e){if(!Zh(e.instance.modifiers,"hide","preventOverflow"))return e;var t=e.offsets.reference,n=Nh(e.instance.modifiers,(function(e){return"preventOverflow"===e.name})).boundaries;if(t.bottomn.right||t.top>n.bottom||t.right2&&void 0!==arguments[2]?arguments[2]:{};wh(this,e),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=rh(this.update.bind(this)),this.options=kh({},e.Defaults,s),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=t&&t.jquery?t[0]:t,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(kh({},e.Defaults.modifiers,s.modifiers)).forEach((function(t){i.options.modifiers[t]=kh({},e.Defaults.modifiers[t]||{},s.modifiers?s.modifiers[t]:{})})),this.modifiers=Object.keys(this.options.modifiers).map((function(e){return kh({name:e},i.options.modifiers[e])})).sort((function(e,t){return e.order-t.order})),this.modifiers.forEach((function(e){e.enabled&&ah(e.onLoad)&&e.onLoad(i.reference,i.popper,i.options,e,i.state)})),this.update();var r=this.options.eventsEnabled;r&&this.enableEventListeners(),this.state.eventsEnabled=r}return Sh(e,[{key:"update",value:function(){return Ih.call(this)}},{key:"destroy",value:function(){return Bh.call(this)}},{key:"enableEventListeners",value:function(){return Kh.call(this)}},{key:"disableEventListeners",value:function(){return Xh.call(this)}}]),e}();cd.Utils=("undefined"!=typeof window?window:n.g).PopperUtils,cd.placements=ed,cd.Defaults=ld;const hd=cd;var dd={position:"absolute",top:0,left:0,opacity:0,pointerEvents:"none"},ud={},pd=function(e){function t(){for(var t,n=arguments.length,i=new Array(n),s=0;s0},e.prototype.connect_=function(){vd&&!this.connected_&&(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),Md?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){vd&&this.connected_&&(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=void 0===t?"":t,i=_d.some((function(e){return!!~n.indexOf(e)}));i&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Sd=function(e,t){for(var n=0,i=Object.keys(t);n0},e}(),Od="undefined"!=typeof WeakMap?new WeakMap:new gd,Yd=function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var n=wd.getInstance(),i=new Pd(t,n,this);Od.set(this,i)};["observe","unobserve","disconnect"].forEach((function(e){Yd.prototype[e]=function(){var t;return(t=Od.get(this))[e].apply(t,arguments)}}));const Rd=void 0!==yd.ResizeObserver?yd.ResizeObserver:Yd;var Vd=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.element=null,t.observer=new Rd((function(e){var n,i;return null===(i=(n=t.props).onResize)||void 0===i?void 0:i.call(n,e)})),t}return Ql(t,e),t.prototype.render=function(){return qr.Children.only(this.props.children)},t.prototype.componentDidMount=function(){this.observeElement()},t.prototype.componentDidUpdate=function(e){this.observeElement(this.props.observeParents!==e.observeParents)},t.prototype.componentWillUnmount=function(){this.observer.disconnect()},t.prototype.observeElement=function(e){void 0===e&&(e=!1);var t=this.getElement();if(t instanceof Element){if((t!==this.element||e)&&(this.observer.disconnect(),this.element=t,this.observer.observe(t),this.props.observeParents))for(var n=t.parentElement;null!=n;)this.observer.observe(n),n=n.parentElement}else this.observer.disconnect()},t.prototype.getElement=function(){try{return(0,Jr.findDOMNode)(this)}catch(e){return null}},t.displayName="Blueprint3.ResizeSensor",t=tc([gc.polyfill],t)}(dc),Nd=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.popover=null,t}return Ql(t,e),t.prototype.render=function(){var e,t=this,n=this.props,i=n.children,s=n.intent,r=n.popoverClassName,a=ec(n,["children","intent","popoverClassName"]),o=lc()(Do,((e={})[Aa]=this.props.minimal,e),Ro(s),r);return qr.createElement(qd,Zl({interactionKind:Xd.HOVER_TARGET_ONLY,modifiers:{arrow:{enabled:!this.props.minimal}}},a,{autoFocus:!1,canEscapeKeyClose:!1,enforceFocus:!1,lazy:!0,popoverClassName:o,portalContainer:this.props.portalContainer,ref:function(e){return t.popover=e}}),i)},t.prototype.reposition=function(){null!=this.popover&&this.popover.reposition()},t.displayName="Blueprint3.Tooltip",t.defaultProps={hoverCloseDelay:0,hoverOpenDelay:100,minimal:!1,transitionDuration:100},t=tc([gc.polyfill],t)}(dc);function $d(e){return e.split("-")[0]}function Id(e){return-1!==["left","right"].indexOf(e)}function Fd(e){switch(e){case"top":return"bottom";case"left":return"right";case"bottom":return"top";default:return"left"}}function jd(e){switch(e.split("-")[1]){case"start":return"left";case"end":return"right";default:return"center"}}function Bd(e){var t=$d(e.placement);if(null==e.arrowElement)return Id(t)?Fd(t)+" "+jd(t):jd(t)+" "+Fd(t);var n=e.arrowElement.clientHeight/2,i=e.offsets.arrow;return Id(t)?Fd(t)+" "+(i.top+n)+"px":i.left+n+"px "+Fd(t)}var Wd=function(e){if(null==e.arrowElement)return e;var t=e.arrowElement.clientWidth,n=$d(e.placement),i=Id(n),s=i?"width":"height",r=i?"left":"top",a=Math.round(t/2/Math.sqrt(2));return"top"===n||"left"===n?(e.offsets.popper[r]-=a+4,e.offsets.arrow[r]=e.offsets.popper[s]-t+a):(e.offsets.popper[r]+=a+4,e.offsets.arrow[r]=-a),e};function Gd(e){if(null==e)return 0;switch($d(e)){case"top":return-90;case"left":return 180;case"bottom":return 90;default:return 0}}var Ud=function(e){var t=e.arrowProps,n=t.ref,i=t.style,s=e.placement;return qr.createElement("div",{className:mo,ref:n,style:null==i.left||isNaN(+i.left)?{}:i},qr.createElement("svg",{viewBox:"0 0 30 30",style:{transform:"rotate("+Gd(s)+"deg)"}},qr.createElement("path",{className:mo+"-border",d:"M8.11 6.302c1.015-.936 1.887-2.922 1.887-4.297v26c0-1.378-.868-3.357-1.888-4.297L.925 17.09c-1.237-1.14-1.233-3.034 0-4.17L8.11 6.302z"}),qr.createElement("path",{className:mo+"-fill",d:"M8.787 7.036c1.22-1.125 2.21-3.376 2.21-5.03V0v30-2.005c0-1.654-.983-3.9-2.21-5.03l-7.183-6.616c-.81-.746-.802-1.96 0-2.7l7.183-6.614z"})))};function Kd(e){switch(e){case _a:return"top-start";case ba:return"top";case Ma:return"top-end";case ya:return"right-start";case ga:return"right";case va:return"right-end";case ua:return"bottom-end";case ha:return"bottom";case da:return"bottom-start";case ma:return"left-end";case pa:return"left";case fa:return"left-start";case"auto":case"auto-start":case"auto-end":return e;default:return function(e){throw new Error("Unexpected position: "+e)}(e)}}Ud.displayName="Blueprint3.PopoverArrow";var Xd={CLICK:"click",CLICK_TARGET_ONLY:"click-target",HOVER:"hover",HOVER_TARGET_ONLY:"hover-target"},qd=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.popoverRef=fc(),t.popoverElement=null,t.targetElement=null,t.state={hasDarkParent:!1,isOpen:t.getIsOpen(t.props),transformOrigin:""},t.isMouseInTargetOrPopover=!1,t.lostFocusOnSamePage=!0,t.handlePopoverRef=ac(t,"popoverElement",t.props.popoverRef),t.handleTargetRef=function(e){return t.targetElement=e},t.reposition=function(){var e;return null===(e=t.popperScheduleUpdate)||void 0===e?void 0:e.call(t)},t.renderPopover=function(e){var n,i=t.props,s=i.usePortal,r=i.interactionKind,a=t.state.transformOrigin;t.popperScheduleUpdate=e.scheduleUpdate;var o={onClick:t.handlePopoverClick};(r===Xd.HOVER||!s&&r===Xd.HOVER_TARGET_ONLY)&&(o.onMouseEnter=t.handleMouseEnter,o.onMouseLeave=t.handleMouseLeave);var l=lc()(po,((n={})[xa]=t.props.inheritDarkTheme&&t.state.hasDarkParent,n[Aa]=t.props.minimal,n[go]=t.props.captureDismiss,n),t.props.popoverClassName);return qr.createElement("div",{className:So,ref:e.ref,style:e.style},qr.createElement(Vd,{onResize:t.reposition},qr.createElement("div",Zl({className:l,style:{transformOrigin:a},ref:t.popoverRef},o),t.isArrowEnabled()&&qr.createElement(Ud,{arrowProps:e.arrowProps,placement:e.placement}),qr.createElement("div",{className:vo},t.understandChildren().content))))},t.renderTarget=function(e){var n,i,s=t.props,r=s.fill,a=s.openOnTargetFocus,o=s.targetClassName,l=s.targetProps,c=void 0===l?{}:l,h=t.state.isOpen,d=t.isControlled(),u=t.isHoverInteractionKind(),p=t.props.targetTagName;r&&(p="div");var m=u?{onBlur:t.handleTargetBlur,onFocus:t.handleTargetFocus,onMouseEnter:t.handleMouseEnter,onMouseLeave:t.handleMouseLeave}:{onClick:t.handleTargetClick};m.className=lc()(Mo,((n={})[_o]=h,n),c.className,o),m.ref=e.ref;var f=pc(t.understandChildren().target);if(void 0===f)return null;var g=f.props.tabIndex,v=null==g&&a&&u?0:g,y=qr.cloneElement(f,{className:lc()(f.props.className,(i={},i[Sa]=h&&!d&&!u,i)),disabled:!(!h||!mc(f,Nd))||f.props.disabled,tabIndex:v}),b=qr.createElement(p,Zl(Zl({},c),m),y);return qr.createElement(Vd,{onResize:t.reposition},b)},t.isControlled=function(){return void 0!==t.props.isOpen},t.handleTargetFocus=function(e){var n,i;if(t.props.openOnTargetFocus&&t.isHoverInteractionKind()){if(null==e.relatedTarget&&!t.lostFocusOnSamePage)return;t.handleMouseEnter(e)}null===(i=null===(n=t.props.targetProps)||void 0===n?void 0:n.onFocus)||void 0===i||i.call(n,e)},t.handleTargetBlur=function(e){var n,i;t.props.openOnTargetFocus&&t.isHoverInteractionKind()&&(null==e.relatedTarget||t.isElementInPopover(e.relatedTarget)||t.handleMouseLeave(e)),t.lostFocusOnSamePage=null!=e.relatedTarget,null===(i=null===(n=t.props.targetProps)||void 0===n?void 0:n.onBlur)||void 0===i||i.call(n,e)},t.handleMouseEnter=function(e){var n,i;t.isMouseInTargetOrPopover=!0,t.props.usePortal||!t.isElementInPopover(e.target)||t.props.interactionKind!==Xd.HOVER_TARGET_ONLY||t.props.openOnTargetFocus?t.props.disabled||t.setOpenState(!0,e,t.props.hoverOpenDelay):t.handleMouseLeave(e),null===(i=null===(n=t.props.targetProps)||void 0===n?void 0:n.onMouseEnter)||void 0===i||i.call(n,e)},t.handleMouseLeave=function(e){var n,i;t.isMouseInTargetOrPopover=!1,t.setTimeout((function(){t.isMouseInTargetOrPopover||t.setOpenState(!1,e,t.props.hoverCloseDelay)})),null===(i=null===(n=t.props.targetProps)||void 0===n?void 0:n.onMouseLeave)||void 0===i||i.call(n,e)},t.handlePopoverClick=function(e){var n=e.target,i=n.closest("."+po),s=i===t.popoverRef.current,r=null==i?void 0:i.classList.contains(go),a=n.closest("."+yo+", ."+bo),o=null!=a&&a.classList.contains(yo),l=null!=n.closest(":disabled, ."+Ca);!o||l||r&&!s||t.setOpenState(!1,e)},t.handleOverlayClose=function(e){if(null!==t.targetElement&&void 0!==e){var n=e.target;(!fd(t.targetElement,n)||e.nativeEvent instanceof KeyboardEvent)&&t.setOpenState(!1,e)}},t.handleTargetClick=function(e){var n,i;t.props.disabled||t.isElementInPopover(e.target)||(null==t.props.isOpen?t.setState((function(e){return{isOpen:!e.isOpen}})):t.setOpenState(!t.props.isOpen,e)),null===(i=null===(n=t.props.targetProps)||void 0===n?void 0:n.onClick)||void 0===i||i.call(n,e)},t.updatePopoverState=function(e){return t.setState({transformOrigin:Bd(e)}),e},t}return Ql(t,e),t.prototype.render=function(){var e,t=this.props,n=t.className,i=t.disabled,s=t.fill,r=t.placement,a=t.position,o=void 0===a?"auto":a,l=this.state.isOpen,c=this.props.wrapperTagName;s&&(c="div");var h=null==pc(this.understandChildren().content);!h||i||!1===l||hc("production")||console.warn("[Blueprint] Disabling with empty/whitespace content...");var d=lc()(wo,n,((e={})[Ta]=s,e)),u=qr.createElement(c,{className:d},qr.createElement(eh,{innerRef:this.handleTargetRef},this.renderTarget),qr.createElement(Yc,{autoFocus:this.props.autoFocus,backdropClassName:fo,backdropProps:this.props.backdropProps,canEscapeKeyClose:this.props.canEscapeKeyClose,canOutsideClickClose:this.props.interactionKind===Xd.CLICK,className:this.props.portalClassName,enforceFocus:this.props.enforceFocus,hasBackdrop:this.props.hasBackdrop,isOpen:l&&!h,onClose:this.handleOverlayClose,onClosed:this.props.onClosed,onClosing:this.props.onClosing,onOpened:this.props.onOpened,onOpening:this.props.onOpening,transitionDuration:this.props.transitionDuration,transitionName:po,usePortal:this.props.usePortal,portalContainer:this.props.portalContainer},qr.createElement(md,{innerRef:this.handlePopoverRef,placement:null!=r?r:Kd(o),modifiers:this.getPopperModifiers()},this.renderPopover)));return qr.createElement(Xc,null,u)},t.prototype.componentDidMount=function(){this.updateDarkParent()},t.prototype.componentDidUpdate=function(t,n){e.prototype.componentDidUpdate.call(this,t,n),t.popoverRef!==this.props.popoverRef&&(rc(t.popoverRef,null),this.handlePopoverRef=ac(this,"popoverElement",this.props.popoverRef),rc(this.props.popoverRef,this.popoverElement)),this.updateDarkParent();var i=this.getIsOpen(this.props);null!=this.props.isOpen&&i!==this.state.isOpen?(this.setOpenState(i),this.setState({isOpen:i})):this.props.disabled&&this.state.isOpen&&null==this.props.isOpen&&this.setOpenState(!1)},t.prototype.validateProps=function(e){null==e.isOpen&&null!=e.onInteraction&&console.warn("[Blueprint] onInteraction is ignored when uncontrolled."),e.hasBackdrop&&!e.usePortal&&console.warn("[Blueprint] ignores hasBackdrop"),e.hasBackdrop&&e.interactionKind!==Xd.CLICK&&console.error("[Blueprint] requires interactionKind={PopoverInteractionKind.CLICK}."),void 0!==e.placement&&void 0!==e.position&&console.warn("[Blueprint] supports either placement or position prop, not both.");var t=qr.Children.count(e.children),n=void 0!==e.content,i=void 0!==e.target;0!==t||i||console.error("[Blueprint] requires target prop or at least one child element."),t>2&&console.warn("[Blueprint] supports one or two children; additional children are ignored. First child is the target, second child is the content. You may instead supply these two as props."),t>0&&i&&console.warn("[Blueprint] with children ignores target prop; use either prop or children."),2===t&&n&&console.warn("[Blueprint] with two children ignores content prop; use either prop or children.")},t.prototype.updateDarkParent=function(){if(this.props.usePortal&&this.state.isOpen){var e=null!=this.targetElement&&null!=this.targetElement.closest("."+xa);this.setState({hasDarkParent:e})}},t.prototype.understandChildren=function(){var e=this.props,t=e.children,n=e.content,i=e.target,s=qr.Children.toArray(t),r=s[0],a=s[1];return{content:null==a?n:a,target:null==r?i:r}},t.prototype.getIsOpen=function(e){return!e.disabled&&(null!=e.isOpen?e.isOpen:e.defaultIsOpen)},t.prototype.getPopperModifiers=function(){var e=this.props,t=e.boundary,n=e.modifiers,i=n,s=i.flip,r=void 0===s?{}:s,a=i.preventOverflow,o=void 0===a?{}:a;return Zl(Zl({},n),{arrowOffset:{enabled:this.isArrowEnabled(),fn:Wd,order:510},flip:Zl({boundariesElement:t},r),preventOverflow:Zl({boundariesElement:t},o),updatePopoverState:{enabled:!0,fn:this.updatePopoverState,order:900}})},t.prototype.setOpenState=function(e,t,n){var i,s,r,a,o,l=this;null===(i=this.cancelOpenTimeout)||void 0===i||i.call(this),void 0!==n&&n>0?this.cancelOpenTimeout=this.setTimeout((function(){return l.setOpenState(e,t)}),n):(null==this.props.isOpen?this.setState({isOpen:e}):null===(r=(s=this.props).onInteraction)||void 0===r||r.call(s,e,t),e||null===(o=(a=this.props).onClose)||void 0===o||o.call(a,t))},t.prototype.isArrowEnabled=function(){var e=this.props,t=e.minimal,n=e.modifiers;return!t&&(null==(null==n?void 0:n.arrow)||n.arrow.enabled)},t.prototype.isElementInPopover=function(e){var t;return null===(t=this.popoverElement)||void 0===t?void 0:t.contains(e)},t.prototype.isHoverInteractionKind=function(){return this.props.interactionKind===Xd.HOVER||this.props.interactionKind===Xd.HOVER_TARGET_ONLY},t.displayName="Blueprint3.Popover",t.defaultProps={boundary:"scrollParent",captureDismiss:!1,defaultIsOpen:!1,disabled:!1,fill:!1,hasBackdrop:!1,hoverCloseDelay:300,hoverOpenDelay:150,inheritDarkTheme:!0,interactionKind:Xd.CLICK,minimal:!1,modifiers:{},openOnTargetFocus:!0,targetTagName:"span",transitionDuration:300,usePortal:!0,wrapperTagName:"span"},t=tc([gc.polyfill],t)}(dc),Jd=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={isContentOverflowing:!1,textContent:""},t.textRef=null,t}return Ql(t,e),t.prototype.componentDidMount=function(){this.update()},t.prototype.componentDidUpdate=function(){this.update()},t.prototype.render=function(){var e,t=this,n=lc()(((e={})[Ra]=this.props.ellipsize,e),this.props.className),i=this.props,s=i.children,r=i.tagName,a=i.title;return qr.createElement(r,{className:n,ref:function(e){return t.textRef=e},title:null!=a?a:this.state.isContentOverflowing?this.state.textContent:void 0},s)},t.prototype.update=function(){var e;if(null!=(null===(e=this.textRef)||void 0===e?void 0:e.textContent)){var t={isContentOverflowing:this.props.ellipsize&&this.textRef.scrollWidth>this.textRef.clientWidth,textContent:this.textRef.textContent};this.setState(t)}},t.displayName="Blueprint3.Text",t.defaultProps={ellipsize:!1,tagName:"div"},t=tc([gc.polyfill],t)}(dc),Qd=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ql(t,e),t.prototype.render=function(){var e,t,n=this.props,i=n.active,s=n.className,r=n.children,a=n.disabled,o=n.icon,l=n.intent,c=(n.labelClassName,n.labelElement),h=n.multiline,d=(n.popoverProps,n.shouldDismissPopover),u=n.text,p=n.textClassName,m=n.tagName,f=void 0===m?"a":m,g=n.htmlTitle,v=ec(n,["active","className","children","disabled","icon","intent","labelClassName","labelElement","multiline","popoverProps","shouldDismissPopover","text","textClassName","tagName","htmlTitle"]),y=null!=r,b=Ro(l),_=lc()(to,b,((e={})[Sa]=i,e[Oa]=i&&null==b,e[Ca]=a,e[yo]=d&&!a&&!y,e),s),M=qr.createElement(f,Zl(Zl(Zl({},v),a?eu:{}),{className:_}),qr.createElement(bc,{icon:o}),qr.createElement(Jd,{className:lc()(Ta,p),ellipsize:!h,title:g},u),this.maybeRenderLabel(c),y?qr.createElement(bc,{icon:"caret-right"}):void 0),w=lc()(((t={})[io]=y,t));return qr.createElement("li",{className:w},this.maybeRenderPopover(M,r))},t.prototype.maybeRenderLabel=function(e){var t=this.props,n=t.label,i=t.labelClassName;return null==n&&null==e?null:qr.createElement("span",{className:lc()(no,i)},n,e)},t.prototype.maybeRenderPopover=function(e,t){if(null==t)return e;var n=this.props,i=n.disabled,s=n.popoverProps;return qr.createElement(qd,Zl({autoFocus:!1,captureDismiss:!1,disabled:i,enforceFocus:!1,hoverCloseDelay:0,interactionKind:Xd.HOVER,modifiers:Zd,position:ya,usePortal:!1},s,{content:qr.createElement(tu,null,t),minimal:!0,popoverClassName:lc()(io,null==s?void 0:s.popoverClassName),target:e}))},t.defaultProps={disabled:!1,multiline:!1,popoverProps:{},shouldDismissPopover:!0,text:""},t.displayName="Blueprint3.MenuItem",t=tc([gc.polyfill],t)}(dc),Zd={flip:{boundariesElement:"viewport",padding:20},offset:{offset:-5},preventOverflow:{boundariesElement:"viewport",padding:20}},eu={href:void 0,onClick:void 0,onMouseDown:void 0,onMouseEnter:void 0,onMouseLeave:void 0,tabIndex:-1},tu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ql(t,e),t.prototype.render=function(){var e,t=this.props,n=t.className,i=t.children,s=t.large,r=t.ulRef,a=ec(t,["className","children","large","ulRef"]),o=lc()(eo,((e={})[Ea]=s,e),n);return qr.createElement("ul",Zl({},a,{className:o,ref:r}),i)},t.displayName="Blueprint3.Menu",t.Divider=$c,t.Item=Qd,t=tc([gc.polyfill],t)}(dc),nu=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return Ql(t,e),t.prototype.render=function(){var e,t=this.props,n=t.alignText,i=t.className,s=t.fill,r=t.minimal,a=t.large,o=t.vertical,l=ec(t,["alignText","className","fill","minimal","large","vertical"]),c=lc()(Ba,((e={})[Ta]=s,e[Ea]=a,e[Aa]=r,e[Pa]=o,e),Oo(n),i);return qr.createElement("div",Zl({},l,{className:c}),this.props.children)},t.displayName="Blueprint3.ButtonGroup",t=tc([gc.polyfill],t)}(dc),iu=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleActionClick=function(e){var n,i;null===(i=null===(n=t.props.action)||void 0===n?void 0:n.onClick)||void 0===i||i.call(n,e),t.triggerDismiss(!1)},t.handleCloseClick=function(){return t.triggerDismiss(!1)},t.startTimeout=function(){t.clearTimeouts(),t.props.timeout>0&&t.setTimeout((function(){return t.triggerDismiss(!0)}),t.props.timeout)},t}return Ql(t,e),t.prototype.render=function(){var e=this.props,t=e.className,n=e.icon,i=e.intent,s=e.message;return qr.createElement("div",{className:lc()(zo,Ro(i),t),onBlur:this.startTimeout,onFocus:this.clearTimeouts,onMouseEnter:this.clearTimeouts,onMouseLeave:this.startTimeout,tabIndex:0},qr.createElement(bc,{icon:n}),qr.createElement("span",{className:Ho},s),qr.createElement(nu,{minimal:!0},this.maybeRenderActionButton(),qr.createElement(kc,{icon:"cross",onClick:this.handleCloseClick})))},t.prototype.componentDidMount=function(){this.startTimeout()},t.prototype.componentDidUpdate=function(e){e.timeout!==this.props.timeout&&(this.props.timeout>0?this.startTimeout():this.clearTimeouts())},t.prototype.componentWillUnmount=function(){this.clearTimeouts()},t.prototype.maybeRenderActionButton=function(){var e=this.props.action;return null==e?void 0:qr.createElement(xc,Zl({},e,{intent:void 0,onClick:this.handleActionClick}))},t.prototype.triggerDismiss=function(e){var t,n;this.clearTimeouts(),null===(n=(t=this.props).onDismiss)||void 0===n||n.call(t,e)},t.defaultProps={className:"",message:"",timeout:5e3},t.displayName="Blueprint3.Toast",t=tc([gc.polyfill],t)}(dc),su=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={toasts:[]},t.toastId=0,t.renderToast=function(e){return qr.createElement(iu,Zl({},e,{onDismiss:t.getDismissHandler(e)}))},t.getDismissHandler=function(e){return function(n){t.dismiss(e.key,n)}},t.handleClose=function(e){27===e.which&&t.clear()},t}var n;return Ql(t,e),n=t,t.create=function(e,t){void 0===t&&(t=document.body),null==e||null==e.usePortal||hc("production")||console.warn("[Blueprint] Toaster.create() ignores inline prop as it always creates a new element.");var i=document.createElement("div");t.appendChild(i);var s=Jr.render(qr.createElement(n,Zl({},e,{usePortal:!1})),i);if(null==s)throw new Error("[Blueprint] Toaster.create() is not supported inside React lifecycle methods in React 16. See usage example on the docs site.");return s},t.prototype.show=function(e,t){this.props.maxToasts&&this.dismissIfAtLimit();var n=this.createToastOptions(e,t);return void 0===t||this.isNewToastKey(t)?this.setState((function(e){return{toasts:nc([n],e.toasts)}})):this.setState((function(e){return{toasts:e.toasts.map((function(e){return e.key===t?n:e}))}})),n.key},t.prototype.dismiss=function(e,t){void 0===t&&(t=!1),this.setState((function(n){return{toasts:n.toasts.filter((function(n){var i,s=n.key===e;return s&&(null===(i=n.onDismiss)||void 0===i||i.call(n,t)),!s}))}}))},t.prototype.clear=function(){this.state.toasts.forEach((function(e){var t;return null===(t=e.onDismiss)||void 0===t?void 0:t.call(e,!1)})),this.setState({toasts:[]})},t.prototype.getToasts=function(){return this.state.toasts},t.prototype.render=function(){var e=lc()(Ao,this.getPositionClasses(),this.props.className);return qr.createElement(Yc,{autoFocus:this.props.autoFocus,canEscapeKeyClose:this.props.canEscapeKeyClear,canOutsideClickClose:!1,className:e,enforceFocus:!1,hasBackdrop:!1,isOpen:this.state.toasts.length>0||null!=this.props.children,onClose:this.handleClose,transitionDuration:350,transitionName:zo,usePortal:this.props.usePortal},this.state.toasts.map(this.renderToast,this),this.props.children)},t.prototype.validateProps=function(e){var t=e.maxToasts;if(void 0!==t&&t<1)throw new Error("[Blueprint] maxToasts is set to an invalid number, must be greater than 0")},t.prototype.isNewToastKey=function(e){return this.state.toasts.every((function(t){return t.key!==e}))},t.prototype.dismissIfAtLimit=function(){this.state.toasts.length===this.props.maxToasts&&this.dismiss(this.state.toasts[this.state.toasts.length-1].key)},t.prototype.createToastOptions=function(e,t){return void 0===t&&(t="toast-"+this.toastId++),Zl(Zl({},e),{key:t})},t.prototype.getPositionClasses=function(){return nc(this.props.position.split("-").map((function(e){return Ao+"-"+e.toLowerCase()})),[Ao+"-"+(this.props.usePortal?"in-portal":"inline")])},t.displayName="Blueprint3.Toaster",t.defaultProps={autoFocus:!1,canEscapeKeyClear:!0,position:ba,usePortal:!0},t=n=tc([gc.polyfill],t)}(dc);let ru;function au(e,t){return void 0===t&&(t=5e3),ru.show({intent:oa,message:e,timeout:t})}function ou(e,t){return void 0===t&&(t=5e3),ru.show({intent:la,message:e,timeout:t})}function lu(e,t){return void 0===t&&(t=5e3),ru.show({intent:ca,message:e,timeout:t})}function cu(e,t,n){void 0===n&&(n=5e3);try{t=e.body.error_msg||t}catch(e){}return ru.show({intent:ca,message:t,timeout:n})}let hu="";let du=new Set,uu="dark";function pu(){uu="light",document.body.className="",du.forEach((e=>{e()}))}function mu(){uu="dark",document.body.className="bp3-dark",du.forEach((e=>{e()}))}function fu(){return"light"===uu?"rgba(0, 0, 0, 0.9)":"rgba(255, 255, 255, 1)"}function gu(){return"light"===uu?"rgba(0, 0, 0, 0.2)":"rgba(255, 255, 255, 0.2)"}var vu=n(6788);class yu extends vu.Dispatcher{}const bu=new yu;var _u=n(5939);class Mu extends _u.EventEmitter{emitDefer(e,...t){setTimeout((()=>{this.emit(e,...t)}))}}const wu="subscription.sync",Su="change";const Lu=new class extends Mu{constructor(){super(...arguments),this._token=bu.register(this._callback.bind(this))}get subscription(){return this._subscription}get subscriptionM(){if(this._subscription)return{...this._subscription}}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_sync(e){this._subscription=Object.freeze(e),this.emitChange()}_callback(e){if(e.type===wu)this._sync(e.data)}},ku="loading.add",xu="loading.done";const Cu=new class extends Mu{constructor(){super(...arguments),this._loaders=new Set,this._token=bu.register(this._callback.bind(this))}get loading(){return!!this._loaders.size}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_add(e){this._loaders.add(e),this.emitChange()}_done(e){this._loaders.delete(e),this.emitChange()}_callback(e){switch(e.type){case ku:this._add(e.data.id);break;case xu:this._done(e.data.id)}}},Tu={progress:{width:"100%",height:"4px",borderRadius:0},progressBar:{width:"50%",borderRadius:0}};class Eu extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({loading:Cu.loading})},this.state={loading:Cu.loading}}componentDidMount(){Cu.addChangeListener(this.onChange)}componentWillUnmount(){Cu.removeChangeListener(this.onChange)}render(){let e;if(this.state.loading){let t="bp3-progress-bar bp3-no-stripes bp3-no-animation ";this.props.intent&&(t+=" bp3-intent-"+this.props.intent),e=qr.createElement("div",{className:t,style:Tu.progress},qr.createElement("div",{className:"bp3-progress-meter bp3-loading-bar",style:Tu.progressBar}))}else e=qr.createElement("div",{style:Tu.progress});return qr.createElement("div",{style:this.props.style},e)}}var zu=n(2396);class Au extends vu.Dispatcher{}const Hu=new Au;function Du(){return(+new Date+Math.floor(999999*Math.random())).toString(36)}function Pu(e,t){return e12?(a="PM",r-=12):0===r&&(r=12),i.getDay()){case 0:t="Sun";break;case 1:t="Mon";break;case 2:t="Tue";break;case 3:t="Wed";break;case 4:t="Thu";break;case 5:t="Fri";break;case 6:t="Sat"}switch(i.getMonth()){case 0:n="Jan";break;case 1:n="Feb";break;case 2:n="Mar";break;case 3:n="Apr";break;case 4:n="May";break;case 5:n="Jun";break;case 6:n="Jul";break;case 7:n="Aug";break;case 8:n="Sep";break;case 9:n="Oct";break;case 10:n="Nov";break;case 11:n="Dec"}return s+=t+" ",s+=i.getDate()+" ",s+=n+" ",s+=i.getFullYear()+", ",s+=r+":",s+=Pu(i.getMinutes(),2)+":",s+=Pu(i.getSeconds(),2)+" ",s+=a,s}function Iu(e){if(!e||"0001-01-01T00:00:00Z"===e)return"";let t,n=new Date(e),i=new Date;switch(n.getMonth()){case 0:t="Jan";break;case 1:t="Feb";break;case 2:t="Mar";break;case 3:t="Apr";break;case 4:t="May";break;case 5:t="Jun";break;case 6:t="Jul";break;case 7:t="Aug";break;case 8:t="Sep";break;case 9:t="Oct";break;case 10:t="Nov";break;case 11:t="Dec"}let s=t+" "+n.getDate();return n.getFullYear()!==i.getFullYear()&&(s+=" "+n.getFullYear()),s}function Fu(e){if(!e||"0001-01-01T00:00:00Z"===e)return"";let t,n=new Date(e),i=new Date;switch(n.getMonth()){case 0:t="Jan";break;case 1:t="Feb";break;case 2:t="Mar";break;case 3:t="Apr";break;case 4:t="May";break;case 5:t="Jun";break;case 6:t="Jul";break;case 7:t="Aug";break;case 8:t="Sep";break;case 9:t="Oct";break;case 10:t="Nov";break;case 11:t="Dec"}let s=t+" "+n.getDate();if(n.getFullYear()!==i.getFullYear())s+=" "+n.getFullYear();else if(n.getMonth()===i.getMonth()&&n.getDate()===i.getDate()){let e=n.getHours(),t="AM";e>12?(t="PM",e-=12):0===e&&(e=12),s=e+":",s+=Pu(n.getMinutes(),2)+":",s+=Pu(n.getSeconds(),2)+" ",s+=t}return s}class ju{constructor(){this._id=Du()}loading(){return bu.dispatch({type:ku,data:{id:this._id}}),this}done(){return bu.dispatch({type:xu,data:{id:this._id}}),this}}let Bu;function Wu(e){let t=Du();Bu=t;let n=(new ju).loading();return new Promise(((i,s)=>{ql.get("/subscription"+(e?"/update":"")).set("Accept","application/json").set("Csrf-Token",hu).end(((e,r)=>{if(n.done(),r&&401===r.status)return window.location.href="/login",void i();if(t===Bu){if(e)return cu(r,"Failed to sync subscription"),s(e),void bu.dispatch({type:wu,data:{}});bu.dispatch({type:wu,data:r.body}),i()}else i()}))}))}function Gu(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/subscription").send({license:e}).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to activate subscription"),void i(e)):(bu.dispatch({type:wu,data:s.body}),void n()))))}))}Hu.register((e=>{if("subscription.change"===e.type)Wu(!1)}));const Uu=!!new(n(4741))(window.navigator.userAgent).mobile(),Ku={admin:"Admin",proxy:"Service",user:"User"},Xu={linux:"Linux",macos_1010:"macOS 10.10",macos_1011:"macOS 10.11",macos_1012:"macOS 10.12",macos_1013:"macOS 10.13",macos_1014:"macOS 10.14",macos_1015:"macOS 10.15",macos11:"macOS 11",macos12:"macOS 12",macos13:"macOS 13",macos14:"macOS 14",windows_xp:"Windows XP",windows_7:"Windows 7",windows_vista:"Windows Vista",windows_8:"Windows 8",windows_10:"Windows 10",windows_11:"Windows 11",chrome_os:"Chrome OS",ios_8:"iOS 8",ios_9:"iOS 9",ios_10:"iOS 10",ios_11:"iOS 11",ios_12:"iOS 12",ios_13:"iOS 13",ios_14:"iOS 14",ios_15:"iOS 15",ios_16:"iOS 16",ios_17:"iOS 17",ios_18:"iOS 18",android_4:"Android KitKat 4.4",android_5:"Android Lollipop 5",android_6:"Android Marshmallow 6",android_7:"Android Nougat 7",android_8:"Android Oreo 8",android_9:"Android Pie 9",android_10:"Android 10",android_11:"Android 11",android_12:"Android 12",android_13:"Android 13",android_14:"Android 14",blackberry_10:"Blackerry 10",windows_phone:"Windows Phone",firefox_os:"Firefox OS",kindle:"Kindle"},qu={chrome:"Chrome",chrome_mobile:"Chrome Mobile",safari:"Safari",safari_mobile:"Safari Mobile",firefox:"Firefox",firefox_mobile:"Firefox Mobile",edge:"Microsoft Edge",internet_explorer:"Internet Explorer",internet_explorer_mobile:"Internet Explorer Mobile",opera:"Opera",opera_mobile:"Opera Mobile"},Ju={US:"United States",US_AL:"Alabama, US",US_AK:"Alaska, US",US_AZ:"Arizona, US",US_AR:"Arkansas, US",US_CA:"California, US",US_CO:"Colorado, US",US_CT:"Connecticut, US",US_DE:"Delaware, US",US_FL:"Florida, US",US_GA:"Georgia, US",US_HI:"Hawaii, US",US_ID:"Idaho, US",US_IL:"Illinois, US",US_IN:"Indiana, US",US_IA:"Iowa, US",US_KS:"Kansas, US",US_KY:"Kentucky, US",US_LA:"Louisiana, US",US_ME:"Maine, US",US_MD:"Maryland, US",US_MA:"Massachusetts, US",US_MI:"Michigan, US",US_MN:"Minnesota, US",US_MS:"Mississippi, US",US_MO:"Missouri, US",US_MT:"Montana, US",US_NE:"Nebraska, US",US_NV:"Nevada, US",US_NH:"New Hampshire, US",US_NJ:"New Jersey, US",US_NM:"New Mexico, US",US_NY:"New York, US",US_NC:"North Carolina, US",US_ND:"North Dakota, US",US_OH:"Ohio, US",US_OK:"Oklahoma, US",US_OR:"Oregon, US",US_PA:"Pennsylvania, US",US_RI:"Rhode Island, US",US_SC:"South Carolina, US",US_SD:"South Dakota, US",US_TN:"Tennessee, US",US_TX:"Texas, US",US_UT:"Utah, US",US_VT:"Vermont, US",US_VA:"Virginia, US",US_WA:"Washington, US",US_DC:"Washington DC, US",US_WV:"West Virginia, US",US_WI:"Wisconsin, US",US_WY:"Wyoming, US",AF:"Afghanistan",AX:"Åland Islands",AL:"Albania",DZ:"Algeria",AS:"American Samoa",AD:"Andorra",AO:"Angola",AI:"Anguilla",AQ:"Antarctica",AG:"Antigua and Barbuda",AR:"Argentina",AM:"Armenia",AW:"Aruba",AU:"Australia",AT:"Austria",AZ:"Azerbaijan",BS:"Bahamas",BH:"Bahrain",BD:"Bangladesh",BB:"Barbados",BY:"Belarus",BE:"Belgium",BZ:"Belize",BJ:"Benin",BM:"Bermuda",BT:"Bhutan",BO:"Bolivia",BQ:"Bonaire",BA:"Bosnia and Herzegovina",BW:"Botswana",BV:"Bouvet Island",BR:"Brazil",IO:"British Indian Ocean Territory",BN:"Brunei Darussalam",BG:"Bulgaria",BF:"Burkina Faso",BI:"Burundi",CV:"Cabo Verde",KH:"Cambodia",CM:"Cameroon",CA:"Canada",KY:"Cayman Islands",CF:"Central African Republic",TD:"Chad",CL:"Chile",CN:"China",CX:"Christmas Island",CC:"Cocos Islands",CO:"Colombia",KM:"Comoros",CG:"Congo",CD:"Congo Democratic Republic",CK:"Cook Islands",CR:"Costa Rica",CI:"Côte dIvoire",HR:"Croatia",CU:"Cuba",CW:"Curaçao",CY:"Cyprus",CZ:"Czechia",DK:"Denmark",DJ:"Djibouti",DM:"Dominica",DO:"Dominican Republic",EC:"Ecuador",EG:"Egypt",SV:"El Salvador",GQ:"Equatorial Guinea",ER:"Eritrea",EE:"Estonia",ET:"Ethiopia",FK:"Falkland Islands",FO:"Faroe Islands",FJ:"Fiji",FI:"Finland",FR:"France",GF:"French Guiana",PF:"French Polynesia",TF:"French Southern Territories",GA:"Gabon",GM:"Gambia",GE:"Georgia",DE:"Germany",GH:"Ghana",GI:"Gibraltar",GR:"Greece",GL:"Greenland",GD:"Grenada",GP:"Guadeloupe",GU:"Guam",GT:"Guatemala",GG:"Guernsey",GN:"Guinea",GW:"Guinea-Bissau",GY:"Guyana",HT:"Haiti",HM:"Heard Island and McDonald Islands",VA:"Holy See",HN:"Honduras",HK:"Hong Kong",HU:"Hungary",IS:"Iceland",IN:"India",ID:"Indonesia",IR:"Iran",IQ:"Iraq",IE:"Ireland",IM:"Isle of Man",IL:"Israel",IT:"Italy",JM:"Jamaica",JP:"Japan",JE:"Jersey",JO:"Jordan",KZ:"Kazakhstan",KE:"Kenya",KI:"Kiribati",KP:"North Korea",KR:"South Korea",KW:"Kuwait",KG:"Kyrgyzstan",LA:"Lao Peoples",LV:"Latvia",LB:"Lebanon",LS:"Lesotho",LR:"Liberia",LY:"Libya",LI:"Liechtenstein",LT:"Lithuania",LU:"Luxembourg",MO:"Macao",MK:"Macedonia",MG:"Madagascar",MW:"Malawi",MY:"Malaysia",MV:"Maldives",ML:"Mali",MT:"Malta",MH:"Marshall Islands",MQ:"Martinique",MR:"Mauritania",MU:"Mauritius",YT:"Mayotte",MX:"Mexico",FM:"Micronesia",MD:"Moldova",MC:"Monaco",MN:"Mongolia",ME:"Montenegro",MS:"Montserrat",MA:"Morocco",MZ:"Mozambique",MM:"Myanmar",NA:"Namibia",NR:"Nauru",NP:"Nepal",NL:"Netherlands",NC:"New Caledonia",NZ:"New Zealand",NI:"Nicaragua",NE:"Niger",NG:"Nigeria",NU:"Niue",NF:"Norfolk Island",MP:"Northern Mariana Islands",NO:"Norway",OM:"Oman",PK:"Pakistan",PW:"Palau",PS:"Palestine, State of",PA:"Panama",PG:"Papua New Guinea",PY:"Paraguay",PE:"Peru",PH:"Philippines",PN:"Pitcairn",PL:"Poland",PT:"Portugal",PR:"Puerto Rico",QA:"Qatar",RE:"Réunion",RO:"Romania",RU:"Russian Federation",RW:"Rwanda",BL:"Saint Barthélemy",SH:"Saint Helena",KN:"Saint Kitts and Nevis",LC:"Saint Lucia",MF:"Saint Martin",PM:"Saint Pierre and Miquelon",VC:"Saint Vincent and the Grenadines",WS:"Samoa",SM:"San Marino",ST:"Sao Tome and Principe",SA:"Saudi Arabia",SN:"Senegal",RS:"Serbia",SC:"Seychelles",SL:"Sierra Leone",SG:"Singapore",SX:"Sint Maarten",SK:"Slovakia",SI:"Slovenia",SB:"Solomon Islands",SO:"Somalia",ZA:"South Africa",GS:"South Georgia and the South Sandwich Islands",SS:"South Sudan",ES:"Spain",LK:"Sri Lanka",SD:"Sudan",SR:"Suriname",SJ:"Svalbard and Jan Mayen",SZ:"Swaziland",SE:"Sweden",CH:"Switzerland",SY:"Syrian Arab Republic",TW:"Taiwan",TJ:"Tajikistan",TZ:"Tanzania",TH:"Thailand",TL:"Timor-Leste",TG:"Togo",TK:"Tokelau",TO:"Tonga",TT:"Trinidad and Tobago",TN:"Tunisia",TR:"Turkey",TM:"Turkmenistan",TC:"Turks and Caicos Islands",TV:"Tuvalu",UG:"Uganda",UA:"Ukraine",AE:"United Arab Emirates",GB:"United Kingdom",UM:"United States Minor Outlying Islands",UY:"Uruguay",UZ:"Uzbekistan",VU:"Vanuatu",VE:"Venezuela",VN:"Viet Nam",VG:"British Virgin Islands",VI:"US Virgin Islands",WF:"Wallis and Futuna",EH:"Western Sahara",YE:"Yemen",ZM:"Zambia",ZW:"Zimbabwe"},Qu={box:{display:"inline-flex",verticalAlign:"middle"},actionProgress:{position:"absolute",bottom:0,left:0,borderRadius:0,borderBottomLeftRadius:"3px",borderBottomRightRadius:"3px",width:"100%",height:"4px"},squareActionProgress:{position:"absolute",bottom:0,left:0,borderRadius:0,borderBottomLeftRadius:"1px",borderBottomRightRadius:"3px",width:"100%",height:"4px"},dialog:{width:"340px",position:"absolute"},label:{width:"100%",maxWidth:"220px",margin:"18px 0 0 0"},input:{width:"100%"}};class Zu extends qr.Component{constructor(e,t){super(e,t),this.openDialog=()=>{this.setState({...this.state,dialog:!0})},this.closeDialog=()=>{this.setState({...this.state,dialog:!1})},this.closeDialogConfirm=()=>{this.setState({...this.state,dialog:!1}),this.props.onConfirm&&this.props.onConfirm()},this.confirm=e=>{let t=Du();if(e.shiftKey)return void(this.props.onConfirm&&this.props.onConfirm());this.setState({...this.state,confirming:t});let n=10,i=setInterval((()=>n>100?(clearInterval(i),void setTimeout((()=>{this.state.confirming===t&&(this.setState({...this.state,confirm:0,confirming:null}),this.props.onConfirm&&this.props.onConfirm())}),250)):this.state.confirming?(n%10==0&&this.setState({...this.state,confirm:n/10}),void(n+=2)):(clearInterval(i),void this.setState({...this.state,confirm:0,confirming:null}))),8)},this.clearConfirm=()=>{this.setState({...this.state,confirm:0,confirming:null})},this.state={input:"",dialog:!1,confirm:0,confirming:null}}render(){let e=Uu||this.props.safe,t={...this.props.style};t.position="relative";let n=this.props.className||"";this.props.label||(n+=" bp3-button-empty");let i,s=this.props.dialogClassName||this.props.className||"";if(this.props.label||this.props.dialogLabel||(s+=" bp3-button-empty"),this.props.confirmInput&&(i=qr.createElement("label",{className:"bp3-label",style:Qu.label},'Enter "delete" to confirm:',qr.createElement("input",{className:"bp3-input",style:Qu.input,disabled:this.props.disabled,autoCapitalize:"off",spellCheck:!1,placeholder:'Enter "delete" to confirm',value:this.state.input,onKeyDown:e=>{"Enter"===e.key&&"delete"===this.state.input&&this.closeDialogConfirm()},onChange:e=>{this.setState({...this.state,input:e.target.value})}}))),e){let r,a=this.props.confirmMsg?this.props.confirmMsg:"Confirm "+(this.props.label||"");if(this.props.items){let e=[];for(let t of this.props.items)e.push(qr.createElement("li",null,t));r=qr.createElement("ul",null,e)}return qr.createElement("div",{style:Qu.box},qr.createElement("button",{className:"bp3-button "+n,style:t,type:"button",hidden:this.props.hidden,disabled:this.props.disabled,onMouseDown:e?void 0:this.confirm,onMouseUp:e?void 0:this.clearConfirm,onMouseLeave:e?void 0:this.clearConfirm,onClick:e?this.openDialog:void 0},this.props.label),qr.createElement(Rc,{title:"Confirm",style:Qu.dialog,isOpen:this.state.dialog,usePortal:!0,portalContainer:document.body,onClose:this.closeDialog},qr.createElement("div",{className:"bp3-dialog-body"},a,r,i),qr.createElement("div",{className:"bp3-dialog-footer"},qr.createElement("div",{className:"bp3-dialog-footer-actions"},qr.createElement("button",{className:"bp3-button",type:"button",onClick:this.closeDialog},"Cancel"),qr.createElement("button",{className:"bp3-button "+s,type:"button",disabled:this.props.confirmInput&&"delete"!==this.state.input,onClick:this.closeDialogConfirm},this.props.dialogLabel||this.props.label)))))}{let i;if(this.state.confirming){let e,n={width:10*this.state.confirm+"%",backgroundColor:t.color,borderRadius:0,left:0};e=this.props.grouped?Qu.squareActionProgress:Qu.actionProgress,i=qr.createElement("div",{className:"bp3-progress-bar bp3-no-stripes "+(this.props.progressClassName||""),style:e},qr.createElement("div",{className:"bp3-progress-meter",style:n}))}return qr.createElement("button",{className:"bp3-button "+n,style:t,type:"button",hidden:this.props.hidden,disabled:this.props.disabled,onMouseDown:e?void 0:this.confirm,onMouseUp:e?void 0:this.clearConfirm,onMouseLeave:e?void 0:this.clearConfirm,onClick:e?this.openDialog:void 0},this.props.label,i)}}}const ep={card:{padding:"10px",minWidth:"310px",maxWidth:"350px",width:"calc(100% - 20px)",margin:"30px auto"},card2:{padding:"5px",minWidth:"310px",maxWidth:"380px",width:"calc(100% - 20px)",margin:"30px auto"},status:{width:"180px",margin:"20px auto",fontSize:"16px"},item:{margin:"2px 0"},message:{margin:"0 0 10px 0"},license:{width:"100%",height:"130px",margin:"0 0 10px 0",resize:"none",fontFamily:'"Lucida Console", Monaco, monospace'},button:{width:"150px",margin:"5px"},button2:{width:"160px",margin:"5px"},button3:{width:"195px",margin:"5px"},buttons:{margin:"0 auto"}};class tp extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,subscription:Lu.subscription})},this.state={subscription:Lu.subscription,update:!1,message:"",license:"",disabled:!1}}componentDidMount(){Lu.addChangeListener(this.onChange),this.state.subscription.active||Wu(!0)}componentWillUnmount(){Lu.removeChangeListener(this.onChange)}update(){return qr.createElement("div",null,qr.createElement("div",{className:"bp3-card bp3-elevation-2",style:ep.card},qr.createElement("div",{className:"bp3-callout bp3-intent-success",style:ep.message,hidden:!this.state.message},this.state.message),qr.createElement("textarea",{className:"bp3-input",style:ep.license,disabled:this.state.disabled,placeholder:"New License Key",value:this.state.license,onChange:e=>{this.setState({...this.state,license:e.target.value})}}),qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-intent-danger bp3-icon-cross",style:ep.button,disabled:this.state.disabled,onClick:()=>{this.setState({...this.state,update:!1,license:""})}},"Cancel"),qr.createElement("button",{className:"bp3-button bp3-intent-primary bp3-icon-endorsed",style:ep.button,disabled:this.state.disabled,onClick:()=>{this.setState({...this.state,disabled:!0}),Gu(this.state.license).then((()=>{this.setState({...this.state,disabled:!1,update:!1,license:""})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"Update License"))))}activate(){return qr.createElement("div",null,qr.createElement("div",{className:"bp3-card bp3-elevation-2",style:ep.card},qr.createElement("div",{className:"bp3-callout bp3-intent-success",style:ep.message,hidden:!this.state.message},this.state.message),qr.createElement("textarea",{className:"bp3-input",style:ep.license,disabled:this.state.disabled,placeholder:"License Key",value:this.state.license,onChange:e=>{this.setState({...this.state,license:e.target.value})}}),qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-intent-primary bp3-icon-endorsed",style:ep.button,disabled:this.state.disabled,onClick:()=>{this.setState({...this.state,disabled:!0}),Gu(this.state.license).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"Activate License"),qr.createElement(zu.Z,{label:"Pritunl Zero",image:"https://objectstorage.us-ashburn-1.oraclecloud.com/n/pritunl8472/b/pritunl-static/o/logo_stripe.png",allowRememberMe:!1,zipCode:!0,amount:5e3,name:"Pritunl Zero",description:"Subscribe to Zero ($50/month)",panelLabel:"Subscribe",token:e=>{this.setState({...this.state,disabled:!0}),function(e,t,n){let i=(new ju).loading();return new Promise(((s,r)=>{ql.post("https://app.pritunl.com/subscription").send({plan:e,card:t,email:n}).set("Accept","application/json").end(((e,t)=>(i.done(),t&&401===t.status?(window.location.href="/login",void s("")):e?(cu(t,"Failed to checkout"),void r(e)):(s(t.body.msg),void Wu(!0)))))}))}("zero",e.id,e.email).then((e=>{this.setState({...this.state,disabled:!1,message:e})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},onScriptError:e=>{lu("Failed to load Stripe Checkout")},stripeKey:"pk_live_plmoOl3lS3k5dMNQViZWGfVR"},qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-credit-card",style:ep.button,disabled:this.state.disabled},"Subscribe")))))}reactivate(){let e,t,n=this.state.subscription,i=n.cancel_at_period_end||"canceled"===n.status,s=n.cancel_at_period_end?"canceled":n.status,r=Iu(n.period_end),a=Iu(n.trial_end);return n.balance<0?(e=Yu(-1*n.balance),t="Credit"):(e=Yu(n.balance),t="Balance"),qr.createElement("div",null,qr.createElement("div",{className:"bp3-card bp3-elevation-2",style:ep.card2},qr.createElement("div",{className:"bp3-callout bp3-intent-success",style:ep.message,hidden:!this.state.message},this.state.message),qr.createElement("div",{className:"layout vertical",style:ep.status},qr.createElement("div",{className:"layout horizontal"},qr.createElement("div",{className:"flex"},"Status:"),qr.createElement("div",null,Ou(s))),qr.createElement("div",{className:"layout horizontal",style:ep.item},qr.createElement("div",{className:"flex"},"Plan:"),qr.createElement("div",null,Ou(n.plan))),qr.createElement("div",{className:"layout horizontal",style:ep.item},qr.createElement("div",{className:"flex"},"Amount:"),qr.createElement("div",null,Yu(n.amount))),qr.createElement("div",{className:"layout horizontal",style:ep.item},qr.createElement("div",{className:"flex"},"Quantity:"),qr.createElement("div",null,n.quantity)),qr.createElement("div",{className:"layout horizontal",style:ep.item,hidden:!n.balance},qr.createElement("div",{className:"flex"},t,":"),qr.createElement("div",null,e)),qr.createElement("div",{className:"layout horizontal",style:ep.item,hidden:""===r},qr.createElement("div",{className:"flex"},i?"Ends":"Renew",":"),qr.createElement("div",null,r)),qr.createElement("div",{className:"layout horizontal",style:ep.item,hidden:""===a},qr.createElement("div",{className:"flex"},"Trial Ends:"),qr.createElement("div",null,a))),qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement(Zu,{className:"bp3-intent-danger bp3-icon-disable",progressClassName:"bp3-intent-danger",style:ep.button2,disabled:this.state.disabled,hidden:i,label:"End Subscription",onConfirm:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("https://app.pritunl.com/subscription").send({key:e}).set("Accept","application/json").end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to cancel subscription"),void i(e)):(n(),void Wu(!0)))))}))}(this.state.subscription.url_key).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}}),qr.createElement(zu.Z,{label:"Pritunl Zero",image:"https://objectstorage.us-ashburn-1.oraclecloud.com/n/pritunl8472/b/pritunl-static/o/logo_stripe.png",allowRememberMe:!1,zipCode:!0,amount:i&&"active"!==n.status?5e3:0,name:"Pritunl Zero",description:i?"Reactivate Subscription ($50/month)":"Update Payment Information",panelLabel:i?"Reactivate":"Update",token:e=>{this.setState({...this.state,disabled:!0}),function(e,t,n,i){let s=(new ju).loading();return new Promise(((r,a)=>{ql.put("https://app.pritunl.com/subscription").send({key:e,plan:t,card:n,email:i}).set("Accept","application/json").end(((e,t)=>(s.done(),t&&401===t.status?(window.location.href="/login",void r()):e?(cu(t,"Failed to update payment"),void a(e)):(r(),void Wu(!0)))))}))}(this.state.subscription.url_key,"zero",e.id,e.email).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},onScriptError:e=>{lu("Failed to load Stripe Checkout")},stripeKey:"pk_live_plmoOl3lS3k5dMNQViZWGfVR"},qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-credit-card",style:i?ep.button3:ep.button2,disabled:this.state.disabled},i?"Reactivate Subscription":"Update Payment"))),qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement(Zu,{className:"bp3-intent-danger bp3-icon-delete",progressClassName:"bp3-intent-danger",style:ep.button2,disabled:this.state.disabled,label:"Remove License",onConfirm:()=>{this.setState({...this.state,disabled:!0}),Gu("").then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}}),qr.createElement("button",{className:"bp3-button bp3-intent-primary bp3-icon-endorsed",style:ep.button2,disabled:this.state.disabled,onClick:()=>{this.setState({...this.state,update:!0})}},"Update License"))))}render(){return this.state.update?this.update():this.state.subscription.status?this.reactivate():this.activate()}}const np="user.sync",ip="user.traverse",sp="user.filter",rp="user.load",ap="user.unload";const op=new class extends Mu{constructor(){super(...arguments),this._users=Object.freeze([]),this._filter=null,this._map={},this._token=bu.register(this._callback.bind(this))}get users(){return this._users}get usersM(){let e=[];return this._users.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||50}get pages(){return Math.ceil(this.count/this.pageCount)}get filter(){return this._filter}get count(){return this._count||0}user(e){let t=this._map[e];return void 0===t?null:this._users[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_filterCallback(e){(null!==this._filter&&null===e||this._filter==={}&&null!==e||e&&this._filter&&(e.type!==this._filter.type||e.administrator!==this._filter.administrator||e.disabled!==this._filter.disabled||e.role!==this._filter.role))&&this._traverse(0),this._filter=e,this.emitChange()}_sync(e,t){this._map={};for(let t=0;t{ql.get("/user/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to load user"),void i(e)):(bu.dispatch({type:rp,data:{user:s.body}}),void n()))))}))}function dp(){let e=Du();cp=e;let t=(new ju).loading();return new Promise(((n,i)=>{ql.get("/user").query({...op.filter,page:op.page,page_count:op.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===cp){if(s)return cu(r,"Failed to load users"),void i(s);bu.dispatch({type:np,data:{users:r.body.users,count:r.body.count}}),n()}else n()}))}))}function up(e){return bu.dispatch({type:ip,data:{page:e}}),dp()}function pp(e){return bu.dispatch({type:sp,data:{filter:e}}),dp()}function mp(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/user").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete users"),void i(e)):void n())))}))}Hu.register((e=>{if("user.change"===e.type)dp()}));const fp="audit.sync",gp="audit.traverse";const vp=new class extends Mu{constructor(){super(...arguments),this._audits=Object.freeze([]),this._token=bu.register(this._callback.bind(this))}get userId(){return this._userId}get audits(){return this._audits}get auditsM(){let e=[];return this._audits.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||10}get pages(){return Math.ceil(this.count/this.pageCount)}get count(){return this._count||0}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_sync(e,t,n){this._userId=e;for(let e=0;e{ql.get("/audit/"+e).query({page:vp.page,page_count:vp.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((r,a)=>{if(n.done(),a&&401===a.status)return window.location.href="/login",void i();if(t===yp){if(r)return cu(a,"Failed to load audits"),void s(r);bu.dispatch({type:fp,data:{userId:e,audits:a.body.audits,count:a.body.count}}),i()}else i()}))}))}function _p(){return bp(vp.userId)}function Mp(e){return bu.dispatch({type:gp,data:{page:e}}),_p()}Hu.register((e=>{if("audit.change"===e.type)_p()}));const wp={card:{display:"table-row",width:"100%",padding:0,boxShadow:"none"},select:{margin:"2px 0 0 0",paddingTop:"3px",minHeight:"18px"},name:{verticalAlign:"top",display:"table-cell",padding:"8px"},type:{verticalAlign:"top",display:"table-cell",padding:"9px"},lastActivity:{verticalAlign:"top",display:"table-cell",padding:"9px",whiteSpace:"nowrap"},roles:{verticalAlign:"top",display:"table-cell",padding:"0 8px 8px 8px"},tag:{margin:"8px 5px 0 5px",height:"20px"},nameLink:{margin:"0 5px 0 0"}};class Sp extends qr.Component{render(){let e=this.props.user,t=[];for(let n of e.roles)t.push(qr.createElement("div",{className:"bp3-tag bp3-intent-primary",style:wp.tag,key:n},n));let n,i={...wp.card};switch(e.disabled&&(i.opacity=.6),e.type){case"local":n="Local";break;case"google":n="Google";break;case"onelogin":n="OneLogin";break;case"okta":n="Okta";break;case"authzero":n="Auth0";break;case"azure":n="Azure";break;case"jumpcloud":n="JumpCloud";break;case"api":n="API";break;default:n=e.type}return qr.createElement("div",{className:"bp3-card bp3-row",style:i},qr.createElement("div",{className:"bp3-cell",style:wp.name},qr.createElement("div",{className:"layout horizontal"},qr.createElement("label",{className:"bp3-control bp3-checkbox",style:wp.select},qr.createElement("input",{type:"checkbox",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator"})),qr.createElement(Ul,{to:"/user/"+e.id,style:wp.nameLink},e.username))),qr.createElement("div",{className:"bp3-cell",style:wp.type},n),qr.createElement("div",{className:"bp3-cell",style:wp.lastActivity},Fu(e.last_active)||"Inactive"),qr.createElement("div",{className:"flex bp3-cell",style:wp.roles},qr.createElement("span",{className:"bp3-tag bp3-intent-danger",style:wp.tag,hidden:!e.administrator},"admin"),t))}}class Lp extends qr.Component{render(){return qr.createElement("div",{className:"bp3-input-group",style:this.props.style},qr.createElement("span",{className:"bp3-icon bp3-icon-search"}),qr.createElement("input",{className:"bp3-input bp3-round",type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:this.props.placeholder,value:this.props.value||"",onChange:e=>{this.props.onChange(e.target.value)}}))}}class kp extends qr.Component{render(){let e={...this.props.style};return null!==this.props.checked&&void 0!==this.props.checked||(e.opacity=.5),qr.createElement("label",{className:"bp3-control bp3-switch",style:e},qr.createElement("input",{type:"checkbox",checked:!!this.props.checked,onChange:this.props.onToggle}),qr.createElement("span",{className:"bp3-control-indicator"}),this.props.label)}}const xp={filters:{margin:"-15px 0 5px 0"},input:{width:"200px",margin:"5px"},role:{width:"150px",margin:"5px"},type:{margin:"5px"},check:{margin:"12px 5px 8px 5px"}};class Cp extends qr.Component{constructor(e,t){super(e,t),this.state={menu:!1}}render(){return null===this.props.filter?qr.createElement("div",null):qr.createElement("div",{className:"layout horizontal wrap",style:xp.filters},qr.createElement(Lp,{style:xp.input,placeholder:"Username",value:this.props.filter.username,onChange:e=>{let t={...this.props.filter};e?t.username=e:delete t.username,this.props.onFilter(t)}}),qr.createElement(Lp,{style:xp.role,placeholder:"Role",value:this.props.filter.role,onChange:e=>{let t={...this.props.filter};e?t.role=e:delete t.role,this.props.onFilter(t)}}),qr.createElement("div",{className:"bp3-select",style:xp.type},qr.createElement("select",{value:this.props.filter.type||"any",onChange:e=>{let t={...this.props.filter},n=e.target.value;"any"===n?delete t.type:t.type=n,this.props.onFilter(t)}},qr.createElement("option",{value:"any"},"Any"),qr.createElement("option",{value:"local"},"Local"),qr.createElement("option",{value:"azure"},"Azure"),qr.createElement("option",{value:"google"},"Google"),qr.createElement("option",{value:"onelogin"},"OneLogin"),qr.createElement("option",{value:"okta"},"Okta"),qr.createElement("option",{value:"api"},"API"))),qr.createElement(kp,{style:xp.check,label:"Administrator",checked:this.props.filter.administrator,onToggle:()=>{let e={...this.props.filter};void 0===e.administrator?e.administrator=!0:!0===e.administrator?e.administrator=!1:delete e.administrator,this.props.onFilter(e)}}),qr.createElement(kp,{style:xp.check,label:"Disabled",checked:this.props.filter.disabled,onToggle:()=>{let e={...this.props.filter};void 0===e.disabled?e.disabled=!0:!0===e.disabled?e.disabled=!1:delete e.disabled,this.props.onFilter(e)}}))}}const Tp={page:{margin:"0 auto",padding:"30px 20px",minWidth:"200px",maxWidth:"1100px"},pageWide:{margin:"0 auto",padding:"30px 20px",minWidth:"200px",maxWidth:"1250px"}};class Ep extends qr.Component{render(){return qr.createElement("div",{style:this.props.wide?Tp.pageWide:Tp.page},this.props.children)}}const zp={header:{fontSize:"24px",paddingBottom:"8px",marginBottom:"20px",borderBottomStyle:"solid"},label:{margin:0}};class Ap extends qr.Component{render(){let e;return this.props.label&&(e=qr.createElement("h2",{style:zp.label},this.props.label)),qr.createElement("div",{className:"bp3-border",style:zp.header},e,this.props.children)}}const Hp={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class Dp extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:op.page,pageCount:op.pageCount,pages:op.pages,count:op.count})},this.state={page:op.page,pageCount:op.pageCount,pages:op.pages,count:op.count}}componentDidMount(){op.addChangeListener(this.onChange)}componentWillUnmount(){op.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{up(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{up(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:Hp.button,disabled:0===e,type:"button",onClick:()=>{up(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:Hp.button,disabled:e===t-1,type:"button",onClick:()=>{up(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{up(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const Pp={users:{width:"100%",marginTop:"-5px",display:"table",borderSpacing:"0 5px"},usersBox:{width:"100%",overflowY:"auto"},header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"}};class Op extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{let e=op.users,t={},n=this.state.selected;e.forEach((e=>{n[e.id]&&(t[e.id]=!0)})),this.setState({...this.state,users:e,filter:op.filter,selected:t})},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),mp(Object.keys(this.state.selected)).then((()=>{this.setState({...this.state,selected:{},disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={users:op.users,filter:op.filter,selected:{},lastSelected:null,disabled:!1}}get selected(){for(let e in this.state.selected)if(this.state.selected[e])return!0;return!1}componentDidMount(){op.addChangeListener(this.onChange),Mp(0),dp()}componentWillUnmount(){op.removeChangeListener(this.onChange)}render(){let e=[];this.state.users.forEach((t=>{e.push(qr.createElement(Sp,{key:t.id,user:t,selected:!!this.state.selected[t.id],onSelect:e=>{let n={...this.state.selected};if(e){let e,i,s=this.state.users;for(let n=0;ni&&(i=[e,e=i][0]);for(let t=e;t<=i;t++)n[s[t].id]=!0;return void this.setState({...this.state,lastSelected:t.id,selected:n})}}n[t.id]?delete n[t.id]:n[t.id]=!0,this.setState({...this.state,lastSelected:t.id,selected:n})}}))}));let t="bp3-button bp3-intent-primary bp3-icon-filter ";this.state.filter&&(t+="bp3-active");let n=[];for(let e of Object.keys(this.state.selected)){let t=op.user(e);t?n.push(t.username||e):n.push(e)}return qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Pp.header},qr.createElement("h2",{style:Pp.heading},"Users"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Pp.buttons},qr.createElement("button",{className:t,style:Pp.button,type:"button",onClick:()=>{null===this.state.filter?pp({}):pp(null)}},"Filters"),qr.createElement(Zu,{label:"Delete Selected",className:"bp3-intent-danger bp3-icon-delete",progressClassName:"bp3-intent-danger",safe:!0,style:Pp.button,confirmMsg:"Permanently delete the selected users",confirmInput:!0,items:n,disabled:!this.selected||this.state.disabled,onConfirm:this.onDelete}),qr.createElement(Ul,{className:"bp3-button bp3-intent-success bp3-icon-add",style:Pp.button,to:"/user"},"New")))),qr.createElement(Cp,{filter:this.state.filter,onFilter:e=>{pp(e)}}),qr.createElement("div",{style:Pp.usersBox},qr.createElement("div",{style:Pp.users},e)),qr.createElement(Dp,{onPage:()=>{this.setState({...this.state,selected:{},lastSelected:null})}}))}}const Yp="session.sync",Rp="session.show_removed";const Vp=new class extends Mu{constructor(){super(...arguments),this._sessions=Object.freeze([]),this._token=bu.register(this._callback.bind(this))}get userId(){return this._userId}get sessions(){return this._sessions}get sessionsM(){let e=[];return this._sessions.forEach((t=>{e.push({...t})})),e}get showRemoved(){return this._showRemoved}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_sync(e,t){this._userId=e;for(let e=0;e{ql.get("/session/"+e).query({show_removed:Vp.showRemoved}).set("Accept","application/json").set("Csrf-Token",hu).end(((r,a)=>{if(n.done(),a&&401===a.status)return window.location.href="/login",void i();if(t===Np){if(r)return cu(a,"Failed to load sessions"),void s(r);bu.dispatch({type:Yp,data:{userId:e,sessions:a.body}}),i()}else i()}))}))}function Ip(){return $p(Vp.userId)}Hu.register((e=>{if("session.change"===e.type)Ip()}));const Fp={state:{height:"auto"}};class jp extends qr.Component{constructor(e,t){super(e,t),this.state={initialized:!1}}componentDidMount(){this.timeout=window.setTimeout((()=>{this.setState({...this.state,initialized:!0})}),700)}componentWillUnmount(){this.timeout&&window.clearTimeout(this.timeout)}render(){let e;return this.props.description&&(e=qr.createElement("div",{className:"bp3-non-ideal-state-description"},this.props.description)),qr.createElement("div",{className:"bp3-non-ideal-state",style:Fp.state,hidden:this.props.hidden||!this.state.initialized},qr.createElement("div",{className:"bp3-non-ideal-state-visual bp3-non-ideal-state-icon"},qr.createElement("span",{className:"bp3-icon "+this.props.iconClass})),qr.createElement("h4",{className:"bp3-non-ideal-state-title"},this.props.title),e)}}function Bp(e){return e.continent&&e.continent_code?e.continent+(e.continent_code&&"XX"!==e.continent_code?" ("+e.continent_code+")":""):e.continent||e.continent_code||"Unknown"}function Wp(e){return(e.city&&"Unknown"!==e.city?e.city+", ":"")+(e.region||"Unknown")+(e.region_code&&"XX"!==e.region_code?" ("+e.region_code+")":"")}function Gp(e){return(e.country||"Unknown")+(e.country_code&&"XX"!==e.country_code?" ("+e.country_code+")":"")}function Up(e){return e.latitude&&e.longitude?e.latitude+", "+e.longitude:"Unknown"}const Kp={label:{width:"100%",maxWidth:"280px"},value:{wordWrap:"break-word"},item:{marginBottom:"5px"}};class Xp extends qr.Component{render(){let e,t=[],n=[];for(let e of this.props.fields||[]){if(null==e)continue;let n;if("string"==typeof e.value)n=e.value;else if("number"==typeof e.value)n=e.value.toString();else{n=[];for(let t=0;t{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/session/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete session"),void i(e)):void n())))}))}(this.props.session.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={disabled:!1}}render(){let e=this.props.session,t=e.agent||{},n={...qp.card};return e.removed&&(n.opacity=.6),qr.createElement("div",{className:"bp3-card",style:n},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:qp.group},qr.createElement("div",{style:qp.remove},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-intent-danger bp3-icon-trash",type:"button",hidden:e.removed,disabled:this.state.disabled,onClick:this.onDelete})),qr.createElement(Xp,{style:qp.info,fields:[{label:"ID",value:e.id||"None"},{label:"Created",value:$u(e.timestamp)||"Unknown"},{label:"Last Active",value:$u(e.last_active)||"Unknown"}]})),qr.createElement("div",{style:qp.group},qr.createElement(Xp,{style:qp.info,fields:[{label:"Session Type",value:Ku[e.type]||"Unknown"},{label:"Browser",value:(Xu[t.operating_system]||"Unknown")+" "+(qu[t.browser]||"Unknown")},{label:"ISP",value:t.isp||"Unknown"}]})),qr.createElement("div",{style:qp.group},qr.createElement(Xp,{style:qp.info,fields:[{label:"Location",value:[Wp(t),Gp(t),Bp(t)]},{label:"Coordinates",value:Up(t)},{label:"IP Address",value:t.ip||"Unknown"}]}))))}}const Qp={header:{marginTop:"5px"},heading:{margin:"19px 0 0 0"},button:{margin:"15px 0 -5px 0"}};class Zp extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,sessions:Vp.sessions})},this.state={sessions:Vp.sessions,showEnded:!1,disabled:!1}}componentDidMount(){var e;Vp.addChangeListener(this.onChange),this.props.userId&&(e=this.props.userId,bu.dispatch({type:Rp,data:{showRemoved:!1}}),$p(e))}componentWillUnmount(){Vp.removeChangeListener(this.onChange)}render(){if(!this.props.userId)return qr.createElement("div",null);let e=[];return this.state.sessions.forEach((t=>{t.removed&&!this.state.showEnded||e.push(qr.createElement(Jp,{key:t.id,session:t}))})),qr.createElement("div",null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Qp.header},qr.createElement("h2",{style:Qp.heading},"User Sessions"),qr.createElement("div",{className:"flex"}),qr.createElement("div",null,qr.createElement("button",{className:"bp3-button bp3-minimal",style:Qp.button,type:"button",onClick:()=>{var e;this.setState({...this.state,showEnded:!this.state.showEnded}),e=!this.state.showEnded,bu.dispatch({type:Rp,data:{showRemoved:e}}),Ip()}},(this.state.showEnded?"Hide":"Show")+" ended sessions")))),qr.createElement("div",null,e),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-user",title:"No sessions"}))}}function em(e){const t="==".slice(0,(4-e.length%4)%4),n=e.replace(/-/g,"+").replace(/_/g,"/")+t,i=atob(n),s=new ArrayBuffer(i.length),r=new Uint8Array(s);for(let e=0;esm(e,t[0],n)));if(t instanceof Object){const i={};for(const[s,r]of Object.entries(t)){if(r.deriveFn){const e=r.deriveFn(n);void 0!==e&&(n[s]=e)}if(s in n)null!=n[s]?i[s]=sm(e,r.schema,n[s]):i[s]=null;else if(r.required)throw new Error(`Missing key: ${s}`)}return i}}function rm(e,t){return{required:!0,schema:e,deriveFn:t}}function am(e){return{required:!0,schema:e}}function om(e){return{required:!1,schema:e}}var lm={type:am(nm),id:am(im),transports:om(nm)},cm={appid:om(nm),appidExclude:om(nm),credProps:om(nm)},hm={appid:om(nm),appidExclude:om(nm),credProps:om(nm)},dm={publicKey:am({rp:am(nm),user:am({id:am(im),name:am(nm),displayName:am(nm)}),challenge:am(im),pubKeyCredParams:am(nm),timeout:om(nm),excludeCredentials:om([lm]),authenticatorSelection:om(nm),attestation:om(nm),extensions:om(cm)}),signal:om(nm)},um={type:am(nm),id:am(nm),rawId:am(im),response:am({clientDataJSON:am(im),attestationObject:am(im),transports:rm(nm,(e=>e.getTransports?.()||[]))}),clientExtensionResults:rm(hm,(e=>e.getClientExtensionResults()))};om(nm),am({challenge:am(im),timeout:om(nm),rpId:om(nm),allowCredentials:om([lm]),userVerification:om(nm),extensions:om(cm)}),om(nm),am(nm),am(nm),am(im),am({clientDataJSON:am(im),authenticatorData:am(im),signature:am(im),userHandle:am(im)}),rm(hm,(e=>e.getClientExtensionResults()));async function pm(e){const t=await navigator.credentials.create(function(e){return sm(em,dm,e)}(e));return function(e){return sm(tm,um,e)}(t)}const mm="device.sync";const fm=new class extends Mu{constructor(){super(...arguments),this._devices=Object.freeze([]),this._token=bu.register(this._callback.bind(this))}get userId(){return this._userId}get devices(){return this._devices}get devicesM(){let e=[];return this._devices.forEach((t=>{e.push({...t})})),e}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_sync(e,t){this._userId=e;for(let e=0;e{ql.get("/device/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((r,a)=>{if(n.done(),a&&401===a.status)return window.location.href="/login",void i();if(t===gm){if(r)return cu(a,"Failed to load devices"),void s(r);bu.dispatch({type:mm,data:{userId:e,devices:a.body}}),i()}else i()}))}))}function ym(){return vm(fm.userId)}function bm(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/device").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create device"),void i(e)):void n())))}))}Hu.register((e=>{if("device.change"===e.type)ym()}));const _m={box:{position:"relative",display:"inline"},content:{padding:"20px"},button:{position:"absolute",top:"-7px",left:"-2px",padding:"7px",background:"none",opacity:.3},popover:{width:"230px"},popoverTarget:{top:"9px",left:"18px"},dialog:{maxWidth:"400px",margin:"30px 20px"}};class Mm extends qr.Component{constructor(e,t){super(e,t),this.state={popover:!1}}render(){let e;return this.state.popover&&(e=qr.createElement(Rc,{title:this.props.title,style:_m.dialog,isOpen:this.state.popover,usePortal:!0,portalContainer:document.body,onClose:()=>{this.setState({...this.state,popover:!1})}},qr.createElement("div",{className:"bp3-dialog-body"},this.props.content),qr.createElement("div",{className:"bp3-dialog-footer"},qr.createElement("div",{className:"bp3-dialog-footer-actions"},qr.createElement("button",{className:"bp3-button",type:"button",onClick:()=>{this.setState({...this.state,popover:!this.state.popover})}},"Close"))))),qr.createElement("div",{style:_m.box},qr.createElement("div",{className:"bp3-button bp3-minimal bp3-icon-help",style:_m.button,onClick:()=>{this.setState({...this.state,popover:!this.state.popover})}}),e)}}const wm={label:{display:"inline-block"}};class Sm extends qr.Component{render(){return qr.createElement("div",{hidden:this.props.hidden},qr.createElement("label",{className:"bp3-control bp3-switch",style:wm.label},qr.createElement("input",{type:"checkbox",disabled:this.props.disabled,checked:!!this.props.checked,onChange:this.props.onToggle}),qr.createElement("span",{className:"bp3-control-indicator"}),this.props.label),qr.createElement(Mm,{title:this.props.label,content:this.props.help}))}}const Lm={message:{marginTop:"6px"},box:{marginTop:"15px"},button:{marginLeft:"10px"},buttons:{flexShrink:0}};class km extends qr.Component{render(){let e=this.props.light?null:Lm.box;return this.props.style&&(e={...e,...this.props.style}),qr.createElement("div",{className:"layout horizontal",style:e,hidden:this.props.hidden&&!this.props.children},this.props.children,qr.createElement("div",{className:"flex"}),qr.createElement("div",{className:"layout horizontal"},qr.createElement("span",{style:Lm.message,hidden:!this.props.message},this.props.message),qr.createElement("div",{style:Lm.buttons},qr.createElement("button",{className:"bp3-button bp3-icon-cross",style:Lm.button,hidden:this.props.hidden,type:"button",disabled:!this.props.changed||this.props.disabled,onClick:this.props.onCancel},"Cancel"),qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-tick",style:Lm.button,hidden:this.props.hidden,type:"button",disabled:!this.props.changed||this.props.disabled,onClick:this.props.onSave},"Save"))))}}const xm={label:{width:"100%",maxWidth:"280px"},labelNarrow:{width:"100%",maxWidth:"220px"},input:{width:"100%"}};class Cm extends qr.Component{constructor(){super(...arguments),this.autoSelect=e=>{e.currentTarget.select()}}render(){let e=this.props.value;return e=isNaN(e)?this.props.value||"":this.props.value,qr.createElement("label",{className:"bp3-label",style:this.props.narrow?xm.labelNarrow:xm.label,hidden:this.props.hidden},this.props.label,qr.createElement(Mm,{title:this.props.label,content:this.props.help}),qr.createElement("input",{className:"bp3-input",style:xm.input,type:this.props.type,disabled:this.props.disabled,readOnly:this.props.readOnly,autoCapitalize:"off",spellCheck:!1,placeholder:this.props.placeholder,value:e,onClick:this.props.autoSelect?this.autoSelect:null,onChange:e=>{this.props.onChange&&this.props.onChange(e.target.value)}}))}}const Tm={card:{position:"relative",padding:"10px",marginBottom:"5px"},info:{marginBottom:"-5px"},group:{flex:1,minWidth:"250px"},inputGroup:{marginBottom:"11px",width:"100%",maxWidth:"280px"},remove:{position:"absolute",top:"5px",right:"5px"},controlButton:{marginRight:"10px"},save:{paddingTop:"10px"}};class Em extends qr.Component{constructor(e,t){super(e,t),this.onTestAlert=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/device/"+e+"/alert").set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to send test alert"),void i(e)):void n())))}))}(this.props.device.id).then((()=>{au("Test alert sent"),this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/device/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save device"),void i(e)):void n())))}))}(this.state.device).then((()=>{au("Device name updated"),this.setState({...this.state,disabled:!1,changed:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,changed:!1,device:null})}),1e3)})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/device/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete device"),void i(e)):void n())))}))}(this.props.device.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={disabled:!1,changed:!1,message:"",device:null}}set(e,t){let n;n=this.state.changed?{...this.state.device}:{...this.props.device},n[e]=t,this.setState({...this.state,changed:!0,device:n})}toggleLevel(e){let t;t=this.state.changed?{...this.state.device}:{...this.props.device};let n=Object.assign([],t.alert_levels||[]),i=n.indexOf(e);-1!==i?n.splice(i,1):n.push(e),t.alert_levels=n,this.setState({...this.state,changed:!0,device:t})}render(){let e=this.state.device||this.props.device,t="phone"===this.props.device.mode,n="Unknown";switch(e.type){case"webauthn":n="WebAuthn";break;case"u2f":n="U2F";break;case"smart_card":n="Smart Card";break;case"call":n="Call";break;case"message":n="SMS"}let i,s="Unknown";switch(e.mode){case"secondary":s="Secondary";break;case"ssh":s="SSH";break;case"phone":s="Phone"}e.wan_rp_id?i={label:"WebAuthn Domain",value:e.wan_rp_id}:"smart_card"===e.type?i={label:"SSH Public Key",value:e.ssh_public_key}:"call"!==e.type&&"message"!==e.type||(i={label:"Phone Number",value:e.number});let r="bp3-icon-phone";"message"===e.type&&(r="bp3-icon-mobile-phone");let a,o,l,c={...Tm.card};return e.disabled&&(c.opacity=.6),t?(a=[{label:"ID",value:e.id||"None"}],o=[{label:"Type",value:n},{label:"Mode",value:s},i,{label:"Registered",value:$u(e.timestamp)||"Unknown"},{label:"Last Active",value:$u(e.last_active)||"Unknown"}]):(a=[{label:"ID",value:e.id||"None"},{label:"Type",value:n},i],o=[{label:"Mode",value:s},{label:"Registered",value:$u(e.timestamp)||"Unknown"},{label:"Last Active",value:$u(e.last_active)||"Unknown"}]),t&&(l=qr.createElement(Zu,{label:"Send Test Alert",className:"bp3-intent-success "+r,progressClassName:"bp3-intent-success",style:Tm.controlButton,disabled:this.state.disabled,onConfirm:()=>{this.onTestAlert()}})),qr.createElement("div",{className:"bp3-card",style:c},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Tm.group},qr.createElement("div",{style:Tm.remove},qr.createElement(Zu,{className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",confirmMsg:"Confirm device remove",disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{label:"Device Name",help:"Name of device.",type:"text",placeholder:"Enter name",disabled:this.state.disabled,value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement(Sm,{label:"Low alerts",help:"Recieve low level alerts on this device.",hidden:!t,disabled:this.state.disabled,checked:-1!==(e.alert_levels||[]).indexOf(1),onToggle:()=>{this.toggleLevel(1)}}),qr.createElement(Sm,{label:"Medium alerts",help:"Recieve medium level alerts on this device.",hidden:!t,disabled:this.state.disabled,checked:-1!==(e.alert_levels||[]).indexOf(5),onToggle:()=>{this.toggleLevel(5)}}),qr.createElement(Sm,{label:"High alerts",help:"Recieve high level alerts on this device.",hidden:!t,disabled:this.state.disabled,checked:-1!==(e.alert_levels||[]).indexOf(10),onToggle:()=>{this.toggleLevel(10)}}),qr.createElement(Xp,{style:Tm.info,fields:a})),qr.createElement("div",{style:Tm.group},qr.createElement(Xp,{style:Tm.info,fields:o}))),qr.createElement(km,{style:Tm.save,hidden:!this.state.device&&!this.state.message,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,device:null})},onSave:this.onSave},l))}}const zm={header:{marginTop:"5px"},heading:{margin:"19px 0 0 0"},button:{margin:"15px 0 -5px 0"},group:{marginTop:"18px"},groupBox:{},inputBox:{flex:"1"}};class Am extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,devices:fm.devices})},this.wanRegister=()=>{this.setState({...this.state,disabled:!0});let e=(new ju).loading();ql.get("/device/"+fm.userId+"/webauthn/register").set("Accept","application/json").set("Csrf-Token",hu).end(((t,n)=>{e.done(),t?cu(n,"Failed to request device registration"):this.wanCreate(n.body.token,n.body.options)}))},this.wanCreate=(e,t)=>{pm(t).then((t=>{t.name=this.state.deviceName,t.token=e,this.wanRespond(t)})).catch((e=>{cu(e,"Failed to register device"),this.setState({...this.state,disabled:!1})}))},this.wanRespond=e=>{let t=(new ju).loading();ql.post("/device/"+fm.userId+"/webauthn/register").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,n)=>{t.done(),this.setState({...this.state,disabled:!1,deviceName:""}),e?cu(n,"Failed to register device"):au("Successfully registered device")}))},this.addDevice=()=>{if("smart_card"===this.state.deviceType)this.setState({...this.state,disabled:!0}),bm({id:null,user:this.props.userId,name:this.state.deviceName,type:this.state.deviceType,mode:"ssh",ssh_public_key:this.state.devicePubKey}).then((()=>{this.setState({...this.state,disabled:!1,deviceName:"",devicePubKey:"",devicePhoneNumber:""}),au("Successfully registered device")})).catch((()=>{this.setState({...this.state,disabled:!1})}));else if("phone_call"===this.state.deviceType||"phone_message"===this.state.deviceType){this.setState({...this.state,disabled:!0});let e=this.state.deviceType.split("_"),t=e[0],n=e[1];bm({id:null,user:this.props.userId,name:this.state.deviceName,type:n,mode:t,number:this.state.devicePhoneNumber}).then((()=>{this.setState({...this.state,disabled:!1,deviceName:"",devicePubKey:"",devicePhoneNumber:""}),au("Successfully registered device")})).catch((()=>{this.setState({...this.state,disabled:!1})}))}else this.wanRegister()},this.state={devices:fm.devices,deviceName:"",deviceType:"",devicePubKey:"",devicePhoneNumber:"",showEnded:!1,disabled:!1}}componentDidMount(){fm.addChangeListener(this.onChange),this.props.userId&&vm(this.props.userId)}componentWillUnmount(){fm.removeChangeListener(this.onChange)}render(){if(!this.props.userId)return qr.createElement("div",null);let e=[];return this.state.devices.forEach((t=>{e.push(qr.createElement(Em,{key:t.id,device:t}))})),qr.createElement("div",null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:zm.header},qr.createElement("h2",{style:zm.heading},"User Devices"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:zm.groupBox,className:"layout horizontal"},qr.createElement("div",{className:"bp3-control-group",style:zm.group},qr.createElement("div",{className:"bp3-select"},qr.createElement("select",{value:this.state.deviceType,onChange:e=>{this.setState({...this.state,deviceType:e.target.value,devicePubKey:""})}},qr.createElement("option",{value:"webauthn"},"WebAuthn"),qr.createElement("option",{value:"smart_card"},"Smart Card"),qr.createElement("option",{value:"phone_call"},"Phone (Call)"),qr.createElement("option",{value:"phone_message"},"Phone (SMS)"))),qr.createElement("div",{className:"layout horizontal",style:zm.inputBox},qr.createElement("input",{className:"bp3-input",type:"text",placeholder:"Device name",value:this.state.deviceName,onChange:e=>{this.setState({...this.state,deviceName:e.target.value})},onKeyPress:e=>{"smart_card"!==this.state.deviceType&&"Enter"===e.key&&this.addDevice()}}),qr.createElement("input",{className:"bp3-input",hidden:"smart_card"!==this.state.deviceType,type:"text",placeholder:"Device SSH public key",value:this.state.devicePubKey,onChange:e=>{this.setState({...this.state,devicePubKey:e.target.value})},onKeyPress:e=>{"Enter"===e.key&&this.addDevice()}}),qr.createElement("input",{className:"bp3-input",hidden:"phone_call"!==this.state.deviceType&&"phone_message"!==this.state.deviceType,type:"text",placeholder:"Device phone number",value:this.state.devicePhoneNumber,onChange:e=>{this.setState({...this.state,devicePhoneNumber:e.target.value})},onKeyPress:e=>{"Enter"===e.key&&this.addDevice()}})),qr.createElement("div",null,qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",disabled:this.state.disabled,onClick:this.addDevice},"Add Device")))))),qr.createElement("div",null,e),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-id-number",title:"No devices"}))}}const Hm={card:{position:"relative",padding:"10px",marginBottom:"5px"},info:{marginBottom:"-5px"},group:{flex:1,minWidth:"290px"}};class Dm extends qr.Component{render(){let e=this.props.audit,t=e.agent||{},n=[];for(let t in e.fields)e.fields.hasOwnProperty(t)&&n.push(t+": "+e.fields[t]);return qr.createElement("div",{className:"bp3-card",style:Hm.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Hm.group},qr.createElement(Xp,{style:Hm.info,fields:[{label:"ID",value:e.id||"None"},{label:"Timestamp",value:$u(e.timestamp)||"Unknown"},{label:"Fields",value:n}]})),qr.createElement("div",{style:Hm.group},qr.createElement(Xp,{style:Hm.info,fields:[{label:"Type",value:e.type},{label:"Operating System",value:Xu[t.operating_system]||"Unknown"},{label:"Browser",value:qu[t.browser]||"Unknown"},{label:"ISP",value:t.isp||"Unknown"}]})),qr.createElement("div",{style:Hm.group},qr.createElement(Xp,{style:Hm.info,fields:[{label:"Location",value:[Wp(t),Gp(t),Bp(t)]},{label:"Coordinates",value:Up(t)},{label:"IP Address",value:t.ip||"Unknown"}]}))))}}const Pm={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class Om extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:vp.page,pageCount:vp.pageCount,pages:vp.pages,count:vp.count})},this.state={page:vp.page,pageCount:vp.pageCount,pages:vp.pages,count:vp.count}}componentDidMount(){vp.addChangeListener(this.onChange)}componentWillUnmount(){vp.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{Mp(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{Mp(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:Pm.button,disabled:0===e,type:"button",onClick:()=>{Mp(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:Pm.button,disabled:e===t-1,type:"button",onClick:()=>{Mp(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{Mp(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const Ym={header:{marginTop:"5px"},heading:{margin:"19px 0 0 0"},button:{margin:"10px 0 0 0"}};class Rm extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,audits:vp.audits})},this.state={audits:vp.audits,disabled:!1}}componentDidMount(){vp.addChangeListener(this.onChange),this.props.userId&&bp(this.props.userId)}componentWillUnmount(){vp.removeChangeListener(this.onChange)}render(){if(!this.props.userId)return qr.createElement("div",null);let e=[];return this.state.audits.forEach((t=>{e.push(qr.createElement(Dm,{key:t.id,audit:t}))})),qr.createElement("div",null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Ym.header},qr.createElement("h2",{style:Ym.heading},"User Audit Events"),qr.createElement("div",{className:"flex"}))),qr.createElement("div",null,e),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-search-template",title:"No audit events"}),qr.createElement(Om,null))}}const Vm="sshcertificate.sync",Nm="sshcertificate.traverse";const $m=new class extends Mu{constructor(){super(...arguments),this._sshcertificates=Object.freeze([]),this._token=bu.register(this._callback.bind(this))}get userId(){return this._userId}get sshcertificates(){return this._sshcertificates}get sshcertificatesM(){let e=[];return this._sshcertificates.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||10}get pages(){return Math.ceil(this.count/this.pageCount)}get count(){return this._count||0}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_sync(e,t,n){this._userId=e;for(let e=0;e{ql.get("/sshcertificate/"+e).query({page:$m.page,page_count:$m.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((r,a)=>{if(n.done(),a&&401===a.status)return window.location.href="/login",void i();if(t===Im){if(r)return cu(a,"Failed to load SSH certificates"),void s(r);bu.dispatch({type:Vm,data:{userId:e,certificates:a.body.certificates,count:a.body.count}}),i()}else i()}))}))}function jm(){return Fm($m.userId)}function Bm(e){return bu.dispatch({type:Nm,data:{page:e}}),jm()}Hu.register((e=>{if("sshcertificate.change"===e.type)jm()}));const Wm={card:{position:"relative",padding:"10px",marginBottom:"5px"},info:{marginBottom:"-5px"},group:{flex:1,minWidth:"290px"}};class Gm extends qr.Component{render(){let e=this.props.sshcertificate,t=e.agent||{},n=[];for(let t of e.certificates_info)n.push(t.serial+": "+Fu(t.expires));return qr.createElement("div",{className:"bp3-card",style:Wm.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Wm.group},qr.createElement(Xp,{style:Wm.info,fields:[{label:"ID",value:e.id||"None"},{label:"Timestamp",value:$u(e.timestamp)||"Unknown"},{label:"Authority IDs",value:e.authority_ids}]})),qr.createElement("div",{style:Wm.group},qr.createElement(Xp,{style:Wm.info,fields:[{label:"ISP",value:t.isp||"Unknown"},{label:"Certificate Expirations",value:n}]})),qr.createElement("div",{style:Wm.group},qr.createElement(Xp,{style:Wm.info,fields:[{label:"Location",value:[Wp(t),Gp(t),Bp(t)]},{label:"Coordinates",value:Up(t)},{label:"IP Address",value:t.ip||"Unknown"}]}))))}}const Um={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class Km extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:$m.page,pageCount:$m.pageCount,pages:$m.pages,count:$m.count})},this.state={page:$m.page,pageCount:$m.pageCount,pages:$m.pages,count:$m.count}}componentDidMount(){$m.addChangeListener(this.onChange)}componentWillUnmount(){$m.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{Bm(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{Bm(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:Um.button,disabled:0===e,type:"button",onClick:()=>{Bm(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:Um.button,disabled:e===t-1,type:"button",onClick:()=>{Bm(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{Bm(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const Xm={header:{marginTop:"5px"},heading:{margin:"19px 0 0 0"},button:{margin:"15px 0 0 0"}};class qm extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,sshcertificates:$m.sshcertificates})},this.state={sshcertificates:$m.sshcertificates,disabled:!1}}componentDidMount(){$m.addChangeListener(this.onChange),this.props.userId&&Fm(this.props.userId)}componentWillUnmount(){$m.removeChangeListener(this.onChange)}render(){if(!this.props.userId)return qr.createElement("div",null);let e=[];return this.state.sshcertificates.forEach((t=>{e.push(qr.createElement(Gm,{key:t.id,sshcertificate:t}))})),qr.createElement("div",null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Xm.header},qr.createElement("h2",{style:Xm.heading},"User SSH Certificates"),qr.createElement("div",{className:"flex"}))),qr.createElement("div",null,e),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-endorsed",title:"No SSH certificates"}),qr.createElement(Km,null))}}const Jm={panel:{flex:1,minWidth:"250px",padding:"0 10px"}};class Qm extends qr.Component{render(){return qr.createElement("div",{className:this.props.className,style:Jm.panel,hidden:this.props.hidden},this.props.children)}}class Zm extends qr.Component{render(){return qr.createElement("div",{className:"layout horizontal wrap"},this.props.children)}}const ef={group:{marginBottom:"15px",width:"100%",maxWidth:"280px"},groupList:{marginTop:"5px",width:"100%",maxWidth:"280px"},groupTop:{width:"100%",maxWidth:"280px"},label:{width:"100%",maxWidth:"280px"},input:{width:"100%"},inputBox:{flex:"1"},buttonTop:{marginTop:"5px"}};class tf extends qr.Component{constructor(){super(...arguments),this.autoSelect=e=>{e.currentTarget.select()}}render(){let e="bp3-button";this.props.buttonClass&&(e+=" "+this.props.buttonClass);let t,n,i="";return this.props.labelTop?t=ef.buttonTop:i=this.props.label||"",n=this.props.buttonConfirm?qr.createElement(Zu,{className:e,style:t,progressClassName:"bp3-intent-danger",disabled:this.props.disabled||this.props.buttonDisabled,grouped:!0,onConfirm:this.props.onSubmit,label:i}):qr.createElement("button",{className:e,style:t,disabled:this.props.disabled||this.props.buttonDisabled,onClick:this.props.onSubmit},i),this.props.labelTop?qr.createElement("label",{className:"bp3-label",style:ef.label,hidden:this.props.hidden},this.props.label,qr.createElement(Mm,{title:this.props.label,content:this.props.help}),qr.createElement("div",{className:"bp3-control-group",style:ef.groupTop,hidden:this.props.hidden},qr.createElement("div",{style:ef.inputBox},qr.createElement("input",{className:"bp3-input",style:ef.input,type:this.props.type,disabled:this.props.disabled,readOnly:this.props.readOnly,autoCapitalize:"off",spellCheck:!1,placeholder:this.props.placeholder,value:this.props.value||"",onClick:this.props.autoSelect?this.autoSelect:null,onChange:e=>{this.props.onChange&&this.props.onChange(e.target.value)},onKeyPress:e=>{"Enter"===e.key&&this.props.onSubmit()}})),qr.createElement("div",null,n))):qr.createElement("div",{className:"bp3-control-group",style:this.props.listStyle?ef.groupList:ef.group,hidden:this.props.hidden},qr.createElement("div",{style:ef.inputBox},qr.createElement("input",{className:"bp3-input",style:ef.input,type:this.props.type,disabled:this.props.disabled,readOnly:this.props.readOnly,autoCapitalize:"off",spellCheck:!1,placeholder:this.props.placeholder||"",value:this.props.value||"",onChange:e=>{this.props.onChange&&this.props.onChange(e.target.value)},onKeyPress:e=>{"Enter"===e.key&&this.props.onSubmit()}})),qr.createElement("div",null,n))}}const nf={label:{display:"inline-block"}};class sf extends qr.Component{render(){return qr.createElement("div",{hidden:this.props.hidden},qr.createElement("label",{className:"bp3-label",style:nf.label},this.props.label,qr.createElement(Mm,{title:this.props.label,content:this.props.help}),qr.createElement("div",{className:"bp3-select"},qr.createElement("select",{disabled:this.props.disabled,value:this.props.value||"",onChange:e=>{this.props.onChange(e.target.value)}},this.props.children))))}}var rf=wa+"-datepicker",af=rf+"-caption",of=af+"-measure",lf=rf+"-day-wrapper",cf=rf+"-footer",hf=rf+"-month-select",df=rf+"-year-select",uf=rf+"-navbar",pf=rf+"-timepicker-wrapper",mf=wa+"-daterangepicker",ff=mf+"-shortcuts",gf=wa+"-datetimepicker",vf=wa+"-timepicker",yf=vf+"-arrow-button",bf=vf+"-arrow-row",_f=vf+"-divider-text",Mf=vf+"-hour",wf=vf+"-input",Sf=vf+"-input-row",Lf=vf+"-millisecond",kf=vf+"-minute",xf=vf+"-second",Cf=vf+"-ampm-select";function Tf(e,t){return Ef(e,t)&&e.getDate()===t.getDate()}function Ef(e,t){return null!=e&&null!=t&&e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}function zf(e,t){return null!=e&&null!=t&&e.getHours()===t.getHours()&&e.getMinutes()===t.getMinutes()&&e.getSeconds()===t.getSeconds()&&e.getMilliseconds()===t.getMilliseconds()}function Af(e){return new Date(e.getTime())}function Hf(e,t,n){if(void 0===n&&(n=!1),null==e)return!1;var i=Af(e),s=Af(t[0]),r=Af(t[1]);return i.setHours(0,0,0,0),s.setHours(0,0,0,0),r.setHours(0,0,0,0),s<=i&&i<=r&&(!n||!Tf(s,i)&&!Tf(i,r))}function Df(e,t){return(null==e[0]||Hf(e[0],t))&&(null==e[1]||Hf(e[1],t))}var Pf=function(e,t){return e.getTime()>=t.getTime()},Of=function(e,t){return e.getTime()<=t.getTime()};function Yf(e,t,n){var i=Nf(e),s=Nf(t),r=Nf(n),a=Pf(i,s),o=Of(i,r);return Of(r,s)?a||o:a&&o}function Rf(e,t,n){return zf(t,n)?n:Yf(e,t,n)?e:function(e,t){var n=Nf(e),i=Nf(t);return Pf(n,i)}(e,n)?n:t}function Vf(e,t){return null==e?null:null==t?new Date(e.getFullYear(),e.getMonth(),e.getDate(),0,0,0,0):new Date(e.getFullYear(),e.getMonth(),e.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds())}function Nf(e){return new Date(0,0,0,e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds())}function $f(e){if(e<0||e>23)throw new Error("hour must be between [0,23] inclusive: got "+e);return e>=12}function If(e){if(e<0||e>23)throw new Error("hour must be between [0,23] inclusive: got "+e);var t=e%12;return 0===t?12:t}var Ff=n(5727),jf="[Blueprint]",Bf=jf+" defaultValue must be within minDate and maxDate bounds.",Wf=jf+" initialMonth must be within minDate and maxDate bounds.",Gf=jf+" maxDate must be later than minDate.",Uf=jf+" value prop must be within minDate and maxDate bounds.";Bf.replace("DatePicker","DateRangePicker"),Wf.replace("DatePicker","DateRangePicker"),Gf.replace("DatePicker","DateRangePicker"),Uf.replace("DatePicker","DateRangePicker");function Kf(e,t){return e.lengthh&&g.push({value:u,disabled:!0}),this.displayedMonthText=l[d];var y=qr.createElement(Nc,{iconProps:{style:{right:this.state.monthRightOffset}},className:hf,key:"month",minimal:!0,onChange:this.handleMonthSelectChange,value:d,options:f}),b=qr.createElement(Nc,{className:df,key:"year",minimal:!0,onChange:this.handleYearSelectChange,value:u,options:g}),_=this.props.reverseMonthAndYearMenus?[b,y]:[y,b];return qr.createElement("div",{className:this.props.classNames.caption},qr.createElement("div",{className:af,ref:function(t){return e.containerElement=t}},_),qr.createElement(Vc,null))},t.prototype.componentDidMount=function(){var e=this;this.requestAnimationFrame((function(){return e.positionArrows()}))},t.prototype.componentDidUpdate=function(){this.positionArrows()},t.prototype.positionArrows=function(){var e=function(e,t,n){if(void 0===t&&(t=""),void 0===n&&(n=document.body),null==n)return 0;var i=document.createElement("span");i.classList.add(t),i.textContent=e,n.appendChild(i);var s=i.offsetWidth;return i.remove(),s}(this.displayedMonthText,of,this.containerElement),t=null==this.containerElement?0:this.containerElement.firstElementChild.clientWidth,n=Math.max(2,t-e-bc.SIZE_STANDARD-2);this.setState({monthRightOffset:n})},t.prototype.dateChangeHandler=function(e,t){var n=this;return function(i){var s,r,a=parseInt(i.target.value,10);if(!isNaN(a)){var o=Af(n.props.date);e(o,a),null===(r=(s=n.props).onDateChange)||void 0===r||r.call(s,o),null==t||t(a)}}},t=tc([gc.polyfill],t)}(dc);!function(e){e[e.JANUARY=0]="JANUARY",e[e.FEBRUARY=1]="FEBRUARY",e[e.MARCH=2]="MARCH",e[e.APRIL=3]="APRIL",e[e.MAY=4]="MAY",e[e.JUNE=5]="JUNE",e[e.JULY=6]="JULY",e[e.AUGUST=7]="AUGUST",e[e.SEPTEMBER=8]="SEPTEMBER",e[e.OCTOBER=9]="OCTOBER",e[e.NOVEMBER=10]="NOVEMBER",e[e.DECEMBER=11]="DECEMBER"}(Xf||(Xf={}));function Jf(){var e=new Date;return e.setFullYear(e.getFullYear()-20),e.setMonth(Xf.JANUARY,1),e}var Qf,Zf,eg=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.handleNextClick=function(){return t.props.onNextClick()},t.handlePreviousClick=function(){return t.props.onPreviousClick()},t}return Ql(t,e),t.prototype.render=function(){var e=this.props,t=e.classNames,n=e.month,i=e.maxDate,s=e.minDate;return qr.createElement("div",{className:lc()(uf,t.navBar)},this.props.hideLeftNavButton||qr.createElement(kc,{className:t.navButtonPrev,disabled:Ef(n,s),icon:"chevron-left",minimal:!0,onClick:this.handlePreviousClick}),this.props.hideRightNavButton||qr.createElement(kc,{className:t.navButtonNext,disabled:Ef(n,i),icon:"chevron-right",minimal:!0,onClick:this.handleNextClick}))},t}(qr.PureComponent),tg=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.getShorcutClickHandler=function(e,n){return function(){(0,t.props.onShortcutClick)(e,n)}},t.isShortcutInRange=function(e){var n=t.props;return Df(e,[n.minDate,n.maxDate])},t}return Ql(t,e),t.prototype.render=function(){var e,t,n,i,s,r,a,o,l,c,h,d,u,p=this,m=(!0===this.props.shortcuts?(e=this.props.allowSingleDayRange,t=void 0!==this.props.timePrecision,n=!0===this.props.useSingleDateShortcuts,i=new Date,r=(s=function(e){var t=Af(i);return e(t),t.setDate(t.getDate()+1),t})((function(){return null})),a=s((function(e){return e.setDate(e.getDate()-2)})),o=s((function(e){return e.setDate(e.getDate()-7)})),l=s((function(e){return e.setMonth(e.getMonth()-1)})),c=s((function(e){return e.setMonth(e.getMonth()-3)})),h=s((function(e){return e.setMonth(e.getMonth()-6)})),d=s((function(e){return e.setFullYear(e.getFullYear()-1)})),u=s((function(e){return e.setFullYear(e.getFullYear()-2)})),nc(e||n?[ng("Today",[i,t?r:i]),ng("Yesterday",[a,t?i:a])]:[],[ng(n?"1 week ago":"Past week",[o,i]),ng(n?"1 month ago":"Past month",[l,i]),ng(n?"3 months ago":"Past 3 months",[c,i])],n?[]:[ng("Past 6 months",[h,i])],[ng(n?"1 year ago":"Past year",[d,i])],n?[]:[ng("Past 2 years",[u,i])])):this.props.shortcuts).map((function(e,t){return qr.createElement(Qd,{active:p.props.selectedShortcutIndex===t,className:bo,disabled:!p.isShortcutInRange(e.dateRange),key:t,onClick:p.getShorcutClickHandler(e,t),text:e.label})}));return qr.createElement(tu,{className:ff,tabIndex:0},m)},t.defaultProps={selectedShortcutIndex:-1},t}(qr.PureComponent);function ng(e,t){return{dateRange:t,label:e}}function ig(e,t,n,i){switch(e){case Zf.HOUR_24:n.setHours(t);break;case Zf.HOUR_12:n.setHours(function(e,t){if(e<1||e>12)throw new Error("hour must be between [1,12] inclusive: got "+e);var n=12===e?0:e;return t?n+12:n}(t,i));break;case Zf.MINUTE:n.setMinutes(t);break;case Zf.SECOND:n.setSeconds(t);break;case Zf.MS:n.setMilliseconds(t);break;default:throw Error("Invalid TimeUnit")}return n}function sg(e,t){return null!=t&&!isNaN(t)&&ag(e)<=t&&t<=rg(e)}function rg(e){return fg[e].max}function ag(e){return fg[e].min}!function(e){e.HOUR_24="hour24",e.HOUR_12="hour12",e.MINUTE="minute",e.SECOND="second",e.MS="ms"}(Zf||(Zf={}));var og=0,lg=0,cg=0,hg=0,dg=23,ug=59,pg=59,mg=999,fg=((Qf={})[Zf.HOUR_24]={className:Mf,max:dg,min:og},Qf[Zf.HOUR_12]={className:Mf,max:12,min:1},Qf[Zf.MINUTE]={className:kf,max:ug,min:lg},Qf[Zf.SECOND]={className:xf,max:pg,min:cg},Qf[Zf.MS]={className:Lf,max:mg,min:hg},Qf),gg="millisecond",vg="minute",yg="second",bg=function(e){function t(t,n){var i=e.call(this,t,n)||this;i.getInputChangeHandler=function(e){return function(t){var n=Mg(t);switch(e){case Zf.HOUR_12:case Zf.HOUR_24:i.setState({hourText:n});break;case Zf.MINUTE:i.setState({minuteText:n});break;case Zf.SECOND:i.setState({secondText:n});break;case Zf.MS:i.setState({millisecondText:n})}}},i.getInputBlurHandler=function(e){return function(t){var n,s,r=Mg(t);i.updateTime(parseInt(r,10),e),null===(s=(n=i.props).onBlur)||void 0===s||s.call(n,t,e)}},i.getInputFocusHandler=function(e){return function(t){var n,s;i.props.selectAllOnFocus&&t.currentTarget.select(),null===(s=(n=i.props).onFocus)||void 0===s||s.call(n,t,e)}},i.getInputKeyDownHandler=function(e){return function(t){var n,s,r;!function(e,t,n){void 0===n&&(n=!0);for(var i=0,s=Object.keys(t);i23)throw new Error("hour must be between [0,23] inclusive: got "+e);return t?e%12+12:e%12}(i.state.value.getHours(),t);i.setState({isPm:t},(function(){return i.updateTime(n,Zf.HOUR_24)}))}},i.incrementTime=function(e){return i.shiftTime(e,1)},i.decrementTime=function(e){return i.shiftTime(e,-1)};var s=t.minTime;return null!=t.value?s=t.value:null!=t.defaultValue&&(s=t.defaultValue),i.state=i.getFullStateFromValue(s,t.useAmPm),i}return Ql(t,e),t.prototype.render=function(){var e,t=this.props.precision===gg,n=t||this.props.precision===yg,i=this.props.useAmPm?Zf.HOUR_12:Zf.HOUR_24,s=lc()(vf,this.props.className,((e={})[Ca]=this.props.disabled,e));return qr.createElement("div",{className:s},qr.createElement("div",{className:bf},this.maybeRenderArrowButton(!0,i),this.maybeRenderArrowButton(!0,Zf.MINUTE),n&&this.maybeRenderArrowButton(!0,Zf.SECOND),t&&this.maybeRenderArrowButton(!0,Zf.MS)),qr.createElement("div",{className:Sf},this.renderInput(Mf,i,this.state.hourText),this.renderDivider(),this.renderInput(kf,Zf.MINUTE,this.state.minuteText),n&&this.renderDivider(),n&&this.renderInput(xf,Zf.SECOND,this.state.secondText),t&&this.renderDivider("."),t&&this.renderInput(Lf,Zf.MS,this.state.millisecondText)),this.maybeRenderAmPm(),qr.createElement("div",{className:bf},this.maybeRenderArrowButton(!1,i),this.maybeRenderArrowButton(!1,Zf.MINUTE),n&&this.maybeRenderArrowButton(!1,Zf.SECOND),t&&this.maybeRenderArrowButton(!1,Zf.MS)))},t.prototype.componentDidUpdate=function(e){var t=e.minTime!==this.props.minTime,n=e.maxTime!==this.props.maxTime,i=t||n,s=e.value!==this.props.value,r=t||n||i||s,a=this.state.value;i&&(a=Rf(this.state.value,this.props.minTime,this.props.maxTime)),null==this.props.value||zf(this.props.value,e.value)||(a=this.props.value),r&&this.setState(this.getFullStateFromValue(a,this.props.useAmPm))},t.prototype.maybeRenderArrowButton=function(e,t){var n=this;if(!this.props.showArrowButtons)return null;var i=lc()(yf,fg[t].className);return qr.createElement("span",{tabIndex:-1,className:i,onClick:function(){return(e?n.incrementTime:n.decrementTime)(t)}},qr.createElement(bc,{icon:e?"chevron-up":"chevron-down"}))},t.prototype.renderDivider=function(e){return void 0===e&&(e=":"),qr.createElement("span",{className:_f},e)},t.prototype.renderInput=function(e,t,n){var i,s=sg(t,parseInt(n,10)),r=t===Zf.HOUR_12||t===Zf.HOUR_24;return qr.createElement("input",{className:lc()(wf,(i={},i[Ro(ca)]=!s,i),e),onBlur:this.getInputBlurHandler(t),onChange:this.getInputChangeHandler(t),onFocus:this.getInputFocusHandler(t),onKeyDown:this.getInputKeyDownHandler(t),onKeyUp:this.getInputKeyUpHandler(t),value:n,disabled:this.props.disabled,autoFocus:r&&this.props.autoFocus})},t.prototype.maybeRenderAmPm=function(){return this.props.useAmPm?qr.createElement(Nc,{className:Cf,disabled:this.props.disabled,onChange:this.handleAmPmChange,value:this.state.isPm?"pm":"am"},qr.createElement("option",{value:"am"},"AM"),qr.createElement("option",{value:"pm"},"PM")):null},t.prototype.getFullStateFromValue=function(e,t){var n=Rf(e,this.props.minTime,this.props.maxTime),i=t?Zf.HOUR_12:Zf.HOUR_24;return{hourText:_g(n.getHours(),i),minuteText:_g(n.getMinutes(),Zf.MINUTE),secondText:_g(n.getSeconds(),Zf.SECOND),millisecondText:_g(n.getMilliseconds(),Zf.MS),value:n,isPm:$f(n.getHours())}},t.prototype.shiftTime=function(e,t){if(!this.props.disabled){var n=function(e,t){switch(e){case Zf.HOUR_24:return t.getHours();case Zf.HOUR_12:return If(t.getHours());case Zf.MINUTE:return t.getMinutes();case Zf.SECOND:return t.getSeconds();case Zf.MS:return t.getMilliseconds();default:throw Error("Invalid TimeUnit")}}(e,this.state.value)+t;this.updateTime(function(e,t){var n=rg(e),i=ag(e);return t>n?i:ts?s:l},t.prototype.updateValue=function(e,t,n){var i,s;void 0===n&&(n=!1),n||null===(s=(i=this.props).onChange)||void 0===s||s.call(i,e,t),void 0===this.props.value&&this.setState({value:e})},t.defaultProps={canClearSelection:!0,clearButtonText:"Clear",dayPickerProps:{},highlightCurrentDay:!1,maxDate:(i=new Date,i.setFullYear(i.getFullYear()),i.setMonth(Xf.DECEMBER,31),i),minDate:Jf(),reverseMonthAndYearMenus:!1,shortcuts:!1,showActionsBar:!1,timePickerProps:{},todayButtonText:"Today"},t.displayName="Blueprint3.DatePicker",t=n=tc([gc.polyfill],t)}(dc);var Sg=function(e){function t(t,n){var i=e.call(this,t,n)||this;i.handleDateChange=function(e,t){var n,s;void 0===i.props.value&&i.setState({dateValue:e});var r=Vf(e,i.state.timeValue);null===(s=(n=i.props).onChange)||void 0===s||s.call(n,r,t)},i.handleTimeChange=function(e){var t,n;void 0===i.props.value&&i.setState({timeValue:e});var s=Vf(i.state.dateValue,e);null===(n=(t=i.props).onChange)||void 0===n||n.call(t,s,!0)};var s=void 0!==i.props.value?i.props.value:i.props.defaultValue;return i.state={dateValue:s,timeValue:s},i}return Ql(t,e),t.prototype.render=function(){var e=Vf(this.state.dateValue,this.state.timeValue);return qr.createElement("div",{className:lc()(gf,this.props.className)},qr.createElement(wg,Zl({},this.props.datePickerProps,{canClearSelection:this.props.canClearSelection,onChange:this.handleDateChange,value:e})),qr.createElement(bg,Zl({},this.props.timePickerProps,{onChange:this.handleTimeChange,value:e})))},t.prototype.componentDidUpdate=function(e){this.props.value!==e.value&&(null!=this.props.value?this.setState({dateValue:this.props.value,timeValue:this.props.value}):this.setState({dateValue:null}))},t.defaultProps={canClearSelection:!0,defaultValue:new Date},t.displayName="Blueprint3.DateTimePicker",t=tc([gc.polyfill],t)}(dc);const Lg=new Date(2018,0,1),kg=new Date((new Date).getFullYear()+3,0,0),xg={group:{display:"inline-block"},label:{marginBottom:"5px"}};class Cg extends qr.Component{render(){let e={},t=new Date(this.props.value);return(!this.props.value||this.props.value.includes("0000-12-31")||this.props.value.includes("0001-01-01"))&&(t=null),t&&!this.props.disabled||(e.opacity=.5),qr.createElement("div",{hidden:this.props.hidden},qr.createElement("div",{style:xg.group},qr.createElement("label",{className:"bp3-label",style:xg.label},this.props.label,qr.createElement(Mm,{title:this.props.label,content:this.props.help})),qr.createElement("div",{style:e},qr.createElement(Sg,{value:this.props.disabled?null:t,timePickerProps:{showArrowButtons:!0},datePickerProps:{showActionsBar:!0,minDate:Lg,maxDate:kg},onChange:e=>{this.props.disabled||(e?this.props.onChange(e.toJSON()):this.props.onChange(null))}}))))}}const Tg={message:{marginTop:"6px"},box:{marginTop:"15px"},button:{marginLeft:"10px"},buttons:{flexShrink:0}};class Eg extends qr.Component{render(){return qr.createElement("div",{className:"layout horizontal",style:Tg.box},qr.createElement("div",{className:"flex"}),qr.createElement("div",{className:"layout horizontal"},qr.createElement("span",{style:Tg.message,hidden:!this.props.message},this.props.message),qr.createElement("div",{style:Tg.buttons},qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Tg.button,type:"button",disabled:!this.props.changed||this.props.disabled,onClick:this.props.onSave},"New"))))}}const zg={header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"10px 0 0 0"},role:{margin:"9px 5px 0 5px",height:"20px"}};class Ag extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,user:lp.userM})},this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/user/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save user"),void i(e)):(bu.dispatch({type:rp,data:{user:s.body}}),void n()))))}))}(this.state.user).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1})})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onNew=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/user").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create user"),void i(e)):void n())))}))}(this.state.user).then((()=>{this.setState({...this.state,message:"User has been created",changed:!1,disabled:!1,locked:!0})})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.set=(e,t)=>{let n={...this.state.user};n[e]=t,this.setState({...this.state,changed:!0,message:"",user:n})},this.onAddRole=()=>{let e=[...this.state.user.roles];this.state.addRole&&(-1===e.indexOf(this.state.addRole)&&e.push(this.state.addRole),e.sort(),this.setState({...this.state,changed:!0,message:"",addRole:"",user:{...this.state.user,roles:e}}))},this.onRemoveRole=e=>{let t=[...this.state.user.roles],n=t.indexOf(e);-1!==n&&(t.splice(n,1),this.setState({...this.state,changed:!0,message:"",addRole:"",user:{...this.state.user,roles:t}}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),mp([this.props.userId]).then((()=>{this.setState({...this.state,message:"User has been deleted",changed:!1,disabled:!1,locked:!0})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={changed:!1,disabled:!1,locked:!1,message:"",addRole:"",user:lp.userM}}componentDidMount(){lp.addChangeListener(this.onChange),hp(this.props.userId)}componentWillUnmount(){lp.removeChangeListener(this.onChange),bu.dispatch({type:ap})}render(){let e=this.props.userId,t=this.state.user;if(!t)return qr.createElement("div",null);let n=[];for(let e of t.roles)n.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:zg.role,key:e},e,qr.createElement("button",{className:"bp3-tag-remove",disabled:this.state.locked,onMouseUp:()=>{this.onRemoveRole(e)}})));return qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:zg.header},qr.createElement("h2",{style:zg.heading},e?"User Info":"New User"),qr.createElement("div",{className:"flex"}),qr.createElement("div",null,qr.createElement(Zu,{className:"bp3-minimal bp3-intent-danger bp3-icon-trash",style:zg.button,safe:!0,progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete User",confirmMsg:"Permanently delete this user",confirmInput:!0,items:[t.username],disabled:this.state.disabled,onConfirm:this.onDelete})))),qr.createElement(Zm,null,qr.createElement(Qm,{className:"layout vertical"},qr.createElement(Cm,{disabled:this.state.locked,label:"Username",help:"Username, if using single sign-on username must match",type:"text",placeholder:"Enter username",value:t.username,onChange:e=>{this.set("username",e)}}),qr.createElement(Cm,{hidden:"local"!==t.type,disabled:this.state.locked,label:"Password",help:"Password, leave blank to keep current password",type:"password",placeholder:"Change password",value:t.password,onChange:e=>{this.set("password",e)}}),qr.createElement(Cm,{hidden:"api"!==t.type,disabled:this.state.locked,readOnly:!0,autoSelect:!0,label:"Token",help:"API token",type:"text",placeholder:"Save to generate token",value:t.token}),qr.createElement(Cm,{hidden:"api"!==t.type||!t.token||!t.secret,disabled:this.state.locked,readOnly:!0,autoSelect:!0,label:"Secret",help:"API secret, will only be shown once",type:"text",placeholder:"",value:t.secret}),qr.createElement(Sm,{hidden:"api"!==t.type||!t.token||!!t.secret,label:"Generate new token and secret",help:"Enable to generate a new token and secret on save. Secret can only be shown by generating new credentials.",disabled:this.state.locked,checked:t.generate_secret,onToggle:()=>{this.set("generate_secret",!t.generate_secret)}}),qr.createElement(sf,{disabled:this.state.locked,label:"Type",help:"A local user is a user that is created on the Pritunl Zero database that has a username and password. The other user types can be used to create users for single sign-on services. Generally single sign-on users will be created automatically when the user authenticates for the first time. It can sometimes be desired to manaully create a single sign-on user to provide roles in advanced of the first login.",value:t.type,onChange:e=>{this.set("type",e)}},qr.createElement("option",{value:"local"},"Local"),qr.createElement("option",{value:"authzero"},"Auth0"),qr.createElement("option",{value:"azure"},"Azure"),qr.createElement("option",{value:"google"},"Google"),qr.createElement("option",{value:"onelogin"},"OneLogin"),qr.createElement("option",{value:"okta"},"Okta"),qr.createElement("option",{value:"jumpcloud"},"JumpCloud"),qr.createElement("option",{value:"api"},"API")),qr.createElement("label",{className:"bp3-label"},"Roles",qr.createElement(Mm,{title:"Roles",content:"User roles will be used to match with service roles. A user must have a matching role to access a service."}),qr.createElement("div",null,n)),qr.createElement(tf,{disabled:this.state.locked,buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add role",value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement(Sm,{label:"Administrator",help:"Enable to give user administrator access to the management console",disabled:this.state.locked,checked:"super"===t.administrator,onToggle:()=>{"super"===this.state.user.administrator?this.set("administrator",""):this.set("administrator","super")}}),qr.createElement(Sm,{label:"Disabled",help:"Disables the user ending all active sessions and prevents new authentications",disabled:this.state.locked,checked:t.disabled,onToggle:()=>{this.set("disabled",!this.state.user.disabled)}})),qr.createElement(Qm,null,qr.createElement(Xp,{fields:[{label:"ID",value:t.id||"None"},{label:"Last Active",value:$u(t.last_active)||"Inactive"}]}),qr.createElement(Cg,{label:"Active Until",help:"Set this to schedule the user to be disabled at the set date and time. This is useful to give a user temporary access to a service.",value:t.active_until,disabled:t.disabled||this.state.locked,onChange:e=>{this.set("active_until",e)}}))),e?qr.createElement(km,{message:this.state.message,changed:this.state.changed,disabled:this.state.disabled||this.state.locked,onCancel:()=>{this.setState({...this.state,changed:!1,message:"Your changes have been discarded",addRole:"",user:lp.userM})},onSave:this.onSave}):qr.createElement(Eg,{message:this.state.message,changed:this.state.changed,disabled:this.state.disabled||this.state.locked,onSave:this.onNew}),this.state.locked?null:qr.createElement(Zp,{userId:e}),this.state.locked?null:qr.createElement(Am,{userId:e}),this.state.locked?null:qr.createElement(qm,{userId:e}),this.state.locked?null:qr.createElement(Rm,{userId:e}))}}const Hg="node.sync";const Dg=new class extends Mu{constructor(){super(...arguments),this._nodes=Object.freeze([]),this._map={},this._token=bu.register(this._callback.bind(this))}get nodes(){return this._nodes}get nodesM(){let e=[];return this._nodes.forEach((t=>{e.push({...t})})),e}node(e){let t=this._map[e];return void 0===t?null:this._nodes[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_sync(e){this._map={};for(let t=0;t{e.push({...t})})),e}get servicesName(){return this._services_name}get servicesNameM(){let e=[];return this._services_name.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||20}get pages(){return Math.ceil(this.count/this.pageCount)}get filter(){return this._filter}get count(){return this._count||0}service(e){let t=this._map[e];return void 0===t?null:this._services[t]}serviceName(e){let t=this._map_name[e];return void 0===t?null:this._services_name[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_filterCallback(e){(null!==this._filter&&null===e||this._filter==={}&&null!==e||e&&this._filter&&e.name!==this._filter.name)&&this._traverse(0),this._filter=e,this.emitChange()}_sync(e,t){this._map={};for(let t=0;t{e.push({...t})})),e}authority(e){let t=this._map[e];return void 0===t?null:this._authorities[t]}authoritySecret(e){return this._secrets[e]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_sync(e){this._map={};for(let t=0;t{e.push({...t})})),e}certificate(e){let t=this._map[e];return void 0===t?null:this._certificates[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_sync(e){this._map={};for(let t=0;t{ql.get("/node").set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===Bg){if(s)return cu(r,"Failed to load nodes"),void i(s);bu.dispatch({type:Hg,data:{nodes:r.body}}),n()}else n()}))}))}function qg(){let e=Du();Wg=e;let t=(new ju).loading();return new Promise(((n,i)=>{ql.get("/service").query({...Vg.filter,page:Vg.page,page_count:Vg.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===Wg){if(s)return cu(r,"Failed to load services"),void i(s);bu.dispatch({type:Pg,data:{services:r.body.services,count:r.body.count}}),n()}else n()}))}))}function Jg(e){return bu.dispatch({type:Yg,data:{page:e}}),qg()}function Qg(e){return bu.dispatch({type:Rg,data:{filter:e}}),qg()}function Zg(){let e=Du();Gg=e;let t=(new ju).loading();return new Promise(((n,i)=>{ql.get("/service").query({service_names:"true"}).set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===Gg){if(s)return cu(r,"Failed to load service names"),void i(s);bu.dispatch({type:Og,data:{services:r.body}}),n()}else n()}))}))}function ev(){let e=Du();Ug=e;let t=(new ju).loading();return new Promise(((n,i)=>{ql.get("/authority").set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===Ug){if(s)return cu(r,"Failed to load authorities"),void i(s);bu.dispatch({type:Ng,data:{authorities:r.body}}),n()}else n()}))}))}function tv(e,t){let n=(new ju).loading();return new Promise(((i,s)=>{ql.delete("/authority/"+e+"/token/"+t).set("Csrf-Token",hu).end(((e,t)=>(n.done(),t&&401===t.status?(window.location.href="/login",void i()):e?(cu(t,"Failed to delete authority token"),void s(e)):void i())))}))}function nv(){let e=Du();Kg=e;let t=(new ju).loading();return new Promise(((n,i)=>{ql.get("/certificate").set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===Kg){if(s)return cu(r,"Failed to load certificates"),void i(s);bu.dispatch({type:Fg,data:{certificates:r.body}}),n()}else n()}))}))}Hu.register((e=>{if("node.change"===e.type)Xg()})),Hu.register((e=>{if("service.change"===e.type)qg()})),Hu.register((e=>{if("authority.change"===e.type)ev()})),Hu.register((e=>{if("certificate.change"===e.type)nv()}));const iv={switchLabel:{display:"inline-block",marginBottom:0},inputLabel:{width:"100%",maxWidth:"280px"},input:{width:"100%"}};class sv extends qr.Component{render(){return qr.createElement("div",{hidden:this.props.hidden},qr.createElement("label",{className:"bp3-control bp3-switch",style:iv.switchLabel},qr.createElement("input",{type:"checkbox",checked:!!this.props.value||this.props.checked,onChange:()=>{this.props.value||this.props.checked?this.props.onChange(!1,null):this.props.onChange(!0,this.props.defaultValue)}}),qr.createElement("span",{className:"bp3-control-indicator"}),this.props.label),qr.createElement(Mm,{title:this.props.label,content:this.props.help}),qr.createElement("label",{className:"bp3-label",style:iv.inputLabel},qr.createElement("input",{className:"bp3-input",style:iv.input,hidden:!this.props.value&&!this.props.checked,type:this.props.type,autoCapitalize:"off",spellCheck:!1,placeholder:this.props.placeholder,value:this.props.value||"",onChange:e=>{this.props.onChange(!0,e.target.value)}})))}}const rv={group:{marginBottom:"15px",width:"100%",maxWidth:"280px"},select:{width:"100%",borderTopLeftRadius:"3px",borderBottomLeftRadius:"3px"},selectInner:{width:"100%"},selectBox:{flex:"1"}};class av extends qr.Component{render(){let e="bp3-button";return this.props.buttonClass&&(e+=" "+this.props.buttonClass),qr.createElement("div",{className:"bp3-control-group",style:rv.group,hidden:this.props.hidden},qr.createElement("div",{style:rv.selectBox},qr.createElement("div",{className:"bp3-select",style:rv.select},qr.createElement("select",{style:rv.selectInner,disabled:this.props.disabled,value:this.props.value||"",onChange:e=>{this.props.onChange(e.target.value)}},this.props.children))),qr.createElement("button",{className:e,disabled:this.props.disabled,onClick:this.props.onSubmit},this.props.label))}}const ov={card:{position:"relative",padding:"10px 10px 0 10px",marginBottom:"5px"},remove:{position:"absolute",top:"5px",right:"5px"},item:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px"},save:{paddingBottom:"10px"},label:{width:"100%",maxWidth:"280px"},inputGroup:{width:"100%"},protocol:{minWidth:"90px",flex:"0 1 auto"},port:{minWidth:"120px",flex:"1"}};class lv extends qr.Component{constructor(e,t){super(e,t),this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/node/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save node"),void i(e)):void n())))}))}(this.state.node).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,node:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/node/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete nodes"),void i(e)):void n())))}))}(this.props.node.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddService=()=>{let e;if(!this.state.addService&&!this.props.services.length)return;let t=this.state.addService||this.props.services[0].id;e=this.state.changed?{...this.state.node}:{...this.props.node};let n=[...e.services||[]];-1===n.indexOf(t)&&n.push(t),n.sort(),e.services=n,this.setState({...this.state,changed:!0,node:e})},this.onRemoveService=e=>{let t;t=this.state.changed?{...this.state.node}:{...this.props.node};let n=[...t.services||[]],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.services=n,this.setState({...this.state,changed:!0,node:t}))},this.onAddAuthority=()=>{let e;if(!this.state.addAuthority&&!this.props.authorities.length)return;let t=this.state.addAuthority;if(!t)for(let e of this.props.authorities)if(e.proxy_hosting){t=e.id;break}e=this.state.changed?{...this.state.node}:{...this.props.node};let n=[...e.authorities||[]];-1===n.indexOf(t)&&n.push(t),n.sort(),e.authorities=n,this.setState({...this.state,changed:!0,node:e})},this.onRemoveAuthority=e=>{let t;t=this.state.changed?{...this.state.node}:{...this.props.node};let n=[...t.authorities||[]],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.authorities=n,this.setState({...this.state,changed:!0,node:t}))},this.onAddCert=()=>{let e;if(!this.state.addCert&&!this.props.certificates.length)return;let t=this.state.addCert||this.props.certificates[0].id;e=this.state.changed?{...this.state.node}:{...this.props.node};let n=[...e.certificates||[]];-1===n.indexOf(t)&&n.push(t),n.sort(),e.certificates=n,this.setState({...this.state,changed:!0,node:e})},this.onRemoveCert=e=>{let t;t=this.state.changed?{...this.state.node}:{...this.props.node};let n=[...t.certificates||[]],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.certificates=n,this.setState({...this.state,changed:!0,node:t}))},this.state={disabled:!1,changed:!1,message:"",node:null,addService:null,addAuthority:null,addCert:null,forwardedChecked:!1,forwardedProtoChecked:!1}}set(e,t){let n;n=this.state.changed?{...this.state.node}:{...this.props.node},n[e]=t,this.setState({...this.state,changed:!0,node:n})}toggleType(e){let t=((this.state.node||this.props.node).type||"").split("_"),n=t.indexOf(e);-1===n?t.push(e):t.splice(n,1),t=t.filter((e=>!!e)),t.sort();let i=t.join("_");""===i&&(i="management"),this.set("type",i)}render(){let e=this.state.node||this.props.node,t=0!==e.requests_min||0!==e.memory||0!==e.load1||0!==e.load5||0!==e.load15,n=[];for(let t of e.services||[]){let e=Vg.serviceName(t);e&&n.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:ov.item,key:e.id},e.name,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveService(e.id)}})))}let i=[];if(this.props.services.length)for(let e of this.props.services)i.push(qr.createElement("option",{key:e.id,value:e.id},e.name));else i.push(qr.createElement("option",{key:"null",value:""},"None"));let s=[];for(let t of e.authorities||[]){let e=Ig.authority(t);e&&e.proxy_hosting&&s.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:ov.item,key:e.id},e.name,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveAuthority(e.id)}})))}let r=[];if(this.props.authorities.length)for(let e of this.props.authorities)e.proxy_hosting&&r.push(qr.createElement("option",{key:e.id,value:e.id},e.name));r.length||r.push(qr.createElement("option",{key:"null",value:""},"None"));let a=[];for(let t of e.certificates||[]){let e=jg.certificate(t);e&&a.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:ov.item,key:e.id},e.name,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveCert(e.id)}})))}let o=!1,l=[];if(this.props.certificates.length)for(let e of this.props.certificates)o=!0,l.push(qr.createElement("option",{key:e.id,value:e.id},e.name));return o||(l=[qr.createElement("option",{key:"null",value:""},"No Certificates")]),qr.createElement("div",{className:"bp3-card",style:ov.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:ov.group},qr.createElement("div",{style:ov.remove},qr.createElement(Zu,{className:"bp3-minimal bp3-intent-danger bp3-icon-trash",safe:!0,progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Node",confirmMsg:"Permanently delete this node",confirmInput:!0,items:[e.name],disabled:t||this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{label:"Name",help:"Name of node",type:"text",placeholder:"Enter name",value:e.name,disabled:this.state.disabled,onChange:e=>{this.set("name",e)}}),qr.createElement(Sm,{disabled:this.state.disabled,label:"Management",help:"Provides access to the admin console.",checked:-1!==e.type.indexOf("management"),onToggle:()=>{this.toggleType("management")}}),qr.createElement(Sm,{disabled:this.state.disabled,label:"User",help:"Provides access to the user console for SSH certificates.",checked:-1!==e.type.indexOf("user"),onToggle:()=>{this.toggleType("user")}}),qr.createElement(Sm,{disabled:this.state.disabled,label:"Proxy",help:"Provides access to the services added to the node.",checked:-1!==e.type.indexOf("proxy"),onToggle:()=>{this.toggleType("proxy")}}),qr.createElement(Sm,{disabled:this.state.disabled,label:"Bastion",help:"Host bastion servers on this node.",checked:-1!==e.type.indexOf("bastion"),onToggle:()=>{this.toggleType("bastion")}}),qr.createElement(Cm,{hidden:-1===e.type.indexOf("_")||-1===e.type.indexOf("management"),disabled:this.state.disabled,label:"Management Domain",help:"Domain that will be used to access the management interface.",type:"text",placeholder:"Enter management domain",value:e.management_domain,onChange:e=>{this.set("management_domain",e)}}),qr.createElement(Cm,{hidden:-1===e.type.indexOf("_")||-1===e.type.indexOf("user"),label:"User Domain",help:"Domain that will be used to access the user interface. When using U2F domain must be the same on all nodes with user active. Changing this will invalidate any existing U2F devices.",type:"text",placeholder:"Enter user domain",value:e.user_domain,disabled:this.state.disabled,onChange:e=>{this.set("user_domain",e)}}),qr.createElement(Cm,{disabled:this.state.disabled,hidden:-1===e.type.indexOf("admin")&&-1===e.type.indexOf("user"),label:"WebAuthn Domain",help:"Domain that will be used for WebAuthn relying party identifier. This domain should be the highest level domain for the relevant resources. All other Pritunl Cloud domains handling WebAuthn authentication must be a sub-domain of this domain. Changing this domain will invalidate all existing WebAuthn devices.",type:"text",placeholder:"Enter WebAuthn domain",value:e.webauthn_domain,onChange:e=>{this.set("webauthn_domain",e)}}),qr.createElement("label",{className:"bp3-label",style:ov.label},"Protocol and Port",qr.createElement("div",{className:"bp3-control-group",style:ov.inputGroup},qr.createElement("div",{className:"bp3-select",style:ov.protocol},qr.createElement("select",{value:e.protocol||"https",onChange:e=>{this.set("protocol",e.target.value)}},qr.createElement("option",{value:"http"},"HTTP"),qr.createElement("option",{value:"https"},"HTTPS"))),qr.createElement("input",{className:"bp3-input",style:ov.port,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Port",value:e.port||443,onChange:e=>{this.set("port",parseInt(e.target.value,10))}}))),qr.createElement(Sm,{disabled:this.state.disabled,label:"Web redirect server",help:"Enable redirect server for HTTP requests to HTTPS. Required for Lets Encrypt certificates.",checked:!e.no_redirect_server,onToggle:()=>{this.set("no_redirect_server",!e.no_redirect_server)}}),qr.createElement("label",{className:"bp3-label",style:ov.label,hidden:-1===e.type.indexOf("proxy")},"Services",qr.createElement(Mm,{title:"Services",content:"Services that can be accessed from this node. The nodes certificate must be valid for all the service domains. The node also needs to be able to access all the interal servers of the services."}),qr.createElement("div",null,n)),qr.createElement(av,{hidden:-1===e.type.indexOf("proxy"),label:"Add Service",value:this.state.addService,disabled:this.state.disabled||!this.props.services.length,buttonClass:"bp3-intent-success",onChange:e=>{this.setState({...this.state,addService:e})},onSubmit:this.onAddService},i),qr.createElement("label",{className:"bp3-label",style:ov.label,hidden:-1===e.type.indexOf("bastion")},"Authority Bastions",qr.createElement(Mm,{title:"Authority Bastions",content:"Authorities that will be served with a bastion server."}),qr.createElement("div",null,s)),qr.createElement(av,{label:"Add Authority",hidden:-1===e.type.indexOf("bastion"),value:this.state.addAuthority,disabled:this.state.disabled||!this.props.authorities.length,buttonClass:"bp3-intent-success",onChange:e=>{this.setState({...this.state,addAuthority:e})},onSubmit:this.onAddAuthority},r)),qr.createElement("div",{style:ov.group},qr.createElement(Xp,{fields:[{label:"ID",value:e.id||"None"},{label:"Version",value:e.software_version||"Unknown"},{valueClass:t?"":"bp3-text-intent-danger",label:"Timestamp",value:$u(e.timestamp)||"Inactive"},{label:"Requests",value:e.requests_min+"/min"},{label:"Hostname",value:e.hostname||"Unknown"}],bars:[{progressClass:"bp3-no-stripes bp3-intent-primary",label:"Memory",value:e.memory},{progressClass:"bp3-no-stripes bp3-intent-success",label:"Load1",value:e.load1},{progressClass:"bp3-no-stripes bp3-intent-warning",label:"Load5",value:e.load5},{progressClass:"bp3-no-stripes bp3-intent-danger",label:"Load15",value:e.load15}]}),qr.createElement("label",{className:"bp3-label",style:ov.label,hidden:"http"===e.protocol},"Certificates",qr.createElement(Mm,{title:"Certificates",content:"The certificates to use for this nodes web server. The certificates must be valid for all the domains that this node provides access to. This includes the management domain and any service domains."}),qr.createElement("div",null,a)),qr.createElement(av,{hidden:"http"===e.protocol,label:"Add Certificate",value:this.state.addCert,disabled:this.state.disabled||!o,buttonClass:"bp3-intent-success",onChange:e=>{this.setState({...this.state,addCert:e})},onSubmit:this.onAddCert},l),qr.createElement(sv,{label:"Forwarded for header",help:"Enable when using a load balancer. This header value will be used to get the users IP address. It is important to only enable this when a load balancer is used. If it is enabled without a load balancer users can spoof their IP address by providing a value for the header that will not be overwritten by a load balancer. Additionally the nodes firewall should be configured to only accept requests from the load balancer to prevent requests being sent directly to the node bypassing the load balancer.",type:"text",placeholder:"Forwarded for header",value:e.forwarded_for_header,checked:this.state.forwardedChecked,defaultValue:"X-Forwarded-For",onChange:(e,t)=>{let n;n=this.state.changed?{...this.state.node}:{...this.props.node},n.forwarded_for_header=t,this.setState({...this.state,changed:!0,forwardedChecked:e,node:n})}}),qr.createElement(sv,{label:"Forwarded proto header",help:"Enable when using a load balancer. This header value will be used to get the users protocol. This will redirect users to https when the forwarded protocol is http.",type:"text",placeholder:"Forwarded proto header",value:e.forwarded_proto_header,checked:this.state.forwardedProtoChecked,defaultValue:"X-Forwarded-Proto",onChange:(e,t)=>{let n;n=this.state.changed?{...this.state.node}:{...this.props.node},n.forwarded_proto_header=t,this.setState({...this.state,changed:!0,forwardedProtoChecked:e,node:n})}}))),qr.createElement(km,{style:ov.save,hidden:!this.state.node,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,forwardedChecked:!1,forwardedProtoChecked:!1,node:null})},onSave:this.onSave}))}}const cv={header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"}};class hv extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,nodes:Dg.nodes,services:Vg.servicesName,authorities:Ig.authorities,certificates:jg.certificates})},this.state={nodes:Dg.nodes,services:Vg.servicesName,authorities:Ig.authorities,certificates:jg.certificates,disabled:!1}}componentDidMount(){Dg.addChangeListener(this.onChange),Vg.addChangeListener(this.onChange),Ig.addChangeListener(this.onChange),jg.addChangeListener(this.onChange),Xg(),Zg(),ev(),nv()}componentWillUnmount(){Dg.removeChangeListener(this.onChange),Vg.removeChangeListener(this.onChange),Ig.removeChangeListener(this.onChange),jg.removeChangeListener(this.onChange)}render(){let e=[];return this.state.nodes.forEach((t=>{e.push(qr.createElement(lv,{key:t.id,node:t,services:this.state.services,authorities:this.state.authorities,certificates:this.state.certificates}))})),qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:cv.header},qr.createElement("h2",{style:cv.heading},"Nodes"),qr.createElement("div",{className:"flex"}))),qr.createElement("div",null,e))}}const dv="policy.sync";const uv=new class extends Mu{constructor(){super(...arguments),this._policies=Object.freeze([]),this._map={},this._token=bu.register(this._callback.bind(this))}get policies(){return this._policies}get policiesM(){let e=[];return this._policies.forEach((t=>{e.push({...t})})),e}policy(e){let t=this._map[e];return void 0===t?null:this._policies[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_sync(e){this._map={};for(let t=0;t{ql.get("/policy").set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===fv){if(s)return cu(r,"Failed to load policies"),void i(s);bu.dispatch({type:dv,data:{policies:r.body}}),n()}else n()}))}))}function yv(){let e=Du();gv=e;let t=(new ju).loading();return new Promise(((n,i)=>{ql.get("/settings").set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===gv){if(s)return cu(r,"Failed to sync builds"),void i(s);bu.dispatch({type:pv,data:r.body}),n()}else n()}))}))}Hu.register((e=>{if("policy.change"===e.type)vv()})),Hu.register((e=>{if("settings.change"===e.type)yv()}));const bv={item:{margin:"9px 5px 0 5px",height:"20px"}};class _v extends qr.Component{constructor(e,t){super(e,t),this.onAddValue=e=>{if(!e)return;let t=this.clone(),n=[...t.values];-1===n.indexOf(e)&&n.push(e),n.sort(),t.values=n,this.props.onChange(t)},this.state={addValue:""}}clone(){return{...this.props.rule}}onRemoveValue(e){let t=this.clone(),n=[...t.values],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.values=n,this.props.onChange(t))}render(){let e,t,n,i,s,r=this.props.rule;switch(this.props.rule.type){case"operating_system":t="Permitted Operating Systems",n="Operating system policies",s=Xu;break;case"browser":t="Permitted Browsers",n="Browser policies",s=qu;break;case"location":t="Permitted Locations",n="Location policies",s=Ju;break;case"whitelist_networks":t="Permitted Networks",n="Permitted network policies",i="Add network";break;case"blacklist_networks":t="Blocked Networks",n="Blocked network policies",i="Add network"}let a=[];for(let t in s)s.hasOwnProperty(t)&&(e||(e=t),a.push(qr.createElement("option",{key:t,value:t},s[t])));let o,l=[];for(let e of r.values||[])l.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:bv.item,key:e},s&&s[e]||e,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveValue(e)}})));return o=s?qr.createElement(av,{hidden:null==r.values,buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",value:this.state.addValue,onChange:e=>{this.setState({...this.state,addValue:e})},onSubmit:()=>{this.onAddValue(this.state.addValue||e)}},a):qr.createElement(tf,{hidden:null==r.values,buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:i,value:this.state.addValue,onChange:e=>{this.setState({...this.state,addValue:e})},onSubmit:()=>{this.onAddValue(this.state.addValue),this.setState({...this.state,addValue:null})}}),qr.createElement("div",null,qr.createElement(Sm,{label:n,help:"Turn on to enable policy.",checked:null!=r.values,onToggle:()=>{let e=this.clone();e.values=null==r.values?[]:null,this.props.onChange(e)}}),qr.createElement(Sm,{label:"Disabled user on failure",help:"This will disable the user when the policy check fails. It is generally only useful for the location check to disable a user account when an authentication occurs from a foreign country. It is important to consider that the policy check is the last check that occurs during authentication. An authentication attempt with an incorrect password from a foreign country would not trigger a policy failure or disable the user.",checked:r.disable,hidden:null==r.values,onToggle:()=>{let e=this.clone();e.disable=!e.disable,this.props.onChange(e)}}),qr.createElement("label",{className:"bp3-label",hidden:null==r.values},t,qr.createElement(Mm,{title:t,content:"One of the values must match for the check to pass."}),qr.createElement("div",null,l)),o)}}const Mv={card:{position:"relative",padding:"10px 10px 0 10px",marginBottom:"5px"},remove:{position:"absolute",top:"5px",right:"5px"},item:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px"},save:{paddingBottom:"10px"},label:{width:"100%",maxWidth:"280px"},inputGroup:{width:"100%"},protocol:{flex:"0 1 auto"},port:{flex:"1"}};class wv extends qr.Component{constructor(e,t){super(e,t),this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/policy/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save policy"),void i(e)):void n())))}))}(this.state.policy).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,policy:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/policy/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete policies"),void i(e)):void n())))}))}(this.props.policy.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddService=()=>{let e;if(!this.state.addService&&!this.props.services.length)return;let t=this.state.addService||this.props.services[0].id;e=this.state.changed?{...this.state.policy}:{...this.props.policy};let n=[...e.services];-1===n.indexOf(t)&&n.push(t),n.sort(),e.services=n,this.setState({...this.state,changed:!0,policy:e})},this.onRemoveService=e=>{let t;t=this.state.changed?{...this.state.policy}:{...this.props.policy};let n=[...t.services],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.services=n,this.setState({...this.state,changed:!0,policy:t}))},this.onAddAuthority=()=>{let e;if(!this.state.addAuthority&&!this.props.authorities.length)return;let t=this.state.addAuthority||this.props.authorities[0].id;e=this.state.changed?{...this.state.policy}:{...this.props.policy};let n=[...e.authorities];-1===n.indexOf(t)&&n.push(t),n.sort(),e.authorities=n,this.setState({...this.state,changed:!0,policy:e})},this.onRemoveAuthority=e=>{let t;t=this.state.changed?{...this.state.policy}:{...this.props.policy};let n=[...t.authorities],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.authorities=n,this.setState({...this.state,changed:!0,policy:t}))},this.onAddRole=()=>{let e;e=this.state.changed?{...this.state.policy}:{...this.props.policy};let t=[...e.roles];this.state.addRole&&(-1===t.indexOf(this.state.addRole)&&t.push(this.state.addRole),t.sort(),e.roles=t,this.setState({...this.state,changed:!0,message:"",addRole:"",policy:e}))},this.state={disabled:!1,changed:!1,message:"",policy:null,addService:null,addAuthority:null,addRole:null}}set(e,t){let n;n=this.state.changed?{...this.state.policy}:{...this.props.policy},n[e]=t,this.setState({...this.state,changed:!0,policy:n})}setRule(e,t){let n;n=this.state.changed?{...this.state.policy}:{...this.props.policy};let i={...n.rules};null==t.values?delete i[e]:i[e]=t,n.rules=i,this.setState({...this.state,changed:!0,policy:n})}onRemoveRole(e){let t;t=this.state.changed?{...this.state.policy}:{...this.props.policy};let n=[...t.roles],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.roles=n,this.setState({...this.state,changed:!0,message:"",addRole:"",policy:t}))}render(){let e=this.state.policy||this.props.policy,t=[];for(let n of e.services||[]){let e=Vg.serviceName(n);e&&t.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Mv.item,key:e.id},e.name,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveService(e.id)}})))}let n=[];if(this.props.services.length)for(let e of this.props.services)n.push(qr.createElement("option",{key:e.id,value:e.id},e.name));else n.push(qr.createElement("option",{key:"null",value:""},"None"));let i=[];for(let t of e.authorities||[]){let e=Ig.authority(t);e&&i.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Mv.item,key:e.id},e.name,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveAuthority(e.id)}})))}let s=[];if(this.props.authorities.length)for(let e of this.props.authorities)s.push(qr.createElement("option",{key:e.id,value:e.id},e.name));else s.push(qr.createElement("option",{key:"null",value:""},"None"));let r=[];for(let t of e.roles)r.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Mv.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveRole(t)}})));let a=e.rules.operating_system||{type:"operating_system"},o=e.rules.browser||{type:"browser"},l=e.rules.location||{type:"location"},c=e.rules.whitelist_networks||{type:"whitelist_networks"},h=e.rules.blacklist_networks||{type:"blacklist_networks"},d=[],u=[],p=[],m=[],f=[];if(this.props.providers.length)for(let e of this.props.providers)d.push(e.id),u.push(qr.createElement("option",{key:e.id,value:e.id},e.name)),p.push(qr.createElement("option",{key:e.id,value:e.id},e.name)),m.push(qr.createElement("option",{key:e.id,value:e.id},e.name)),f.push(qr.createElement("option",{key:e.id,value:e.id},e.name));else u.push(qr.createElement("option",{key:"null",value:""},"None")),p.push(qr.createElement("option",{key:"null",value:""},"None")),m.push(qr.createElement("option",{key:"null",value:""},"None")),f.push(qr.createElement("option",{key:"null",value:""},"None"));let g=e.admin_secondary&&-1!==d.indexOf(e.admin_secondary),v=e.user_secondary&&-1!==d.indexOf(e.user_secondary),y=e.proxy_secondary&&-1!==d.indexOf(e.proxy_secondary),b=e.authority_secondary&&-1!==d.indexOf(e.authority_secondary);return qr.createElement("div",{className:"bp3-card",style:Mv.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Mv.group},qr.createElement("div",{style:Mv.remove},qr.createElement(Zu,{safe:!0,className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Policy",confirmMsg:"Permanently delete this policy",confirmInput:!0,items:[e.name],disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{label:"Name",help:"Name of policy",type:"text",placeholder:"Enter name",value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement("label",{className:"bp3-label"},"Roles",qr.createElement(Mm,{title:"Roles",content:"Roles associated with this policy. All requests from users with associated roles must pass this policy check."}),qr.createElement("div",null,r)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add role",value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement("label",{className:"bp3-label",style:Mv.label},"Services",qr.createElement(Mm,{title:"Services",content:"Services associated with this policy. All requests to the associated services must pass this policy check."}),qr.createElement("div",null,t)),qr.createElement(av,{label:"Add Service",value:this.state.addService,disabled:!this.props.services.length,buttonClass:"bp3-intent-success",onChange:e=>{this.setState({...this.state,addService:e})},onSubmit:this.onAddService},n),qr.createElement("label",{className:"bp3-label",style:Mv.label},"Authorities",qr.createElement(Mm,{title:"Authorities",content:"Authorities associated with this policy. All certificate requests to the associated authority must pass this policy check."}),qr.createElement("div",null,i)),qr.createElement(av,{label:"Add Authority",value:this.state.addAuthority,disabled:!this.props.authorities.length,buttonClass:"bp3-intent-success",onChange:e=>{this.setState({...this.state,addAuthority:e})},onSubmit:this.onAddAuthority},s),qr.createElement(Sm,{label:"Admin two-factor authentication",help:"Require admins to use two-factor authentication.",checked:g,onToggle:()=>{if(g)this.set("admin_secondary",null);else{if(0===this.props.providers.length)return void ou("No two-factor authentication providers exist");this.set("admin_secondary",this.props.providers[0].id)}}}),qr.createElement(sf,{disabled:this.state.disabled,label:"Admin Two-Factor Provider",help:"Two-factor authentication provider that will be used. For users matching multiple policies the first provider will be used.",hidden:!g,value:e.admin_secondary,onChange:e=>{this.set("admin_secondary",e)}},u),qr.createElement(Sm,{label:"User two-factor authentication",help:"Require users to use two-factor authentication.",checked:v,onToggle:()=>{if(v)this.set("user_secondary",null);else{if(0===this.props.providers.length)return void ou("No two-factor authentication providers exist");this.set("user_secondary",this.props.providers[0].id)}}}),qr.createElement(sf,{disabled:this.state.disabled,label:"User Two-Factor Provider",help:"Two-factor authentication provider that will be used. For users matching multiple policies the first provider will be used.",hidden:!v,value:e.user_secondary,onChange:e=>{this.set("user_secondary",e)}},p),qr.createElement(Sm,{label:"Service two-factor authentication",help:"Require service users to use two-factor authentication.",checked:y,onToggle:()=>{if(y)this.set("proxy_secondary",null);else{if(0===this.props.providers.length)return void ou("No two-factor authentication providers exist");this.set("proxy_secondary",this.props.providers[0].id)}}}),qr.createElement(sf,{disabled:this.state.disabled,label:"Service Two-Factor Provider",help:"Two-factor authentication provider that will be used. For users matching multiple policies the first provider will be used.",hidden:!y,value:e.proxy_secondary,onChange:e=>{this.set("proxy_secondary",e)}},m),qr.createElement(Sm,{label:"Authority two-factor authentication",help:"Require users retrieving SSH certificates from an authority to use two-factor authentication.",checked:b,onToggle:()=>{if(b)this.set("authority_secondary",null);else{if(0===this.props.providers.length)return void ou("No two-factor authentication providers exist");this.set("authority_secondary",this.props.providers[0].id)}}}),qr.createElement(sf,{disabled:this.state.disabled,label:"Authority Two-Factor Provider",help:"Two-factor authentication provider that will be used. For users matching multiple policies the first provider will be used.",hidden:!b,value:e.authority_secondary,onChange:e=>{this.set("authority_secondary",e)}},f)),qr.createElement("div",{style:Mv.group},qr.createElement(Xp,{fields:[{label:"ID",value:e.id||"None"}]}),qr.createElement(Sm,{label:"Enabled",help:"Enable or disable policy.",checked:!e.disabled,onToggle:()=>{this.set("disabled",!e.disabled)}}),qr.createElement(_v,{rule:c,onChange:e=>{this.setRule("whitelist_networks",e)}}),qr.createElement(_v,{rule:h,onChange:e=>{this.setRule("blacklist_networks",e)}}),qr.createElement(_v,{rule:l,onChange:e=>{this.setRule("location",e)}}),qr.createElement(_v,{rule:a,onChange:e=>{this.setRule("operating_system",e)}}),qr.createElement(_v,{rule:o,onChange:e=>{this.setRule("browser",e)}}),qr.createElement(Sm,{label:"Admin WebAuthn device authentication",help:"Require admins to use WebAuthn device authentication.",checked:e.admin_device_secondary,onToggle:()=>{this.set("admin_device_secondary",!e.admin_device_secondary)}}),qr.createElement(Sm,{label:"User WebAuthn device authentication",help:"Require users to use WebAuthn device authentication.",checked:e.user_device_secondary,onToggle:()=>{this.set("user_device_secondary",!e.user_device_secondary)}}),qr.createElement(Sm,{label:"Service WebAuthn device authentication",help:"Require service users to use WebAuthn device authentication.",checked:e.proxy_device_secondary,onToggle:()=>{this.set("proxy_device_secondary",!e.proxy_device_secondary)}}),qr.createElement(Sm,{label:"Authority WebAuthn device authentication",help:"Require users retrieving SSH certificates from an authority to use WebAuthn device authentication.",checked:e.authority_device_secondary,onToggle:()=>{this.set("authority_device_secondary",!e.authority_device_secondary)}}),qr.createElement(Sm,{label:"Authority require Smart Card",help:"Require users retrieving SSH certificates to use a Smart Card.",checked:e.authority_require_smart_card,onToggle:()=>{this.set("authority_require_smart_card",!e.authority_require_smart_card)}}))),qr.createElement(km,{style:Mv.save,hidden:!this.state.policy,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,policy:null})},onSave:this.onSave}))}}const Sv={header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"}};class Lv extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,policies:uv.policies,services:Vg.servicesName,authorities:Ig.authorities,providers:mv.settings?mv.settings.auth_secondary_providers:[]})},this.state={policies:uv.policies,services:Vg.servicesName,authorities:Ig.authorities,providers:mv.settings?mv.settings.auth_secondary_providers:[],disabled:!1}}componentDidMount(){uv.addChangeListener(this.onChange),Vg.addChangeListener(this.onChange),Ig.addChangeListener(this.onChange),mv.addChangeListener(this.onChange),vv(),Zg(),ev(),yv()}componentWillUnmount(){uv.removeChangeListener(this.onChange),Vg.removeChangeListener(this.onChange),Ig.removeChangeListener(this.onChange),mv.removeChangeListener(this.onChange)}render(){let e=[];return this.state.policies.forEach((t=>{e.push(qr.createElement(wv,{key:t.id,policy:t,services:this.state.services,authorities:this.state.authorities,providers:this.state.providers}))})),qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Sv.header},qr.createElement("h2",{style:Sv.heading},"Policies"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Sv.buttons},qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Sv.button,disabled:this.state.disabled,type:"button",onClick:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/policy").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create policy"),void i(e)):void n())))}))}(null).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"New")))),qr.createElement("div",null,e),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-filter",title:"No policies",description:"Add a new policy to get started."}))}}const kv={box:{marginBottom:"15px"},button:{},item:{margin:"9px 5px 0 5px",height:"20px"},callout:{marginBottom:"15px"},popover:{width:"230px"},popoverTarget:{top:"9px",left:"18px"},dialog:{maxWidth:"480px",margin:"30px 20px"},textarea:{width:"100%",resize:"none",fontSize:"12px",fontFamily:'"Lucida Console", Monaco, monospace'}};class xv extends qr.Component{constructor(e,t){super(e,t),this.onAddRole=()=>{let e=[...this.state.roles];this.state.addRole&&(-1===e.indexOf(this.state.addRole)&&e.push(this.state.addRole),e.sort(),this.setState({...this.state,addRole:"",roles:e}))},this.state={popover:!1,route53:!1,awsAccessKey:"",awsSecretKey:"",hostCertificate:null,hostname:"",server:null,addRole:"",roles:[]}}onRemoveRole(e){let t=[...this.state.roles],n=t.indexOf(e);-1!==n&&(t.splice(n,1),this.setState({...this.state,addRole:"",roles:t}))}render(){let e;if(this.state.popover){let t,n="",i="Use the startup script below to provision a Pritunl Zero host.",s="",r=this.state.hostCertificate,a=!1;null===r&&(r=this.props.authority.host_certificates);let o=new Set,l=null,c=[];if(this.props.nodes)for(let e of this.props.nodes)e.user_domain&&o.add(e.user_domain);this.props.authority.host_tokens.length&&0!==o.size||(r=!1,a=!0),o.forEach((e=>{l||(l=e),c.push(qr.createElement("option",{value:e},e))})),1===o.size&&(c=[]);let h="",d="";if(this.props.proxy){let e=this.props.authority.host_proxy.split("@");2===e.length&&(h=this.props.authority.host_proxy.split("@")[0],-1!==e[1].indexOf(this.props.authority.host_domain)&&(d=e[1].replace("."+this.props.authority.host_domain,""))),h?d||(s="Bastion hostname is not a subdomain of host domain."):s="Bastion host is missing username."}let u="",p="",m="";this.state.route53&&r&&(u="\nsudo yum -y install epel-release || sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm",p=" python2-boto3 python27-boto3",this.state.awsAccessKey&&(m+="\nsudo pritunl-ssh-host config aws-access-key "+this.state.awsAccessKey),this.state.awsSecretKey&&(m+="\nsudo pritunl-ssh-host config aws-secret-key "+this.state.awsSecretKey),m+="\nsudo pritunl-ssh-host config route-53-zone "+this.props.authority.host_domain);let f=[];for(let e of this.state.roles)f.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:kv.item,key:e},e,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveRole(e)}})));this.props.proxy?(i="Open port 9748 and use the startup script below to provision a Pritunl Zero host. Provisioning may take several minutes if the servers DNS record was created recently.",n=`#!/bin/bash\nsudo sed -i '/^TrustedUserCAKeys/d' /etc/ssh/sshd_config\nsudo sed -i '/^AuthorizedPrincipalsFile/d' /etc/ssh/sshd_config\nsudo tee -a /etc/ssh/sshd_config << EOF\n\nMatch User ${h}\n\tAllowAgentForwarding no\n\tAllowTcpForwarding yes\n\tPermitOpen *:22\n\tGatewayPorts no\n\tX11Forwarding no\n\tPermitTunnel no\n\tForceCommand echo 'Pritunl Zero Bastion Host'\n\tTrustedUserCAKeys /etc/ssh/trusted\n\tAuthorizedPrincipalsFile /etc/ssh/principals\nMatch all\nEOF\nsudo tee /etc/ssh/principals << EOF\nbastion\nEOF\nsudo tee /etc/ssh/trusted << EOF\n${this.props.authority.public_key}\nEOF\n\nsudo tee -a /etc/yum.repos.d/pritunl.repo << EOF\n[pritunl]\nname=Pritunl Repository\nbaseurl=https://repo.pritunl.com/stable/yum/centos/7/\ngpgcheck=1\nenabled=1\nEOF\n\ngpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A\ngpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp\nsudo rpm --import key.tmp\nrm -f key.tmp${u}\nsudo yum -y install pritunl-ssh-host${p}\n${m}\nsudo pritunl-ssh-host config add-token ${this.props.authority.host_tokens.length?this.props.authority.host_tokens[0]:"HOST_TOKEN_UNAVAILABLE"}\nsudo pritunl-ssh-host config hostname ${d}\nsudo pritunl-ssh-host config server ${this.state.server||l}\nsudo useradd ${h} || true\n\nsudo systemctl restart sshd || true\nsudo service sshd restart || true`):r?(i="Open port 9748 and use the startup script below to provision a Pritunl Zero host. Provisioning may take several minutes if the servers DNS record was created recently.",n=`#!/bin/bash\nsudo sed -i '/^TrustedUserCAKeys/d' /etc/ssh/sshd_config\nsudo sed -i '/^AuthorizedPrincipalsFile/d' /etc/ssh/sshd_config\nsudo tee -a /etc/ssh/sshd_config << EOF\n\nTrustedUserCAKeys /etc/ssh/trusted\nAuthorizedPrincipalsFile /etc/ssh/principals\nEOF\nsudo tee /etc/ssh/principals << EOF\nemergency\n${this.state.roles.length?this.state.roles.join("\n")+"\n":""}EOF\nsudo tee /etc/ssh/trusted << EOF\n${this.props.authority.public_key}\nEOF\n\nsudo tee -a /etc/yum.repos.d/pritunl.repo << EOF\n[pritunl]\nname=Pritunl Repository\nbaseurl=https://repo.pritunl.com/stable/yum/centos/7/\ngpgcheck=1\nenabled=1\nEOF\n\ngpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A\ngpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp\nsudo rpm --import key.tmp\nrm -f key.tmp${u}\nsudo yum -y install pritunl-ssh-host${p}\n${m}\nsudo pritunl-ssh-host config add-token ${this.props.authority.host_tokens.length?this.props.authority.host_tokens[0]:"HOST_TOKEN_UNAVAILABLE"}\nsudo pritunl-ssh-host config hostname ${this.state.hostname}\nsudo pritunl-ssh-host config server ${this.state.server||l}\n\nsudo systemctl restart sshd || true\nsudo service sshd restart || true`):n=`#!/bin/bash\nsudo sed -i '/^TrustedUserCAKeys/d' /etc/ssh/sshd_config\nsudo sed -i '/^AuthorizedPrincipalsFile/d' /etc/ssh/sshd_config\nsudo tee -a /etc/ssh/sshd_config << EOF\n\nTrustedUserCAKeys /etc/ssh/trusted\nAuthorizedPrincipalsFile /etc/ssh/principals\nEOF\nsudo tee /etc/ssh/principals << EOF\nemergency\n${this.state.roles.length?this.state.roles.join("\n")+"\n":""}EOF\nsudo tee /etc/ssh/trusted << EOF\n${this.props.authority.public_key}\nEOF\n\nsudo systemctl restart sshd || true\nsudo service sshd restart || true`,s&&(t=qr.createElement("div",{className:"bp3-dialog-body"},qr.createElement("div",{className:"bp3-callout bp3-intent-danger bp3-icon-ban-circle",style:kv.callout},s)));let g="";g=this.props.proxy?"Generate Bastion Deploy Script":"Generate Deploy Script",e=qr.createElement(Rc,{title:g,style:kv.dialog,isOpen:this.state.popover,usePortal:!0,portalContainer:document.body,onClose:()=>{this.setState({...this.state,popover:!1})}},t,qr.createElement("div",{className:"bp3-dialog-body",hidden:!!t},qr.createElement("div",{className:"bp3-callout bp3-intent-primary bp3-icon-info-sign",style:kv.callout},i),qr.createElement(Sm,{label:"Host certificate",hidden:!this.props.authority.host_certificates||this.props.proxy,disabled:a,help:"Provision a host certificate to this server, requires installing Pritunl Zero host client. Authority must have at least one host token and at least one node must have a user domain.",checked:r,onToggle:()=>{this.setState({...this.state,hostCertificate:!r})}}),qr.createElement(sf,{hidden:!r||0===c.length||this.props.proxy,label:"Pritunl Zero Server",help:"The Pritunl Zero server hostname that the client will authenticate from.",value:this.state.server||l,onChange:e=>{this.setState({...this.state,server:e})}},c),qr.createElement(Cm,{label:"Server Hostname",hidden:!r||this.props.proxy,help:"Hostname portion of the server domain. The Pritunl Zero server must be able to resolve the server using this hostname to provision the host certificate. The hostname will be combined with the authority domain to form the servers domain.",type:"text",placeholder:"Server hostname",value:this.state.hostname,onChange:e=>{this.setState({...this.state,hostname:e})}}),qr.createElement(Sm,{label:"Auto Route53 configuration",hidden:!r,help:"Automatically update a Route53 record for this servers hostname. The authority domain must be hosted in Route53.",checked:this.state.route53,onToggle:()=>{this.setState({...this.state,route53:!this.state.route53})}}),qr.createElement(Cm,{label:"AWS Access Key",hidden:!r||!this.state.route53,help:"AWS access key for auto Route53 configuration. Leave blank if the instance is configured with an instance role.",type:"text",placeholder:"Leave blank to use instance role",value:this.state.awsAccessKey,onChange:e=>{this.setState({...this.state,awsAccessKey:e})}}),qr.createElement(Cm,{label:"AWS Secret Key",hidden:!r||!this.state.route53,help:"AWS secret key for auto Route53 configuration. Leave blank if the instance is configured with an instance role.",type:"text",placeholder:"Leave blank to use instance role",value:this.state.awsSecretKey,onChange:e=>{this.setState({...this.state,awsSecretKey:e})}}),qr.createElement("label",{className:"bp3-label",hidden:this.props.proxy},"Roles",qr.createElement(Mm,{title:"Roles",content:"Roles associated with this server. The user must have at least one matching role to access this server."}),qr.createElement("div",null,f)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",hidden:this.props.proxy,label:"Add",type:"text",placeholder:"Add role",value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement("textarea",{className:"bp3-input",style:kv.textarea,readOnly:!0,autoCapitalize:"off",spellCheck:!1,rows:18,value:n,onClick:e=>{e.currentTarget.select()}})),qr.createElement("div",{className:"bp3-dialog-footer"},qr.createElement("div",{className:"bp3-dialog-footer-actions"},qr.createElement("button",{className:"bp3-button",type:"button",onClick:()=>{this.setState({...this.state,popover:!this.state.popover})}},"Close"))))}let t="";return t=this.props.proxy?"Generate Bastion Deploy Script":"Generate Deploy Script",qr.createElement("div",{hidden:this.props.hidden,style:kv.box},qr.createElement("button",{className:"bp3-button bp3-icon-cloud-upload bp3-intent-primary",style:kv.button,type:"button",disabled:this.props.disabled||this.props.proxy&&(!this.props.authority.host_proxy||!this.props.authority.host_certificates),onClick:()=>{this.setState({...this.state,popover:!this.state.popover})}},t),e)}}const Cv={label:{width:"100%",maxWidth:"280px"},textarea:{width:"100%",resize:"none",fontSize:"12px",fontFamily:'"Lucida Console", Monaco, monospace'},tab:{fontSize:"12px",lineHeight:"24px",userSelect:"none"}};class Tv extends qr.Component{constructor(e,t){super(e,t),this.state={activeIndex:0}}render(){let e=this.state.activeIndex||0,t=[];for(let n=0;n<(this.props.tabs||[]).length;n++){let i=this.props.tabs[n],s=n;t.push(qr.createElement("li",{key:n,className:"bp3-tab",style:Cv.tab,role:"tab","aria-selected":n==e,onClick:()=>{this.setState({...this.state,activeIndex:s})}},i))}return qr.createElement("label",{className:"bp3-label",style:Cv.label,hidden:this.props.hidden},this.props.label,qr.createElement(Mm,{title:this.props.label,content:this.props.help}),qr.createElement("div",{className:"bp3-tabs"},qr.createElement("ul",{className:"bp3-tab-list .modifier",role:"tablist"},t)),qr.createElement("textarea",{className:"bp3-input",style:Cv.textarea,disabled:this.props.disabled,readOnly:this.props.readOnly,autoCapitalize:"off",spellCheck:!1,placeholder:this.props.placeholder,rows:this.props.rows,value:this.props.values[e]||"",onChange:e=>{this.props.onChange(this.props.tabs[this.state.activeIndex],e.target.value)}}))}}const Ev={card:{position:"relative",padding:"10px 10px 0 10px",marginBottom:"5px"},remove:{position:"absolute",top:"5px",right:"5px"},item:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px"},save:{paddingBottom:"10px"},label:{width:"100%",maxWidth:"280px"},inputGroup:{width:"100%"},hostname:{flex:"1",minWidth:"160px"},port:{width:"60px",flex:"0 1 auto"}};class zv extends qr.Component{constructor(e,t){super(e,t),this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/authority/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save authority"),void i(e)):(s.body&&s.body.hsm_secret&&bu.dispatch({type:$g,data:{id:s.body.id,secret:s.body.hsm_secret}}),void n()))))}))}(this.state.authority).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,authority:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/authority/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete authorities"),void i(e)):void n())))}))}(this.props.authority.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddRole=()=>{let e;e=this.state.changed?{...this.state.authority}:{...this.props.authority};let t=[...e.roles];this.state.addRole&&(-1===t.indexOf(this.state.addRole)&&t.push(this.state.addRole),t.sort(),e.roles=t,this.setState({...this.state,changed:!0,message:"",addRole:"",authority:e}))},this.onAddMatch=()=>{let e;e=this.state.changed?{...this.state.authority}:{...this.props.authority};let t=[...e.host_matches||[]];this.state.addMatch&&(-1===t.indexOf(this.state.addMatch)&&t.push(this.state.addMatch),t.sort(),e.host_matches=t,this.setState({...this.state,changed:!0,message:"",addMatch:"",authority:e}))},this.onAddSubnet=()=>{let e;e=this.state.changed?{...this.state.authority}:{...this.props.authority};let t=[...e.host_subnets||[]];this.state.addSubnet&&(-1===t.indexOf(this.state.addSubnet)&&t.push(this.state.addSubnet),t.sort(),e.host_subnets=t,this.setState({...this.state,changed:!0,message:"",addSubnet:"",authority:e}))},this.state={disabled:!1,changed:!1,message:"",authority:null,addRole:null,addMatch:null,addSubnet:null}}componentWillUnmount(){var e;this.props.authority&&(e=this.props.authority.id,bu.dispatch({type:$g,data:{id:e,secret:null}}))}set(e,t){let n;n=this.state.changed?{...this.state.authority}:{...this.props.authority},n[e]=t,this.setState({...this.state,changed:!0,authority:n})}toggle(e){let t;t=this.state.changed?{...this.state.authority}:{...this.props.authority},t[e]=!t[e],this.setState({...this.state,changed:!0,authority:t})}onRemoveRole(e){let t;t=this.state.changed?{...this.state.authority}:{...this.props.authority};let n=[...t.roles],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.roles=n,this.setState({...this.state,changed:!0,message:"",addRole:"",authority:t}))}onRemoveMatch(e){let t;t=this.state.changed?{...this.state.authority}:{...this.props.authority};let n=[...t.host_matches],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.host_matches=n,this.setState({...this.state,changed:!0,message:"",addMatch:"",authority:t}))}onRemoveSubnet(e){let t;t=this.state.changed?{...this.state.authority}:{...this.props.authority};let n=[...t.host_subnets],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.host_subnets=n,this.setState({...this.state,changed:!0,message:"",addSubnet:"",authority:t}))}render(){let e=this.state.authority||this.props.authority,t=e.info||{},n=window.location.protocol+"//"+window.location.host+"/ssh_public_key/"+e.id,i="pritunl_hsm"===e.type,s=Ig.authoritySecret(e.id),r=[];for(let t of e.roles)r.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Ev.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveRole(t)}})));let a=[];for(let t of e.host_matches||[])a.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Ev.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveMatch(t)}})));let o=[];for(let t of e.host_subnets||[])o.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Ev.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveSubnet(t)}})));let l=[];for(let t of this.props.authority.host_tokens||[])l.push(qr.createElement(tf,{key:t,buttonClass:"bp3-minimal bp3-intent-danger bp3-icon-remove",type:"text",hidden:!e.host_certificates,readOnly:!0,autoSelect:!0,listStyle:!0,buttonDisabled:this.state.changed,buttonConfirm:!0,value:t,onSubmit:()=>{tv(this.props.authority.id,t).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}}));let c=[{label:"ID",value:e.id||"None"},{label:"Algorithm",value:t.key_alg||"None"}];if(e.proxy_hosting&&c.push({label:"Bastion Host",value:this.props.authority.proxy_jump}),i){let e=this.props.authority.hsm_status||"disconnected";c.push({valueClass:"connected"===e?"":"bp3-text-intent-danger",label:"Status",value:e.charAt(0).toUpperCase()+e.substr(1)}),c.push({label:"Timestamp",value:$u(this.props.authority.hsm_timestamp)||"Inactive"})}return qr.createElement("div",{className:"bp3-card",style:Ev.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Ev.group},qr.createElement("div",{style:Ev.remove},qr.createElement(Zu,{safe:!0,className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Authority",confirmMsg:"Permanently delete this authority",confirmInput:!0,items:[e.name],disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{label:"Name",help:"Name of authority",type:"text",placeholder:"Enter name",value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement(sf,{label:"Type",help:"Authority type",value:e.type,onChange:e=>{this.set("type",e)}},qr.createElement("option",{value:"local"},"Local")),qr.createElement(Tv,{readOnly:!0,label:"Public Key",help:"Certificate authority public key in SSH format",placeholder:"Public key",rows:10,tabs:["SSH Format","PEM Format","Root Certificate"],values:[this.props.authority.public_key,this.props.authority.public_key_pem,this.props.authority.root_certificate],onChange:e=>{this.set("key",e)}}),qr.createElement(Sm,{label:"Host certificates",help:"Allow servers to validate and sign SSH host keys. This should be disabled for most configurations.",checked:e.host_certificates,onToggle:()=>{this.toggle("host_certificates")}}),qr.createElement(Sm,{label:"Strict host checking",help:"Enable strict host checking for SSH clients connecting to servers in this domain.",hidden:!e.host_certificates,checked:e.strict_host_checking,onToggle:()=>{this.toggle("strict_host_checking")}}),qr.createElement(Cm,{label:"Host Domain",help:"Domain that will be used for SSH host certificates. All servers must have a subdomain registered on this domain. This should be empty for most configurations.",type:"text",placeholder:"Host domain",value:e.host_domain,onChange:e=>{let t;t=this.state.changed?{...this.state.authority}:{...this.props.authority},t.host_domain=e,this.setState({...this.state,changed:!0,authority:t})}}),qr.createElement(Sm,{label:"Automatic bastion server",help:"Enable automatic bastion servers on nodes using Docker containers. This should be disabled for most configurations.",checked:e.proxy_hosting,onToggle:()=>{this.toggle("proxy_hosting")}}),qr.createElement("label",{className:"bp3-label",style:Ev.label,hidden:!e.proxy_hosting},"Bastion Hostname and Port",qr.createElement(Mm,{title:"Bastion Hostname and Port",content:"Hostname of bastion server and port that SSH nodes will run on. This port cannot be 22 or conflict with existing services on the Pritunl Zero node. Each authority must have a unique bastion port. The bastion hostname will need to point to a Pritunl Zero bastion node or network load balancer in front of Pritunl Zero bastion nodes."}),qr.createElement("div",{className:"bp3-control-group",style:Ev.inputGroup},qr.createElement("input",{className:"bp3-input",style:Ev.hostname,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Hostname",value:e.proxy_hostname,onChange:e=>{this.set("proxy_hostname",e.target.value)}}),qr.createElement("input",{className:"bp3-input",style:Ev.port,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Port",value:e.proxy_port||"",onChange:e=>{e.target.value?this.set("proxy_port",parseInt(e.target.value,10)):this.set("proxy_port",0)}}))),qr.createElement(Cm,{hidden:e.proxy_hosting,label:"Bastion Host",help:"Optional username and hostname of bastion host to proxy client connections for this domain. If the bastion station requires a specific username it must be included such as 'ec2-user@server.domain.com'. Bastion hostname does not need to be in host domain. If strict host checking is enabled bastion host must have a valid certificate. This should be empty for most configurations.",type:"text",placeholder:"Bastion host",value:e.host_proxy,onChange:e=>{this.set("host_proxy",e)}}),qr.createElement(xv,{disabled:this.state.disabled,nodes:this.props.nodes,authority:e,proxy:!1}),qr.createElement(xv,{hidden:e.proxy_hosting||!e.host_proxy,disabled:this.state.disabled||!e.host_proxy,nodes:this.props.nodes,authority:e,proxy:!0})),qr.createElement("div",{style:Ev.group},qr.createElement(Xp,{fields:c}),qr.createElement(Cm,{hidden:"pritunl_hsm"!==e.type,label:"HSM YubiKey Serial",help:"Serial number of YubiKey that will be used to sign certificates. This number can be found on the back of the key.",type:"text",placeholder:"HSM serial",value:e.hsm_serial,onChange:e=>{this.set("hsm_serial",e)}}),qr.createElement(Cm,{hidden:!i,readOnly:!0,label:"HSM Token",help:"Pritunl HSM token.",type:"text",placeholder:"Save to generate token",value:this.props.authority.hsm_token}),qr.createElement(Cm,{hidden:!i||!this.props.authority.hsm_token||!s,readOnly:!0,label:"HSM Secret",help:"Pritunl HSM secret, will only be shown once.",type:"text",placeholder:"",value:s}),qr.createElement(Sm,{hidden:!i,label:"Generate new HSM token and secret",help:"Enable to generate a new token and secret on save. Secret can only be shown by generating new credentials.",checked:e.hsm_generate_secret,onToggle:()=>{this.set("hsm_generate_secret",!e.hsm_generate_secret)}}),qr.createElement(Cm,{label:"Download URL",help:"Public download url for the authority public key. Can be used to wget public key onto servers. Multiple public keys can be downloaded by seperating the IDs with a comma.",type:"text",placeholder:"Enter download URL",readOnly:!0,autoSelect:!0,value:n}),qr.createElement(Cm,{label:"Certificate Expire Minutes",help:"Number of minutes until certificates expire. The certificate only needs to be active when initiating the SSH connection. The SSH connection will stay connected after the certificate expires. Must be greater then 1 and no more then 1440.",type:"text",placeholder:"Certificate expire minutes",value:e.expire,onChange:e=>{this.set("expire",parseInt(e,10))}}),qr.createElement(Cm,{label:"Host Certificate Expire Minutes",help:"Number of minutes until host certificates expire. Must be greater then 14 and no more then 1440.",type:"text",placeholder:"Host certificate expire minutes",hidden:!e.host_certificates,value:e.host_expire,onChange:e=>{this.set("host_expire",parseInt(e,10))}}),qr.createElement(Sm,{label:"Match roles",help:"Require a matching role with the user before giving a certificate. If disabled all users will be given a certificate from this authority. The certificate principles will only contain the users roles.",checked:e.match_roles,onToggle:()=>{this.toggle("match_roles")}}),qr.createElement("label",{className:"bp3-label",hidden:!e.match_roles},"Roles",qr.createElement(Mm,{title:"Roles",content:"Roles associated with this authority. If at least one role matches the user will be given a certificate from this authority. The certificate principles will only contain the users roles."}),qr.createElement("div",null,r)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add role",hidden:!e.match_roles,value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement("label",{className:"bp3-label"},"Custom Matches",qr.createElement(Mm,{title:"Custom Matches",content:"Custom domains that will be proxied through the bastion host. This should be empty for most configurations."}),qr.createElement("div",null,a)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add match",value:this.state.addMatch,onChange:e=>{this.setState({...this.state,addMatch:e})},onSubmit:this.onAddMatch}),qr.createElement("label",{className:"bp3-label"},"Match Subnets",qr.createElement(Mm,{title:"Match Subnets",content:"Subnets that will be proxied through the bastion host. All hosts in the subnets must be accessible from the bastion host. For best security match only private subnets in the same network as the bastion host. Currently only /8, /16, /24 and /32 subnets are supported. This should be empty for most configurations."}),qr.createElement("div",null,o)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add subnet",value:this.state.addSubnet,onChange:e=>{this.setState({...this.state,addSubnet:e})},onSubmit:this.onAddSubnet}),qr.createElement("label",{style:Ev.itemsLabel,hidden:!e.host_certificates},"Host Tokens",qr.createElement(Mm,{title:"Host Tokens",content:"Tokens that servers can use to validate and sign SSH host keys. Changes must be saved before modifying tokens."})),l,qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Ev.itemsAdd,type:"button",disabled:this.state.changed,hidden:!e.host_certificates,onClick:()=>{(function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/authority/"+e+"/token").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create authority token"),void i(e)):void n())))}))})(this.props.authority.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"Add Token"))),qr.createElement(km,{style:Ev.save,hidden:!this.state.authority,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,authority:null})},onSave:this.onSave}))}}const Av={header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 0"},buttons:{marginTop:"8px"},group:{width:"100%"},select:{width:"100%"},selectFirst:{width:"100%",borderTopLeftRadius:"3px",borderBottomLeftRadius:"3px"},selectInner:{width:"100%"},selectBox:{margin:"8px 0 0 8px",flex:"1"}};class Hv extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,authorities:Ig.authorities,nodes:Dg.nodes})},this.state={authorities:Ig.authorities,nodes:Dg.nodes,disabled:!1,algorithm:""}}componentDidMount(){Ig.addChangeListener(this.onChange),Dg.addChangeListener(this.onChange),ev(),Xg()}componentWillUnmount(){Ig.removeChangeListener(this.onChange),Dg.removeChangeListener(this.onChange)}render(){let e=[];return this.state.authorities.forEach((t=>{e.push(qr.createElement(zv,{key:t.id,nodes:this.state.nodes,authority:t}))})),qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Av.header},qr.createElement("h2",{style:Av.heading},"Authorities"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Av.buttons},qr.createElement("div",{className:"bp3-control-group",style:Av.group},qr.createElement("div",{style:Av.selectBox},qr.createElement("div",{className:"bp3-select",style:Av.selectFirst},qr.createElement("select",{style:Av.selectInner,value:this.state.algorithm,onChange:e=>{this.setState({...this.state,algorithm:e.target.value})}},qr.createElement("option",{key:"ecp384",value:"ecp384"},"EC P384"),qr.createElement("option",{key:"rsa4096",value:"rsa4096"},"RSA 4096")))),qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Av.button,disabled:this.state.disabled,type:"button",onClick:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/authority").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create authority"),void i(e)):(s.body&&s.body.hsm_secret&&bu.dispatch({type:$g,data:{id:s.body.id,secret:s.body.hsm_secret}}),void n()))))}))}({id:null,algorithm:this.state.algorithm||"ecp384"}).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"New"))))),qr.createElement("div",null,e),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-office",title:"No authorities",description:"Add a new authority to get started."}))}}const Dv={group:{width:"100%",maxWidth:"310px",marginTop:"5px"},domain:{width:"100%",borderRadius:"0 3px 3px 0"},domainBox:{flex:"1"}};class Pv extends qr.Component{render(){return qr.createElement("div",{className:"bp3-control-group",style:Dv.group},qr.createElement("div",{style:Dv.domainBox},qr.createElement("input",{className:"bp3-input",style:Dv.domain,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Domain",value:this.props.domain||"",onChange:e=>{this.props.onChange(e.target.value)}})),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-intent-danger bp3-icon-remove",onClick:()=>{this.props.onRemove()}}))}}const Ov={label:{width:"100%",maxWidth:"280px"},textarea:{width:"100%",resize:"none",fontSize:"12px",fontFamily:'"Lucida Console", Monaco, monospace'}};class Yv extends qr.Component{render(){return qr.createElement("label",{className:"bp3-label",style:Ov.label,hidden:this.props.hidden},this.props.label,qr.createElement(Mm,{title:this.props.label,content:this.props.help}),qr.createElement("textarea",{className:"bp3-input",style:Ov.textarea,disabled:this.props.disabled,readOnly:this.props.readOnly,autoCapitalize:"off",spellCheck:!1,placeholder:this.props.placeholder,rows:this.props.rows,value:this.props.value||"",onChange:e=>{this.props.onChange(e.target.value)}}))}}const Rv={card:{position:"relative",padding:"10px 10px 0 10px",marginBottom:"5px"},remove:{position:"absolute",top:"5px",right:"5px"},domain:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px"},save:{paddingBottom:"10px"},label:{width:"100%",maxWidth:"280px"},inputGroup:{width:"100%"}};class Vv extends qr.Component{constructor(e,t){super(e,t),this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/certificate/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save certificate"),void i(e)):void n())))}))}(this.state.certificate).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,certificate:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/certificate/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete certificates"),void i(e)):void n())))}))}(this.props.certificate.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddDomain=()=>{let e;e=this.state.changed?{...this.state.certificate}:{...this.props.certificate};let t=[...e.acme_domains,""];e.acme_domains=t,this.setState({...this.state,changed:!0,message:"",addDomain:"",certificate:e})},this.state={disabled:!1,changed:!1,message:"",certificate:null,addDomain:null}}set(e,t){let n;n=this.state.changed?{...this.state.certificate}:{...this.props.certificate},n[e]=t,this.setState({...this.state,changed:!0,certificate:n})}onChangeDomain(e,t){let n;n=this.state.changed?{...this.state.certificate}:{...this.props.certificate};let i=[...n.acme_domains];i[e]=t,n.acme_domains=i,this.setState({...this.state,changed:!0,message:"",certificate:n})}onRemoveDomain(e){let t;t=this.state.changed?{...this.state.certificate}:{...this.props.certificate};let n=[...t.acme_domains];n.splice(e,1),t.acme_domains=n,this.setState({...this.state,changed:!0,message:"",addDomain:"",certificate:t})}render(){let e=this.state.certificate||this.props.certificate,t=this.props.certificate.info||{},n=[];for(let t=0;t{this.onChangeDomain(i,e)},onRemove:()=>{this.onRemoveDomain(i)}}))}return qr.createElement("div",{className:"bp3-card",style:Rv.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Rv.group},qr.createElement("div",{style:Rv.remove},qr.createElement(Zu,{safe:!0,className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Certificate",confirmMsg:"Permanently delete this certificate",confirmInput:!0,items:[e.name],disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{label:"Name",help:"Name of certificate",type:"text",placeholder:"Name",value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement(Yv,{readOnly:"text"!==e.type,label:"Private Key",help:"Certificate private key in PEM format",placeholder:"Private key",rows:6,value:e.key,onChange:e=>{this.set("key",e)}}),qr.createElement(Yv,{readOnly:"text"!==e.type,label:"Certificate Chain",help:"Certificate followed by certificate chain in PEM format",placeholder:"Certificate chain",rows:6,value:e.certificate,onChange:e=>{this.set("certificate",e)}}),qr.createElement("label",{style:Rv.itemsLabel,hidden:"lets_encrypt"!==e.type},"LetsEncrypt Domains",qr.createElement(Mm,{title:"LetsEncrypt Domains",content:"Enter domain names for the certificate. All domains names must point to a Pritunl Zero server in the cluster. The servers must also have port 80 publicy open. The port will need to stay open to renew the certificate."})),qr.createElement("div",{hidden:"lets_encrypt"!==e.type},n),qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Rv.itemsAdd,hidden:"lets_encrypt"!==e.type,type:"button",onClick:this.onAddDomain},"Add Domain")),qr.createElement("div",{style:Rv.group},qr.createElement(Xp,{fields:[{label:"ID",value:e.id||"None"},{label:"Signature Algorithm",value:t.signature_alg||"Unknown"},{label:"Public Key Algorithm",value:t.public_key_alg||"Unknown"},{label:"Issuer",value:t.issuer||"Unknown"},{label:"Issued On",value:$u(t.issued_on)||"Unknown"},{label:"Expires On",value:$u(t.expires_on)||"Unknown"},{label:"DNS Names",value:t.dns_names||"Unknown"}]}),qr.createElement(sf,{label:"Type",help:"Certificate type, use text to provide a certificate. LetsEncrypt provides free certificates that automatically renew.",value:e.type,onChange:e=>{this.set("type",e)}},qr.createElement("option",{value:"text"},"Text"),qr.createElement("option",{value:"lets_encrypt"},"LetsEncrypt")))),qr.createElement(km,{style:Rv.save,hidden:!this.state.certificate,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,certificate:null})},onSave:this.onSave}))}}const Nv={header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"},noCerts:{height:"auto"}};class $v extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,certificates:jg.certificates})},this.state={certificates:jg.certificates,disabled:!1}}componentDidMount(){jg.addChangeListener(this.onChange),nv()}componentWillUnmount(){jg.removeChangeListener(this.onChange)}render(){let e=[];return this.state.certificates.forEach((t=>{e.push(qr.createElement(Vv,{key:t.id,certificate:t}))})),qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Nv.header},qr.createElement("h2",{style:Nv.heading},"Certificates"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Nv.buttons},qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Nv.button,disabled:this.state.disabled,type:"button",onClick:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/certificate").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create certificate"),void i(e)):void n())))}))}(null).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"New")))),qr.createElement("div",null,e),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-endorsed",title:"No certificates",description:"Add a new certificate to get started."}))}}const Iv="endpoint.sync",Fv="endpoint.traverse",jv="endpoint.filter";const Bv=new class extends Mu{constructor(){super(...arguments),this._endpoints=Object.freeze([]),this._filter=null,this._map={},this._token=bu.register(this._callback.bind(this))}get endpoints(){return this._endpoints}get endpointsM(){let e=[];return this._endpoints.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||20}get pages(){return Math.ceil(this.count/this.pageCount)}get filter(){return this._filter}get count(){return this._count||0}endpoint(e){let t=this._map[e];return void 0===t?null:this._endpoints[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_filterCallback(e){(null!==this._filter&&null===e||this._filter==={}&&null!==e||e&&this._filter&&e.name!==this._filter.name)&&this._traverse(0),this._filter=e,this.emitChange()}_sync(e,t){this._map={};for(let t=0;t{ql.get("/endpoint").query({...Bv.filter,page:Bv.page,page_count:Bv.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===Wv){if(s)return cu(r,"Failed to load endpoints"),void i(s);bu.dispatch({type:Iv,data:{endpoints:r.body.endpoints,count:r.body.count}}),n()}else n()}))}))}function Kv(e){return bu.dispatch({type:Fv,data:{page:e}}),Uv()}function Xv(e){return bu.dispatch({type:jv,data:{filter:e}}),Uv()}function qv(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/endpoint/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save endpoint"),void i(e)):void n())))}))}function Jv(e,t,n,i){let s=Du(),r=(new ju).loading();return t=t.replace(/[0-9]/g,""),new Promise(((a,o)=>{let l=ql.get("/endpoint/"+e+"/chart").query({resource:t,period:n.toString(),interval:i.toString()}).set("Accept","application/json").set("Csrf-Token",hu).on("abort",(()=>{r.done(),a(null)}));Gv[s]=l,l.end(((e,t)=>(delete Gv[s],r.done(),t&&401===t.status?(window.location.href="/login",void a(null)):e?(cu(t,"Failed to load endpoint chart"),void o(e)):void a(t.body))))}))}function Qv(){for(let[e,t]of Object.entries(Gv))t.abort()}Hu.register((e=>{if("endpoint.change"===e.type)Uv()}));const Zv="check.sync",ey="check.traverse",ty="check.filter";const ny=new class extends Mu{constructor(){super(...arguments),this._checks=Object.freeze([]),this._filter=null,this._map={},this._token=bu.register(this._callback.bind(this))}get checks(){return this._checks}get checksM(){let e=[];return this._checks.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||20}get pages(){return Math.ceil(this.count/this.pageCount)}get filter(){return this._filter}get count(){return this._count||0}check(e){let t=this._map[e];return void 0===t?null:this._checks[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_filterCallback(e){(null!==this._filter&&null===e||this._filter==={}&&null!==e||e&&this._filter&&e.name!==this._filter.name)&&this._traverse(0),this._filter=e,this.emitChange()}_sync(e,t){this._map={};for(let t=0;t{ql.get("/checks").query({...ny.filter,page:ny.page,page_count:ny.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===iy){if(s)return cu(r,"Failed to load checks"),void i(s);bu.dispatch({type:Zv,data:{checks:r.body.checks,count:r.body.count}}),n()}else n()}))}))}function ay(e){return bu.dispatch({type:ey,data:{page:e}}),ry()}function oy(e){return bu.dispatch({type:ty,data:{filter:e}}),ry()}function ly(e,t,n,i){let s=Du(),r=(new ju).loading();return t=t.replace(/[0-9]/g,""),new Promise(((a,o)=>{let l=ql.get("/checks/"+e+"/chart").query({resource:t,period:n.toString(),interval:i.toString()}).set("Accept","application/json").set("Csrf-Token",hu).on("abort",(()=>{r.done(),a(null)}));sy[s]=l,l.end(((e,t)=>(delete sy[s],r.done(),t&&401===t.status?(window.location.href="/login",void a(null)):e?(cu(t,"Failed to load check chart"),void o(e)):void a(t.body))))}))}function cy(){for(let[e,t]of Object.entries(sy))t.abort()}function hy(e,t){switch(e){case"system":return{title:"System Usage",resource_label:"Percent",resource_type:"float",resource_suffix:"%",resource_fixed:3,resource_min:0,resource_max:100,datasets:[{label:"CPU Usage"},{label:"Memory Usage"},{label:"Swap Usage"},{label:"HugePages Usage"}]};case"load":return{title:"Load Average",resource_label:"Load",resource_type:"float",resource_suffix:"",resource_fixed:4,resource_min:0,datasets:[{label:"Load1"},{label:"Load5"},{label:"Load15"}]};case"disk":let n=t,i=[];for(let e of Object.keys(n).sort())i.push({label:e});return{title:"Disks",resource_label:"Usage",resource_type:"float",resource_suffix:"%",resource_fixed:3,resource_min:0,resource_max:100,hide_zero:!0,datasets:i};case"diskio0":case"diskio1":let s=t,r=[];for(let t of Object.keys(s).sort()){let n=t.split("-"),i=n.slice(0,n.length-1).join("-"),s=n[n.length-1],a="";if("diskio0"===e)switch(s){case"br":a="Read";break;case"bw":a="Written";break;default:continue}else switch(s){case"tr":a="Read";break;case"tw":a="Write";break;case"ti":a="I/O";break;default:continue}r.push({label:i+" "+a})}return"diskio0"===e?{title:"Disk I/O",resource_label:"Activity",resource_type:"bytes",resource_suffix:"",resource_fixed:2,resource_min:0,hide_zero:!0,datasets:r}:{title:"Disk I/O Wait",resource_label:"Waiting",resource_type:"milliseconds",resource_suffix:"",resource_fixed:2,resource_min:0,hide_zero:!0,datasets:r};case"network":let a=t,o=[];for(let e of Object.keys(a).sort()){let t=e.split("-"),n=t.slice(0,t.length-1).join("-"),i="";switch(t[t.length-1]){case"bs":i="Transmitted";break;case"br":i="Received";break;default:i="Unknown"}o.push({label:n+" "+i})}return{title:"Network Traffic",resource_label:"Traffic",resource_type:"bytes",resource_suffix:"",resource_fixed:2,resource_min:0,hide_zero:!0,datasets:o};case"check0":case"check1":case"check2":let l=t,c=[];for(let t of Object.keys(l).sort()){let n=t.split("-"),i=n.slice(0,n.length-1).join("-"),s=n[n.length-1],r="";if("check0"===e){if("u"!==s)continue;r="Up"}else if("check1"===e){if("d"!==s)continue;r="Down"}else if("check2"===e){if("p"!==s)continue;r="Latency"}c.push({label:i+" "+r})}if("check0"===e)return{title:"Targets Up",resource_label:"Up",resource_type:"",resource_suffix:"",resource_fixed:0,resource_min:0,datasets:c};if("check1"===e)return{title:"Targets Down",resource_label:"Down",resource_type:"",resource_suffix:"",resource_fixed:0,resource_min:0,datasets:c};if("check2"===e)return{title:"Average Latency",resource_label:"Latency",resource_type:"milliseconds",resource_suffix:"",resource_fixed:0,resource_min:0,datasets:c}}}function dy(e,t){switch(e){case"system":return[t.cpu_usage,t.mem_usage,t.swap_usage,t.huge_usage];case"load":return[t.load1,t.load5,t.load15];case"disk":let n=t,i=[];for(let e of Object.keys(n).sort())i.push(n[e]);return i;case"diskio0":case"diskio1":let s=t,r=[];for(let t of Object.keys(s).sort()){let n=t.split("-"),i=n[n.length-1];"diskio0"===e?"br"!==i&&"bw"!==i||r.push(s[t]):"tr"!==i&&"tw"!==i&&"ti"!==i||r.push(s[t])}return r;case"network":let a=t,o=[];for(let e of Object.keys(a).sort())o.push(a[e]);return o;case"check0":case"check1":case"check2":let l=t,c=[];for(let t of Object.keys(l).sort()){let n=t.split("-"),i=n[n.length-1];"check0"===e?"u"===i&&c.push(l[t]):"check1"===e?"d"===i&&c.push(l[t]):"check2"===e&&"p"===i&&c.push(l[t])}return c}}Hu.register((e=>{if("check.change"===e.type)ry()}));const uy=["#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00","#0091ea","#d50000","#00c853","#aa00ff","#ffab00","#c51162","#2962ff","#ff6d00","#00bfa5","#304ffe","#00b8d4","#6200ea","#ffd600","#dd2c00","#5d4037","#455a64","#64dd17","#aeea00"];class py extends qr.Component{constructor(e,t){super(e,t),this.ticks=e=>{let t=e.ticks,n=[],i=Object.values(this.data)[0],s=36e5,r=i.length;if(r){let e=i[0],t=i[r-1].x-e.x;s=t>=283392e4?6048e5:t>=145152e4?1728e5:t>=61128e4?864e5:t>=27648e4?432e5:t>=8928e4?216e5:36e5}for(let e=0;e{this.labels=hy(this.props.resource,this.data);let e=this,t={type:"line",options:{scales:{x:{type:"time",title:{display:!0,text:"Time",color:fu(),padding:0,font:{weight:"bold"}},time:{unit:"minute",displayFormats:{minute:"HH:mm"}},ticks:{stepSize:1,count:100,maxTicksLimit:100,color:fu(),source:"data"},grid:{color:gu()},beforeTickToLabelConversion:this.ticks},y:{min:this.labels.resource_min,max:this.labels.resource_max,offset:!1,beginAtZero:!0,title:{display:!0,text:this.labels.resource_label,color:fu(),padding:0,font:{weight:"bold"}},ticks:{color:fu(),callback:e=>{switch(this.labels.resource_type){case"bytes":return Ru(e,0);case"milliseconds":return Vu(e);default:return e}}},grid:{color:gu()}}},plugins:{title:{display:!0,text:this.labels.title,color:fu(),padding:3,font:{size:13}},tooltip:{enabled:!1,mode:"index",intersect:!1,backgroundColor:"rgba(0, 0, 0, 0.7)",external:e=>{let t=document.getElementById("chartjs-tooltip");t||(t=document.createElement("div"),t.id="chartjs-tooltip",t.className="bp3-card",t.innerHTML='
',document.body.appendChild(t));const n=e.tooltip;if(0===n.opacity)return void(t.style.opacity="0");let i=this.props.getBoxRect(),s=i.bottom+window.pageYOffset,r=i.top+window.pageYOffset+130,a=0,o=0;if(n.body){const e=n.title||[],s=n.body.map((function(e){return e.lines}));let r="";e.forEach((function(e){r+=''+e+""})),r+="";let l=[];s.forEach((function(e,t){if(!e||!e.length)return;let i=e[0].split(";");if(i.length<2)return;const s=n.labelColors[t];let r="background:"+s.backgroundColor;r+="; border-color:"+s.borderColor;const o='';l.push(''+o+i[0]+""+i[1]+""),a+=1})),o=26.33+17.33*a;let c=!1,h="",d=Math.round(Date.now()/1e3);(d-this.lastDouble<60&&o>i.height-280||o>i.height-130)&&(c=!0,this.lastDouble=d),a=0,l.forEach((function(e,t){c&&!h?h=e:(r+=""+h+e+"",h="",a+=1)})),h&&(r+=""+h+"",h="",a+=1),o=26.33+17.33*a,r+="",t.querySelector("table").innerHTML=r}t=document.getElementById("chartjs-tooltip");const l=e.chart.canvas.getBoundingClientRect();t.style.opacity="1",t.style.position="absolute",this.props.left?(t.style.right="",t.style.left=document.body.offsetWidth-l.right+window.pageXOffset-18+"px"):(t.style.left="",t.style.right=document.body.offsetWidth-l.left+window.pageXOffset+3+"px");let c=Math.round(l.top+l.height/2-o/2+window.pageYOffset);o>i.height-130?c=Math.round(i.top+i.height/2-o/2+window.pageYOffset):cs&&(c=s-o),t.style.top=c+"px",t.style.pointerEvents="none"},callbacks:{label(t){let n=t.raw;if(e.labels.hide_zero&&!n.y)return"";let i="";if(n)switch(e.labels.resource_type){case"bytes":i=Ru(n.y,e.labels.resource_fixed);break;case"milliseconds":i=Vu(n.y);break;case"float":i=n.y.toFixed(e.labels.resource_fixed);break;default:i=n.y}let s=t.dataset;return e.labels.resource_fixed,s.label+";"+i+e.labels.resource_suffix}}}}},data:{datasets:[]}},n=dy(this.props.resource,this.data);for(let e=0;e{s&&(s=!1,this.props.onLoaded()),e&&e.has_data&&e.data?(this.state.hidden&&this.setState({...this.state,hidden:!1}),this.data=e.data,this.chart?this.updateChart():this.chart=new vs(this.chartRef.current,this.config())):this.state.hidden||this.setState({...this.state,hidden:!0})})).catch((()=>{s&&(s=!1,this.props.onLoaded())}))}updateChart(){try{this.labels=hy(this.props.resource,this.data);let e=dy(this.props.resource,this.data),t=e.length,n=this.chart.data.datasets.length;for(let i=0;in)for(let i=n;it)for(let e=0;e{t&&(t=!1,this.props.onLoaded()),e&&e.has_data&&e.data?(this.state.hidden&&this.setState({...this.state,hidden:!1}),this.data=e.data,this.chart=new vs(this.chartRef.current,this.config())):this.state.hidden||this.setState({...this.state,hidden:!0})})).catch((()=>{t&&(t=!1,this.props.onLoaded())}))}componentWillUnmount(){this.chart&&this.chart.destroy()}render(){return void 0===this.sync||void 0===this.period||void 0===this.interval||this.props.sync===this.sync&&this.props.period===this.period&&this.props.interval===this.interval||this.update(this.props.sync,this.props.period,this.props.interval),qr.createElement("canvas",{hidden:this.state.hidden,ref:this.chartRef})}}const my={header:{fontSize:"20px",marginTop:"-10px",paddingBottom:"2px",marginBottom:"10px",borderBottomStyle:"solid"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"},group:{flex:1,minWidth:"250px",margin:"0 10px"},chartGroup:{flex:1,minWidth:"250px",margin:"0 10px",marginBottom:"15px"}};class fy extends qr.Component{constructor(e,t){super(e,t),this.state={sync:0,period:1440,interval:30,loading:{},cancelable:{}},this.loading={},this.chartBoxRef=qr.createRef()}getDefaultInterval(e){switch(e){case 60:return 1;case 180:case 360:return 5;case 720:case 1440:return 30;case 4320:return 60;case 10080:return 120;case 20160:default:return 360;case 43200:return 720;case 86400:case 129600:return 1440;case 172800:return 4320}}setLoading(e){this.loading[e]=!0;let t={...this.state.loading};t[e]=!0,setTimeout((()=>{if(this.loading[e]){let t={...this.state.cancelable};t[e]=!0,this.setState({...this.state,cancelable:t})}}),3e3),this.setState({...this.state,loading:t})}setLoaded(e){delete this.loading[e];let t={...this.state.loading};delete t[e];let n={...this.state.cancelable};delete n[e],this.setState({...this.state,loading:t,cancelable:n})}render(){if(this.props.disabled)return qr.createElement("div",null);let e=0,t=0;this.state.period>43200?e=120:this.state.period>20160?e=30:this.state.period>4320&&(e=5),t=this.state.period<=60?30:this.state.period<=180?60:this.state.period<=360?120:this.state.period<=720?360:this.state.period<=1440?720:this.state.period<=4320?1440:this.state.period<=10080?4320:10080;let n=!1,i="",s="bp3-button";return Object.entries(this.state.cancelable).length?(i="Cancel",s+=" bp3-intent-warning bp3-icon-delete"):(Object.entries(this.state.loading).length&&(n=!0),i="Refresh",s+=" bp3-intent-success bp3-icon-refresh"),qr.createElement("div",{ref:this.chartBoxRef},qr.createElement("div",{className:"layout horizontal wrap bp3-border",style:my.header},qr.createElement("h3",{style:my.heading},"Charts"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:my.buttons},qr.createElement("button",{className:s,style:my.button,disabled:n,type:"button",onClick:()=>{Object.entries(this.state.cancelable).length?Qv():this.setState({...this.state,sync:this.state.sync+1})}},i))),qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:my.group},qr.createElement(sf,{label:"Time Range",help:"Select chart time range.",value:this.state.period.toString(),onChange:e=>{let t=parseInt(e,10);this.setState({...this.state,period:t,interval:this.getDefaultInterval(t)})}},qr.createElement("option",{value:"60"},"1 hour"),qr.createElement("option",{value:"180"},"3 hours"),qr.createElement("option",{value:"360"},"6 hours"),qr.createElement("option",{value:"720"},"12 hours"),qr.createElement("option",{value:"1440"},"24 hours"),qr.createElement("option",{value:"4320"},"3 days"),qr.createElement("option",{value:"10080"},"7 days"),qr.createElement("option",{value:"20160"},"14 days"),qr.createElement("option",{value:"43200"},"30 days"),qr.createElement("option",{value:"86400"},"60 days"),qr.createElement("option",{value:"129600",hidden:!0},"90 days"),qr.createElement("option",{value:"172800",hidden:!0},"120 days"))),qr.createElement("div",{style:my.group},qr.createElement(sf,{label:"Interval",help:"Select chart interval.",value:this.state.interval.toString(),onChange:e=>{this.setState({...this.state,interval:parseInt(e,10)})}},qr.createElement("option",{value:"1",hidden:1t},"1 minute"),qr.createElement("option",{value:"5",hidden:5t},"5 minutes"),qr.createElement("option",{value:"30",hidden:30t},"30 minutes"),qr.createElement("option",{value:"60",hidden:60t},"1 hour"),qr.createElement("option",{value:"120",hidden:120t},"2 hours"),qr.createElement("option",{value:"360",hidden:360t},"6 hours"),qr.createElement("option",{value:"720",hidden:720t},"12 hours"),qr.createElement("option",{value:"1440",hidden:1440t},"24 hours"),qr.createElement("option",{value:"4320",hidden:4320t},"3 days"),qr.createElement("option",{value:"10080",hidden:10080t},"7 days")))),qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:my.chartGroup},qr.createElement(py,{endpoint:this.props.endpoint,resource:"system",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!0,onLoading:()=>{this.setLoading("system")},onLoaded:()=>{this.setLoaded("system")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()})),qr.createElement("div",{style:my.chartGroup},qr.createElement(py,{endpoint:this.props.endpoint,resource:"load",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!1,onLoading:()=>{this.setLoading("load")},onLoaded:()=>{this.setLoaded("load")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()}))),qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:my.chartGroup},qr.createElement(py,{endpoint:this.props.endpoint,resource:"disk",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!0,onLoading:()=>{this.setLoading("disk")},onLoaded:()=>{this.setLoaded("disk")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()})),qr.createElement("div",{style:my.chartGroup},qr.createElement(py,{endpoint:this.props.endpoint,resource:"network",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!1,onLoading:()=>{this.setLoading("network")},onLoaded:()=>{this.setLoaded("network")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()}))),qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:my.chartGroup},qr.createElement(py,{endpoint:this.props.endpoint,resource:"diskio0",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!0,onLoading:()=>{this.setLoading("diskio0")},onLoaded:()=>{this.setLoaded("diskio0")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()})),qr.createElement("div",{style:my.chartGroup},qr.createElement(py,{endpoint:this.props.endpoint,resource:"diskio1",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!1,onLoading:()=>{this.setLoading("diskio1")},onLoaded:()=>{this.setLoaded("diskio1")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()}))))}}var gy=n(2262);n(9673),n(8447),n(8218);const vy={header:{fontSize:"20px",marginTop:"-10px",paddingBottom:"2px",marginBottom:"10px",borderBottomStyle:"solid"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"},group:{flex:1,minWidth:"250px",margin:"0 10px"},editorGroup:{marginBottom:"15px"}};class yy extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state})},this.state={data:"",loading:!1,cancelable:!1}}componentDidMount(){!function(e){du.add(e)}(this.onChange)}componentWillUnmount(){!function(e){du.delete(e)}(this.onChange)}setLoading(){this.setState({...this.state,loading:!0,cancelable:!0})}setLoaded(){this.setState({...this.state,loading:!1,cancelable:!1})}update(){let e,t=!0;this.setLoading(),e=this.props.endpoint?function(e,t){let n=Du(),i=(new ju).loading();return new Promise(((s,r)=>{let a=ql.get("/endpoint/"+e+"/log").query({resource:t}).set("Accept","application/json").set("Csrf-Token",hu).on("abort",(()=>{i.done(),s(null)}));Gv[n]=a,a.end(((e,t)=>(delete Gv[n],i.done(),t&&401===t.status?(window.location.href="/login",void s(null)):e?(cu(t,"Failed to load endpoint log"),void r(e)):void s(t.body))))}))}(this.props.endpoint,"kmsg"):function(e,t){let n=Du(),i=(new ju).loading();return new Promise(((s,r)=>{let a=ql.get("/checks/"+e+"/log").query({resource:t}).set("Accept","application/json").set("Csrf-Token",hu).on("abort",(()=>{i.done(),s(null)}));sy[n]=a,a.end(((e,t)=>(delete sy[n],i.done(),t&&401===t.status?(window.location.href="/login",void s(null)):e?(cu(t,"Failed to load check log"),void r(e)):void s(t.body))))}))}(this.props.check,"check"),e.then((e=>{t&&(t=!1,this.setLoaded()),this.setState({...this.state,data:e.join("")}),setTimeout((()=>{this.editor&&this.editor.scrollToLine(Number.POSITIVE_INFINITY,!1,!0,null)}),100),setTimeout((()=>{this.editor&&this.editor.scrollToLine(Number.POSITIVE_INFINITY,!1,!0,null)}),200),setTimeout((()=>{this.editor&&this.editor.scrollToLine(Number.POSITIVE_INFINITY,!1,!0,null)}),300),setTimeout((()=>{this.editor&&this.editor.scrollToLine(Number.POSITIVE_INFINITY,!1,!0,null)}),400)})).catch((()=>{t&&(t=!1,this.setLoaded())}))}render(){if(this.props.disabled)return qr.createElement("div",null);this.loaded||(this.loaded=!0,setTimeout((()=>{this.update()})));let e="";e=this.props.endpoint?"Dmesg":"Error Log";let t=!1,n="",i="bp3-button";return Object.entries(this.state.cancelable).length?(n="Cancel",i+=" bp3-intent-warning bp3-icon-delete"):(Object.entries(this.state.loading).length&&(t=!0),n="Refresh",i+=" bp3-intent-success bp3-icon-refresh"),qr.createElement("div",null,qr.createElement("div",{className:"layout horizontal wrap bp3-border",style:vy.header},qr.createElement("h3",{style:vy.heading},e),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:vy.buttons},qr.createElement("button",{className:i,style:vy.button,disabled:t,type:"button",onClick:()=>{Object.entries(this.state.cancelable).length?this.props.endpoint?Qv():cy():this.update()}},n))),qr.createElement("div",{className:"layout horizontal wrap",style:vy.editorGroup},qr.createElement(gy.ZP,{name:this.props.endpoint+"-dmesg",theme:"light"===uu?"eclipse":"dracula",height:"400px",width:"100%",mode:"text",fontSize:"12px",wrapEnabled:!0,showPrintMargin:!1,showGutter:!0,readOnly:!0,value:this.state.data,editorProps:{$blockScrolling:!0},setOptions:{showFoldWidgets:!1},onLoad:e=>{this.editor=e,this.editor.scrollToLine(Number.POSITIVE_INFINITY,!1,!1,null)},onChange:()=>{this.editor&&this.editor.scrollToLine(Number.POSITIVE_INFINITY,!1,!0,null)}})))}}const by={card:{position:"relative",padding:"48px 10px 0 10px",width:"100%"},remove:{position:"absolute",top:"5px",right:"5px"},item:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px",margin:"0 10px"},controlButton:{marginRight:"10px"},save:{paddingBottom:"10px"},button:{height:"30px"},buttons:{cursor:"pointer",position:"absolute",top:0,left:0,right:0,padding:"4px",height:"39px",backgroundColor:"rgba(0, 0, 0, 0.13)"},label:{width:"100%",maxWidth:"280px"},status:{margin:"6px 0 0 1px"},icon:{marginRight:"3px"},inputGroup:{width:"100%"},protocol:{flex:"0 1 auto"},port:{flex:"1"},select:{margin:"7px 0px 0px 6px",paddingTop:"3px"}};class _y extends qr.Component{constructor(e,t){super(e,t),this.onResetClientKey=()=>{this.setState({...this.state,disabled:!0}),qv({...this.props.endpoint,reset_client_key:!0}).then((()=>{this.setState({...this.state,message:"Client key reset",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,endpoint:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onSave=()=>{this.setState({...this.state,disabled:!0}),qv(this.state.endpoint).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,endpoint:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/endpoint/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>{if(t.done(),e)return cu(s,"Failed to delete endpoints"),void i(e);n()}))}))}(this.props.endpoint.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddRole=()=>{let e;e=this.state.changed?{...this.state.endpoint}:{...this.props.endpoint};let t=[...e.roles];this.state.addRole&&(-1===t.indexOf(this.state.addRole)&&t.push(this.state.addRole),t.sort(),e.roles=t,this.setState({...this.state,changed:!0,message:"",addRole:"",endpoint:e}))},this.state={disabled:!1,changed:!1,message:"",addRole:"",endpoint:null,showCharts:!0}}set(e,t){let n;n=this.state.changed?{...this.state.endpoint}:{...this.props.endpoint},n[e]=t,this.setState({...this.state,changed:!0,endpoint:n})}onRemoveRole(e){let t;t=this.state.changed?{...this.state.endpoint}:{...this.props.endpoint};let n=[...t.roles],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.roles=n,this.setState({...this.state,changed:!0,message:"",addRole:"",endpoint:t}))}render(){let e=this.state.endpoint||this.props.endpoint,t=[{label:"ID",value:this.props.endpoint.id||"None"}],n=e.data||{};if(n&&(n.version&&t.push({label:"Endpoint Version",value:n.version}),n.hostname&&t.push({label:"Hostname",value:n.hostname}),n.uptime&&t.push({label:"Uptime",value:Nu(n.uptime)}),n.platform&&t.push({label:"Platform",value:n.platform}),n.package_updates&&t.push({label:"System Package Updates",value:n.package_updates,valueClass:"bp3-text-intent-danger"}),n.virtualization&&t.push({label:"Virtualization",value:n.virtualization}),n.cpu_cores&&t.push({label:"CPU Cores",value:n.cpu_cores}),n.mem_total&&t.push({label:"Memory",value:n.mem_total+"MB"}),n.swap_total&&t.push({label:"Swap",value:n.swap_total+"MB"}),n.huge_total&&t.push({label:"HugePages",value:n.huge_total+"MB"})),e.data.md_stat&&e.data.md_stat.length){let n=0,i=0;for(let t of e.data.md_stat)n+=t.failed,i+=t.total;t.push({label:"Raid Devices",value:"Failed: "+n+" Total: "+i})}let i=[];for(let t of e.roles)i.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:by.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveRole(t)}})));let s=[];for(let t of Object.values(e.info.alerts))s.push(t);let r=[];for(let t of Object.values(e.info.checks))r.push(t);let a="",o="";return e.has_client_key||(a=e.client_key?e.id+"_"+e.client_key.secret:"unknown",o="pritunl://"+window.location.host+"/"+a),qr.createElement("td",{className:"bp3-cell",colSpan:3,style:by.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:by.group},qr.createElement("div",{className:"layout horizontal tab-close",style:by.buttons,onClick:e=>{-1!==e.target.className.indexOf("tab-close")&&this.props.onClose()}},qr.createElement("div",null,qr.createElement("label",{className:"bp3-control bp3-checkbox",style:by.select},qr.createElement("input",{type:"checkbox",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator"}))),qr.createElement("div",{className:"flex tab-close"}),qr.createElement(Zu,{safe:!0,className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Endpoint",confirmMsg:"Permanently delete this endpoint",confirmInput:!0,items:[e.name],disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{label:"Name",help:"Name of endpoint",type:"text",placeholder:"Enter name",value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement(Cm,{hidden:e.has_client_key,disabled:this.state.disabled,readOnly:!0,autoSelect:!0,label:"Registration Key",help:"Key for endpoint registration",type:"text",placeholder:"",value:a}),qr.createElement("label",{className:"bp3-label"},"Roles",qr.createElement(Mm,{title:"Roles",content:"The user roles that will be allowed access to this endpoint. At least one role must match for the user to access the endpoint."}),qr.createElement("div",null,i)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add role",value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement(Sm,{label:"Show charts and dmesg",help:"Show endpoint charts and dmesg.",checked:this.state.showCharts,hidden:!n.hostname,onToggle:()=>{this.setState({...this.state,showCharts:!this.state.showCharts})}}),qr.createElement(Xp,{fields:[{label:"Alerts",value:s.length?s:"-"},{label:"Health Checks",value:r.length?r:"-"}]})),qr.createElement("div",{style:by.group},qr.createElement(Xp,{fields:t}),qr.createElement(Cm,{hidden:e.has_client_key,disabled:this.state.disabled,readOnly:!0,autoSelect:!0,label:"Registration URI",help:"URI for endpoint registration",type:"text",placeholder:"",value:o}))),qr.createElement(fy,{endpoint:e.id,disabled:!n.hostname||!this.state.showCharts}),qr.createElement(yy,{endpoint:e.id,disabled:!n.hostname||!this.state.showCharts}),qr.createElement(km,{style:by.save,hidden:!this.state.endpoint&&!this.state.message,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,endpoint:null})},onSave:this.onSave},qr.createElement(Zu,{label:"Reset Key",className:"bp3-intent-danger bp3-icon-key",progressClassName:"bp3-intent-danger",style:by.controlButton,hidden:!e.has_client_key,disabled:this.state.disabled,safe:!0,onConfirm:()=>{this.onResetClientKey()}})))}}const My={card:{display:"table-row",width:"100%",padding:0,boxShadow:"none",cursor:"pointer"},cardOpen:{display:"table-row",width:"100%",padding:0,boxShadow:"none",position:"relative"},select:{margin:"2px 0 0 0",paddingTop:"3px",minHeight:"18px"},name:{verticalAlign:"top",display:"table-cell",padding:"8px"},nameSpan:{margin:"1px 5px 0 0"},item:{verticalAlign:"top",display:"table-cell",padding:"9px",whiteSpace:"nowrap"},roles:{verticalAlign:"top",display:"table-cell",padding:"0 8px 8px 8px"},icon:{marginTop:"1px",marginRight:"3px"},tag:{margin:"8px 5px 0 5px",height:"20px"},bars:{verticalAlign:"top",display:"table-cell",padding:"8px",width:"30px"},bar:{height:"6px",marginBottom:"1px"},barLast:{height:"6px"}};class wy extends qr.Component{render(){let e=this.props.endpoint;if(this.props.open)return qr.createElement("div",{className:"bp3-card bp3-row",style:My.cardOpen},qr.createElement(_y,{endpoint:this.props.endpoint,authorities:this.props.authorities,selected:this.props.selected,onSelect:this.props.onSelect,onClose:()=>{this.props.onOpen()}}));let t,n={...My.card},i=[];for(let t of e.roles)i.push(qr.createElement("div",{className:"bp3-tag bp3-intent-primary",style:My.tag,key:t},t));return e.data.package_updates&&(t=qr.createElement(Nd,{content:"System package updates available",position:ga,openOnTargetFocus:!1},qr.createElement("span",{style:My.icon,className:"bp3-icon-standard bp3-text-muted bp3-intent-danger bp3-icon-updated"}))),qr.createElement("div",{className:"bp3-card bp3-row",style:n,onClick:e=>{-1===e.target.className.indexOf("open-ignore")&&this.props.onOpen()}},qr.createElement("div",{className:"bp3-cell",style:My.name},qr.createElement("div",{className:"layout horizontal"},qr.createElement("label",{className:"bp3-control bp3-checkbox open-ignore",style:My.select},qr.createElement("input",{type:"checkbox",className:"open-ignore",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator open-ignore"})),qr.createElement("div",{style:My.nameSpan},e.name))),qr.createElement("div",{className:"bp3-cell",style:My.item},t),qr.createElement("div",{className:"flex bp3-cell",style:My.roles},i))}}const Sy={filters:{margin:"-15px 0 5px 0"},input:{width:"200px",margin:"5px"},role:{width:"150px",margin:"5px"},type:{margin:"5px"},check:{margin:"12px 5px 8px 5px"}};class Ly extends qr.Component{constructor(e,t){super(e,t),this.state={menu:!1}}render(){return null===this.props.filter?qr.createElement("div",null):qr.createElement("div",{className:"layout horizontal wrap",style:Sy.filters},qr.createElement(Lp,{style:Sy.input,placeholder:"Endpoint ID",value:this.props.filter.id,onChange:e=>{let t={...this.props.filter};e?t.id=e:delete t.id,this.props.onFilter(t)}}),qr.createElement(Lp,{style:Sy.input,placeholder:"Name",value:this.props.filter.name,onChange:e=>{let t={...this.props.filter};e?t.name=e:delete t.name,this.props.onFilter(t)}}),qr.createElement(Lp,{style:Sy.role,placeholder:"Role",value:this.props.filter.role,onChange:e=>{let t={...this.props.filter};e?t.role=e:delete t.role,this.props.onFilter(t)}}))}}const ky={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class xy extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:Bv.page,pageCount:Bv.pageCount,pages:Bv.pages,count:Bv.count})},this.state={page:Bv.page,pageCount:Bv.pageCount,pages:Bv.pages,count:Bv.count}}componentDidMount(){Bv.addChangeListener(this.onChange)}componentWillUnmount(){Bv.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{Kv(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{Kv(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:ky.button,disabled:0===e,type:"button",onClick:()=>{Kv(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:ky.button,disabled:e===t-1,type:"button",onClick:()=>{Kv(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{Kv(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const Cy={items:{width:"100%",marginTop:"-5px",display:"table",borderSpacing:"0 5px"},itemsBox:{width:"100%",overflowY:"auto"},placeholder:{opacity:0,width:"100%"},header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"}};class Ty extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{let e=Bv.endpoints,t={},n=this.state.selected,i={},s=this.state.opened;e.forEach((e=>{n[e.id]&&(t[e.id]=!0),s[e.id]&&(i[e.id]=!0)})),this.setState({...this.state,endpoints:e,filter:Bv.filter,authorities:Ig.authorities,selected:t,opened:i})},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/endpoint").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete endpoints"),void i(e)):void n())))}))}(Object.keys(this.state.selected)).then((()=>{this.setState({...this.state,selected:{},disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={endpoints:Bv.endpoints,filter:Bv.filter,authorities:Ig.authorities,selected:{},opened:{},newOpened:!1,lastSelected:null,disabled:!1}}get selected(){return!!Object.keys(this.state.selected).length}get opened(){return!!Object.keys(this.state.opened).length}componentDidMount(){Bv.addChangeListener(this.onChange),Ig.addChangeListener(this.onChange),Uv(),ev()}componentWillUnmount(){Bv.removeChangeListener(this.onChange),Ig.removeChangeListener(this.onChange)}render(){let e=[];this.state.endpoints.forEach((t=>{e.push(qr.createElement(wy,{key:t.id,endpoint:t,authorities:this.state.authorities,selected:!!this.state.selected[t.id],open:!!this.state.opened[t.id],onSelect:e=>{let n={...this.state.selected};if(e){let e,i,s=this.state.endpoints;for(let n=0;ni&&(i=[e,e=i][0]);for(let t=e;t<=i;t++)n[s[t].id]=!0;return void this.setState({...this.state,lastSelected:t.id,selected:n})}}n[t.id]?delete n[t.id]:n[t.id]=!0,this.setState({...this.state,lastSelected:t.id,selected:n})},onOpen:()=>{let e={...this.state.opened};e[t.id]?delete e[t.id]:e[t.id]=!0,this.setState({...this.state,opened:e})}}))}));let t="bp3-button bp3-intent-primary bp3-icon-filter ";this.state.filter&&(t+="bp3-active");let n=[];for(let e of Object.keys(this.state.selected)){let t=Bv.endpoint(e);t?n.push(t.name||e):n.push(e)}return qr.createElement(Ep,{wide:!0},qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Cy.header},qr.createElement("h2",{style:Cy.heading},"Endpoints"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Cy.buttons},qr.createElement("button",{className:t,style:Cy.button,type:"button",onClick:()=>{null===this.state.filter?Xv({}):Xv(null)}},"Filters"),qr.createElement("button",{className:"bp3-button bp3-intent-warning bp3-icon-chevron-up",style:Cy.button,disabled:!this.opened,type:"button",onClick:()=>{this.setState({...this.state,opened:{}})}},"Collapse All"),qr.createElement(Zu,{label:"Delete Selected",className:"bp3-intent-danger bp3-icon-delete",progressClassName:"bp3-intent-danger",safe:!0,style:Cy.button,confirmMsg:"Permanently delete the selected endpoints",confirmInput:!0,items:n,disabled:!this.selected||this.state.disabled,onConfirm:this.onDelete}),qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Cy.button,disabled:this.state.disabled,type:"button",onClick:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/endpoint").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create endpoint"),void i(e)):void n())))}))}({id:null}).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"New")))),qr.createElement(Ly,{filter:this.state.filter,onFilter:e=>{Xv(e)},authorities:this.state.authorities}),qr.createElement("div",{style:Cy.itemsBox},qr.createElement("div",{style:Cy.items},e,qr.createElement("tr",{className:"bp3-card bp3-row",style:Cy.placeholder},qr.createElement("td",{colSpan:5,style:Cy.placeholder})))),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-shield",title:"No endpoints",description:"Add a new endpoint to get started."}),qr.createElement(xy,{onPage:()=>{this.setState({...this.state,selected:{},lastSelected:null})}}))}}const Ey="alert.sync",zy="alert.traverse",Ay="alert.filter";const Hy=new class extends Mu{constructor(){super(...arguments),this._alerts=Object.freeze([]),this._filter=null,this._map={},this._token=bu.register(this._callback.bind(this))}get alerts(){return this._alerts}get alertsM(){let e=[];return this._alerts.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||20}get pages(){return Math.ceil(this.count/this.pageCount)}get filter(){return this._filter}get count(){return this._count||0}alert(e){let t=this._map[e];return void 0===t?null:this._alerts[t]}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_filterCallback(e){(null!==this._filter&&null===e||this._filter==={}&&null!==e||e&&this._filter&&e.name!==this._filter.name)&&this._traverse(0),this._filter=e,this.emitChange()}_sync(e,t){this._map={};for(let t=0;t{ql.get("/alert").query({...Hy.filter,page:Hy.page,page_count:Hy.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===Dy){if(s)return cu(r,"Failed to load alerts"),void i(s);bu.dispatch({type:Ey,data:{alerts:r.body.alerts,count:r.body.count}}),n()}else n()}))}))}function Oy(e){return bu.dispatch({type:zy,data:{page:e}}),Py()}function Yy(e){return bu.dispatch({type:Ay,data:{filter:e}}),Py()}Hu.register((e=>{if("alert.change"===e.type)Py()}));const Ry={card:{position:"relative",padding:"48px 10px 0 10px",width:"100%"},remove:{position:"absolute",top:"5px",right:"5px"},item:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px",margin:"0 10px"},controlButton:{marginRight:"10px"},save:{paddingBottom:"10px"},button:{height:"30px"},buttons:{cursor:"pointer",position:"absolute",top:0,left:0,right:0,padding:"4px",height:"39px",backgroundColor:"rgba(0, 0, 0, 0.13)"},label:{width:"100%",maxWidth:"280px"},status:{margin:"6px 0 0 1px"},icon:{marginRight:"3px"},inputGroup:{width:"100%"},protocol:{flex:"0 1 auto"},port:{flex:"1"},select:{margin:"7px 0px 0px 6px",paddingTop:"3px"},header:{fontSize:"20px",marginTop:"-10px",paddingBottom:"2px",marginBottom:"10px",borderBottomStyle:"solid"},heading:{margin:"19px 0 0 0"},alertsButtons:{marginTop:"8px"},alertsAdd:{margin:"8px 0 0 8px"}};class Vy extends qr.Component{constructor(e,t){super(e,t),this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/alert/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save alert"),void i(e)):void n())))}))}(this.state.alert).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,alert:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/alert/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>{if(t.done(),e)return cu(s,"Failed to delete alerts"),void i(e);n()}))}))}(this.props.alert.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddRole=()=>{let e;e=this.state.changed?{...this.state.alert}:{...this.props.alert};let t=[...e.roles];this.state.addRole&&(-1===t.indexOf(this.state.addRole)&&t.push(this.state.addRole),t.sort(),e.roles=t,this.setState({...this.state,changed:!0,message:"",addRole:"",alert:e}))},this.onAddIgnore=()=>{let e;e=this.state.changed?{...this.state.alert}:{...this.props.alert};let t=[...e.ignores||[]];this.state.addIgnore&&(-1===t.indexOf(this.state.addIgnore)&&t.push(this.state.addIgnore),t.sort(),e.ignores=t,this.setState({...this.state,changed:!0,message:"",addIgnore:"",alert:e}))},this.state={disabled:!1,changed:!1,message:"",addRole:"",addIgnore:"",alert:null}}set(e,t){let n;n=this.state.changed?{...this.state.alert}:{...this.props.alert},n[e]=t,this.setState({...this.state,changed:!0,alert:n})}onRemoveRole(e){let t;t=this.state.changed?{...this.state.alert}:{...this.props.alert};let n=[...t.roles],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.roles=n,this.setState({...this.state,changed:!0,message:"",addRole:"",alert:t}))}onRemoveIgnore(e){let t;t=this.state.changed?{...this.state.alert}:{...this.props.alert};let n=[...t.ignores||[]],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.ignores=n,this.setState({...this.state,changed:!0,message:"",addIgnore:"",alert:t}))}render(){let e=this.state.alert||this.props.alert,t=[{label:"ID",value:this.props.alert.id||"None"}],n=[];for(let t of e.roles)n.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Ry.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveRole(t)}})));let i=[];for(let t of e.ignores||[])i.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Ry.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveIgnore(t)}})));let s=!1,r=!1,a="",o="",l=!1,c="",h="",d="";switch(e.resource){case"system_cpu_level":s=!0,a="Usage Threshold",o="Maximum percent CPU usage as integer before alert is triggered.";break;case"system_memory_level":s=!0,a="Usage Threshold",o="Maximum percent memory usage as integer before alert is triggered.";break;case"system_swap_level":s=!0,a="Usage Threshold",o="Maximum percent swap usage as integer before alert is triggered.";break;case"system_hugepages_level":s=!0,a="Usage Threshold",o="Maximum percent hugepages usage as integer before alert is triggered.";break;case"system_md_failed":case"check_http_failed":s=!1,r=!1;break;case"disk_usage_level":l=!0,c="Ignore Disk Paths",h="Ignore Disk Paths",d="Path of disk devices to ignore.",s=!0,a="Usage Threshold",o="Maximum percent disk space usage as integer before alert is triggered.";break;case"kmsg_keyword":r=!0,a="Dmesg Keyword Match",o="Case insensitive dmesg match string to trigger alert."}return qr.createElement("td",{className:"bp3-cell",colSpan:2,style:Ry.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Ry.group},qr.createElement("div",{className:"layout horizontal tab-close",style:Ry.buttons,onClick:e=>{-1!==e.target.className.indexOf("tab-close")&&this.props.onClose()}},qr.createElement("div",null,qr.createElement("label",{className:"bp3-control bp3-checkbox",style:Ry.select},qr.createElement("input",{type:"checkbox",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator"}))),qr.createElement("div",{className:"flex tab-close"}),qr.createElement(Zu,{safe:!0,className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Alert",confirmMsg:"Permanently delete this alert",confirmInput:!0,items:[e.name],disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{disabled:this.state.disabled,label:"Name",help:"Name of alert",type:"text",placeholder:"Enter name",value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement("label",{className:"bp3-label"},"Roles",qr.createElement(Mm,{title:"Roles",content:"The user roles that will be allowed access to this alert. At least one role must match for the user to access the alert."}),qr.createElement("div",null,n)),qr.createElement(tf,{disabled:this.state.disabled,buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add role",value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement(sf,{disabled:this.state.disabled,label:"Alert Type",help:"Type of alert",value:e.resource,onChange:e=>{this.set("resource",e)}},qr.createElement("option",{value:"system_cpu_level"},"CPU Usage Threshold"),qr.createElement("option",{value:"system_memory_level"},"Memory Usage Threshold"),qr.createElement("option",{value:"system_swap_level"},"Swap Usage Threshold"),qr.createElement("option",{value:"system_hugepages_level"},"HugePages Usage Threshold"),qr.createElement("option",{value:"system_md_failed"},"MD RAID Device Failed"),qr.createElement("option",{value:"disk_usage_level"},"Disk Usage Threshold"),qr.createElement("option",{value:"kmsg_keyword"},"Dmesg Keyword Match"),qr.createElement("option",{value:"check_http_failed"},"HTTP Health Check Failed")),qr.createElement("label",{className:"bp3-label",hidden:!l},c,qr.createElement(Mm,{title:h,content:d}),qr.createElement("div",null,i)),qr.createElement(tf,{disabled:this.state.disabled,buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add ignore",value:this.state.addIgnore,hidden:!l,onChange:e=>{this.setState({...this.state,addIgnore:e})},onSubmit:this.onAddIgnore})),qr.createElement("div",{style:Ry.group},qr.createElement(Xp,{fields:t}),qr.createElement(Cm,{disabled:this.state.disabled,label:a,help:o,type:"text",placeholder:"Default",value:e.value_int,hidden:!s,onChange:e=>{this.set("value_int",parseInt(e,10))}}),qr.createElement(Cm,{disabled:this.state.disabled,label:a,help:o,type:"text",placeholder:"Default",value:e.value_str,hidden:!r,onChange:e=>{this.set("value_str",e)}}),qr.createElement(sf,{disabled:this.state.disabled,label:"Alert Level",help:"Level of alert, used for matching device notifications. An endpoint role must also match a user role for ntofications.",value:(e.level||0).toString(),onChange:e=>{this.set("level",parseInt(e,10))}},qr.createElement("option",{value:"1"},"Low"),qr.createElement("option",{value:"5"},"Medium"),qr.createElement("option",{value:"10"},"High")),qr.createElement(Cm,{disabled:this.state.disabled,label:"Alert Frequency",help:"Minimum duration in seconds between repeat alerts.",type:"text",placeholder:"Enter frequency",value:e.frequency,onChange:e=>{this.set("frequency",parseInt(e,10))}}))),qr.createElement(km,{style:Ry.save,hidden:!this.state.alert&&!this.state.message,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,alert:null})},onSave:this.onSave}))}}const Ny={card:{display:"table-row",width:"100%",padding:0,boxShadow:"none",cursor:"pointer"},cardOpen:{display:"table-row",width:"100%",padding:0,boxShadow:"none",position:"relative"},select:{margin:"2px 0 0 0",paddingTop:"3px",minHeight:"18px"},name:{verticalAlign:"top",display:"table-cell",padding:"8px"},nameSpan:{margin:"1px 5px 0 0"},item:{verticalAlign:"top",display:"table-cell",padding:"9px",whiteSpace:"nowrap"},roles:{verticalAlign:"top",display:"table-cell",padding:"0 8px 8px 8px"},icon:{marginRight:"3px"},tag:{margin:"8px 5px 0 5px",height:"20px"},bars:{verticalAlign:"top",display:"table-cell",padding:"8px",width:"30px"},bar:{height:"6px",marginBottom:"1px"},barLast:{height:"6px"}};class $y extends qr.Component{render(){let e=this.props.alert;if(this.props.open)return qr.createElement("div",{className:"bp3-card bp3-row",style:Ny.cardOpen},qr.createElement(Vy,{alert:this.props.alert,authorities:this.props.authorities,selected:this.props.selected,onSelect:this.props.onSelect,onClose:()=>{this.props.onOpen()}}));let t={...Ny.card},n=[];for(let t of e.roles)n.push(qr.createElement("div",{className:"bp3-tag bp3-intent-primary",style:Ny.tag,key:t},t));return qr.createElement("div",{className:"bp3-card bp3-row",style:t,onClick:e=>{-1===e.target.className.indexOf("open-ignore")&&this.props.onOpen()}},qr.createElement("div",{className:"bp3-cell",style:Ny.name},qr.createElement("div",{className:"layout horizontal"},qr.createElement("label",{className:"bp3-control bp3-checkbox open-ignore",style:Ny.select},qr.createElement("input",{type:"checkbox",className:"open-ignore",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator open-ignore"})),qr.createElement("div",{style:Ny.nameSpan},e.name))),qr.createElement("div",{className:"flex bp3-cell",style:Ny.roles},n))}}const Iy={filters:{margin:"-15px 0 5px 0"},input:{width:"200px",margin:"5px"},role:{width:"150px",margin:"5px"},type:{margin:"5px"},check:{margin:"12px 5px 8px 5px"}};class Fy extends qr.Component{constructor(e,t){super(e,t),this.state={menu:!1}}render(){return null===this.props.filter?qr.createElement("div",null):qr.createElement("div",{className:"layout horizontal wrap",style:Iy.filters},qr.createElement(Lp,{style:Iy.input,placeholder:"Alert ID",value:this.props.filter.id,onChange:e=>{let t={...this.props.filter};e?t.id=e:delete t.id,this.props.onFilter(t)}}),qr.createElement(Lp,{style:Iy.input,placeholder:"Name",value:this.props.filter.name,onChange:e=>{let t={...this.props.filter};e?t.name=e:delete t.name,this.props.onFilter(t)}}),qr.createElement(Lp,{style:Iy.role,placeholder:"Role",value:this.props.filter.role,onChange:e=>{let t={...this.props.filter};e?t.role=e:delete t.role,this.props.onFilter(t)}}))}}const jy={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class By extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:Hy.page,pageCount:Hy.pageCount,pages:Hy.pages,count:Hy.count})},this.state={page:Hy.page,pageCount:Hy.pageCount,pages:Hy.pages,count:Hy.count}}componentDidMount(){Hy.addChangeListener(this.onChange)}componentWillUnmount(){Hy.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{Oy(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{Oy(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:jy.button,disabled:0===e,type:"button",onClick:()=>{Oy(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:jy.button,disabled:e===t-1,type:"button",onClick:()=>{Oy(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{Oy(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const Wy={items:{width:"100%",marginTop:"-5px",display:"table",borderSpacing:"0 5px"},itemsBox:{width:"100%",overflowY:"auto"},placeholder:{opacity:0,width:"100%"},header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"}};class Gy extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{let e=Hy.alerts,t={},n=this.state.selected,i={},s=this.state.opened;e.forEach((e=>{n[e.id]&&(t[e.id]=!0),s[e.id]&&(i[e.id]=!0)})),this.setState({...this.state,alerts:e,filter:Hy.filter,authorities:Ig.authorities,selected:t,opened:i})},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/alert").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete alerts"),void i(e)):void n())))}))}(Object.keys(this.state.selected)).then((()=>{this.setState({...this.state,selected:{},disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={alerts:Hy.alerts,filter:Hy.filter,authorities:Ig.authorities,selected:{},opened:{},newOpened:!1,lastSelected:null,disabled:!1}}get selected(){return!!Object.keys(this.state.selected).length}get opened(){return!!Object.keys(this.state.opened).length}componentDidMount(){Hy.addChangeListener(this.onChange),Ig.addChangeListener(this.onChange),Py(),ev()}componentWillUnmount(){Hy.removeChangeListener(this.onChange),Ig.removeChangeListener(this.onChange)}render(){let e=[];this.state.alerts.forEach((t=>{e.push(qr.createElement($y,{key:t.id,alert:t,authorities:this.state.authorities,selected:!!this.state.selected[t.id],open:!!this.state.opened[t.id],onSelect:e=>{let n={...this.state.selected};if(e){let e,i,s=this.state.alerts;for(let n=0;ni&&(i=[e,e=i][0]);for(let t=e;t<=i;t++)n[s[t].id]=!0;return void this.setState({...this.state,lastSelected:t.id,selected:n})}}n[t.id]?delete n[t.id]:n[t.id]=!0,this.setState({...this.state,lastSelected:t.id,selected:n})},onOpen:()=>{let e={...this.state.opened};e[t.id]?delete e[t.id]:e[t.id]=!0,this.setState({...this.state,opened:e})}}))}));let t="bp3-button bp3-intent-primary bp3-icon-filter ";this.state.filter&&(t+="bp3-active");let n=[];for(let e of Object.keys(this.state.selected)){let t=Hy.alert(e);t?n.push(t.name||e):n.push(e)}return qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Wy.header},qr.createElement("h2",{style:Wy.heading},"Alerts"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Wy.buttons},qr.createElement("button",{className:t,style:Wy.button,type:"button",onClick:()=>{null===this.state.filter?Yy({}):Yy(null)}},"Filters"),qr.createElement("button",{className:"bp3-button bp3-intent-warning bp3-icon-chevron-up",style:Wy.button,disabled:!this.opened,type:"button",onClick:()=>{this.setState({...this.state,opened:{}})}},"Collapse All"),qr.createElement(Zu,{label:"Delete Selected",className:"bp3-intent-danger bp3-icon-delete",progressClassName:"bp3-intent-danger",safe:!0,style:Wy.button,confirmMsg:"Permanently delete the selected alerts",confirmInput:!0,items:n,disabled:!this.selected||this.state.disabled,onConfirm:this.onDelete}),qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Wy.button,disabled:this.state.disabled,type:"button",onClick:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/alert").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create alert"),void i(e)):void n())))}))}({id:null}).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"New")))),qr.createElement(Fy,{filter:this.state.filter,onFilter:e=>{Yy(e)},authorities:this.state.authorities}),qr.createElement("div",{style:Wy.itemsBox},qr.createElement("div",{style:Wy.items},e,qr.createElement("tr",{className:"bp3-card bp3-row",style:Wy.placeholder},qr.createElement("td",{colSpan:5,style:Wy.placeholder})))),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-notifications",title:"No alerts",description:"Add a new alert to get started."}),qr.createElement(By,{onPage:()=>{this.setState({...this.state,selected:{},lastSelected:null})}}))}}const Uy={header:{fontSize:"20px",marginTop:"-10px",paddingBottom:"2px",marginBottom:"10px",borderBottomStyle:"solid"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"},group:{flex:1,minWidth:"250px",margin:"0 10px"},chartGroup:{flex:1,minWidth:"250px",margin:"0 10px",marginBottom:"15px"}};class Ky extends qr.Component{constructor(e,t){super(e,t),this.state={sync:0,period:1440,interval:30,loading:{},cancelable:{}},this.loading={},this.chartBoxRef=qr.createRef()}getDefaultInterval(e){switch(e){case 60:return 1;case 180:case 360:return 5;case 720:case 1440:return 30;case 4320:return 60;case 10080:return 120;case 20160:default:return 360;case 43200:return 720;case 86400:case 129600:return 1440;case 172800:return 4320}}setLoading(e){this.loading[e]=!0;let t={...this.state.loading};t[e]=!0,setTimeout((()=>{if(this.loading[e]){let t={...this.state.cancelable};t[e]=!0,this.setState({...this.state,cancelable:t})}}),3e3),this.setState({...this.state,loading:t})}setLoaded(e){delete this.loading[e];let t={...this.state.loading};delete t[e];let n={...this.state.cancelable};delete n[e],this.setState({...this.state,loading:t,cancelable:n})}render(){if(this.props.disabled)return qr.createElement("div",null);let e=0,t=0;this.state.period>43200?e=120:this.state.period>20160?e=30:this.state.period>4320&&(e=5),t=this.state.period<=60?30:this.state.period<=180?60:this.state.period<=360?120:this.state.period<=720?360:this.state.period<=1440?720:this.state.period<=4320?1440:this.state.period<=10080?4320:10080;let n=!1,i="",s="bp3-button";return Object.entries(this.state.cancelable).length?(i="Cancel",s+=" bp3-intent-warning bp3-icon-delete"):(Object.entries(this.state.loading).length&&(n=!0),i="Refresh",s+=" bp3-intent-success bp3-icon-refresh"),qr.createElement("div",{ref:this.chartBoxRef},qr.createElement("div",{className:"layout horizontal wrap bp3-border",style:Uy.header},qr.createElement("h3",{style:Uy.heading},"Charts"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Uy.buttons},qr.createElement("button",{className:s,style:Uy.button,disabled:n,type:"button",onClick:()=>{Object.entries(this.state.cancelable).length?cy():this.setState({...this.state,sync:this.state.sync+1})}},i))),qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Uy.group},qr.createElement(sf,{label:"Time Range",help:"Select chart time range.",value:this.state.period.toString(),onChange:e=>{let t=parseInt(e,10);this.setState({...this.state,period:t,interval:this.getDefaultInterval(t)})}},qr.createElement("option",{value:"60"},"1 hour"),qr.createElement("option",{value:"180"},"3 hours"),qr.createElement("option",{value:"360"},"6 hours"),qr.createElement("option",{value:"720"},"12 hours"),qr.createElement("option",{value:"1440"},"24 hours"),qr.createElement("option",{value:"4320"},"3 days"),qr.createElement("option",{value:"10080"},"7 days"),qr.createElement("option",{value:"20160"},"14 days"),qr.createElement("option",{value:"43200"},"30 days"),qr.createElement("option",{value:"86400"},"60 days"),qr.createElement("option",{value:"129600",hidden:!0},"90 days"),qr.createElement("option",{value:"172800",hidden:!0},"120 days"))),qr.createElement("div",{style:Uy.group},qr.createElement(sf,{label:"Interval",help:"Select chart interval.",value:this.state.interval.toString(),onChange:e=>{this.setState({...this.state,interval:parseInt(e,10)})}},qr.createElement("option",{value:"1",hidden:1t},"1 minute"),qr.createElement("option",{value:"5",hidden:5t},"5 minutes"),qr.createElement("option",{value:"30",hidden:30t},"30 minutes"),qr.createElement("option",{value:"60",hidden:60t},"1 hour"),qr.createElement("option",{value:"120",hidden:120t},"2 hours"),qr.createElement("option",{value:"360",hidden:360t},"6 hours"),qr.createElement("option",{value:"720",hidden:720t},"12 hours"),qr.createElement("option",{value:"1440",hidden:1440t},"24 hours"),qr.createElement("option",{value:"4320",hidden:4320t},"3 days"),qr.createElement("option",{value:"10080",hidden:10080t},"7 days")))),qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Uy.chartGroup},qr.createElement(py,{check:this.props.check,resource:"check0",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!0,onLoading:()=>{this.setLoading("check0")},onLoaded:()=>{this.setLoaded("check0")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()})),qr.createElement("div",{style:Uy.chartGroup},qr.createElement(py,{check:this.props.check,resource:"check1",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!1,onLoading:()=>{this.setLoading("check1")},onLoaded:()=>{this.setLoaded("check1")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()}))),qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Uy.chartGroup},qr.createElement(py,{check:this.props.check,resource:"check2",sync:this.state.sync,period:this.state.period,interval:this.state.interval,left:!0,onLoading:()=>{this.setLoading("check2")},onLoaded:()=>{this.setLoaded("check2")},getBoxRect:()=>this.chartBoxRef.current.getBoundingClientRect()}))))}}const Xy={group:{width:"100%",maxWidth:"310px",marginTop:"5px"},header:{width:"100%",borderRadius:"0 3px 3px 0"},headerBox:{flex:"1"}};class qy extends qr.Component{clone(){return{...this.props.header}}render(){let e=this.props.header;return qr.createElement("div",{className:"bp3-control-group",style:Xy.group},qr.createElement("div",{style:Xy.headerBox},qr.createElement("input",{className:"bp3-input",style:Xy.header,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Key",value:e.key||"",onChange:e=>{let t=this.clone();t.key=e.target.value,this.props.onChange(t)}})),qr.createElement("div",{style:Xy.headerBox},qr.createElement("input",{className:"bp3-input",style:Xy.header,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Value",value:e.value||"",onChange:e=>{let t=this.clone();t.value=e.target.value,this.props.onChange(t)}})),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-intent-danger bp3-icon-remove",onClick:()=>{this.props.onRemove()}}))}}const Jy={card:{position:"relative",padding:"48px 10px 0 10px",width:"100%"},remove:{position:"absolute",top:"5px",right:"5px"},item:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px",margin:"0 10px"},controlButton:{marginRight:"10px"},save:{paddingBottom:"10px"},button:{height:"30px"},buttons:{cursor:"pointer",position:"absolute",top:0,left:0,right:0,padding:"4px",height:"39px",backgroundColor:"rgba(0, 0, 0, 0.13)"},label:{width:"100%",maxWidth:"280px"},status:{margin:"6px 0 0 1px"},icon:{marginRight:"3px"},inputGroup:{width:"100%"},protocol:{flex:"0 1 auto"},port:{flex:"1"},select:{margin:"7px 0px 0px 6px",paddingTop:"3px"},header:{fontSize:"20px",marginTop:"-10px",paddingBottom:"2px",marginBottom:"10px",borderBottomStyle:"solid"},heading:{margin:"19px 0 0 0"},checksButtons:{marginTop:"8px"},checksAdd:{margin:"8px 0 0 8px"}};class Qy extends qr.Component{constructor(e,t){super(e,t),this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/checks/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save check"),void i(e)):void n())))}))}(this.state.check).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,check:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/checks/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>{if(t.done(),e)return cu(s,"Failed to delete checks"),void i(e);n()}))}))}(this.props.check.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddRole=()=>{let e;e=this.state.changed?{...this.state.check}:{...this.props.check};let t=[...e.roles];this.state.addRole&&(-1===t.indexOf(this.state.addRole)&&t.push(this.state.addRole),t.sort(),e.roles=t,this.setState({...this.state,changed:!0,message:"",addRole:"",check:e}))},this.onAddTarget=()=>{let e;e=this.state.changed?{...this.state.check}:{...this.props.check};let t=[...e.targets||[]];this.state.addTarget&&(-1===t.indexOf(this.state.addTarget)&&t.push(this.state.addTarget),t.sort(),e.targets=t,this.setState({...this.state,changed:!0,message:"",addTarget:"",check:e}))},this.onAddHeader=()=>{let e;e=this.state.changed?{...this.state.check}:{...this.props.check};let t=[...e.headers,{}];e.headers=t,this.setState({...this.state,changed:!0,message:"",check:e})},this.state={disabled:!1,changed:!1,message:"",addRole:"",addTarget:"",check:null}}set(e,t){let n;n=this.state.changed?{...this.state.check}:{...this.props.check},n[e]=t,this.setState({...this.state,changed:!0,check:n})}onRemoveRole(e){let t;t=this.state.changed?{...this.state.check}:{...this.props.check};let n=[...t.roles],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.roles=n,this.setState({...this.state,changed:!0,message:"",addRole:"",check:t}))}onRemoveTarget(e){let t;t=this.state.changed?{...this.state.check}:{...this.props.check};let n=[...t.targets||[]],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.targets=n,this.setState({...this.state,changed:!0,message:"",addTarget:"",check:t}))}onChangeHeader(e,t){let n;n=this.state.changed?{...this.state.check}:{...this.props.check};let i=[...n.headers];i[e]=t,n.headers=i,this.setState({...this.state,changed:!0,message:"",check:n})}onRemoveHeader(e){let t;t=this.state.changed?{...this.state.check}:{...this.props.check};let n=[...t.headers];n.splice(e,1),t.headers=n,this.setState({...this.state,changed:!0,message:"",check:t})}render(){let e=this.state.check||this.props.check,t=[{label:"ID",value:this.props.check.id||"None"}],n=[];for(let t of e.roles)n.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Jy.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveRole(t)}})));let i=[];for(let t of e.targets||[])i.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Jy.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveTarget(t)}})));let s="",r="",a="";s="Targets",r="Targets",a="Targets for health check. For most configurations each target should be placed in a separate check.";let o=[];if("http"===e.type)for(let t=0;t{this.onChangeHeader(n,e)},onRemove:()=>{this.onRemoveHeader(n)}}))}return qr.createElement("td",{className:"bp3-cell",colSpan:2,style:Jy.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Jy.group},qr.createElement("div",{className:"layout horizontal tab-close",style:Jy.buttons,onClick:e=>{-1!==e.target.className.indexOf("tab-close")&&this.props.onClose()}},qr.createElement("div",null,qr.createElement("label",{className:"bp3-control bp3-checkbox",style:Jy.select},qr.createElement("input",{type:"checkbox",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator"}))),qr.createElement("div",{className:"flex tab-close"}),qr.createElement(Zu,{safe:!0,className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Check",confirmMsg:"Permanently delete this check",confirmInput:!0,items:[e.name],disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{disabled:this.state.disabled,label:"Name",help:"Name of check",type:"text",placeholder:"Enter name",value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement("label",{className:"bp3-label"},"Roles",qr.createElement(Mm,{title:"Roles",content:"The user roles that will be allowed access to this check. At least one role must match for the user to access the check."}),qr.createElement("div",null,n)),qr.createElement(tf,{disabled:this.state.disabled,buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add role",value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement(sf,{disabled:this.state.disabled,label:"Check Type",help:"Type of check",value:e.type,onChange:e=>{this.set("type",e)}},qr.createElement("option",{value:"http"},"HTTP Request")),qr.createElement("label",{className:"bp3-label"},"Targets",qr.createElement(Mm,{title:"Targets",content:"Targets for health check. For most configurations each target should be placed in a separate check."}),qr.createElement("div",null,i)),qr.createElement(tf,{disabled:this.state.disabled,buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add target",value:this.state.addTarget,onChange:e=>{this.setState({...this.state,addTarget:e})},onSubmit:this.onAddTarget})),qr.createElement("div",{style:Jy.group},qr.createElement(Xp,{fields:t}),qr.createElement(Cm,{disabled:this.state.disabled,label:"Check Frequency",help:"Minimum duration in seconds between repeat checks.",type:"text",placeholder:"Enter frequency",value:e.frequency,onChange:e=>{this.set("frequency",parseInt(e,10))}}),qr.createElement(Cm,{disabled:this.state.disabled,label:"Check Timeout",help:"Time in seconds before check times out.",type:"text",placeholder:"Enter timeout",value:e.timeout,onChange:e=>{this.set("timeout",parseInt(e,10))}}),qr.createElement(Cm,{disabled:this.state.disabled,label:"HTTP Status Code",help:"Expected status code to receive.",type:"text",placeholder:"Enter status code",hidden:"http"!==e.type,value:e.status_code,onChange:e=>{this.set("status_code",parseInt(e,10))}}),qr.createElement("label",{style:Jy.itemsLabel,hidden:"http"!==e.type},"HTTP Headers",qr.createElement(Mm,{title:"HTTP Headers",content:"Headers to include when sending HTTP health check request."})),o,qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Jy.itemsAdd,hidden:"http"!==e.type,type:"button",onClick:this.onAddHeader},"Add Header"))),qr.createElement(km,{style:Jy.save,hidden:!this.state.check&&!this.state.message,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,check:null})},onSave:this.onSave}),qr.createElement(Ky,{check:e.id,disabled:!1}),qr.createElement(yy,{check:e.id,disabled:!1}))}}const Zy={card:{display:"table-row",width:"100%",padding:0,boxShadow:"none",cursor:"pointer"},cardOpen:{display:"table-row",width:"100%",padding:0,boxShadow:"none",position:"relative"},select:{margin:"2px 0 0 0",paddingTop:"3px",minHeight:"18px"},name:{verticalAlign:"top",display:"table-cell",padding:"8px"},nameSpan:{margin:"1px 5px 0 0"},item:{verticalAlign:"top",display:"table-cell",padding:"9px",whiteSpace:"nowrap"},roles:{verticalAlign:"top",display:"table-cell",padding:"0 8px 8px 8px"},icon:{marginRight:"3px"},tag:{margin:"8px 5px 0 5px",height:"20px"},bars:{verticalAlign:"top",display:"table-cell",padding:"8px",width:"30px"},bar:{height:"6px",marginBottom:"1px"},barLast:{height:"6px"}};class eb extends qr.Component{render(){let e=this.props.check;if(this.props.open)return qr.createElement("div",{className:"bp3-card bp3-row",style:Zy.cardOpen},qr.createElement(Qy,{check:this.props.check,authorities:this.props.authorities,selected:this.props.selected,onSelect:this.props.onSelect,onClose:()=>{this.props.onOpen()}}));let t={...Zy.card},n=[];for(let t of e.roles)n.push(qr.createElement("div",{className:"bp3-tag bp3-intent-primary",style:Zy.tag,key:t},t));return qr.createElement("div",{className:"bp3-card bp3-row",style:t,onClick:e=>{-1===e.target.className.indexOf("open-ignore")&&this.props.onOpen()}},qr.createElement("div",{className:"bp3-cell",style:Zy.name},qr.createElement("div",{className:"layout horizontal"},qr.createElement("label",{className:"bp3-control bp3-checkbox open-ignore",style:Zy.select},qr.createElement("input",{type:"checkbox",className:"open-ignore",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator open-ignore"})),qr.createElement("div",{style:Zy.nameSpan},e.name))),qr.createElement("div",{className:"flex bp3-cell",style:Zy.roles},n))}}const tb={filters:{margin:"-15px 0 5px 0"},input:{width:"200px",margin:"5px"},role:{width:"150px",margin:"5px"},type:{margin:"5px"},check:{margin:"12px 5px 8px 5px"}};class nb extends qr.Component{constructor(e,t){super(e,t),this.state={menu:!1}}render(){return null===this.props.filter?qr.createElement("div",null):qr.createElement("div",{className:"layout horizontal wrap",style:tb.filters},qr.createElement(Lp,{style:tb.input,placeholder:"Check ID",value:this.props.filter.id,onChange:e=>{let t={...this.props.filter};e?t.id=e:delete t.id,this.props.onFilter(t)}}),qr.createElement(Lp,{style:tb.input,placeholder:"Name",value:this.props.filter.name,onChange:e=>{let t={...this.props.filter};e?t.name=e:delete t.name,this.props.onFilter(t)}}),qr.createElement(Lp,{style:tb.role,placeholder:"Role",value:this.props.filter.role,onChange:e=>{let t={...this.props.filter};e?t.role=e:delete t.role,this.props.onFilter(t)}}))}}const ib={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class sb extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:ny.page,pageCount:ny.pageCount,pages:ny.pages,count:ny.count})},this.state={page:ny.page,pageCount:ny.pageCount,pages:ny.pages,count:ny.count}}componentDidMount(){ny.addChangeListener(this.onChange)}componentWillUnmount(){ny.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{ay(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{ay(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:ib.button,disabled:0===e,type:"button",onClick:()=>{ay(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:ib.button,disabled:e===t-1,type:"button",onClick:()=>{ay(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{ay(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const rb={items:{width:"100%",marginTop:"-5px",display:"table",borderSpacing:"0 5px"},itemsBox:{width:"100%",overflowY:"auto"},placeholder:{opacity:0,width:"100%"},header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"}};class ab extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{let e=ny.checks,t={},n=this.state.selected,i={},s=this.state.opened;e.forEach((e=>{n[e.id]&&(t[e.id]=!0),s[e.id]&&(i[e.id]=!0)})),this.setState({...this.state,checks:e,filter:ny.filter,authorities:Ig.authorities,selected:t,opened:i})},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/checks").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete checks"),void i(e)):void n())))}))}(Object.keys(this.state.selected)).then((()=>{this.setState({...this.state,selected:{},disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={checks:ny.checks,filter:ny.filter,authorities:Ig.authorities,selected:{},opened:{},newOpened:!1,lastSelected:null,disabled:!1}}get selected(){return!!Object.keys(this.state.selected).length}get opened(){return!!Object.keys(this.state.opened).length}componentDidMount(){ny.addChangeListener(this.onChange),Ig.addChangeListener(this.onChange),ry(),ev()}componentWillUnmount(){ny.removeChangeListener(this.onChange),Ig.removeChangeListener(this.onChange)}render(){let e=[];this.state.checks.forEach((t=>{e.push(qr.createElement(eb,{key:t.id,check:t,authorities:this.state.authorities,selected:!!this.state.selected[t.id],open:!!this.state.opened[t.id],onSelect:e=>{let n={...this.state.selected};if(e){let e,i,s=this.state.checks;for(let n=0;ni&&(i=[e,e=i][0]);for(let t=e;t<=i;t++)n[s[t].id]=!0;return void this.setState({...this.state,lastSelected:t.id,selected:n})}}n[t.id]?delete n[t.id]:n[t.id]=!0,this.setState({...this.state,lastSelected:t.id,selected:n})},onOpen:()=>{let e={...this.state.opened};e[t.id]?delete e[t.id]:e[t.id]=!0,this.setState({...this.state,opened:e})}}))}));let t="bp3-button bp3-intent-primary bp3-icon-filter ";this.state.filter&&(t+="bp3-active");let n=[];for(let e of Object.keys(this.state.selected)){let t=ny.check(e);t?n.push(t.name||e):n.push(e)}return qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:rb.header},qr.createElement("h2",{style:rb.heading},"Health Checks"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:rb.buttons},qr.createElement("button",{className:t,style:rb.button,type:"button",onClick:()=>{null===this.state.filter?oy({}):oy(null)}},"Filters"),qr.createElement("button",{className:"bp3-button bp3-intent-warning bp3-icon-chevron-up",style:rb.button,disabled:!this.opened,type:"button",onClick:()=>{this.setState({...this.state,opened:{}})}},"Collapse All"),qr.createElement(Zu,{label:"Delete Selected",className:"bp3-intent-danger bp3-icon-delete",progressClassName:"bp3-intent-danger",safe:!0,style:rb.button,confirmMsg:"Permanently delete the selected checks",confirmInput:!0,items:n,disabled:!this.selected||this.state.disabled,onConfirm:this.onDelete}),qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:rb.button,disabled:this.state.disabled,type:"button",onClick:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/checks").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create check"),void i(e)):void n())))}))}({id:null}).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"New")))),qr.createElement(nb,{filter:this.state.filter,onFilter:e=>{oy(e)},authorities:this.state.authorities}),qr.createElement("div",{style:rb.itemsBox},qr.createElement("div",{style:rb.items},e,qr.createElement("tr",{className:"bp3-card bp3-row",style:rb.placeholder},qr.createElement("td",{colSpan:5,style:rb.placeholder})))),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-lifesaver",title:"No checks",description:"Add a new check to get started."}),qr.createElement(sb,{onPage:()=>{this.setState({...this.state,selected:{},lastSelected:null})}}))}}const ob="log.sync",lb="log.traverse",cb="log.filter";const hb=new class extends Mu{constructor(){super(...arguments),this._logs=Object.freeze([]),this._filter=null,this._token=bu.register(this._callback.bind(this))}get logs(){return this._logs}get logsM(){let e=[];return this._logs.forEach((t=>{e.push({...t})})),e}get page(){return this._page||0}get pageCount(){return this._pageCount||50}get pages(){return Math.ceil(this.count/this.pageCount)}get filter(){return this._filter}get count(){return this._count||0}emitChange(){this.emitDefer(Su)}addChangeListener(e){this.on(Su,e)}removeChangeListener(e){this.removeListener(Su,e)}_traverse(e){this._page=Math.min(this.pages,e)}_filterCallback(e){(null!==this._filter&&null===e||this._filter==={}&&null!==e||e&&this._filter&&e.level!==this._filter.level)&&this._traverse(0),this._filter=e,this.emitChange()}_sync(e,t){for(let t=0;t{ql.get("/log").query({...hb.filter,page:hb.page,page_count:hb.pageCount}).set("Accept","application/json").set("Csrf-Token",hu).end(((s,r)=>{if(t.done(),r&&401===r.status)return window.location.href="/login",void n();if(e===db){if(s)return cu(r,"Failed to load logs"),void i(s);bu.dispatch({type:ob,data:{logs:r.body.logs,count:r.body.count}}),n()}else n()}))}))}function pb(e){return bu.dispatch({type:lb,data:{page:e}}),ub()}function mb(e){return bu.dispatch({type:cb,data:{filter:e}}),ub()}Hu.register((e=>{if("log.change"===e.type)-1!==window.location.hash.indexOf("/logs")&&ub()}));const fb={card:{display:"table-row",width:"100%",padding:0,boxShadow:"none"},timestamp:{verticalAlign:"top",display:"table-cell",padding:"6px"},level:{verticalAlign:"top",display:"table-cell",padding:"6px"},message:{verticalAlign:"top",display:"table-cell",padding:"6px"},fields:{verticalAlign:"top",display:"table-cell",padding:"6px"},buttons:{verticalAlign:"top",display:"table-cell",padding:"0",width:"30px"},key:{fontWeight:"bold"},value:{},dialog:{height:"500px",width:"90%",maxWidth:"700px"},dialogBody:{height:"100%"},textarea:{resize:"none",fontSize:"12px",fontFamily:'"Lucida Console", Monaco, monospace',marginBottom:0}};class gb extends qr.Component{constructor(e,t){super(e,t),this.state={stack:!1}}render(){let e=this.props.log,t="bp3-cell ";switch(e.level){case"debug":t+="bp3-text-intent-success";break;case"info":t+="bp3-text-intent-primary";break;case"warning":t+="bp3-text-intent-warning";break;case"error":case"fatal":case"panic":t+="bp3-text-intent-danger"}let n=[];for(let t in e.fields){if(!e.fields.hasOwnProperty(t))continue;let i=e.fields[t];n.push(qr.createElement("div",{key:t},qr.createElement("span",{style:fb.key},t,": "),qr.createElement("span",{style:fb.value},JSON.stringify(i))))}return qr.createElement("div",{className:"bp3-card bp3-row",style:fb.card},qr.createElement("div",{className:t,style:fb.timestamp},Fu(e.timestamp)||"Unknown"),qr.createElement("div",{className:t,style:fb.level},e.level),qr.createElement("div",{className:t,style:fb.message},e.message),qr.createElement("div",{className:"bp3-cell",style:fb.fields},n),qr.createElement("div",{className:"bp3-cell",style:fb.buttons},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-document-open",hidden:!e.stack,onClick:()=>{this.setState({...this.state,stack:!0})}})),qr.createElement(Rc,{title:"Stack Trace",style:fb.dialog,isOpen:this.state.stack,usePortal:!0,portalContainer:document.body,onClose:()=>{this.setState({...this.state,stack:!1})}},qr.createElement("textarea",{className:"bp3-dialog-body bp3-input",style:fb.textarea,autoCapitalize:"off",spellCheck:!1,readOnly:!0,value:e.stack||""})))}}const vb={filters:{margin:"-15px 0 5px 0"},input:{width:"200px",margin:"5px"},role:{width:"150px",margin:"5px"},type:{margin:"5px"},check:{margin:"12px 5px 8px 5px"}};class yb extends qr.Component{constructor(e,t){super(e,t),this.state={menu:!1}}render(){return null===this.props.filter?qr.createElement("div",null):qr.createElement("div",{className:"layout horizontal wrap",style:vb.filters},qr.createElement(Lp,{style:vb.input,placeholder:"Message",value:this.props.filter.message,onChange:e=>{let t={...this.props.filter};e?t.message=e:delete t.message,this.props.onFilter(t)}}),qr.createElement("div",{className:"bp3-select",style:vb.type},qr.createElement("select",{value:this.props.filter.level||"any",onChange:e=>{let t={...this.props.filter},n=e.target.value;"any"===n?delete t.level:t.level=n,this.props.onFilter(t)}},qr.createElement("option",{value:"any"},"Any"),qr.createElement("option",{value:"debug"},"Debug"),qr.createElement("option",{value:"info"},"Info"),qr.createElement("option",{value:"warning"},"Warning"),qr.createElement("option",{value:"error"},"Error"),qr.createElement("option",{value:"fatal"},"Fatal"),qr.createElement("option",{value:"panic"},"Panic"))))}}const bb={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class _b extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:hb.page,pageCount:hb.pageCount,pages:hb.pages,count:hb.count})},this.state={page:hb.page,pageCount:hb.pageCount,pages:hb.pages,count:hb.count}}componentDidMount(){hb.addChangeListener(this.onChange)}componentWillUnmount(){hb.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{pb(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{pb(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:bb.button,disabled:0===e,type:"button",onClick:()=>{pb(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:bb.button,disabled:e===t-1,type:"button",onClick:()=>{pb(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{pb(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const Mb={logs:{width:"100%",marginTop:"-3px",display:"table",borderSpacing:"0 3px"},logsBox:{width:"100%",overflowY:"auto"},header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"}};class wb extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,logs:hb.logs,filter:hb.filter})},this.state={logs:hb.logs,filter:hb.filter}}componentDidMount(){hb.addChangeListener(this.onChange),ub()}componentWillUnmount(){hb.removeChangeListener(this.onChange)}render(){let e=[];this.state.logs.forEach((t=>{e.push(qr.createElement(gb,{key:t.id,log:t}))}));let t="bp3-button bp3-intent-primary bp3-icon-filter ";return this.state.filter&&(t+="bp3-active"),qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Mb.header},qr.createElement("h2",{style:Mb.heading},"Logs"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Mb.buttons},qr.createElement("button",{className:t,style:Mb.button,type:"button",onClick:()=>{null===this.state.filter?mb({}):mb(null)}},"Filters")))),qr.createElement(yb,{filter:this.state.filter,onFilter:e=>{mb(e)}}),qr.createElement("div",{style:Mb.logsBox},qr.createElement("div",{style:Mb.logs},e)),qr.createElement(_b,null))}}const Sb={group:{width:"100%",maxWidth:"310px",marginTop:"5px"},domain:{width:"100%",borderRadius:"0 3px 3px 0"},domainBox:{flex:"1"}};class Lb extends qr.Component{clone(){return{...this.props.domain}}render(){let e=this.props.domain;return qr.createElement("div",{className:"bp3-control-group",style:Sb.group},qr.createElement("div",{style:Sb.domainBox},qr.createElement("input",{className:"bp3-input",style:Sb.domain,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Domain",value:e.domain||"",onChange:e=>{let t=this.clone();t.domain=e.target.value,this.props.onChange(t)}})),qr.createElement("div",{style:Sb.domainBox},qr.createElement("input",{className:"bp3-input",style:Sb.domain,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Host",value:e.host||"",onChange:e=>{let t=this.clone();t.host=e.target.value,this.props.onChange(t)}})),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-intent-danger bp3-icon-remove",onClick:()=>{this.props.onRemove()}}))}}const kb={group:{width:"100%",maxWidth:"310px",marginTop:"5px"},protocol:{flex:"0 1 auto"},hostname:{width:"100%"},hostnameBox:{flex:"1"},port:{flex:"0 1 auto",width:"52px",borderRadius:"0 3px 3px 0"}};class xb extends qr.Component{clone(){return{...this.props.server}}render(){let e=this.props.server;return qr.createElement("div",{className:"bp3-control-group",style:kb.group},qr.createElement("div",{className:"bp3-select",style:kb.protocol},qr.createElement("select",{value:e.protocol,onChange:e=>{let t=this.clone();t.protocol=e.target.value,this.props.onChange(t)}},qr.createElement("option",{value:"http"},"HTTP"),qr.createElement("option",{value:"https"},"HTTPS"))),qr.createElement("div",{style:kb.hostnameBox},qr.createElement("input",{className:"bp3-input",style:kb.hostname,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Hostname",value:e.hostname||"",onChange:e=>{let t=this.clone();t.hostname=e.target.value,this.props.onChange(t)}})),qr.createElement("input",{className:"bp3-input",style:kb.port,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Port",value:e.port,onChange:e=>{let t=this.clone();t.port=parseInt(e.target.value,10),this.props.onChange(t)}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-intent-danger bp3-icon-remove",onClick:()=>{this.props.onRemove()}}))}}const Cb={group:{width:"100%",maxWidth:"310px",marginTop:"5px"},path:{width:"100%",borderRadius:"0 3px 3px 0"},pathBox:{flex:"1"}};class Tb extends qr.Component{clone(){return{...this.props.path}}render(){let e=this.props.path;return qr.createElement("div",{className:"bp3-control-group",style:Cb.group},qr.createElement("div",{style:Cb.pathBox},qr.createElement("input",{className:"bp3-input",style:Cb.path,type:"text",autoCapitalize:"off",spellCheck:!1,placeholder:"Permitted path",value:e.path||"",onChange:e=>{let t=this.clone();t.path=e.target.value,this.props.onChange(t)}})),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-intent-danger bp3-icon-remove",onClick:()=>{this.props.onRemove()}}))}}const Eb={card:{position:"relative",padding:"48px 10px 0 10px",width:"100%"},remove:{position:"absolute",top:"5px",right:"5px"},item:{margin:"9px 5px 0 5px",height:"20px"},itemsLabel:{display:"block"},itemsAdd:{margin:"8px 0 15px 0"},group:{flex:1,minWidth:"250px",margin:"0 10px"},save:{paddingBottom:"10px"},button:{height:"30px"},buttons:{cursor:"pointer",position:"absolute",top:0,left:0,right:0,padding:"4px",height:"39px",backgroundColor:"rgba(0, 0, 0, 0.13)"},label:{width:"100%",maxWidth:"280px"},status:{margin:"6px 0 0 1px"},icon:{marginRight:"3px"},inputGroup:{width:"100%"},protocol:{flex:"0 1 auto"},port:{flex:"1"},select:{margin:"7px 0px 0px 6px",paddingTop:"3px"}};class zb extends qr.Component{constructor(e,t){super(e,t),this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/service/"+e.id).send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to save service"),void i(e)):void n())))}))}(this.state.service).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1}),setTimeout((()=>{this.state.changed||this.setState({...this.state,service:null,changed:!1})}),1e3),setTimeout((()=>{this.state.changed||this.setState({...this.state,message:""})}),3e3)})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/service/"+e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>{if(t.done(),e)return cu(s,"Failed to delete services"),void i(e);n()}))}))}(this.props.service.id).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.onAddRole=()=>{let e;e=this.state.changed?{...this.state.service}:{...this.props.service};let t=[...e.roles];this.state.addRole&&(-1===t.indexOf(this.state.addRole)&&t.push(this.state.addRole),t.sort(),e.roles=t,this.setState({...this.state,changed:!0,message:"",addRole:"",service:e}))},this.onAddWhitelistNet=()=>{let e;e=this.state.changed?{...this.state.service}:{...this.props.service};let t=[...e.whitelist_networks];this.state.addWhitelistNet&&(-1===t.indexOf(this.state.addWhitelistNet)&&t.push(this.state.addWhitelistNet),t.sort(),e.whitelist_networks=t,this.setState({...this.state,changed:!0,message:"",addWhitelistNet:"",service:e}))},this.onAddServer=()=>{let e;e=this.state.changed?{...this.state.service}:{...this.props.service};let t=[...e.servers,{protocol:"https",hostname:"",port:443}];e.servers=t,this.setState({...this.state,changed:!0,message:"",service:e})},this.onAddDomain=()=>{let e;e=this.state.changed?{...this.state.service}:{...this.props.service};let t=[...e.domains,{}];e.domains=t,this.setState({...this.state,changed:!0,message:"",service:e})},this.onAddWhitelistPath=()=>{let e;e=this.state.changed?{...this.state.service}:{...this.props.service};let t=[...e.whitelist_paths||[],{}];e.whitelist_paths=t,this.setState({...this.state,changed:!0,message:"",service:e})},this.state={disabled:!1,changed:!1,message:"",addRole:"",addWhitelistNet:"",service:null}}set(e,t){let n;n=this.state.changed?{...this.state.service}:{...this.props.service},n[e]=t,this.setState({...this.state,changed:!0,service:n})}onRemoveRole(e){let t;t=this.state.changed?{...this.state.service}:{...this.props.service};let n=[...t.roles],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.roles=n,this.setState({...this.state,changed:!0,message:"",addRole:"",service:t}))}onRemoveWhitelistNet(e){let t;t=this.state.changed?{...this.state.service}:{...this.props.service};let n=[...t.whitelist_networks],i=n.indexOf(e);-1!==i&&(n.splice(i,1),t.whitelist_networks=n,this.setState({...this.state,changed:!0,message:"",addWhitelistNet:"",service:t}))}onChangeServer(e,t){let n;n=this.state.changed?{...this.state.service}:{...this.props.service};let i=[...n.servers];i[e]=t,n.servers=i,this.setState({...this.state,changed:!0,message:"",service:n})}onRemoveServer(e){let t;t=this.state.changed?{...this.state.service}:{...this.props.service};let n=[...t.servers];n.splice(e,1),t.servers=n,this.setState({...this.state,changed:!0,message:"",service:t})}onChangeDomain(e,t){let n;n=this.state.changed?{...this.state.service}:{...this.props.service};let i=[...n.domains];i[e]=t,n.domains=i,this.setState({...this.state,changed:!0,message:"",service:n})}onRemoveDomain(e){let t;t=this.state.changed?{...this.state.service}:{...this.props.service};let n=[...t.domains];n.splice(e,1),t.domains=n,this.setState({...this.state,changed:!0,message:"",service:t})}onChangeWhitelistPath(e,t){let n;n=this.state.changed?{...this.state.service}:{...this.props.service};let i=[...n.whitelist_paths];i[e]=t,n.whitelist_paths=i,this.setState({...this.state,changed:!0,message:"",service:n})}onRemoveWhitelistPath(e){let t;t=this.state.changed?{...this.state.service}:{...this.props.service};let n=[...t.whitelist_paths];n.splice(e,1),t.whitelist_paths=n,this.setState({...this.state,changed:!0,message:"",service:t})}render(){let e=this.state.service||this.props.service,t=[];for(let n=0;n{this.onChangeDomain(i,e)},onRemove:()=>{this.onRemoveDomain(i)}}))}let n=[];for(let t of e.roles)n.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Eb.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveRole(t)}})));let i=[];for(let t=0;t{this.onChangeServer(n,e)},onRemove:()=>{this.onRemoveServer(n)}}))}let s=[qr.createElement("option",{key:"null",value:""},"None")];for(let e of this.props.authorities)s.push(qr.createElement("option",{key:e.id,value:e.id},e.name));let r=[];for(let t of e.whitelist_networks)r.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Eb.item,key:t},t,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{this.onRemoveWhitelistNet(t)}})));let a=[];for(let t=0;t<(e.whitelist_paths||[]).length;t++){let n=t;a.push(qr.createElement(Tb,{key:n,path:e.whitelist_paths[n],onChange:e=>{this.onChangeWhitelistPath(n,e)},onRemove:()=>{this.onRemoveWhitelistPath(n)}}))}return qr.createElement("td",{className:"bp3-cell",colSpan:2,style:Eb.card},qr.createElement("div",{className:"layout horizontal wrap"},qr.createElement("div",{style:Eb.group},qr.createElement("div",{className:"layout horizontal tab-close",style:Eb.buttons,onClick:e=>{-1!==e.target.className.indexOf("tab-close")&&this.props.onClose()}},qr.createElement("div",null,qr.createElement("label",{className:"bp3-control bp3-checkbox",style:Eb.select},qr.createElement("input",{type:"checkbox",className:"open-ignore",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator"}))),qr.createElement("div",{className:"flex tab-close"}),qr.createElement(Zu,{safe:!0,className:"bp3-minimal bp3-intent-danger bp3-icon-trash",progressClassName:"bp3-intent-danger",dialogClassName:"bp3-intent-danger bp3-icon-delete",dialogLabel:"Delete Service",confirmMsg:"Permanently delete this service",confirmInput:!0,items:[e.name],disabled:this.state.disabled,onConfirm:this.onDelete})),qr.createElement(Cm,{label:"Name",help:"Name of service",type:"text",placeholder:"Enter name",value:e.name,onChange:e=>{this.set("name",e)}}),qr.createElement(sf,{label:"Type",help:"Service type",value:e.type,onChange:e=>{this.set("type",e)}},qr.createElement("option",{value:"http"},"HTTP")),qr.createElement("label",{style:Eb.itemsLabel},"External Domains",qr.createElement(Mm,{title:"External Domains",content:"When a request comes into a proxy node the requests host will be used to match the request with the domain of a service. The external domain must point to either a node that has the service added or a load balancer that forwards to nodes serving the service. Some internal services will be expecting a specific host such as a web server that serves mutliple websites that is also matching the requests host to one of the mutliple websites. If the internal service is expecting a different host set the host field, otherwise leave it blank. Services that are associated with the same node should not also have the same domains. Wildcards are supported for the first component of domain. Multifactor U2F authentication is not supported for wildcard domains. When using a wildcard with U2F authentication the domain where the user login occurs must be included in external domains."})),t,qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Eb.itemsAdd,type:"button",onClick:this.onAddDomain},"Add Domain"),qr.createElement("label",{style:Eb.itemsLabel},"Internal Servers",qr.createElement(Mm,{title:"Internal Servers",content:"After a proxy node receives an authenticated request it will be forwarded to the internal servers and the response will be sent back to the user. Multiple internal servers can be added to load balance the requests. This should only be done if outages are not expected as no health checks are preformed for each server. If outages are expected a load balancer such as AWS ELB should be used. If a domain is used with HTTPS the internal server must have a valid certificate. When an IP address is used with HTTPS the internal servers certificate will not be validated. These internal servers should ideally be configured to only accept requests from the private IP addresses of the Pritunl Zero nodes. It is important to consider that if the internal servers are configured to accept requests from other IP addresses those requests will be sent directly to the internal server and will bypass the authentication provided by Pritunl Zero."})),i,qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Eb.itemsAdd,type:"button",onClick:this.onAddServer},"Add Server"),qr.createElement(sf,{label:"Client Certificate Authority",help:"Certificate authority to use for internal client certificate. Only valid for HTTPS connections to internal servers.",value:e.client_authority,onChange:e=>{this.set("client_authority",e)}},s),qr.createElement(Cm,{label:"Logout Path",help:"Optional, path such as '/logout' that will end the Pritunl Zero users session. Supports '*' and '?' wildcards.",type:"text",placeholder:"Enter logout path",value:e.logout_path,onChange:e=>{this.set("logout_path",e)}})),qr.createElement("div",{style:Eb.group},qr.createElement(Xp,{fields:[{label:"ID",value:e.id||"None"}]}),qr.createElement("label",{className:"bp3-label"},"Roles",qr.createElement(Mm,{title:"Roles",content:"The user roles that will be allowed access to this service. At least one role must match for the user to access the service."}),qr.createElement("div",null,n)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add role",value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:this.onAddRole}),qr.createElement("label",{className:"bp3-label"},"Permitted Networks",qr.createElement(Mm,{title:"Permitted Networks",content:"Permitted subnets with CIDR such as 10.0.0.0/8 that can access the service without authenticating. Single IP addresses can also be used. Any request coming from an IP address on these networks will be able to access the service without any authentication. Extra care should be taken when using this with the forwarded for header option in the node settings. If the nodes forwarded for header is enabled without a load balancer the user can modify the header value to spoof an IP address."}),qr.createElement("div",null,r)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add network",value:this.state.addWhitelistNet,onChange:e=>{this.setState({...this.state,addWhitelistNet:e})},onSubmit:this.onAddWhitelistNet}),qr.createElement("label",{style:Eb.itemsLabel},"Permitted Paths",qr.createElement(Mm,{title:"Permitted Paths",content:"Permitted paths that can be accessed without authenticating. Supports '*' and '?' wildcards. Using this feature significantly increases the attack surface of the service and is not recommended."})),a,qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Eb.itemsAdd,type:"button",onClick:this.onAddWhitelistPath},"Add Permitted Path"),qr.createElement(Sm,{label:"Share session with subdomains",help:"This option will allow an authenticated user to access multiple services across different subdomains without needing to authenticate at each services subdomain.",checked:e.share_session,onToggle:()=>{this.set("share_session",!e.share_session)}}),qr.createElement(Sm,{label:"Allow WebSockets",help:"This will allow WebSockets to be proxied to the user. If the internal service relies on WebSockets this must be enabled.",checked:e.websockets,onToggle:()=>{this.set("websockets",!e.websockets)}}),qr.createElement(Sm,{label:"CSRF check",help:"Check headers to block cross domain requests. The service must implement CSRF protection if disabled.",checked:!e.disable_csrf_check,onToggle:()=>{this.set("disable_csrf_check",!e.disable_csrf_check)}}))),qr.createElement(km,{style:Eb.save,hidden:!this.state.service&&!this.state.message,message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,light:!0,onCancel:()=>{this.setState({...this.state,changed:!1,service:null})},onSave:this.onSave}))}}const Ab={card:{display:"table-row",width:"100%",padding:0,boxShadow:"none",cursor:"pointer"},cardOpen:{display:"table-row",width:"100%",padding:0,boxShadow:"none",position:"relative"},select:{margin:"2px 0 0 0",paddingTop:"3px",minHeight:"18px"},name:{verticalAlign:"top",display:"table-cell",padding:"8px"},nameSpan:{margin:"1px 5px 0 0"},item:{verticalAlign:"top",display:"table-cell",padding:"9px",whiteSpace:"nowrap"},roles:{verticalAlign:"top",display:"table-cell",padding:"0 8px 8px 8px"},icon:{marginRight:"3px"},tag:{margin:"8px 5px 0 5px",height:"20px"},bars:{verticalAlign:"top",display:"table-cell",padding:"8px",width:"30px"},bar:{height:"6px",marginBottom:"1px"},barLast:{height:"6px"}};class Hb extends qr.Component{render(){let e=this.props.service;if(this.props.open)return qr.createElement("div",{className:"bp3-card bp3-row",style:Ab.cardOpen},qr.createElement(zb,{service:this.props.service,authorities:this.props.authorities,selected:this.props.selected,onSelect:this.props.onSelect,onClose:()=>{this.props.onOpen()}}));let t={...Ab.card},n=[];for(let t of e.roles)n.push(qr.createElement("div",{className:"bp3-tag bp3-intent-primary",style:Ab.tag,key:t},t));return qr.createElement("div",{className:"bp3-card bp3-row",style:t,onClick:e=>{-1===e.target.className.indexOf("open-ignore")&&this.props.onOpen()}},qr.createElement("div",{className:"bp3-cell",style:Ab.name},qr.createElement("div",{className:"layout horizontal"},qr.createElement("label",{className:"bp3-control bp3-checkbox open-ignore",style:Ab.select},qr.createElement("input",{type:"checkbox",className:"open-ignore",checked:this.props.selected,onChange:e=>{},onClick:e=>{this.props.onSelect(e.shiftKey)}}),qr.createElement("span",{className:"bp3-control-indicator open-ignore"})),qr.createElement("div",{style:Ab.nameSpan},e.name))),qr.createElement("div",{className:"flex bp3-cell",style:Ab.roles},n))}}const Db={filters:{margin:"-15px 0 5px 0"},input:{width:"200px",margin:"5px"},role:{width:"150px",margin:"5px"},type:{margin:"5px"},check:{margin:"12px 5px 8px 5px"}};class Pb extends qr.Component{constructor(e,t){super(e,t),this.state={menu:!1}}render(){return null===this.props.filter?qr.createElement("div",null):qr.createElement("div",{className:"layout horizontal wrap",style:Db.filters},qr.createElement(Lp,{style:Db.input,placeholder:"Service ID",value:this.props.filter.id,onChange:e=>{let t={...this.props.filter};e?t.id=e:delete t.id,this.props.onFilter(t)}}),qr.createElement(Lp,{style:Db.input,placeholder:"Name",value:this.props.filter.name,onChange:e=>{let t={...this.props.filter};e?t.name=e:delete t.name,this.props.onFilter(t)}}),qr.createElement(Lp,{style:Db.role,placeholder:"Role",value:this.props.filter.role,onChange:e=>{let t={...this.props.filter};e?t.role=e:delete t.role,this.props.onFilter(t)}}))}}const Ob={button:{userSelect:"none",margin:"0 5px 0 0"},buttonLast:{userSelect:"none",margin:"0 0 0 0"},link:{cursor:"pointer",userSelect:"none",margin:"7px 5px 0 0"},current:{opacity:.5}};class Yb extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,page:Vg.page,pageCount:Vg.pageCount,pages:Vg.pages,count:Vg.count})},this.state={page:Vg.page,pageCount:Vg.pageCount,pages:Vg.pages,count:Vg.count}}componentDidMount(){Vg.addChangeListener(this.onChange)}componentWillUnmount(){Vg.removeChangeListener(this.onChange)}render(){let e=this.state.page,t=this.state.pages;if(t<=1)return qr.createElement("div",null);let n=[],i=Math.max(0,e-7),s=Math.min(t,i+15);for(let t=i;t{Jg(t),this.props.onPage&&this.props.onPage()}},t+1));return qr.createElement("div",{className:"layout horizontal center-justified"},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-backward",hidden:t<5,disabled:0===e,type:"button",onClick:()=>{Jg(0),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-left",style:Ob.button,disabled:0===e,type:"button",onClick:()=>{Jg(Math.max(0,this.state.page-1)),this.props.onPage&&this.props.onPage()}}),n,qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-right",style:Ob.button,disabled:e===t-1,type:"button",onClick:()=>{Jg(Math.min(this.state.pages-1,this.state.page+1)),this.props.onPage&&this.props.onPage()}}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-chevron-forward",hidden:t<5,disabled:e===t-1,type:"button",onClick:()=>{Jg(this.state.pages-1),this.props.onPage&&this.props.onPage()}}))}}const Rb={items:{width:"100%",marginTop:"-5px",display:"table",borderSpacing:"0 5px"},itemsBox:{width:"100%",overflowY:"auto"},placeholder:{opacity:0,width:"100%"},header:{marginTop:"-19px"},heading:{margin:"19px 0 0 0"},button:{margin:"8px 0 0 8px"},buttons:{marginTop:"8px"}};class Vb extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{let e=Vg.services,t={},n=this.state.selected,i={},s=this.state.opened;e.forEach((e=>{n[e.id]&&(t[e.id]=!0),s[e.id]&&(i[e.id]=!0)})),this.setState({...this.state,services:e,filter:Vg.filter,authorities:Ig.authorities,selected:t,opened:i})},this.onDelete=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.delete("/service").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to delete services"),void i(e)):void n())))}))}(Object.keys(this.state.selected)).then((()=>{this.setState({...this.state,selected:{},disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))},this.state={services:Vg.services,filter:Vg.filter,authorities:Ig.authorities,selected:{},opened:{},newOpened:!1,lastSelected:null,disabled:!1}}get selected(){return!!Object.keys(this.state.selected).length}get opened(){return!!Object.keys(this.state.opened).length}componentDidMount(){Vg.addChangeListener(this.onChange),Ig.addChangeListener(this.onChange),qg(),ev()}componentWillUnmount(){Vg.removeChangeListener(this.onChange),Ig.removeChangeListener(this.onChange)}render(){let e=[];this.state.services.forEach((t=>{e.push(qr.createElement(Hb,{key:t.id,service:t,authorities:this.state.authorities,selected:!!this.state.selected[t.id],open:!!this.state.opened[t.id],onSelect:e=>{let n={...this.state.selected};if(e){let e,i,s=this.state.services;for(let n=0;ni&&(i=[e,e=i][0]);for(let t=e;t<=i;t++)n[s[t].id]=!0;return void this.setState({...this.state,lastSelected:t.id,selected:n})}}n[t.id]?delete n[t.id]:n[t.id]=!0,this.setState({...this.state,lastSelected:t.id,selected:n})},onOpen:()=>{let e={...this.state.opened};e[t.id]?delete e[t.id]:e[t.id]=!0,this.setState({...this.state,opened:e})}}))}));let t="bp3-button bp3-intent-primary bp3-icon-filter ";this.state.filter&&(t+="bp3-active");let n=[];for(let e of Object.keys(this.state.selected)){let t=Vg.service(e);t?n.push(t.name||e):n.push(e)}return qr.createElement(Ep,null,qr.createElement(Ap,null,qr.createElement("div",{className:"layout horizontal wrap",style:Rb.header},qr.createElement("h2",{style:Rb.heading},"Services"),qr.createElement("div",{className:"flex"}),qr.createElement("div",{style:Rb.buttons},qr.createElement("button",{className:t,style:Rb.button,type:"button",onClick:()=>{null===this.state.filter?Qg({}):Qg(null)}},"Filters"),qr.createElement("button",{className:"bp3-button bp3-intent-warning bp3-icon-chevron-up",style:Rb.button,disabled:!this.opened,type:"button",onClick:()=>{this.setState({...this.state,opened:{}})}},"Collapse All"),qr.createElement(Zu,{label:"Delete Selected",className:"bp3-intent-danger bp3-icon-delete",progressClassName:"bp3-intent-danger",safe:!0,style:Rb.button,confirmMsg:"Permanently delete the selected services",confirmInput:!0,items:n,disabled:!this.selected||this.state.disabled,onConfirm:this.onDelete}),qr.createElement("button",{className:"bp3-button bp3-intent-success bp3-icon-add",style:Rb.button,disabled:this.state.disabled,type:"button",onClick:()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.post("/service").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to create service"),void i(e)):void n())))}))}({id:null,share_session:!0,websockets:!0}).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))}},"New")))),qr.createElement(Pb,{filter:this.state.filter,onFilter:e=>{Qg(e)},authorities:this.state.authorities}),qr.createElement("div",{style:Rb.itemsBox},qr.createElement("div",{style:Rb.items},e,qr.createElement("tr",{className:"bp3-card bp3-row",style:Rb.placeholder},qr.createElement("td",{colSpan:5,style:Rb.placeholder})))),qr.createElement(jp,{hidden:!!e.length,iconClass:"bp3-icon-cloud",title:"No services",description:"Add a new service to get started."}),qr.createElement(Yb,{onPage:()=>{this.setState({...this.state,selected:{},lastSelected:null})}}))}}const Nb={label:{fontSize:"16px",margin:"0 0 7px 0"},card:{marginBottom:"5px"},role:{margin:"9px 5px 0 5px",height:"20px"}};class $b extends qr.Component{constructor(e,t){super(e,t),this.state={addRole:""}}clone(){return{...this.props.provider}}azure(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Directory ID",help:"Azure active directory ID",type:"text",placeholder:"Azure directory ID",value:e.tenant,onChange:e=>{let t=this.clone();t.tenant=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Application ID",help:"Azure application ID",type:"text",placeholder:"Azure application ID",value:e.client_id,onChange:e=>{let t=this.clone();t.client_id=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Application Secret",help:"Azure application secret",type:"text",placeholder:"Azure application secret",value:e.client_secret,onChange:e=>{let t=this.clone();t.client_secret=e,this.props.onChange(t)}}))}authzero(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Auth0 Sub-Domain",help:"Subdomain of Auth0 application. Enter subdomain portion only such as 'pritunl' for pritunl.auth0.com",type:"text",placeholder:"Auth0 sub-domain",value:e.domain,onChange:e=>{let t=this.clone();t.domain=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Client ID",help:"Auth0 application client ID",type:"text",placeholder:"Auth0 client ID",value:e.client_id,onChange:e=>{let t=this.clone();t.client_id=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Client Secret",help:"Auth0 application client secret",type:"text",placeholder:"Auth0 client secret",value:e.client_secret,onChange:e=>{let t=this.clone();t.client_secret=e,this.props.onChange(t)}}))}google(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Domain",help:"Domain segment of email address to match",type:"text",placeholder:"Google domain to match",value:e.domain,onChange:e=>{let t=this.clone();t.domain=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Google Admin Email",help:"Optional, the email address of an administrator user in the Google G Suite to delegate API access to. This user will be used to get the groups of Google users. Only needed when providing the Google JSON private key.",type:"text",placeholder:"Google admin email",value:e.google_email,onChange:e=>{let t=this.clone();t.google_email=e,this.props.onChange(t)}}),qr.createElement(Yv,{label:"Google JSON Private Key",help:"Optional, private key for service account in JSON format. This will copy the Google users groups to Pritunl Zero. Also requires Google admin email.",placeholder:"Google JSON private key",rows:6,value:e.google_key,onChange:e=>{let t=this.clone();t.google_key=e,this.props.onChange(t)}}))}onelogin(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Issuer URL",help:"Single sign-on URL found in OneLogin app settings",type:"text",placeholder:"OneLogin issuer URL",value:e.issuer_url,onChange:e=>{let t=this.clone();t.issuer_url=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"SAML 2.0 Endpoint (HTTP)",help:"SAML 2.0 endpoint found in OneLogin app settings",type:"text",placeholder:"OneLogin SAML endpoint",value:e.saml_url,onChange:e=>{let t=this.clone();t.saml_url=e,this.props.onChange(t)}}),qr.createElement(Yv,{label:"X.509 Certificate",help:"X.509 certificate found in OneLogin app settings",placeholder:"OneLogin X.509 certificate",rows:6,value:e.saml_cert,onChange:e=>{let t=this.clone();t.saml_cert=e,this.props.onChange(t)}}))}okta(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Identity Provider Single Sign-On URL",help:"Single sign-on URL found in Okta app settings",type:"text",placeholder:"Okta single sign-on URL",value:e.saml_url,onChange:e=>{let t=this.clone();t.saml_url=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Identity Provider Issuer URL",help:"Issuer URL found in Okta app settings",type:"text",placeholder:"Okta issuer URL",value:e.issuer_url,onChange:e=>{let t=this.clone();t.issuer_url=e,this.props.onChange(t)}}),qr.createElement(Yv,{label:"X.509 Certificate",help:"X.509 certificate found in Okta app settings",placeholder:"Okta X.509 certificate",rows:6,value:e.saml_cert,onChange:e=>{let t=this.clone();t.saml_cert=e,this.props.onChange(t)}}))}jumpcloud(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Identity Provider Single Sign-On URL",help:"Single sign-on URL found in JumpCloud app settings",type:"text",placeholder:"JumpCloud single sign-on URL",value:e.saml_url,onChange:e=>{let t=this.clone();t.saml_url=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Identity Provider Issuer URL",help:"Issuer URL found in JumpCloud app settings",type:"text",placeholder:"JumpCloud issuer URL",value:e.issuer_url,onChange:e=>{let t=this.clone();t.issuer_url=e,this.props.onChange(t)}}),qr.createElement(Yv,{label:"X.509 Certificate",help:"X.509 certificate found in JumpCloud app settings",placeholder:"JumpCloud X.509 certificate",rows:6,value:e.saml_cert,onChange:e=>{let t=this.clone();t.saml_cert=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"JumpCloud App ID",help:"Optional, ID of JumpCloud Pritunl app. This can be found in the URL of the app settings page. Required to verify user is attached to JumpCloud application",type:"text",placeholder:"JumpCloud app ID",value:e.jumpcloud_app_id,onChange:e=>{let t=this.clone();t.jumpcloud_app_id=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"JumpCloud API Key",help:"JumpCloud API key for user account status verfication",type:"text",placeholder:"JumpCloud client secret",value:e.jumpcloud_secret,onChange:e=>{let t=this.clone();t.jumpcloud_secret=e,this.props.onChange(t)}}))}render(){let e,t=this.props.provider,n="";switch(t.type){case"azure":n="Azure",e=this.azure();break;case"authzero":n="Auth0",e=this.authzero();break;case"google":n="Google",e=this.google();break;case"onelogin":n="OneLogin",e=this.onelogin();break;case"okta":n="Okta",e=this.okta();break;case"jumpcloud":n="JumpCloud",e=this.jumpcloud()}let i=[];for(let e of t.default_roles)i.push(qr.createElement("div",{className:"bp3-tag bp3-tag-removable bp3-intent-primary",style:Nb.role,key:e},e,qr.createElement("button",{className:"bp3-tag-remove",onMouseUp:()=>{let t=[...this.props.provider.default_roles],n=t.indexOf(e);if(-1===n)return;t.splice(n,1);let i=this.clone();i.default_roles=t,this.props.onChange(i)}})));return qr.createElement("div",{className:"bp3-card",style:Nb.card},qr.createElement("h6",{style:Nb.label},n),qr.createElement(Xp,{fields:[{label:"ID",value:t.id||"None"}]}),qr.createElement(Cm,{label:"Label",help:"Provider label that will be shown to users on the login page",type:"text",placeholder:"Provider label",value:t.label,onChange:e=>{let t=this.clone();t.label=e,this.props.onChange(t)}}),qr.createElement("label",{className:"bp3-label",hidden:!t.auto_create},"Default Roles",qr.createElement(Mm,{title:"Default Roles",content:"When the user has authenticated for the first time these roles will be given to the user. These roles may also be used to update the users roles depending on the role management option."}),qr.createElement("div",null,i)),qr.createElement(tf,{buttonClass:"bp3-intent-success bp3-icon-add",label:"Add",type:"text",placeholder:"Add default role",hidden:!t.auto_create,value:this.state.addRole,onChange:e=>{this.setState({...this.state,addRole:e})},onSubmit:()=>{let e=[...this.props.provider.default_roles];if(!this.state.addRole)return;-1===e.indexOf(this.state.addRole)&&e.push(this.state.addRole),e.sort();let t=this.clone();t.default_roles=e,this.props.onChange(t),this.setState({...this.state,addRole:""})}}),qr.createElement(Sm,{label:"Create user on authentication",help:"Create the user on first authentication. If this is disabled all users must be manually created before they are able to authenticate.",checked:t.auto_create,onToggle:()=>{let e=this.clone();e.auto_create=!e.auto_create,e.auto_create||"set_on_insert"!==e.role_management||(e.role_management="merge"),this.props.onChange(e)}}),qr.createElement(sf,{label:"Role Management",help:"When the user authenticates for the first time a user will be created and the users roles will be set to the roles configured above. This is referenced as set on insert. It may be desired to update the roles on subsequent authentications. For this the merge mode can be used which will take the users current roles and merge them with the roles configured above using all the roles from both sets. Overwrite mode will replace the users roles on every authentication with the roles configured above. It is important to consider that if a users roles are modified those modifications will be lost when the overwrite mode is used.",value:t.role_management,onChange:e=>{let t=this.clone();t.role_management=e,this.props.onChange(t)}},qr.createElement("option",{value:"set_on_insert",hidden:!t.auto_create},"Set on insert"),qr.createElement("option",{value:"merge"},"Merge"),qr.createElement("option",{value:"overwrite"},"Overwrite")),e,qr.createElement("button",{className:"bp3-button bp3-intent-danger",onClick:()=>{this.props.onRemove()}},"Remove"))}}const Ib={label:{fontSize:"16px",margin:"0 0 7px 0"},card:{marginBottom:"5px"},role:{margin:"9px 5px 0 5px",height:"20px"}};class Fb extends qr.Component{clone(){return{...this.props.provider}}duo(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Duo API Hostname",help:"Duo API hostname found in Duo admin console.",type:"text",placeholder:"Duo API hostname",value:e.duo_hostname,onChange:e=>{let t=this.clone();t.duo_hostname=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Duo Integration Key",help:"Duo integration key found in Duo admin console.",type:"text",placeholder:"Duo integration key",value:e.duo_key,onChange:e=>{let t=this.clone();t.duo_key=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Duo Secret Key",help:"Duo secret key found in Duo admin console.",type:"text",placeholder:"Duo secret key",value:e.duo_secret,onChange:e=>{let t=this.clone();t.duo_secret=e,this.props.onChange(t)}}),qr.createElement(Sm,{label:"Push authentication",help:"Allow push authentication.",checked:e.push_factor,onToggle:()=>{let e=this.clone();e.push_factor=!e.push_factor,this.props.onChange(e)}}),qr.createElement(Sm,{label:"Phone authentication",help:"Allow phone authentication.",checked:e.phone_factor,onToggle:()=>{let e=this.clone();e.phone_factor=!e.phone_factor,this.props.onChange(e)}}),qr.createElement(Sm,{label:"Passcode authentication",help:"Allow passcode authentication.",checked:e.passcode_factor,onToggle:()=>{let e=this.clone();e.passcode_factor=!e.passcode_factor,this.props.onChange(e)}}),qr.createElement(Sm,{label:"SMS authentication",help:"Allow SMS authentication.",checked:e.sms_factor,onToggle:()=>{let e=this.clone();e.sms_factor=!e.sms_factor,this.props.onChange(e)}}))}onelogin(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"OneLogin API Client ID",help:"OneLogin API client ID found in OneLogin admin console.",type:"text",placeholder:"OneLogin API client ID",value:e.one_login_id,onChange:e=>{let t=this.clone();t.one_login_id=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"OneLogin API Client Secret",help:"OneLogin API client secret found in OneLogin admin console.",type:"text",placeholder:"OneLogin API client secret",value:e.one_login_secret,onChange:e=>{let t=this.clone();t.one_login_secret=e,this.props.onChange(t)}}),qr.createElement(sf,{label:"OneLogin API Region",help:"OneLogin region for API requests.",value:e.one_login_region,onChange:e=>{let t=this.clone();t.one_login_region=e,this.props.onChange(t)}},qr.createElement("option",{value:"us"},"United States"),qr.createElement("option",{value:"eu"},"Europe")),qr.createElement(Sm,{label:"Push authentication",help:"Allow push authentication.",checked:e.push_factor,onToggle:()=>{let e=this.clone();e.push_factor=!e.push_factor,this.props.onChange(e)}}),qr.createElement(Sm,{label:"Passcode authentication",help:"Allow passcode authentication.",checked:e.passcode_factor,onToggle:()=>{let e=this.clone();e.passcode_factor=!e.passcode_factor,this.props.onChange(e)}}))}okta(){let e=this.props.provider;return qr.createElement("div",null,qr.createElement(Cm,{label:"Okta Domain",help:"Okta domain used to login to Okta such as 'pritunl.okta.com'.",type:"text",placeholder:"Okta domain",value:e.okta_domain,onChange:e=>{let t=this.clone();t.okta_domain=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Okta API Token",help:"Okta API token found in Okta admin console.",type:"text",placeholder:"Okta API token",value:e.okta_token,onChange:e=>{let t=this.clone();t.okta_token=e,this.props.onChange(t)}}),qr.createElement(Sm,{label:"Push authentication",help:"Allow push authentication.",checked:e.push_factor,onToggle:()=>{let e=this.clone();e.push_factor=!e.push_factor,this.props.onChange(e)}}),qr.createElement(Sm,{label:"Passcode authentication",help:"Allow passcode authentication.",checked:e.passcode_factor,onToggle:()=>{let e=this.clone();e.passcode_factor=!e.passcode_factor,this.props.onChange(e)}}))}render(){let e,t=this.props.provider,n="";switch(t.type){case"duo":n="Duo",e=this.duo();break;case"one_login":n="OneLogin",e=this.onelogin();break;case"okta":n="Okta",e=this.okta()}return qr.createElement("div",{className:"bp3-card",style:Ib.card},qr.createElement("h6",{style:Ib.label},n),qr.createElement(Xp,{fields:[{label:"ID",value:t.id||"None"}]}),qr.createElement(Cm,{label:"Name",help:"Two-factor provider name.",type:"text",placeholder:"Two-factor provider name",value:t.name,onChange:e=>{let t=this.clone();t.name=e,this.props.onChange(t)}}),qr.createElement(Cm,{label:"Label",help:"Two-factor provider label that will be shown to users on the login page.",type:"text",placeholder:"Two-factor provider label",value:t.label,onChange:e=>{let t=this.clone();t.label=e,this.props.onChange(t)}}),e,qr.createElement("button",{className:"bp3-button bp3-intent-danger",onClick:()=>{this.props.onRemove()}},"Remove"))}}const jb={providers:{paddingBottom:"6px",marginBottom:"5px",borderBottomStyle:"solid"},providersLabel:{margin:0},secondaryProviders:{paddingBottom:"6px",marginTop:"5px",marginBottom:"5px",borderBottomStyle:"solid"}};class Bb extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,changed:!1,settings:mv.settingsM})},this.onSave=()=>{this.setState({...this.state,disabled:!0}),function(e){let t=(new ju).loading();return new Promise(((n,i)=>{ql.put("/settings").send(e).set("Accept","application/json").set("Csrf-Token",hu).end(((e,s)=>(t.done(),s&&401===s.status?(window.location.href="/login",void n()):e?(cu(s,"Failed to commit settings"),void i(e)):(bu.dispatch({type:pv,data:s.body}),void n()))))}))}(this.state.settings).then((()=>{this.setState({...this.state,message:"Your changes have been saved",changed:!1,disabled:!1})})).catch((()=>{this.setState({...this.state,message:"",disabled:!1})}))},this.set=(e,t)=>{let n={...this.state.settings};n[e]=t,this.setState({...this.state,changed:!0,message:"",settings:n})},this.state={changed:!1,disabled:!1,message:"",provider:"google",secondaryProvider:"duo",settings:mv.settingsM}}componentDidMount(){mv.addChangeListener(this.onChange),yv()}componentWillUnmount(){mv.removeChangeListener(this.onChange)}render(){let e=this.state.settings;if(!e)return qr.createElement("div",null);let t=!!Lu.subscription&&Lu.subscription.active,n=[];for(let t=0;t{let n=[...this.state.settings.auth_providers];n[t]=e,this.set("auth_providers",n)},onRemove:()=>{let e=[...this.state.settings.auth_providers];e.splice(t,1),this.set("auth_providers",e)}}));let i=[];for(let t=0;t{let n=[...this.state.settings.auth_secondary_providers];n[t]=e,this.set("auth_secondary_providers",n)},onRemove:()=>{let e=[...this.state.settings.auth_secondary_providers];e.splice(t,1),this.set("auth_secondary_providers",e)}}));return qr.createElement(Ep,null,qr.createElement(Ap,{label:"Settings"}),qr.createElement(Zm,null,qr.createElement(Qm,{hidden:t},qr.createElement(jp,{hidden:!1,iconClass:"bp3-icon-credit-card",title:"Subscription Required",description:"Subscription required for single sign-on."})),qr.createElement(Qm,{hidden:!t},qr.createElement("div",{className:"bp3-border",style:jb.providers},qr.createElement("h5",{style:jb.providersLabel},"Authentication Providers")),n,qr.createElement(av,{label:"Add Provider",value:this.state.provider,buttonClass:"bp3-intent-success",onChange:e=>{this.setState({...this.state,provider:e})},onSubmit:()=>{let t=[...e.auth_providers,{type:this.state.provider,default_roles:[],auto_create:!0,role_management:"set_on_insert"}];this.set("auth_providers",t)}},qr.createElement("option",{value:"authzero"},"Auth0"),qr.createElement("option",{value:"azure"},"Azure"),qr.createElement("option",{value:"google"},"Google"),qr.createElement("option",{value:"onelogin"},"OneLogin"),qr.createElement("option",{value:"okta"},"Okta"),qr.createElement("option",{value:"jumpcloud"},"JumpCloud"))),qr.createElement(Qm,null,qr.createElement("div",{className:"bp3-border",style:jb.secondaryProviders},qr.createElement("h5",{style:jb.providersLabel},"Two-Factor Providers")),i,qr.createElement(av,{label:"Add Secondary Provider",value:this.state.secondaryProvider,buttonClass:"bp3-intent-success",onChange:e=>{this.setState({...this.state,secondaryProvider:e})},onSubmit:()=>{let t=[...e.auth_secondary_providers,{type:this.state.secondaryProvider}];this.set("auth_secondary_providers",t)}},qr.createElement("option",{value:"duo"},"Duo"),qr.createElement("option",{value:"one_login"},"OneLogin"),qr.createElement("option",{value:"okta"},"Okta")),qr.createElement(Cm,{label:"Admin Session Expire Minutes",help:"Number of inactive minutes before a admin session expires",type:"text",placeholder:"Session expire",value:this.state.settings.auth_admin_expire,onChange:e=>{this.set("auth_admin_expire",parseInt(e,10))}}),qr.createElement(Cm,{label:"Admin Session Max Duration Minutes",help:"Number of minutes from start of a admin session until expiration",type:"text",placeholder:"Session max duration",value:this.state.settings.auth_admin_max_duration,onChange:e=>{this.set("auth_admin_max_duration",parseInt(e,10))}}),qr.createElement(Cm,{label:"Service Session Expire Minutes",help:"Number of inactive minutes before a service session expires",type:"text",placeholder:"Session expire",value:this.state.settings.auth_proxy_expire,onChange:e=>{this.set("auth_proxy_expire",parseInt(e,10))}}),qr.createElement(Cm,{label:"Service Session Max Duration Minutes",help:"Number of minutes from start of a service session until expiration",type:"text",placeholder:"Session max duration",value:this.state.settings.auth_proxy_max_duration,onChange:e=>{this.set("auth_proxy_max_duration",parseInt(e,10))}}),qr.createElement(Cm,{label:"User Session Expire Minutes",help:"Number of inactive minutes before a user session expires",type:"text",placeholder:"Session expire",value:this.state.settings.auth_user_expire,onChange:e=>{this.set("auth_user_expire",parseInt(e,10))}}),qr.createElement(Cm,{label:"User Session Max Duration Minutes",help:"Number of minutes from start of a user session until expiration",type:"text",placeholder:"Session max duration",value:this.state.settings.auth_user_max_duration,onChange:e=>{this.set("auth_user_max_duration",parseInt(e,10))}}),qr.createElement(Cm,{label:"ElasticSearch Address",help:"Address of ElasticSearch server, use comma separated list for multiple addresses.",type:"text",placeholder:"ElasticSearch address",value:this.state.settings.elastic_address,onChange:e=>{this.set("elastic_address",e)}}),qr.createElement(Cm,{label:"ElasticSearch Username",help:"Username of ElasticSearch server",type:"text",placeholder:"ElasticSearch username",value:this.state.settings.elastic_username,onChange:e=>{this.set("elastic_username",e)}}),qr.createElement(Cm,{label:"ElasticSearch Password",help:"Password of ElasticSearch server",type:"text",placeholder:"ElasticSearch password",value:this.state.settings.elastic_password,onChange:e=>{this.set("elastic_password",e)}}),qr.createElement(Sm,{label:"Elasticsearch log proxy requests",help:"Send all user requests to the Elasticsearch server. The request header, URL query values and user information such as user ID, IP address and location will be included. If the request body contains form fields, json or xml this data will also be included.",checked:this.state.settings.elastic_proxy_requests,onToggle:()=>{this.set("elastic_proxy_requests",!this.state.settings.elastic_proxy_requests)}}))),qr.createElement(km,{message:this.state.message,changed:this.state.changed,disabled:this.state.disabled,onCancel:()=>{this.setState({...this.state,changed:!1,message:"Your changes have been discarded",settings:mv.settingsM})},onSave:this.onSave}))}}const Wb={nav:{overflowX:"auto",overflowY:"auto",userSelect:"none",height:"auto"},navTitle:{height:"auto"},navGroup:{flexWrap:"wrap",height:"auto",padding:"10px 0"},link:{padding:"0 8px",color:"inherit"},sub:{color:"inherit"},heading:{marginRight:"11px",fontSize:"18px",fontWeight:"bold"}};class Gb extends qr.Component{constructor(e,t){super(e,t),this.onChange=()=>{this.setState({...this.state,subscription:Lu.subscription})},this.state={subscription:Lu.subscription,disabled:!1}}componentDidMount(){Lu.addChangeListener(this.onChange),Wu(!1)}componentWillUnmount(){Lu.removeChangeListener(this.onChange)}render(){return this.state.subscription?qr.createElement(Il,null,qr.createElement("div",null,qr.createElement("nav",{className:"bp3-navbar layout horizontal",style:Wb.nav},qr.createElement("div",{className:"bp3-navbar-group bp3-align-left flex",style:Wb.navTitle},qr.createElement("div",{className:"bp3-navbar-heading",style:Wb.heading},"Pritunl Zero")),qr.createElement("div",{className:"bp3-navbar-group bp3-align-right",style:Wb.navGroup},qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-people",style:Wb.link,to:"/users"},"Users"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-cloud",style:Wb.link,to:"/services"},"Services"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-layers",style:Wb.link,to:"/nodes"},"Nodes"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-filter",style:Wb.link,to:"/policies"},"Policies"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-office",style:Wb.link,to:"/authorities"},"Authorities"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-endorsed",style:Wb.link,to:"/certificates"},"Certificates"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-shield",style:Wb.link,to:"/endpoints"},"Endpoints"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-notifications",style:Wb.link,to:"/alerts"},"Alerts"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-lifesaver",style:Wb.link,to:"/checks"},"Health Checks"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-history",style:Wb.link,to:"/logs"},"Logs"),qr.createElement(Ul,{className:"bp3-button bp3-minimal bp3-icon-cog",style:Wb.link,to:"/settings"},"Settings"),qr.createElement(Ul,{to:"/subscription",style:Wb.sub},qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-credit-card",style:Wb.link,onClick:()=>{Wu(!0)}},"Subscription")),qr.createElement(Ol,{render:e=>qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-refresh",disabled:this.state.disabled,onClick:()=>{let t=e.location.pathname;this.setState({...this.state,disabled:!0}),"/users"===t?dp().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):t.startsWith("/user/")?(hp(lp.user?lp.user.id:null).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})),Ip().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})),ym().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})),jm().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})),_p().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))):"/nodes"===t?(Zg(),Xg().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))):"/policies"===t?(Zg(),ev(),yv(),vv().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))):"/authorities"===t?ev().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):"/certificates"===t?nv().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):"/alerts"===t?Py().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):"/checks"===t?ry().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):"/endpoints"===t?(ev(),Uv().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))):"/logs"===t?ub().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):"/services"===t?(ev(),qg().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})}))):"/settings"===t?yv().then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):"/subscription"===t?Wu(!0).then((()=>{this.setState({...this.state,disabled:!1})})).catch((()=>{this.setState({...this.state,disabled:!1})})):this.setState({...this.state,disabled:!1})}},"Refresh")}),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-log-out",onClick:()=>{window.location.href="/logout"}},"Logout"),qr.createElement("button",{className:"bp3-button bp3-minimal bp3-icon-moon",onClick:()=>{"light"===uu?mu():pu(),new Promise(((e,t)=>{ql.put("/theme").send({theme:uu}).set("Accept","application/json").set("Csrf-Token",hu).end(((n,i)=>i&&401===i.status?(window.location.href="/login",void e()):n?(cu(i,"Failed to save theme"),void t(n)):void e()))}))}}))),qr.createElement(Eu,{intent:"primary"}),qr.createElement(Ol,{path:"/",exact:!0,render:()=>qr.createElement(Op,null)}),qr.createElement(Ol,{path:"/users",render:()=>qr.createElement(Op,null)}),qr.createElement(Ol,{exact:!0,path:"/user",render:()=>qr.createElement(Ag,null)}),qr.createElement(Ol,{path:"/user/:userId",render:e=>qr.createElement(Ag,{userId:e.match.params.userId})}),qr.createElement(Ol,{path:"/nodes",render:()=>qr.createElement(hv,null)}),qr.createElement(Ol,{path:"/policies",render:()=>qr.createElement(Lv,null)}),qr.createElement(Ol,{path:"/authorities",render:()=>qr.createElement(Hv,null)}),qr.createElement(Ol,{path:"/certificates",render:()=>qr.createElement($v,null)}),qr.createElement(Ol,{path:"/alerts",render:()=>qr.createElement(Gy,null)}),qr.createElement(Ol,{path:"/checks",render:()=>qr.createElement(ab,null)}),qr.createElement(Ol,{path:"/endpoints",render:()=>qr.createElement(Ty,null)}),qr.createElement(Ol,{path:"/logs",render:()=>qr.createElement(wb,null)}),qr.createElement(Ol,{path:"/services",render:()=>qr.createElement(Vb,null)}),qr.createElement(Ol,{path:"/settings",render:()=>qr.createElement(Bb,null)}),qr.createElement(Ol,{path:"/subscription",render:()=>qr.createElement(tp,null)}))):qr.createElement("div",null)}}let Ub=!1;function Kb(){let e="",t=window.location;"https:"===t.protocol?e+="wss":e+="ws",e+="://"+t.host+"/event?csrf_token="+hu;let n=new WebSocket(e);n.addEventListener("close",(()=>{setTimeout((()=>{Kb()}),500)})),n.addEventListener("message",(e=>{console.log(JSON.parse(e.data).data),Hu.dispatch(JSON.parse(e.data).data)}))}function Xb(){Ub||(Ub=!0,Kb())}vs.register(jn),vs.register(Sr),vs.register(Cr),vs.register(Gr),vs.register(Ys),vs.register(Ps),vs.register(lr),vs.register(Mr),vs.register(ar);vs.registry.controllers.items.line=class extends jn{draw(){super.draw();let e=this.chart;if(e.tooltip._active&&e.tooltip._active.length){let t=this.chart.ctx,n=e.tooltip.caretX,i=e.scales.y.top,s=e.scales.y.bottom;t.save(),t.beginPath(),t.moveTo(n,i),t.lineTo(n,s),t.lineWidth=.7,t.strokeStyle="light"===uu?"#6f6f6f":"#e5e5e5",t.stroke(),t.restore()}}},new Promise(((e,t)=>{ql.get("/csrf").set("Accept","application/json").end(((n,i)=>{if(i&&401===i.status)return window.location.href="/login",void e();n?t(n):(hu=i.body.token,"light"===i.body.theme?pu():mu(),e())}))})).then((()=>{Io(),ru||(su?ru=su.create({position:ha},document.getElementById("toaster")):console.error("Failed to load toaster")),Xb(),Jr.render(qr.createElement("div",null,qr.createElement(Gb,null)),document.getElementById("app"))}))})()})(); //# sourceMappingURL=app.js.map \ No newline at end of file diff --git a/www/dist/static/app.c2b686.js.map b/www/dist/static/app.fc66d6.js.map similarity index 54% rename from www/dist/static/app.c2b686.js.map rename to www/dist/static/app.fc66d6.js.map index 0137a7c2..d09cc161 100644 --- a/www/dist/static/app.c2b686.js.map +++ b/www/dist/static/app.fc66d6.js.map @@ -1 +1 @@ -{"version":3,"file":"app.js","mappings":"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,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE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,aAA0Bj4R,IACzB,GFvRqB,iBEuRbA,EAAOvqC,KAEb,I,IE9OH,MAAM,GAAS,CACd,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAGc,MAAMyiU,WAAsB,aAS1CriU,YAAYf,EAAY6E,GACvBu+N,MAAMpjO,EAAO6E,GAQd,KAAA68N,MAAS50M,IACR,IAAI40M,EAAQ50M,EAAK40M,MACbuU,EAA2B,GAC3Bzb,EAAUh+N,OAAOiM,OAAOhK,KAAK6wB,MAAM,GACnC+zS,EAAU,KACVprR,EAAMuiL,EAAQl8N,OAElB,GAAI25C,EAAK,CACR,IAAI/zC,EAAQs2N,EAAQ,GAEhB1sN,EADO0sN,EAAQviL,EAAI,GACNl5B,EAAI7a,EAAM6a,EAG1BskT,EADGv1T,GAAS,SACF,OACAA,GAAS,SACT,OACAA,GAAS,QACT,MACAA,GAAS,QACT,MACAA,GAAS,OACT,MAEA,I,CAIZ,IAAK,IAAI1P,EAAI,EAAGA,EAAIsjO,EAAMpjO,OAAQF,IAAK,CACtC,IAAI81N,EAAOwN,EAAMtjO,GAEb81N,EAAK1nN,MAAQ62T,GAAY,GAC5BptF,EAASrrO,KAAKspN,E,CAIhBpnM,EAAK40M,MAAQuU,CAAQ,EAGtB,KAAA5iM,OAAS,KACR50C,KAAK8V,OAAS,GAA0B9V,KAAKuB,MAAMihU,SAAUxiU,KAAK6wB,MAClE,IAAI/mB,EAAO9J,KAEP40C,EAAS,CACZ1yC,KAAM,OACN8jB,QAAS,CACR+7L,OAAQ,CACPzhM,EAAG,CACFpe,KAAM,OACN2b,MAAO,CACNiL,SAAS,EACT0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","sources":["webpack://pritunl-zero//home/cloud/pritunl-zero-www/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://pritunl-zero/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/configureDom4.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/node_modules/react-transition-group/CSSTransition.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/node_modules/react-transition-group/ReplaceTransition.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/node_modules/react-transition-group/Transition.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/node_modules/react-transition-group/TransitionGroup.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/node_modules/react-transition-group/index.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/node_modules/react-transition-group/utils/ChildMapping.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/node_modules/react-transition-group/utils/PropTypes.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/Caption.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/DateUtils.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/Day.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/DayPicker.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/Helpers.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/LocaleUtils.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/ModifiersUtils.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/Month.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/Navbar.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/Weekday.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/Weekdays.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/classNames.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/index.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/keys.js","webpack://pritunl-zero/./node_modules/@hypnosphi/create-react-context/lib/implementation.js","webpack://pritunl-zero/./node_modules/@hypnosphi/create-react-context/lib/index.js","webpack://pritunl-zero/./node_modules/ace-builds/src-noconflict/ace.js","webpack://pritunl-zero/./node_modules/ace-builds/src-noconflict/ext-split.js","webpack://pritunl-zero/./node_modules/ace-builds/src-noconflict/mode-text.js","webpack://pritunl-zero/./node_modules/ace-builds/src-noconflict/theme-dracula.js","webpack://pritunl-zero/./node_modules/ace-builds/src-noconflict/theme-eclipse.js","webpack://pritunl-zero/./node_modules/call-bind/callBound.js","webpack://pritunl-zero/./node_modules/call-bind/index.js","webpack://pritunl-zero/./node_modules/classnames/index.js","webpack://pritunl-zero/./node_modules/component-emitter/index.js","webpack://pritunl-zero/./node_modules/deep-equal/index.js","webpack://pritunl-zero/./node_modules/define-properties/index.js","webpack://pritunl-zero/./node_modules/diff-match-patch/index.js","webpack://pritunl-zero/./node_modules/dom-helpers/class/addClass.js","webpack://pritunl-zero/./node_modules/dom-helpers/class/hasClass.js","webpack://pritunl-zero/./node_modules/dom-helpers/class/removeClass.js","webpack://pritunl-zero/./node_modules/dom4/build/dom4.max.js","webpack://pritunl-zero/./node_modules/events/events.js","webpack://pritunl-zero/./node_modules/fast-safe-stringify/index.js","webpack://pritunl-zero/./node_modules/fbjs/lib/invariant.js","webpack://pritunl-zero/./node_modules/flux/index.js","webpack://pritunl-zero/./node_modules/flux/lib/Dispatcher.js","webpack://pritunl-zero/./node_modules/function-bind/implementation.js","webpack://pritunl-zero/./node_modules/function-bind/index.js","webpack://pritunl-zero/./node_modules/get-intrinsic/index.js","webpack://pritunl-zero/./node_modules/gud/index.js","webpack://pritunl-zero/./node_modules/has-symbols/index.js","webpack://pritunl-zero/./node_modules/has-symbols/shams.js","webpack://pritunl-zero/./node_modules/has-tostringtag/shams.js","webpack://pritunl-zero/./node_modules/has/src/index.js","webpack://pritunl-zero/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://pritunl-zero/./node_modules/is-arguments/index.js","webpack://pritunl-zero/./node_modules/is-date-object/index.js","webpack://pritunl-zero/./node_modules/is-regex/index.js","webpack://pritunl-zero/./node_modules/isarray/index.js","webpack://pritunl-zero/./node_modules/lodash.get/index.js","webpack://pritunl-zero/./node_modules/lodash.isequal/index.js","webpack://pritunl-zero/./node_modules/mobile-detect/mobile-detect.js","webpack://pritunl-zero/./node_modules/moment/locale/af.js","webpack://pritunl-zero/./node_modules/moment/locale/ar-dz.js","webpack://pritunl-zero/./node_modules/moment/locale/ar-kw.js","webpack://pritunl-zero/./node_modules/moment/locale/ar-ly.js","webpack://pritunl-zero/./node_modules/moment/locale/ar-ma.js","webpack://pritunl-zero/./node_modules/moment/locale/ar-sa.js","webpack://pritunl-zero/./node_modules/moment/locale/ar-tn.js","webpack://pritunl-zero/./node_modules/moment/locale/ar.js","webpack://pritunl-zero/./node_modules/moment/locale/az.js","webpack://pritunl-zero/./node_modules/moment/locale/be.js","webpack://pritunl-zero/./node_modules/moment/locale/bg.js","webpack://pritunl-zero/./node_modules/moment/locale/bm.js","webpack://pritunl-zero/./node_modules/moment/locale/bn-bd.js","webpack://pritunl-zero/./node_modules/moment/locale/bn.js","webpack://pritunl-zero/./node_modules/moment/locale/bo.js","webpack://pritunl-zero/./node_modules/moment/locale/br.js","webpack://pritunl-zero/./node_modules/moment/locale/bs.js","webpack://pritunl-zero/./node_modules/moment/locale/ca.js","webpack://pritunl-zero/./node_modules/moment/locale/cs.js","webpack://pritunl-zero/./node_modules/moment/locale/cv.js","webpack://pritunl-zero/./node_modules/moment/locale/cy.js","webpack://pritunl-zero/./node_modules/moment/locale/da.js","webpack://pritunl-zero/./node_modules/moment/locale/de-at.js","webpack://pritunl-zero/./node_modules/moment/locale/de-ch.js","webpack://pritunl-zero/./node_modules/moment/locale/de.js","webpack://pritunl-zero/./node_modules/moment/locale/dv.js","webpack://pritunl-zero/./node_modules/moment/locale/el.js","webpack://pritunl-zero/./node_modules/moment/locale/en-au.js","webpack://pritunl-zero/./node_modules/moment/locale/en-ca.js","webpack://pritunl-zero/./node_modules/moment/locale/en-gb.js","webpack://pritunl-zero/./node_modules/moment/locale/en-ie.js","webpack://pritunl-zero/./node_modules/moment/locale/en-il.js","webpack://pritunl-zero/./node_modules/moment/locale/en-in.js","webpack://pritunl-zero/./node_modules/moment/locale/en-nz.js","webpack://pritunl-zero/./node_modules/moment/locale/en-sg.js","webpack://pritunl-zero/./node_modules/moment/locale/eo.js","webpack://pritunl-zero/./node_modules/moment/locale/es-do.js","webpack://pritunl-zero/./node_modules/moment/locale/es-mx.js","webpack://pritunl-zero/./node_modules/moment/locale/es-us.js","webpack://pritunl-zero/./node_modules/moment/locale/es.js","webpack://pritunl-zero/./node_modules/moment/locale/et.js","webpack://pritunl-zero/./node_modules/moment/locale/eu.js","webpack://pritunl-zero/./node_modules/moment/locale/fa.js","webpack://pritunl-zero/./node_modules/moment/locale/fi.js","webpack://pritunl-zero/./node_modules/moment/locale/fil.js","webpack://pritunl-zero/./node_modules/moment/locale/fo.js","webpack://pritunl-zero/./node_modules/moment/locale/fr-ca.js","webpack://pritunl-zero/./node_modules/moment/locale/fr-ch.js","webpack://pritunl-zero/./node_modules/moment/locale/fr.js","webpack://pritunl-zero/./node_modules/moment/locale/fy.js","webpack://pritunl-zero/./node_modules/moment/locale/ga.js","webpack://pritunl-zero/./node_modules/moment/locale/gd.js","webpack://pritunl-zero/./node_modules/moment/locale/gl.js","webpack://pritunl-zero/./node_modules/moment/locale/gom-deva.js","webpack://pritunl-zero/./node_modules/moment/locale/gom-latn.js","webpack://pritunl-zero/./node_modules/moment/locale/gu.js","webpack://pritunl-zero/./node_modules/moment/locale/he.js","webpack://pritunl-zero/./node_modules/moment/locale/hi.js","webpack://pritunl-zero/./node_modules/moment/locale/hr.js","webpack://pritunl-zero/./node_modules/moment/locale/hu.js","webpack://pritunl-zero/./node_modules/moment/locale/hy-am.js","webpack://pritunl-zero/./node_modules/moment/locale/id.js","webpack://pritunl-zero/./node_modules/moment/locale/is.js","webpack://pritunl-zero/./node_modules/moment/locale/it-ch.js","webpack://pritunl-zero/./node_modules/moment/locale/it.js","webpack://pritunl-zero/./node_modules/moment/locale/ja.js","webpack://pritunl-zero/./node_modules/moment/locale/jv.js","webpack://pritunl-zero/./node_modules/moment/locale/ka.js","webpack://pritunl-zero/./node_modules/moment/locale/kk.js","webpack://pritunl-zero/./node_modules/moment/locale/km.js","webpack://pritunl-zero/./node_modules/moment/locale/kn.js","webpack://pritunl-zero/./node_modules/moment/locale/ko.js","webpack://pritunl-zero/./node_modules/moment/locale/ku.js","webpack://pritunl-zero/./node_modules/moment/locale/ky.js","webpack://pritunl-zero/./node_modules/moment/locale/lb.js","webpack://pritunl-zero/./node_modules/moment/locale/lo.js","webpack://pritunl-zero/./node_modules/moment/locale/lt.js","webpack://pritunl-zero/./node_modules/moment/locale/lv.js","webpack://pritunl-zero/./node_modules/moment/locale/me.js","webpack://pritunl-zero/./node_modules/moment/locale/mi.js","webpack://pritunl-zero/./node_modules/moment/locale/mk.js","webpack://pritunl-zero/./node_modules/moment/locale/ml.js","webpack://pritunl-zero/./node_modules/moment/locale/mn.js","webpack://pritunl-zero/./node_modules/moment/locale/mr.js","webpack://pritunl-zero/./node_modules/moment/locale/ms-my.js","webpack://pritunl-zero/./node_modules/moment/locale/ms.js","webpack://pritunl-zero/./node_modules/moment/locale/mt.js","webpack://pritunl-zero/./node_modules/moment/locale/my.js","webpack://pritunl-zero/./node_modules/moment/locale/nb.js","webpack://pritunl-zero/./node_modules/moment/locale/ne.js","webpack://pritunl-zero/./node_modules/moment/locale/nl-be.js","webpack://pritunl-zero/./node_modules/moment/locale/nl.js","webpack://pritunl-zero/./node_modules/moment/locale/nn.js","webpack://pritunl-zero/./node_modules/moment/locale/oc-lnc.js","webpack://pritunl-zero/./node_modules/moment/locale/pa-in.js","webpack://pritunl-zero/./node_modules/moment/locale/pl.js","webpack://pritunl-zero/./node_modules/moment/locale/pt-br.js","webpack://pritunl-zero/./node_modules/moment/locale/pt.js","webpack://pritunl-zero/./node_modules/moment/locale/ro.js","webpack://pritunl-zero/./node_modules/moment/locale/ru.js","webpack://pritunl-zero/./node_modules/moment/locale/sd.js","webpack://pritunl-zero/./node_modules/moment/locale/se.js","webpack://pritunl-zero/./node_modules/moment/locale/si.js","webpack://pritunl-zero/./node_modules/moment/locale/sk.js","webpack://pritunl-zero/./node_modules/moment/locale/sl.js","webpack://pritunl-zero/./node_modules/moment/locale/sq.js","webpack://pritunl-zero/./node_modules/moment/locale/sr-cyrl.js","webpack://pritunl-zero/./node_modules/moment/locale/sr.js","webpack://pritunl-zero/./node_modules/moment/locale/ss.js","webpack://pritunl-zero/./node_modules/moment/locale/sv.js","webpack://pritunl-zero/./node_modules/moment/locale/sw.js","webpack://pritunl-zero/./node_modules/moment/locale/ta.js","webpack://pritunl-zero/./node_modules/moment/locale/te.js","webpack://pritunl-zero/./node_modules/moment/locale/tet.js","webpack://pritunl-zero/./node_modules/moment/locale/tg.js","webpack://pritunl-zero/./node_modules/moment/locale/th.js","webpack://pritunl-zero/./node_modules/moment/locale/tk.js","webpack://pritunl-zero/./node_modules/moment/locale/tl-ph.js","webpack://pritunl-zero/./node_modules/moment/locale/tlh.js","webpack://pritunl-zero/./node_modules/moment/locale/tr.js","webpack://pritunl-zero/./node_modules/moment/locale/tzl.js","webpack://pritunl-zero/./node_modules/moment/locale/tzm-latn.js","webpack://pritunl-zero/./node_modules/moment/locale/tzm.js","webpack://pritunl-zero/./node_modules/moment/locale/ug-cn.js","webpack://pritunl-zero/./node_modules/moment/locale/uk.js","webpack://pritunl-zero/./node_modules/moment/locale/ur.js","webpack://pritunl-zero/./node_modules/moment/locale/uz-latn.js","webpack://pritunl-zero/./node_modules/moment/locale/uz.js","webpack://pritunl-zero/./node_modules/moment/locale/vi.js","webpack://pritunl-zero/./node_modules/moment/locale/x-pseudo.js","webpack://pritunl-zero/./node_modules/moment/locale/yo.js","webpack://pritunl-zero/./node_modules/moment/locale/zh-cn.js","webpack://pritunl-zero/./node_modules/moment/locale/zh-hk.js","webpack://pritunl-zero/./node_modules/moment/locale/zh-mo.js","webpack://pritunl-zero/./node_modules/moment/locale/zh-tw.js","webpack://pritunl-zero/./node_modules/moment/moment.js","webpack://pritunl-zero/./node_modules/object-assign/index.js","webpack://pritunl-zero/./node_modules/object-inspect/index.js","webpack://pritunl-zero/./node_modules/object-is/implementation.js","webpack://pritunl-zero/./node_modules/object-is/index.js","webpack://pritunl-zero/./node_modules/object-is/polyfill.js","webpack://pritunl-zero/./node_modules/object-is/shim.js","webpack://pritunl-zero/./node_modules/object-keys/implementation.js","webpack://pritunl-zero/./node_modules/object-keys/index.js","webpack://pritunl-zero/./node_modules/object-keys/isArguments.js","webpack://pritunl-zero/./node_modules/path-to-regexp/index.js","webpack://pritunl-zero/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://pritunl-zero/./node_modules/prop-types/index.js","webpack://pritunl-zero/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://pritunl-zero/./node_modules/qs/lib/formats.js","webpack://pritunl-zero/./node_modules/qs/lib/index.js","webpack://pritunl-zero/./node_modules/qs/lib/parse.js","webpack://pritunl-zero/./node_modules/qs/lib/stringify.js","webpack://pritunl-zero/./node_modules/qs/lib/utils.js","webpack://pritunl-zero/./node_modules/react-ace/src/ace.tsx","webpack://pritunl-zero/./node_modules/react-ace/src/diff.tsx","webpack://pritunl-zero/./node_modules/react-ace/src/editorOptions.ts","webpack://pritunl-zero/./node_modules/react-ace/src/index.ts","webpack://pritunl-zero/./node_modules/react-ace/src/split.tsx","webpack://pritunl-zero/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://pritunl-zero/./node_modules/react-dom/index.js","webpack://pritunl-zero/./node_modules/react-is/cjs/react-is.production.min.js","webpack://pritunl-zero/./node_modules/react-is/index.js","webpack://pritunl-zero/./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack://pritunl-zero/./node_modules/react-stripe-checkout/dist/main.js","webpack://pritunl-zero/./node_modules/react/cjs/react.production.min.js","webpack://pritunl-zero/./node_modules/react/index.js","webpack://pritunl-zero/./node_modules/regexp.prototype.flags/implementation.js","webpack://pritunl-zero/./node_modules/regexp.prototype.flags/index.js","webpack://pritunl-zero/./node_modules/regexp.prototype.flags/polyfill.js","webpack://pritunl-zero/./node_modules/regexp.prototype.flags/shim.js","webpack://pritunl-zero/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://pritunl-zero/./node_modules/scheduler/index.js","webpack://pritunl-zero/./node_modules/side-channel/index.js","webpack://pritunl-zero/./node_modules/superagent/src/agent-base.js","webpack://pritunl-zero/./node_modules/superagent/src/client.js","webpack://pritunl-zero/./node_modules/superagent/src/is-object.js","webpack://pritunl-zero/./node_modules/superagent/src/request-base.js","webpack://pritunl-zero/./node_modules/superagent/src/response-base.js","webpack://pritunl-zero/./node_modules/superagent/src/utils.js","webpack://pritunl-zero/./node_modules/warning/warning.js","webpack://pritunl-zero/webpack/bootstrap","webpack://pritunl-zero/webpack/runtime/amd define","webpack://pritunl-zero/webpack/runtime/compat get default export","webpack://pritunl-zero/webpack/runtime/define property getters","webpack://pritunl-zero/webpack/runtime/global","webpack://pritunl-zero/webpack/runtime/hasOwnProperty shorthand","webpack://pritunl-zero/webpack/runtime/make namespace object","webpack://pritunl-zero/webpack/runtime/node module decorator","webpack://pritunl-zero/./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack://pritunl-zero/./node_modules/chart.js/dist/chart.esm.js","webpack://pritunl-zero/./node_modules/chartjs-adapter-moment/dist/chartjs-adapter-moment.esm.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/alignment.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/elevation.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/intent.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/position.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/classes.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/interactionMode.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/accessibility/focusStyleManager.ts","webpack://pritunl-zero/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://pritunl-zero/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://pritunl-zero/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://pritunl-zero/./node_modules/resolve-pathname/esm/resolve-pathname.js","webpack://pritunl-zero/./node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack://pritunl-zero/./node_modules/history/esm/history.js","webpack://pritunl-zero/./node_modules/mini-create-react-context/dist/esm/index.js","webpack://pritunl-zero/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://pritunl-zero/./node_modules/react-router/modules/createNameContext.js","webpack://pritunl-zero/./node_modules/react-router/modules/HistoryContext.js","webpack://pritunl-zero/./node_modules/react-router/modules/RouterContext.js","webpack://pritunl-zero/./node_modules/react-router/modules/Router.js","webpack://pritunl-zero/./node_modules/react-router/modules/MemoryRouter.js","webpack://pritunl-zero/./node_modules/react-router/modules/Lifecycle.js","webpack://pritunl-zero/./node_modules/react-router/modules/matchPath.js","webpack://pritunl-zero/./node_modules/react-router/modules/Route.js","webpack://pritunl-zero/./node_modules/react-router/modules/StaticRouter.js","webpack://pritunl-zero/./node_modules/react-router/modules/Switch.js","webpack://pritunl-zero/./node_modules/react-router/modules/hooks.js","webpack://pritunl-zero/./node_modules/react-router-dom/modules/BrowserRouter.js","webpack://pritunl-zero/./node_modules/react-router-dom/modules/HashRouter.js","webpack://pritunl-zero/./node_modules/react-router-dom/modules/utils/locationUtils.js","webpack://pritunl-zero/./node_modules/react-router-dom/modules/Link.js","webpack://pritunl-zero/./node_modules/react-router-dom/modules/NavLink.js","webpack://pritunl-zero/./node_modules/tslib/tslib.es6.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/props.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/refs.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/keys.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/utils/jsUtils.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/abstractPureComponent2.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/utils/reactUtils.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/icons/src/generated/iconSvgPaths.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/icon/icon.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/spinner/spinner.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/errors.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/button/abstractButton.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/button/buttons.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/html/html.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/utils/functionUtils.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/portal/portal.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/overlay/overlay.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/dialog/dialog.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/divider/divider.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/html-select/htmlSelect.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/menu/menuDivider.tsx","webpack://pritunl-zero/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://pritunl-zero/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://pritunl-zero/./node_modules/react-popper/lib/esm/Manager.js","webpack://pritunl-zero/./node_modules/react-popper/lib/esm/utils.js","webpack://pritunl-zero/./node_modules/react-popper/lib/esm/Reference.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isBrowser.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/debounce.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isFunction.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getStyleComputedProperty.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getParentNode.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getScrollParent.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getReferenceNode.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isIE.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getOffsetParent.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getRoot.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/findCommonOffsetParent.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isOffsetContainer.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getScroll.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/includeScroll.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getBordersSize.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getWindowSizes.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getClientRect.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getBoundingClientRect.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getOffsetRectRelativeToArbitraryNode.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isFixed.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getFixedPositionOffsetParent.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getBoundaries.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/computeAutoPlacement.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getReferenceOffsets.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getOuterSizes.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getOppositePlacement.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getPopperOffsets.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/find.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/runModifiers.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/findIndex.js","webpack://pritunl-zero/./node_modules/popper.js/src/methods/update.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isModifierEnabled.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getSupportedPropertyName.js","webpack://pritunl-zero/./node_modules/popper.js/src/methods/destroy.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getWindow.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/setupEventListeners.js","webpack://pritunl-zero/./node_modules/popper.js/src/methods/enableEventListeners.js","webpack://pritunl-zero/./node_modules/popper.js/src/methods/disableEventListeners.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/removeEventListeners.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isNumeric.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/setStyles.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/computeStyle.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isModifierRequired.js","webpack://pritunl-zero/./node_modules/popper.js/src/methods/placements.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/clockwise.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/flip.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/offset.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/index.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/shift.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/preventOverflow.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/keepTogether.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/arrow.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getOppositeVariation.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/inner.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/hide.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getRoundedOffsets.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/applyStyle.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/setAttributes.js","webpack://pritunl-zero/./node_modules/popper.js/src/methods/defaults.js","webpack://pritunl-zero/./node_modules/popper.js/src/index.js","webpack://pritunl-zero/./node_modules/react-popper/lib/esm/Popper.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/utils/domUtils.ts","webpack://pritunl-zero/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/resize-sensor/resizeSensor.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/tooltip/tooltip.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/popover/popperUtils.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/popover/popoverArrow.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/popover/popoverMigrationUtils.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/popover/popover.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/text/text.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/menu/menuItem.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/menu/menu.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/button/buttonGroup.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/toast/toast.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/toast/toaster.tsx","webpack://pritunl-zero/./app/Alert.ts","webpack://pritunl-zero/./app/Csrf.ts","webpack://pritunl-zero/./app/Theme.ts","webpack://pritunl-zero/./app/dispatcher/Dispatcher.ts","webpack://pritunl-zero/./app/EventEmitter.ts","webpack://pritunl-zero/./app/types/SubscriptionTypes.ts","webpack://pritunl-zero/./app/types/GlobalTypes.ts","webpack://pritunl-zero/./app/stores/SubscriptionStore.ts","webpack://pritunl-zero/./app/types/LoadingTypes.ts","webpack://pritunl-zero/./app/stores/LoadingStore.ts","webpack://pritunl-zero/./app/components/LoadingBar.tsx","webpack://pritunl-zero/./app/dispatcher/EventDispatcher.ts","webpack://pritunl-zero/./app/utils/MiscUtils.ts","webpack://pritunl-zero/./app/Loader.ts","webpack://pritunl-zero/./app/actions/SubscriptionActions.ts","webpack://pritunl-zero/./app/Constants.ts","webpack://pritunl-zero/./app/components/ConfirmButton.tsx","webpack://pritunl-zero/./app/components/Subscription.tsx","webpack://pritunl-zero/./app/types/UserTypes.ts","webpack://pritunl-zero/./app/stores/UsersStore.ts","webpack://pritunl-zero/./app/stores/UserStore.ts","webpack://pritunl-zero/./app/actions/UserActions.ts","webpack://pritunl-zero/./app/types/AuditTypes.ts","webpack://pritunl-zero/./app/stores/AuditsStore.ts","webpack://pritunl-zero/./app/actions/AuditActions.ts","webpack://pritunl-zero/./app/components/User.tsx","webpack://pritunl-zero/./app/components/SearchInput.tsx","webpack://pritunl-zero/./app/components/SwitchNull.tsx","webpack://pritunl-zero/./app/components/UsersFilter.tsx","webpack://pritunl-zero/./app/components/Page.tsx","webpack://pritunl-zero/./app/components/PageHeader.tsx","webpack://pritunl-zero/./app/components/UsersPage.tsx","webpack://pritunl-zero/./app/components/Users.tsx","webpack://pritunl-zero/./app/types/SessionTypes.ts","webpack://pritunl-zero/./app/stores/SessionsStore.ts","webpack://pritunl-zero/./app/actions/SessionActions.ts","webpack://pritunl-zero/./app/components/NonState.tsx","webpack://pritunl-zero/./app/utils/AgentUtils.ts","webpack://pritunl-zero/./app/components/PageInfo.tsx","webpack://pritunl-zero/./app/components/Session.tsx","webpack://pritunl-zero/./app/components/Sessions.tsx","webpack://pritunl-zero/./node_modules/@github/webauthn-json/src/webauthn-json/base64url.ts","webpack://pritunl-zero/./node_modules/@github/webauthn-json/src/webauthn-json/convert.ts","webpack://pritunl-zero/./node_modules/@github/webauthn-json/src/webauthn-json/basic/schema.ts","webpack://pritunl-zero/./node_modules/@github/webauthn-json/src/webauthn-json/basic/api.ts","webpack://pritunl-zero/./app/types/DeviceTypes.ts","webpack://pritunl-zero/./app/stores/DevicesStore.ts","webpack://pritunl-zero/./app/actions/DeviceActions.ts","webpack://pritunl-zero/./app/components/Help.tsx","webpack://pritunl-zero/./app/components/PageSwitch.tsx","webpack://pritunl-zero/./app/components/PageSave.tsx","webpack://pritunl-zero/./app/components/PageInput.tsx","webpack://pritunl-zero/./app/components/Device.tsx","webpack://pritunl-zero/./app/components/Devices.tsx","webpack://pritunl-zero/./app/components/Audit.tsx","webpack://pritunl-zero/./app/components/AuditsPage.tsx","webpack://pritunl-zero/./app/components/Audits.tsx","webpack://pritunl-zero/./app/types/SshcertificateTypes.ts","webpack://pritunl-zero/./app/stores/SshcertificatesStore.ts","webpack://pritunl-zero/./app/actions/SshcertificateActions.ts","webpack://pritunl-zero/./app/components/Sshcertificate.tsx","webpack://pritunl-zero/./app/components/SshcertificatesPage.tsx","webpack://pritunl-zero/./app/components/Sshcertificates.tsx","webpack://pritunl-zero/./app/components/PagePanel.tsx","webpack://pritunl-zero/./app/components/PageSplit.tsx","webpack://pritunl-zero/./app/components/PageInputButton.tsx","webpack://pritunl-zero/./app/components/PageSelect.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/common/classes.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/common/dateUtils.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/common/errors.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/common/utils.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/datePickerCaption.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/common/months.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/datePickerCore.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/datePickerNavbar.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/common/timeUnit.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/shortcuts.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/timePicker.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/datePicker.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/dateTimePicker.tsx","webpack://pritunl-zero/./app/components/PageDateTime.tsx","webpack://pritunl-zero/./app/components/PageNew.tsx","webpack://pritunl-zero/./app/components/UserDetailed.tsx","webpack://pritunl-zero/./app/types/NodeTypes.ts","webpack://pritunl-zero/./app/stores/NodesStore.ts","webpack://pritunl-zero/./app/types/ServiceTypes.ts","webpack://pritunl-zero/./app/stores/ServicesStore.ts","webpack://pritunl-zero/./app/types/AuthorityTypes.ts","webpack://pritunl-zero/./app/stores/AuthoritiesStore.ts","webpack://pritunl-zero/./app/types/CertificateTypes.ts","webpack://pritunl-zero/./app/stores/CertificatesStore.ts","webpack://pritunl-zero/./app/actions/NodeActions.ts","webpack://pritunl-zero/./app/actions/ServiceActions.ts","webpack://pritunl-zero/./app/actions/AuthorityActions.ts","webpack://pritunl-zero/./app/actions/CertificateActions.ts","webpack://pritunl-zero/./app/components/PageInputSwitch.tsx","webpack://pritunl-zero/./app/components/PageSelectButton.tsx","webpack://pritunl-zero/./app/components/Node.tsx","webpack://pritunl-zero/./app/components/Nodes.tsx","webpack://pritunl-zero/./app/types/PolicyTypes.ts","webpack://pritunl-zero/./app/stores/PoliciesStore.ts","webpack://pritunl-zero/./app/types/SettingsTypes.ts","webpack://pritunl-zero/./app/stores/SettingsStore.ts","webpack://pritunl-zero/./app/actions/PolicyActions.ts","webpack://pritunl-zero/./app/actions/SettingsActions.ts","webpack://pritunl-zero/./app/components/PolicyRule.tsx","webpack://pritunl-zero/./app/components/Policy.tsx","webpack://pritunl-zero/./app/components/Policies.tsx","webpack://pritunl-zero/./app/components/AuthorityDeploy.tsx","webpack://pritunl-zero/./app/components/PageTextAreaTab.tsx","webpack://pritunl-zero/./app/components/Authority.tsx","webpack://pritunl-zero/./app/components/Authorities.tsx","webpack://pritunl-zero/./app/components/CertificateDomain.tsx","webpack://pritunl-zero/./app/components/PageTextArea.tsx","webpack://pritunl-zero/./app/components/Certificate.tsx","webpack://pritunl-zero/./app/components/Certificates.tsx","webpack://pritunl-zero/./app/types/EndpointTypes.ts","webpack://pritunl-zero/./app/stores/EndpointsStore.ts","webpack://pritunl-zero/./app/actions/EndpointActions.ts","webpack://pritunl-zero/./app/types/CheckTypes.ts","webpack://pritunl-zero/./app/stores/ChecksStore.ts","webpack://pritunl-zero/./app/actions/CheckActions.ts","webpack://pritunl-zero/./app/types/ChartTypes.ts","webpack://pritunl-zero/./app/components/EndpointChart.tsx","webpack://pritunl-zero/./app/components/EndpointCharts.tsx","webpack://pritunl-zero/./app/components/EndpointKmsg.tsx","webpack://pritunl-zero/./app/components/EndpointDetailed.tsx","webpack://pritunl-zero/./app/components/Endpoint.tsx","webpack://pritunl-zero/./app/components/EndpointsFilter.tsx","webpack://pritunl-zero/./app/components/EndpointsPage.tsx","webpack://pritunl-zero/./app/components/Endpoints.tsx","webpack://pritunl-zero/./app/types/AlertTypes.ts","webpack://pritunl-zero/./app/stores/AlertsStore.ts","webpack://pritunl-zero/./app/actions/AlertActions.ts","webpack://pritunl-zero/./app/components/AlertDetailed.tsx","webpack://pritunl-zero/./app/components/Alert.tsx","webpack://pritunl-zero/./app/components/AlertsFilter.tsx","webpack://pritunl-zero/./app/components/AlertsPage.tsx","webpack://pritunl-zero/./app/components/Alerts.tsx","webpack://pritunl-zero/./app/components/CheckCharts.tsx","webpack://pritunl-zero/./app/components/CheckHeader.tsx","webpack://pritunl-zero/./app/components/CheckDetailed.tsx","webpack://pritunl-zero/./app/components/Check.tsx","webpack://pritunl-zero/./app/components/ChecksFilter.tsx","webpack://pritunl-zero/./app/components/ChecksPage.tsx","webpack://pritunl-zero/./app/components/Checks.tsx","webpack://pritunl-zero/./app/types/LogTypes.ts","webpack://pritunl-zero/./app/stores/LogsStore.ts","webpack://pritunl-zero/./app/actions/LogActions.ts","webpack://pritunl-zero/./app/components/Log.tsx","webpack://pritunl-zero/./app/components/LogsFilter.tsx","webpack://pritunl-zero/./app/components/LogsPage.tsx","webpack://pritunl-zero/./app/components/Logs.tsx","webpack://pritunl-zero/./app/components/ServiceDomain.tsx","webpack://pritunl-zero/./app/components/ServiceServer.tsx","webpack://pritunl-zero/./app/components/ServiceWhitelistPath.tsx","webpack://pritunl-zero/./app/components/ServiceDetailed.tsx","webpack://pritunl-zero/./app/components/Service.tsx","webpack://pritunl-zero/./app/components/ServicesFilter.tsx","webpack://pritunl-zero/./app/components/ServicesPage.tsx","webpack://pritunl-zero/./app/components/Services.tsx","webpack://pritunl-zero/./app/components/SettingsProvider.tsx","webpack://pritunl-zero/./app/components/SettingsSecondaryProvider.tsx","webpack://pritunl-zero/./app/components/Settings.tsx","webpack://pritunl-zero/./app/components/Main.tsx","webpack://pritunl-zero/./app/Event.ts","webpack://pritunl-zero/./app/App.tsx"],"sourcesContent":["var map = {\n\t\"./af\": 4506,\n\t\"./af.js\": 4506,\n\t\"./ar\": 9687,\n\t\"./ar-dz\": 2887,\n\t\"./ar-dz.js\": 2887,\n\t\"./ar-kw\": 6307,\n\t\"./ar-kw.js\": 6307,\n\t\"./ar-ly\": 1664,\n\t\"./ar-ly.js\": 1664,\n\t\"./ar-ma\": 9926,\n\t\"./ar-ma.js\": 9926,\n\t\"./ar-sa\": 5207,\n\t\"./ar-sa.js\": 5207,\n\t\"./ar-tn\": 2912,\n\t\"./ar-tn.js\": 2912,\n\t\"./ar.js\": 9687,\n\t\"./az\": 5011,\n\t\"./az.js\": 5011,\n\t\"./be\": 5997,\n\t\"./be.js\": 5997,\n\t\"./bg\": 4427,\n\t\"./bg.js\": 4427,\n\t\"./bm\": 5385,\n\t\"./bm.js\": 5385,\n\t\"./bn\": 7703,\n\t\"./bn-bd\": 7002,\n\t\"./bn-bd.js\": 7002,\n\t\"./bn.js\": 7703,\n\t\"./bo\": 9841,\n\t\"./bo.js\": 9841,\n\t\"./br\": 5642,\n\t\"./br.js\": 5642,\n\t\"./bs\": 9038,\n\t\"./bs.js\": 9038,\n\t\"./ca\": 3512,\n\t\"./ca.js\": 3512,\n\t\"./cs\": 9497,\n\t\"./cs.js\": 9497,\n\t\"./cv\": 6479,\n\t\"./cv.js\": 6479,\n\t\"./cy\": 9318,\n\t\"./cy.js\": 9318,\n\t\"./da\": 7229,\n\t\"./da.js\": 7229,\n\t\"./de\": 3460,\n\t\"./de-at\": 1044,\n\t\"./de-at.js\": 1044,\n\t\"./de-ch\": 6445,\n\t\"./de-ch.js\": 6445,\n\t\"./de.js\": 3460,\n\t\"./dv\": 2096,\n\t\"./dv.js\": 2096,\n\t\"./el\": 6048,\n\t\"./el.js\": 6048,\n\t\"./en-au\": 4301,\n\t\"./en-au.js\": 4301,\n\t\"./en-ca\": 6855,\n\t\"./en-ca.js\": 6855,\n\t\"./en-gb\": 761,\n\t\"./en-gb.js\": 761,\n\t\"./en-ie\": 6127,\n\t\"./en-ie.js\": 6127,\n\t\"./en-il\": 9157,\n\t\"./en-il.js\": 9157,\n\t\"./en-in\": 7199,\n\t\"./en-in.js\": 7199,\n\t\"./en-nz\": 1511,\n\t\"./en-nz.js\": 1511,\n\t\"./en-sg\": 7309,\n\t\"./en-sg.js\": 7309,\n\t\"./eo\": 2160,\n\t\"./eo.js\": 2160,\n\t\"./es\": 8582,\n\t\"./es-do\": 1885,\n\t\"./es-do.js\": 1885,\n\t\"./es-mx\": 8131,\n\t\"./es-mx.js\": 8131,\n\t\"./es-us\": 6962,\n\t\"./es-us.js\": 6962,\n\t\"./es.js\": 8582,\n\t\"./et\": 8890,\n\t\"./et.js\": 8890,\n\t\"./eu\": 7704,\n\t\"./eu.js\": 7704,\n\t\"./fa\": 2562,\n\t\"./fa.js\": 2562,\n\t\"./fi\": 877,\n\t\"./fi.js\": 877,\n\t\"./fil\": 4246,\n\t\"./fil.js\": 4246,\n\t\"./fo\": 8341,\n\t\"./fo.js\": 8341,\n\t\"./fr\": 9867,\n\t\"./fr-ca\": 2347,\n\t\"./fr-ca.js\": 2347,\n\t\"./fr-ch\": 7683,\n\t\"./fr-ch.js\": 7683,\n\t\"./fr.js\": 9867,\n\t\"./fy\": 1982,\n\t\"./fy.js\": 1982,\n\t\"./ga\": 3905,\n\t\"./ga.js\": 3905,\n\t\"./gd\": 3443,\n\t\"./gd.js\": 3443,\n\t\"./gl\": 6905,\n\t\"./gl.js\": 6905,\n\t\"./gom-deva\": 1324,\n\t\"./gom-deva.js\": 1324,\n\t\"./gom-latn\": 1890,\n\t\"./gom-latn.js\": 1890,\n\t\"./gu\": 7134,\n\t\"./gu.js\": 7134,\n\t\"./he\": 6835,\n\t\"./he.js\": 6835,\n\t\"./hi\": 1394,\n\t\"./hi.js\": 1394,\n\t\"./hr\": 3564,\n\t\"./hr.js\": 3564,\n\t\"./hu\": 6269,\n\t\"./hu.js\": 6269,\n\t\"./hy-am\": 7269,\n\t\"./hy-am.js\": 7269,\n\t\"./id\": 4254,\n\t\"./id.js\": 4254,\n\t\"./is\": 8699,\n\t\"./is.js\": 8699,\n\t\"./it\": 8301,\n\t\"./it-ch\": 5060,\n\t\"./it-ch.js\": 5060,\n\t\"./it.js\": 8301,\n\t\"./ja\": 4642,\n\t\"./ja.js\": 4642,\n\t\"./jv\": 2168,\n\t\"./jv.js\": 2168,\n\t\"./ka\": 4501,\n\t\"./ka.js\": 4501,\n\t\"./kk\": 9537,\n\t\"./kk.js\": 9537,\n\t\"./km\": 5808,\n\t\"./km.js\": 5808,\n\t\"./kn\": 4881,\n\t\"./kn.js\": 4881,\n\t\"./ko\": 2951,\n\t\"./ko.js\": 2951,\n\t\"./ku\": 2452,\n\t\"./ku.js\": 2452,\n\t\"./ky\": 1853,\n\t\"./ky.js\": 1853,\n\t\"./lb\": 7639,\n\t\"./lb.js\": 7639,\n\t\"./lo\": 4502,\n\t\"./lo.js\": 4502,\n\t\"./lt\": 874,\n\t\"./lt.js\": 874,\n\t\"./lv\": 8237,\n\t\"./lv.js\": 8237,\n\t\"./me\": 7878,\n\t\"./me.js\": 7878,\n\t\"./mi\": 4234,\n\t\"./mi.js\": 4234,\n\t\"./mk\": 7535,\n\t\"./mk.js\": 7535,\n\t\"./ml\": 3896,\n\t\"./ml.js\": 3896,\n\t\"./mn\": 3046,\n\t\"./mn.js\": 3046,\n\t\"./mr\": 927,\n\t\"./mr.js\": 927,\n\t\"./ms\": 7224,\n\t\"./ms-my\": 6332,\n\t\"./ms-my.js\": 6332,\n\t\"./ms.js\": 7224,\n\t\"./mt\": 4866,\n\t\"./mt.js\": 4866,\n\t\"./my\": 4206,\n\t\"./my.js\": 4206,\n\t\"./nb\": 6723,\n\t\"./nb.js\": 6723,\n\t\"./ne\": 5097,\n\t\"./ne.js\": 5097,\n\t\"./nl\": 7529,\n\t\"./nl-be\": 1355,\n\t\"./nl-be.js\": 1355,\n\t\"./nl.js\": 7529,\n\t\"./nn\": 296,\n\t\"./nn.js\": 296,\n\t\"./oc-lnc\": 4802,\n\t\"./oc-lnc.js\": 4802,\n\t\"./pa-in\": 7057,\n\t\"./pa-in.js\": 7057,\n\t\"./pl\": 9850,\n\t\"./pl.js\": 9850,\n\t\"./pt\": 5552,\n\t\"./pt-br\": 3726,\n\t\"./pt-br.js\": 3726,\n\t\"./pt.js\": 5552,\n\t\"./ro\": 1717,\n\t\"./ro.js\": 1717,\n\t\"./ru\": 9117,\n\t\"./ru.js\": 9117,\n\t\"./sd\": 1742,\n\t\"./sd.js\": 1742,\n\t\"./se\": 2049,\n\t\"./se.js\": 2049,\n\t\"./si\": 3329,\n\t\"./si.js\": 3329,\n\t\"./sk\": 7619,\n\t\"./sk.js\": 7619,\n\t\"./sl\": 6707,\n\t\"./sl.js\": 6707,\n\t\"./sq\": 4281,\n\t\"./sq.js\": 4281,\n\t\"./sr\": 436,\n\t\"./sr-cyrl\": 3408,\n\t\"./sr-cyrl.js\": 3408,\n\t\"./sr.js\": 436,\n\t\"./ss\": 7500,\n\t\"./ss.js\": 7500,\n\t\"./sv\": 6950,\n\t\"./sv.js\": 6950,\n\t\"./sw\": 4222,\n\t\"./sw.js\": 4222,\n\t\"./ta\": 3746,\n\t\"./ta.js\": 3746,\n\t\"./te\": 1130,\n\t\"./te.js\": 1130,\n\t\"./tet\": 4740,\n\t\"./tet.js\": 4740,\n\t\"./tg\": 3378,\n\t\"./tg.js\": 3378,\n\t\"./th\": 628,\n\t\"./th.js\": 628,\n\t\"./tk\": 2622,\n\t\"./tk.js\": 2622,\n\t\"./tl-ph\": 100,\n\t\"./tl-ph.js\": 100,\n\t\"./tlh\": 2871,\n\t\"./tlh.js\": 2871,\n\t\"./tr\": 3600,\n\t\"./tr.js\": 3600,\n\t\"./tzl\": 8985,\n\t\"./tzl.js\": 8985,\n\t\"./tzm\": 3627,\n\t\"./tzm-latn\": 1145,\n\t\"./tzm-latn.js\": 1145,\n\t\"./tzm.js\": 3627,\n\t\"./ug-cn\": 4790,\n\t\"./ug-cn.js\": 4790,\n\t\"./uk\": 7712,\n\t\"./uk.js\": 7712,\n\t\"./ur\": 9529,\n\t\"./ur.js\": 9529,\n\t\"./uz\": 9141,\n\t\"./uz-latn\": 1737,\n\t\"./uz-latn.js\": 1737,\n\t\"./uz.js\": 9141,\n\t\"./vi\": 8205,\n\t\"./vi.js\": 8205,\n\t\"./x-pseudo\": 697,\n\t\"./x-pseudo.js\": 697,\n\t\"./yo\": 7826,\n\t\"./yo.js\": 7826,\n\t\"./zh-cn\": 3994,\n\t\"./zh-cn.js\": 3994,\n\t\"./zh-hk\": 6892,\n\t\"./zh-hk.js\": 6892,\n\t\"./zh-mo\": 3884,\n\t\"./zh-mo.js\": 3884,\n\t\"./zh-tw\": 5136,\n\t\"./zh-tw.js\": 5136\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6700;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*\n * Copyright 2019 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nif (typeof require !== \"undefined\" && typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n // we're in browser\n require(\"dom4\"); // only import actual dom4 if we're in the browser (not server-compatible)\n // we'll still need dom4 types for the TypeScript to compile, these are included in package.json\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _addClass.default)(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _removeClass.default)(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, className);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n\n var enterClassName = _this.getClassNames('enter').doneClassName;\n\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n addClass(node, doneClassName);\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n addClass(node, className);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, doneClassName);\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n\n _proto.render = function render() {\n var props = _extends({}, this.props);\n\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * \n *
I appear first
\n *
I replace the above
\n *
\n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n\n var child = _react.default.Children.toArray(children)[idx];\n\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return children;\n }\n\n return _react.default.createElement(Component, props, children);\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) _react.Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport LocaleUtils from './LocaleUtils';\n\nimport { ENTER } from './keys';\n\nexport default class Caption extends Component {\n static propTypes = {\n date: PropTypes.instanceOf(Date),\n months: PropTypes.arrayOf(PropTypes.string),\n locale: PropTypes.string,\n localeUtils: PropTypes.object,\n onClick: PropTypes.func,\n classNames: PropTypes.shape({\n caption: PropTypes.string.isRequired,\n }).isRequired,\n };\n\n static defaultProps = {\n localeUtils: LocaleUtils,\n };\n\n constructor(props) {\n super(props);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n }\n\n shouldComponentUpdate(nextProps) {\n return (\n nextProps.locale !== this.props.locale ||\n nextProps.classNames !== this.props.classNames ||\n nextProps.date.getMonth() !== this.props.date.getMonth() ||\n nextProps.date.getFullYear() !== this.props.date.getFullYear()\n );\n }\n\n handleKeyUp(e) {\n if (e.keyCode === ENTER) {\n this.props.onClick(e);\n }\n }\n\n render() {\n const {\n classNames,\n date,\n months,\n locale,\n localeUtils,\n onClick,\n } = this.props;\n return (\n
\n
\n {months\n ? `${months[date.getMonth()]} ${date.getFullYear()}`\n : localeUtils.formatMonthTitle(date, locale)}\n
\n
\n );\n }\n}\n","/**\n * Clone a date object.\n *\n * @export\n * @param {Date} d The date to clone\n * @return {Date} The cloned date\n */\nexport function clone(d) {\n return new Date(d.getTime());\n}\n\n/**\n * Return `true` if the passed value is a valid JavaScript Date object.\n *\n * @export\n * @param {any} value\n * @returns {Boolean}\n */\nexport function isDate(value) {\n return value instanceof Date && !isNaN(value.valueOf());\n}\n\n/**\n * Return `d` as a new date with `n` months added.\n *\n * @export\n * @param {Date} d\n * @param {number} n\n */\nexport function addMonths(d, n) {\n const newDate = clone(d);\n newDate.setMonth(d.getMonth() + n);\n return newDate;\n}\n\n/**\n * Return `true` if two dates are the same day, ignoring the time.\n *\n * @export\n * @param {Date} d1\n * @param {Date} d2\n * @return {Boolean}\n */\nexport function isSameDay(d1, d2) {\n if (!d1 || !d2) {\n return false;\n }\n return (\n d1.getDate() === d2.getDate() &&\n d1.getMonth() === d2.getMonth() &&\n d1.getFullYear() === d2.getFullYear()\n );\n}\n\n/**\n * Return `true` if two dates fall in the same month.\n *\n * @export\n * @param {Date} d1\n * @param {Date} d2\n * @return {Boolean}\n */\nexport function isSameMonth(d1, d2) {\n if (!d1 || !d2) {\n return false;\n }\n return (\n d1.getMonth() === d2.getMonth() && d1.getFullYear() === d2.getFullYear()\n );\n}\n\n/**\n * Returns `true` if the first day is before the second day.\n *\n * @export\n * @param {Date} d1\n * @param {Date} d2\n * @returns {Boolean}\n */\nexport function isDayBefore(d1, d2) {\n const day1 = clone(d1).setHours(0, 0, 0, 0);\n const day2 = clone(d2).setHours(0, 0, 0, 0);\n return day1 < day2;\n}\n\n/**\n * Returns `true` if the first day is after the second day.\n *\n * @export\n * @param {Date} d1\n * @param {Date} d2\n * @returns {Boolean}\n */\nexport function isDayAfter(d1, d2) {\n const day1 = clone(d1).setHours(0, 0, 0, 0);\n const day2 = clone(d2).setHours(0, 0, 0, 0);\n return day1 > day2;\n}\n\n/**\n * Return `true` if a day is in the past, e.g. yesterday or any day\n * before yesterday.\n *\n * @export\n * @param {Date} d\n * @return {Boolean}\n */\nexport function isPastDay(d) {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return isDayBefore(d, today);\n}\n\n/**\n * Return `true` if a day is in the future, e.g. tomorrow or any day\n * after tomorrow.\n *\n * @export\n * @param {Date} d\n * @return {Boolean}\n */\nexport function isFutureDay(d) {\n const tomorrow = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);\n tomorrow.setHours(0, 0, 0, 0);\n return d >= tomorrow;\n}\n\n/**\n * Return `true` if day `d` is between days `d1` and `d2`,\n * without including them.\n *\n * @export\n * @param {Date} d\n * @param {Date} d1\n * @param {Date} d2\n * @return {Boolean}\n */\nexport function isDayBetween(d, d1, d2) {\n const date = clone(d);\n date.setHours(0, 0, 0, 0);\n return (\n (isDayAfter(date, d1) && isDayBefore(date, d2)) ||\n (isDayAfter(date, d2) && isDayBefore(date, d1))\n );\n}\n\n/**\n * Add a day to a range and return a new range. A range is an object with\n * `from` and `to` days.\n *\n * @export\n * @param {Date} day\n * @param {Object} range\n * @return {Object} Returns a new range object\n */\nexport function addDayToRange(day, range = { from: null, to: null }) {\n let { from, to } = range;\n if (!from) {\n from = day;\n } else if (from && to && isSameDay(from, to) && isSameDay(day, from)) {\n from = null;\n to = null;\n } else if (to && isDayBefore(day, from)) {\n from = day;\n } else if (to && isSameDay(day, to)) {\n from = day;\n to = day;\n } else {\n to = day;\n if (isDayBefore(to, from)) {\n to = from;\n from = day;\n }\n }\n\n return { from, to };\n}\n\n/**\n * Return `true` if a day is included in a range of days.\n *\n * @export\n * @param {Date} day\n * @param {Object} range\n * @return {Boolean}\n */\nexport function isDayInRange(day, range) {\n const { from, to } = range;\n return (\n (from && isSameDay(day, from)) ||\n (to && isSameDay(day, to)) ||\n (from && to && isDayBetween(day, from, to))\n );\n}\n\n/**\n * Return the year's week number (as per ISO, i.e. with the week starting from monday)\n * for the given day.\n *\n * @export\n * @param {Date} day\n * @returns {Number}\n */\nexport function getWeekNumber(day) {\n const date = clone(day);\n date.setHours(0, 0, 0);\n date.setDate(date.getDate() + 4 - (date.getDay() || 7));\n return Math.ceil(\n ((date - new Date(date.getFullYear(), 0, 1)) / 8.64e7 + 1) / 7\n );\n}\n\nexport default {\n addDayToRange,\n addMonths,\n clone,\n getWeekNumber,\n isDate,\n isDayAfter,\n isDayBefore,\n isDayBetween,\n isDayInRange,\n isFutureDay,\n isPastDay,\n isSameDay,\n isSameMonth,\n};\n","/* eslint-disable jsx-a11y/no-static-element-interactions, react/forbid-prop-types */\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { isSameDay } from './DateUtils';\nimport { hasOwnProp } from './Helpers';\n\nimport defaultClassNames from './classNames';\n\nfunction handleEvent(handler, day, modifiers) {\n if (!handler) {\n return undefined;\n }\n return e => {\n e.persist();\n handler(day, modifiers, e);\n };\n}\n\nexport default class Day extends Component {\n static propTypes = {\n classNames: PropTypes.shape({\n day: PropTypes.string.isRequired,\n }).isRequired,\n\n day: PropTypes.instanceOf(Date).isRequired,\n children: PropTypes.node.isRequired,\n\n ariaDisabled: PropTypes.bool,\n ariaLabel: PropTypes.string,\n ariaSelected: PropTypes.bool,\n empty: PropTypes.bool,\n modifiers: PropTypes.object,\n modifiersStyles: PropTypes.object,\n onClick: PropTypes.func,\n onKeyDown: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseUp: PropTypes.func,\n onTouchEnd: PropTypes.func,\n onTouchStart: PropTypes.func,\n onFocus: PropTypes.func,\n tabIndex: PropTypes.number,\n };\n\n static defaultProps = {\n tabIndex: -1,\n };\n\n static defaultProps = {\n modifiers: {},\n modifiersStyles: {},\n empty: false,\n };\n\n shouldComponentUpdate(nextProps) {\n const propNames = Object.keys(this.props);\n const nextPropNames = Object.keys(nextProps);\n if (propNames.length !== nextPropNames.length) {\n return true;\n }\n return propNames.some(name => {\n if (\n name === 'modifiers' ||\n name === 'modifiersStyles' ||\n name === 'classNames'\n ) {\n const prop = this.props[name];\n const nextProp = nextProps[name];\n const modifiers = Object.keys(prop);\n const nextModifiers = Object.keys(nextProp);\n if (modifiers.length !== nextModifiers.length) {\n return true;\n }\n return modifiers.some(\n mod => !hasOwnProp(nextProp, mod) || prop[mod] !== nextProp[mod]\n );\n }\n if (name === 'day') {\n return !isSameDay(this.props[name], nextProps[name]);\n }\n return (\n !hasOwnProp(nextProps, name) || this.props[name] !== nextProps[name]\n );\n });\n }\n\n render() {\n const {\n classNames,\n modifiersStyles,\n day,\n tabIndex,\n empty,\n modifiers,\n onMouseEnter,\n onMouseLeave,\n onMouseUp,\n onMouseDown,\n onClick,\n onKeyDown,\n onTouchStart,\n onTouchEnd,\n onFocus,\n ariaLabel,\n ariaDisabled,\n ariaSelected,\n children,\n } = this.props;\n\n let className = classNames.day;\n if (classNames !== defaultClassNames) {\n // When using CSS modules prefix the modifier as required by the BEM syntax\n className += ` ${Object.keys(modifiers).join(' ')}`;\n } else {\n className += Object.keys(modifiers)\n .map(modifier => ` ${className}--${modifier}`)\n .join('');\n }\n\n let style;\n if (modifiersStyles) {\n Object.keys(modifiers)\n .filter(modifier => !!modifiersStyles[modifier])\n .forEach(modifier => {\n style = { ...style, ...modifiersStyles[modifier] };\n });\n }\n\n if (empty) {\n return
;\n }\n return (\n \n {children}\n
\n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Caption from './Caption';\nimport Navbar from './Navbar';\nimport Month from './Month';\nimport Weekday from './Weekday';\n\nimport * as Helpers from './Helpers';\nimport * as DateUtils from './DateUtils';\nimport * as LocaleUtils from './LocaleUtils';\nimport * as ModifiersUtils from './ModifiersUtils';\nimport classNames from './classNames';\n\nimport { ENTER, SPACE, LEFT, UP, DOWN, RIGHT } from './keys';\n\nexport class DayPicker extends Component {\n dayPicker = null;\n\n static propTypes = {\n // Rendering months\n initialMonth: PropTypes.instanceOf(Date),\n month: PropTypes.instanceOf(Date),\n numberOfMonths: PropTypes.number,\n fromMonth: PropTypes.instanceOf(Date),\n toMonth: PropTypes.instanceOf(Date),\n canChangeMonth: PropTypes.bool,\n reverseMonths: PropTypes.bool,\n pagedNavigation: PropTypes.bool,\n todayButton: PropTypes.string,\n showWeekNumbers: PropTypes.bool,\n showWeekDays: PropTypes.bool,\n\n // Modifiers\n selectedDays: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.array,\n ]),\n disabledDays: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.array,\n ]),\n\n modifiers: PropTypes.object,\n modifiersStyles: PropTypes.object,\n\n // Localization\n dir: PropTypes.string,\n firstDayOfWeek: PropTypes.oneOf([0, 1, 2, 3, 4, 5, 6]),\n labels: PropTypes.shape({\n nextMonth: PropTypes.string.isRequired,\n previousMonth: PropTypes.string.isRequired,\n }),\n locale: PropTypes.string,\n localeUtils: PropTypes.shape({\n formatMonthTitle: PropTypes.func,\n formatWeekdayShort: PropTypes.func,\n formatWeekdayLong: PropTypes.func,\n getFirstDayOfWeek: PropTypes.func,\n }),\n months: PropTypes.arrayOf(PropTypes.string),\n weekdaysLong: PropTypes.arrayOf(PropTypes.string),\n weekdaysShort: PropTypes.arrayOf(PropTypes.string),\n\n // Customization\n showOutsideDays: PropTypes.bool,\n enableOutsideDaysClick: PropTypes.bool,\n fixedWeeks: PropTypes.bool,\n\n // CSS and HTML\n classNames: PropTypes.shape({\n body: PropTypes.string,\n container: PropTypes.string,\n day: PropTypes.string.isRequired,\n disabled: PropTypes.string.isRequired,\n footer: PropTypes.string,\n interactionDisabled: PropTypes.string,\n months: PropTypes.string,\n month: PropTypes.string,\n navBar: PropTypes.string,\n outside: PropTypes.string.isRequired,\n selected: PropTypes.string.isRequired,\n today: PropTypes.string.isRequired,\n todayButton: PropTypes.string,\n week: PropTypes.string,\n wrapper: PropTypes.string,\n }),\n className: PropTypes.string,\n containerProps: PropTypes.object,\n tabIndex: PropTypes.number,\n\n // Custom elements\n renderDay: PropTypes.func,\n renderWeek: PropTypes.func,\n weekdayElement: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.instanceOf(Component),\n ]),\n navbarElement: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.instanceOf(Component),\n ]),\n captionElement: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.instanceOf(Component),\n ]),\n\n // Events\n onBlur: PropTypes.func,\n onFocus: PropTypes.func,\n onKeyDown: PropTypes.func,\n onDayClick: PropTypes.func,\n onDayKeyDown: PropTypes.func,\n onDayMouseEnter: PropTypes.func,\n onDayMouseLeave: PropTypes.func,\n onDayMouseDown: PropTypes.func,\n onDayMouseUp: PropTypes.func,\n onDayTouchStart: PropTypes.func,\n onDayTouchEnd: PropTypes.func,\n onDayFocus: PropTypes.func,\n onMonthChange: PropTypes.func,\n onCaptionClick: PropTypes.func,\n onWeekClick: PropTypes.func,\n onTodayButtonClick: PropTypes.func,\n };\n\n static defaultProps = {\n classNames,\n tabIndex: 0,\n numberOfMonths: 1,\n labels: {\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n },\n locale: 'en',\n localeUtils: LocaleUtils,\n showOutsideDays: false,\n enableOutsideDaysClick: true,\n fixedWeeks: false,\n canChangeMonth: true,\n reverseMonths: false,\n pagedNavigation: false,\n showWeekNumbers: false,\n showWeekDays: true,\n renderDay: day => day.getDate(),\n renderWeek: weekNumber => weekNumber,\n weekdayElement: ,\n navbarElement: ,\n captionElement: ,\n };\n\n constructor(props) {\n super(props);\n\n const currentMonth = this.getCurrentMonthFromProps(props);\n this.state = { currentMonth };\n }\n\n componentDidUpdate(prevProps) {\n // Changing the `month` props means changing the current displayed month\n if (\n prevProps.month !== this.props.month &&\n !DateUtils.isSameMonth(prevProps.month, this.props.month)\n ) {\n const currentMonth = this.getCurrentMonthFromProps(this.props);\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ currentMonth });\n }\n }\n\n static VERSION = '7.4.8';\n\n /**\n * Return the month to be shown in the calendar based on the component props.\n *\n * @param {Object} props\n * @returns Date\n * @memberof DayPicker\n * @private\n */\n getCurrentMonthFromProps(props) {\n const initialMonth = Helpers.startOfMonth(\n props.month || props.initialMonth || new Date()\n );\n let currentMonth = initialMonth;\n\n if (props.pagedNavigation && props.numberOfMonths > 1 && props.fromMonth) {\n const fromMonth = Helpers.startOfMonth(props.fromMonth);\n const diffInMonths = Helpers.getMonthsDiff(fromMonth, currentMonth);\n currentMonth = DateUtils.addMonths(\n fromMonth,\n Math.floor(diffInMonths / props.numberOfMonths) * props.numberOfMonths\n );\n } else if (\n props.toMonth &&\n props.numberOfMonths > 1 &&\n Helpers.getMonthsDiff(currentMonth, props.toMonth) <= 0\n ) {\n currentMonth = DateUtils.addMonths(\n Helpers.startOfMonth(props.toMonth),\n 1 - this.props.numberOfMonths\n );\n }\n return currentMonth;\n }\n\n getNextNavigableMonth() {\n return DateUtils.addMonths(\n this.state.currentMonth,\n this.props.numberOfMonths\n );\n }\n\n getPreviousNavigableMonth() {\n return DateUtils.addMonths(this.state.currentMonth, -1);\n }\n\n allowPreviousMonth() {\n const previousMonth = DateUtils.addMonths(this.state.currentMonth, -1);\n return this.allowMonth(previousMonth);\n }\n\n allowNextMonth() {\n const nextMonth = DateUtils.addMonths(\n this.state.currentMonth,\n this.props.numberOfMonths\n );\n return this.allowMonth(nextMonth);\n }\n\n allowMonth(d) {\n const { fromMonth, toMonth, canChangeMonth } = this.props;\n if (\n !canChangeMonth ||\n (fromMonth && Helpers.getMonthsDiff(fromMonth, d) < 0) ||\n (toMonth && Helpers.getMonthsDiff(toMonth, d) > 0)\n ) {\n return false;\n }\n return true;\n }\n\n allowYearChange() {\n return this.props.canChangeMonth;\n }\n\n showMonth(d, callback) {\n if (!this.allowMonth(d)) {\n return;\n }\n this.setState({ currentMonth: Helpers.startOfMonth(d) }, () => {\n if (callback) {\n callback();\n }\n if (this.props.onMonthChange) {\n this.props.onMonthChange(this.state.currentMonth);\n }\n });\n }\n\n showNextMonth = callback => {\n if (!this.allowNextMonth()) {\n return;\n }\n const deltaMonths = this.props.pagedNavigation\n ? this.props.numberOfMonths\n : 1;\n const nextMonth = DateUtils.addMonths(this.state.currentMonth, deltaMonths);\n this.showMonth(nextMonth, callback);\n };\n\n showPreviousMonth = callback => {\n if (!this.allowPreviousMonth()) {\n return;\n }\n const deltaMonths = this.props.pagedNavigation\n ? this.props.numberOfMonths\n : 1;\n const previousMonth = DateUtils.addMonths(\n this.state.currentMonth,\n -deltaMonths\n );\n this.showMonth(previousMonth, callback);\n };\n\n showNextYear() {\n if (!this.allowYearChange()) {\n return;\n }\n const nextMonth = DateUtils.addMonths(this.state.currentMonth, 12);\n this.showMonth(nextMonth);\n }\n\n showPreviousYear() {\n if (!this.allowYearChange()) {\n return;\n }\n const nextMonth = DateUtils.addMonths(this.state.currentMonth, -12);\n this.showMonth(nextMonth);\n }\n\n focus() {\n this.wrapper.focus();\n }\n\n focusFirstDayOfMonth() {\n Helpers.getDayNodes(this.dayPicker, this.props.classNames)[0].focus();\n }\n\n focusLastDayOfMonth() {\n const dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n dayNodes[dayNodes.length - 1].focus();\n }\n\n focusPreviousDay(dayNode) {\n const dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n const dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n if (dayNodeIndex === -1) return;\n if (dayNodeIndex === 0) {\n this.showPreviousMonth(() => this.focusLastDayOfMonth());\n } else {\n dayNodes[dayNodeIndex - 1].focus();\n }\n }\n\n focusNextDay(dayNode) {\n const dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n const dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n if (dayNodeIndex === -1) return;\n if (dayNodeIndex === dayNodes.length - 1) {\n this.showNextMonth(() => this.focusFirstDayOfMonth());\n } else {\n dayNodes[dayNodeIndex + 1].focus();\n }\n }\n\n focusNextWeek(dayNode) {\n const dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n const dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n const isInLastWeekOfMonth = dayNodeIndex > dayNodes.length - 8;\n\n if (isInLastWeekOfMonth) {\n this.showNextMonth(() => {\n const daysAfterIndex = dayNodes.length - dayNodeIndex;\n const nextMonthDayNodeIndex = 7 - daysAfterIndex;\n Helpers.getDayNodes(this.dayPicker, this.props.classNames)[\n nextMonthDayNodeIndex\n ].focus();\n });\n } else {\n dayNodes[dayNodeIndex + 7].focus();\n }\n }\n\n focusPreviousWeek(dayNode) {\n const dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n const dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n const isInFirstWeekOfMonth = dayNodeIndex <= 6;\n\n if (isInFirstWeekOfMonth) {\n this.showPreviousMonth(() => {\n const previousMonthDayNodes = Helpers.getDayNodes(\n this.dayPicker,\n this.props.classNames\n );\n const startOfLastWeekOfMonth = previousMonthDayNodes.length - 7;\n const previousMonthDayNodeIndex = startOfLastWeekOfMonth + dayNodeIndex;\n previousMonthDayNodes[previousMonthDayNodeIndex].focus();\n });\n } else {\n dayNodes[dayNodeIndex - 7].focus();\n }\n }\n\n // Event handlers\n\n handleKeyDown = e => {\n e.persist();\n\n switch (e.keyCode) {\n case LEFT:\n if (this.props.dir === 'rtl') {\n this.showNextMonth();\n } else {\n this.showPreviousMonth();\n }\n Helpers.cancelEvent(e);\n break;\n case RIGHT:\n if (this.props.dir === 'rtl') {\n this.showPreviousMonth();\n } else {\n this.showNextMonth();\n }\n Helpers.cancelEvent(e);\n break;\n case UP:\n this.showPreviousYear();\n Helpers.cancelEvent(e);\n break;\n case DOWN:\n this.showNextYear();\n Helpers.cancelEvent(e);\n break;\n default:\n break;\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n handleDayKeyDown = (day, modifiers, e) => {\n e.persist();\n\n switch (e.keyCode) {\n case LEFT:\n Helpers.cancelEvent(e);\n if (this.props.dir === 'rtl') {\n this.focusNextDay(e.target);\n } else {\n this.focusPreviousDay(e.target);\n }\n break;\n case RIGHT:\n Helpers.cancelEvent(e);\n if (this.props.dir === 'rtl') {\n this.focusPreviousDay(e.target);\n } else {\n this.focusNextDay(e.target);\n }\n break;\n case UP:\n Helpers.cancelEvent(e);\n this.focusPreviousWeek(e.target);\n break;\n case DOWN:\n Helpers.cancelEvent(e);\n this.focusNextWeek(e.target);\n break;\n case ENTER:\n case SPACE:\n Helpers.cancelEvent(e);\n if (this.props.onDayClick) {\n this.handleDayClick(day, modifiers, e);\n }\n break;\n default:\n break;\n }\n if (this.props.onDayKeyDown) {\n this.props.onDayKeyDown(day, modifiers, e);\n }\n };\n\n handleDayClick = (day, modifiers, e) => {\n e.persist();\n\n if (\n modifiers[this.props.classNames.outside] &&\n this.props.enableOutsideDaysClick\n ) {\n this.handleOutsideDayClick(day);\n }\n if (this.props.onDayClick) {\n this.props.onDayClick(day, modifiers, e);\n }\n };\n\n handleOutsideDayClick(day) {\n const { currentMonth } = this.state;\n const { numberOfMonths } = this.props;\n const diffInMonths = Helpers.getMonthsDiff(currentMonth, day);\n if (diffInMonths > 0 && diffInMonths >= numberOfMonths) {\n this.showNextMonth();\n } else if (diffInMonths < 0) {\n this.showPreviousMonth();\n }\n }\n\n handleTodayButtonClick = e => {\n const today = new Date();\n const month = new Date(today.getFullYear(), today.getMonth());\n this.showMonth(month);\n e.target.blur();\n if (this.props.onTodayButtonClick) {\n e.persist();\n this.props.onTodayButtonClick(\n new Date(today.getFullYear(), today.getMonth(), today.getDate()),\n ModifiersUtils.getModifiersForDay(today, this.props.modifiers),\n e\n );\n }\n };\n\n renderNavbar() {\n const {\n labels,\n locale,\n localeUtils,\n canChangeMonth,\n navbarElement,\n ...attributes\n } = this.props;\n\n if (!canChangeMonth) return null;\n\n const props = {\n month: this.state.currentMonth,\n classNames: this.props.classNames,\n className: this.props.classNames.navBar,\n nextMonth: this.getNextNavigableMonth(),\n previousMonth: this.getPreviousNavigableMonth(),\n showPreviousButton: this.allowPreviousMonth(),\n showNextButton: this.allowNextMonth(),\n onNextClick: this.showNextMonth,\n onPreviousClick: this.showPreviousMonth,\n dir: attributes.dir,\n labels,\n locale,\n localeUtils,\n };\n return React.isValidElement(navbarElement)\n ? React.cloneElement(navbarElement, props)\n : React.createElement(navbarElement, props);\n }\n\n renderMonths() {\n const months = [];\n const firstDayOfWeek = Helpers.getFirstDayOfWeekFromProps(this.props);\n for (let i = 0; i < this.props.numberOfMonths; i += 1) {\n const month = DateUtils.addMonths(this.state.currentMonth, i);\n months.push(\n \n );\n }\n\n if (this.props.reverseMonths) {\n months.reverse();\n }\n return months;\n }\n\n renderFooter() {\n if (this.props.todayButton) {\n return (\n
\n {this.renderTodayButton()}\n
\n );\n }\n return null;\n }\n\n renderTodayButton() {\n return (\n \n {this.props.todayButton}\n \n );\n }\n\n render() {\n let className = this.props.classNames.container;\n\n if (!this.props.onDayClick) {\n className = `${className} ${this.props.classNames.interactionDisabled}`;\n }\n if (this.props.className) {\n className = `${className} ${this.props.className}`;\n }\n return (\n (this.dayPicker = el)}\n lang={this.props.locale}\n >\n (this.wrapper = el)}\n tabIndex={\n this.props.canChangeMonth &&\n typeof this.props.tabIndex !== 'undefined'\n ? this.props.tabIndex\n : -1\n }\n onKeyDown={this.handleKeyDown}\n onFocus={this.props.onFocus}\n onBlur={this.props.onBlur}\n >\n {this.renderNavbar()}\n
\n {this.renderMonths()}\n
\n {this.renderFooter()}\n
\n
\n );\n }\n}\n\nDayPicker.DateUtils = DateUtils;\nDayPicker.LocaleUtils = LocaleUtils;\nDayPicker.ModifiersUtils = ModifiersUtils;\n\nexport { DateUtils, LocaleUtils, ModifiersUtils };\n\nexport default DayPicker;\n","import { clone } from './DateUtils';\nimport { getFirstDayOfWeek } from './LocaleUtils';\nimport defaultClassNames from './classNames';\n\nexport function cancelEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\n\nexport function getFirstDayOfMonth(d) {\n return new Date(d.getFullYear(), d.getMonth(), 1, 12);\n}\n\nexport function getDaysInMonth(d) {\n const resultDate = getFirstDayOfMonth(d);\n\n resultDate.setMonth(resultDate.getMonth() + 1);\n resultDate.setDate(resultDate.getDate() - 1);\n\n return resultDate.getDate();\n}\n\nexport function getModifiersFromProps(props) {\n const modifiers = { ...props.modifiers };\n if (props.selectedDays) {\n modifiers[props.classNames.selected] = props.selectedDays;\n }\n if (props.disabledDays) {\n modifiers[props.classNames.disabled] = props.disabledDays;\n }\n return modifiers;\n}\n\nexport function getFirstDayOfWeekFromProps(props) {\n const { firstDayOfWeek, locale = 'en', localeUtils = {} } = props;\n if (!isNaN(firstDayOfWeek)) {\n return firstDayOfWeek;\n }\n if (localeUtils.getFirstDayOfWeek) {\n return localeUtils.getFirstDayOfWeek(locale);\n }\n return 0;\n}\n\nexport function isRangeOfDates(value) {\n return !!(value && value.from && value.to);\n}\n\nexport function getMonthsDiff(d1, d2) {\n return (\n d2.getMonth() - d1.getMonth() + 12 * (d2.getFullYear() - d1.getFullYear())\n );\n}\n\nexport function getWeekArray(\n d,\n firstDayOfWeek = getFirstDayOfWeek(),\n fixedWeeks\n) {\n const daysInMonth = getDaysInMonth(d);\n const dayArray = [];\n\n let week = [];\n const weekArray = [];\n\n for (let i = 1; i <= daysInMonth; i += 1) {\n dayArray.push(new Date(d.getFullYear(), d.getMonth(), i, 12));\n }\n\n dayArray.forEach(day => {\n if (week.length > 0 && day.getDay() === firstDayOfWeek) {\n weekArray.push(week);\n week = [];\n }\n week.push(day);\n if (dayArray.indexOf(day) === dayArray.length - 1) {\n weekArray.push(week);\n }\n });\n\n // unshift days to start the first week\n const firstWeek = weekArray[0];\n for (let i = 7 - firstWeek.length; i > 0; i -= 1) {\n const outsideDate = clone(firstWeek[0]);\n outsideDate.setDate(firstWeek[0].getDate() - 1);\n firstWeek.unshift(outsideDate);\n }\n\n // push days until the end of the last week\n const lastWeek = weekArray[weekArray.length - 1];\n for (let i = lastWeek.length; i < 7; i += 1) {\n const outsideDate = clone(lastWeek[lastWeek.length - 1]);\n outsideDate.setDate(lastWeek[lastWeek.length - 1].getDate() + 1);\n lastWeek.push(outsideDate);\n }\n\n // add extra weeks to reach 6 weeks\n if (fixedWeeks && weekArray.length < 6) {\n let lastExtraWeek;\n\n for (let i = weekArray.length; i < 6; i += 1) {\n lastExtraWeek = weekArray[weekArray.length - 1];\n const lastDay = lastExtraWeek[lastExtraWeek.length - 1];\n const extraWeek = [];\n\n for (let j = 0; j < 7; j += 1) {\n const outsideDate = clone(lastDay);\n outsideDate.setDate(lastDay.getDate() + j + 1);\n extraWeek.push(outsideDate);\n }\n\n weekArray.push(extraWeek);\n }\n }\n\n return weekArray;\n}\n\nexport function startOfMonth(d) {\n const newDate = clone(d);\n newDate.setDate(1);\n newDate.setHours(12, 0, 0, 0); // always set noon to avoid time zone issues\n return newDate;\n}\n\nexport function getDayNodes(node, classNames) {\n let outsideClassName;\n if (classNames === defaultClassNames) {\n // When using CSS modules prefix the modifier as required by the BEM syntax\n outsideClassName = `${classNames.day}--${classNames.outside}`;\n } else {\n outsideClassName = `${classNames.outside}`;\n }\n const dayQuery = classNames.day.replace(/ /g, '.');\n const outsideDayQuery = outsideClassName.replace(/ /g, '.');\n const selector = `.${dayQuery}:not(.${outsideDayQuery})`;\n return node.querySelectorAll(selector);\n}\n\nexport function nodeListToArray(nodeList) {\n return Array.prototype.slice.call(nodeList, 0);\n}\n\nexport function hasOwnProp(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","const WEEKDAYS_LONG = [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n];\n\nconst WEEKDAYS_SHORT = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n\nconst MONTHS = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\nexport function formatDay(day) {\n return day.toDateString();\n}\n\nexport function formatMonthTitle(d) {\n return `${MONTHS[d.getMonth()]} ${d.getFullYear()}`;\n}\n\nexport function formatWeekdayShort(i) {\n return WEEKDAYS_SHORT[i];\n}\n\nexport function formatWeekdayLong(i) {\n return WEEKDAYS_LONG[i];\n}\n\nexport function getFirstDayOfWeek() {\n return 0;\n}\n\nexport function getMonths() {\n return MONTHS;\n}\n\nexport default {\n formatDay,\n formatMonthTitle,\n formatWeekdayShort,\n formatWeekdayLong,\n getFirstDayOfWeek,\n getMonths,\n};\n","import { isDayAfter, isDayBefore, isDayInRange, isSameDay } from './DateUtils';\nimport { isRangeOfDates } from './Helpers';\n\n/**\n * Return `true` if a date matches the specified modifier.\n *\n * @export\n * @param {Date} day\n * @param {Any} modifier\n * @return {Boolean}\n */\nexport function dayMatchesModifier(day, modifier) {\n if (!modifier) {\n return false;\n }\n const arr = Array.isArray(modifier) ? modifier : [modifier];\n return arr.some(mod => {\n if (!mod) {\n return false;\n }\n if (mod instanceof Date) {\n return isSameDay(day, mod);\n }\n if (isRangeOfDates(mod)) {\n return isDayInRange(day, mod);\n }\n if (mod.after && mod.before && isDayAfter(mod.before, mod.after)) {\n return isDayAfter(day, mod.after) && isDayBefore(day, mod.before);\n }\n if (\n mod.after &&\n mod.before &&\n (isDayAfter(mod.after, mod.before) || isSameDay(mod.after, mod.before))\n ) {\n return isDayAfter(day, mod.after) || isDayBefore(day, mod.before);\n }\n if (mod.after) {\n return isDayAfter(day, mod.after);\n }\n if (mod.before) {\n return isDayBefore(day, mod.before);\n }\n if (mod.daysOfWeek) {\n return mod.daysOfWeek.some(dayOfWeek => day.getDay() === dayOfWeek);\n }\n if (typeof mod === 'function') {\n return mod(day);\n }\n return false;\n });\n}\n\n/**\n * Return the modifiers matching the given day for the given\n * object of modifiers.\n *\n * @export\n * @param {Date} day\n * @param {Object} [modifiersObj={}]\n * @return {Array}\n */\nexport function getModifiersForDay(day, modifiersObj = {}) {\n return Object.keys(modifiersObj).reduce((modifiers, modifierName) => {\n const value = modifiersObj[modifierName];\n if (dayMatchesModifier(day, value)) {\n modifiers.push(modifierName);\n }\n return modifiers;\n }, []);\n}\n\nexport default { dayMatchesModifier, getModifiersForDay };\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Weekdays from './Weekdays';\nimport Day from './Day';\nimport { ENTER } from './keys';\n\nimport * as ModifiersUtils from './ModifiersUtils';\nimport * as Helpers from './Helpers';\nimport * as DateUtils from './DateUtils';\n\nexport default class Month extends Component {\n static propTypes = {\n classNames: PropTypes.shape({\n body: PropTypes.string.isRequired,\n month: PropTypes.string.isRequired,\n outside: PropTypes.string.isRequired,\n today: PropTypes.string.isRequired,\n week: PropTypes.string.isRequired,\n weekNumber: PropTypes.string.isRequired,\n disabled: PropTypes.string.isRequired,\n selected: PropTypes.string.isRequired,\n }).isRequired,\n tabIndex: PropTypes.number,\n\n month: PropTypes.instanceOf(Date).isRequired,\n months: PropTypes.arrayOf(PropTypes.string),\n\n modifiersStyles: PropTypes.object,\n\n showWeekDays: PropTypes.bool,\n showOutsideDays: PropTypes.bool,\n\n renderDay: PropTypes.func.isRequired,\n renderWeek: PropTypes.func.isRequired,\n\n captionElement: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.instanceOf(React.Component),\n ]).isRequired,\n weekdayElement: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.instanceOf(React.Component),\n ]),\n\n fixedWeeks: PropTypes.bool,\n showWeekNumbers: PropTypes.bool,\n\n locale: PropTypes.string.isRequired,\n localeUtils: PropTypes.object.isRequired,\n weekdaysLong: PropTypes.arrayOf(PropTypes.string),\n weekdaysShort: PropTypes.arrayOf(PropTypes.string),\n firstDayOfWeek: PropTypes.number.isRequired,\n\n onCaptionClick: PropTypes.func,\n onDayClick: PropTypes.func,\n onDayFocus: PropTypes.func,\n onDayKeyDown: PropTypes.func,\n onDayMouseEnter: PropTypes.func,\n onDayMouseLeave: PropTypes.func,\n onDayMouseDown: PropTypes.func,\n onDayMouseUp: PropTypes.func,\n onDayTouchEnd: PropTypes.func,\n onDayTouchStart: PropTypes.func,\n onWeekClick: PropTypes.func,\n };\n\n renderDay = day => {\n const monthNumber = this.props.month.getMonth();\n const propModifiers = Helpers.getModifiersFromProps(this.props);\n const dayModifiers = ModifiersUtils.getModifiersForDay(day, propModifiers);\n if (\n DateUtils.isSameDay(day, new Date()) &&\n !Object.prototype.hasOwnProperty.call(\n propModifiers,\n this.props.classNames.today\n )\n ) {\n dayModifiers.push(this.props.classNames.today);\n }\n if (day.getMonth() !== monthNumber) {\n dayModifiers.push(this.props.classNames.outside);\n }\n\n const isOutside = day.getMonth() !== monthNumber;\n let tabIndex = -1;\n // Focus on the first day of the month\n if (this.props.onDayClick && !isOutside && day.getDate() === 1) {\n tabIndex = this.props.tabIndex; // eslint-disable-line prefer-destructuring\n }\n const key = `${day.getFullYear()}${day.getMonth()}${day.getDate()}`;\n const modifiers = {};\n dayModifiers.forEach(modifier => {\n modifiers[modifier] = true;\n });\n\n return (\n -1\n }\n ariaSelected={dayModifiers.indexOf(this.props.classNames.selected) > -1}\n onClick={this.props.onDayClick}\n onFocus={this.props.onDayFocus}\n onKeyDown={this.props.onDayKeyDown}\n onMouseEnter={this.props.onDayMouseEnter}\n onMouseLeave={this.props.onDayMouseLeave}\n onMouseDown={this.props.onDayMouseDown}\n onMouseUp={this.props.onDayMouseUp}\n onTouchEnd={this.props.onDayTouchEnd}\n onTouchStart={this.props.onDayTouchStart}\n >\n {this.props.renderDay(day, modifiers)}\n \n );\n };\n\n render() {\n const {\n classNames,\n\n month,\n months,\n\n fixedWeeks,\n captionElement,\n weekdayElement,\n\n locale,\n localeUtils,\n weekdaysLong,\n weekdaysShort,\n firstDayOfWeek,\n\n onCaptionClick,\n\n showWeekNumbers,\n showWeekDays,\n onWeekClick,\n } = this.props;\n\n const captionProps = {\n date: month,\n classNames,\n months,\n localeUtils,\n locale,\n onClick: onCaptionClick ? e => onCaptionClick(month, e) : undefined,\n };\n const caption = React.isValidElement(captionElement)\n ? React.cloneElement(captionElement, captionProps)\n : React.createElement(captionElement, captionProps);\n\n const weeks = Helpers.getWeekArray(month, firstDayOfWeek, fixedWeeks);\n return (\n
\n {caption}\n {showWeekDays && (\n \n )}\n
\n {weeks.map(week => {\n let weekNumber;\n if (showWeekNumbers) {\n weekNumber = DateUtils.getWeekNumber(week[6]);\n }\n return (\n \n {showWeekNumbers && (\n onWeekClick(weekNumber, week, e)\n : undefined\n }\n onKeyUp={\n onWeekClick\n ? e =>\n e.keyCode === ENTER &&\n onWeekClick(weekNumber, week, e)\n : undefined\n }\n >\n {this.props.renderWeek(weekNumber, week, month)}\n
\n )}\n {week.map(this.renderDay)}\n
\n );\n })}\n \n \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport defaultClassNames from './classNames';\nimport { SPACE, ENTER } from './keys';\n\nexport default class Navbar extends Component {\n static propTypes = {\n classNames: PropTypes.shape({\n navBar: PropTypes.string.isRequired,\n navButtonPrev: PropTypes.string.isRequired,\n navButtonNext: PropTypes.string.isRequired,\n navButtonInteractionDisabled: PropTypes.string.isRequired,\n }),\n className: PropTypes.string,\n showPreviousButton: PropTypes.bool,\n showNextButton: PropTypes.bool,\n onPreviousClick: PropTypes.func,\n onNextClick: PropTypes.func,\n dir: PropTypes.string,\n labels: PropTypes.shape({\n previousMonth: PropTypes.string.isRequired,\n nextMonth: PropTypes.string.isRequired,\n }),\n };\n\n static defaultProps = {\n classNames: defaultClassNames,\n dir: 'ltr',\n labels: {\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n },\n showPreviousButton: true,\n showNextButton: true,\n };\n\n shouldComponentUpdate(nextProps) {\n return (\n nextProps.labels !== this.props.labels ||\n nextProps.dir !== this.props.dir ||\n this.props.showPreviousButton !== nextProps.showPreviousButton ||\n this.props.showNextButton !== nextProps.showNextButton\n );\n }\n\n handleNextClick = () => {\n if (this.props.onNextClick) {\n this.props.onNextClick();\n }\n };\n\n handlePreviousClick = () => {\n if (this.props.onPreviousClick) {\n this.props.onPreviousClick();\n }\n };\n\n handleNextKeyDown = e => {\n if (e.keyCode !== ENTER && e.keyCode !== SPACE) {\n return;\n }\n e.preventDefault();\n this.handleNextClick();\n };\n\n handlePreviousKeyDown = e => {\n if (e.keyCode !== ENTER && e.keyCode !== SPACE) {\n return;\n }\n e.preventDefault();\n this.handlePreviousClick();\n };\n\n render() {\n const {\n classNames,\n className,\n showPreviousButton,\n showNextButton,\n labels,\n dir,\n } = this.props;\n\n let previousClickHandler;\n let nextClickHandler;\n let previousKeyDownHandler;\n let nextKeyDownHandler;\n let shouldShowPrevious;\n let shouldShowNext;\n\n if (dir === 'rtl') {\n previousClickHandler = this.handleNextClick;\n nextClickHandler = this.handlePreviousClick;\n previousKeyDownHandler = this.handleNextKeyDown;\n nextKeyDownHandler = this.handlePreviousKeyDown;\n shouldShowNext = showPreviousButton;\n shouldShowPrevious = showNextButton;\n } else {\n previousClickHandler = this.handlePreviousClick;\n nextClickHandler = this.handleNextClick;\n previousKeyDownHandler = this.handlePreviousKeyDown;\n nextKeyDownHandler = this.handleNextKeyDown;\n shouldShowNext = showNextButton;\n shouldShowPrevious = showPreviousButton;\n }\n\n const previousClassName = shouldShowPrevious\n ? classNames.navButtonPrev\n : `${classNames.navButtonPrev} ${classNames.navButtonInteractionDisabled}`;\n\n const nextClassName = shouldShowNext\n ? classNames.navButtonNext\n : `${classNames.navButtonNext} ${classNames.navButtonInteractionDisabled}`;\n\n const previousButton = (\n \n );\n\n const nextButton = (\n \n );\n\n return (\n
\n {dir === 'rtl'\n ? [nextButton, previousButton]\n : [previousButton, nextButton]}\n
\n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Weekday extends Component {\n static propTypes = {\n weekday: PropTypes.number,\n className: PropTypes.string,\n locale: PropTypes.string,\n localeUtils: PropTypes.object,\n\n weekdaysLong: PropTypes.arrayOf(PropTypes.string),\n weekdaysShort: PropTypes.arrayOf(PropTypes.string),\n };\n\n shouldComponentUpdate(nextProps) {\n return this.props !== nextProps;\n }\n\n render() {\n const {\n weekday,\n className,\n weekdaysLong,\n weekdaysShort,\n localeUtils,\n locale,\n } = this.props;\n let title;\n if (weekdaysLong) {\n title = weekdaysLong[weekday];\n } else {\n title = localeUtils.formatWeekdayLong(weekday, locale);\n }\n let content;\n if (weekdaysShort) {\n content = weekdaysShort[weekday];\n } else {\n content = localeUtils.formatWeekdayShort(weekday, locale);\n }\n\n return (\n
\n {content}\n
\n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Weekdays extends Component {\n static propTypes = {\n classNames: PropTypes.shape({\n weekday: PropTypes.string.isRequired,\n weekdays: PropTypes.string.isRequired,\n weekdaysRow: PropTypes.string.isRequired,\n }).isRequired,\n\n firstDayOfWeek: PropTypes.number.isRequired,\n weekdaysLong: PropTypes.arrayOf(PropTypes.string),\n weekdaysShort: PropTypes.arrayOf(PropTypes.string),\n showWeekNumbers: PropTypes.bool,\n locale: PropTypes.string.isRequired,\n localeUtils: PropTypes.object.isRequired,\n weekdayElement: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.instanceOf(React.Component),\n ]),\n };\n\n shouldComponentUpdate(nextProps) {\n return this.props !== nextProps;\n }\n\n render() {\n const {\n classNames,\n firstDayOfWeek,\n showWeekNumbers,\n weekdaysLong,\n weekdaysShort,\n locale,\n localeUtils,\n weekdayElement,\n } = this.props;\n const days = [];\n for (let i = 0; i < 7; i += 1) {\n const weekday = (i + firstDayOfWeek) % 7;\n const elementProps = {\n key: i,\n className: classNames.weekday,\n weekday,\n weekdaysLong,\n weekdaysShort,\n localeUtils,\n locale,\n };\n const element = React.isValidElement(weekdayElement)\n ? React.cloneElement(weekdayElement, elementProps)\n : React.createElement(weekdayElement, elementProps);\n days.push(element);\n }\n\n return (\n
\n
\n {showWeekNumbers &&
}\n {days}\n
\n
\n );\n }\n}\n","// Proxy object to map classnames when css modules are not used\n\nexport default {\n container: 'DayPicker',\n wrapper: 'DayPicker-wrapper',\n interactionDisabled: 'DayPicker--interactionDisabled',\n months: 'DayPicker-Months',\n month: 'DayPicker-Month',\n\n navBar: 'DayPicker-NavBar',\n navButtonPrev: 'DayPicker-NavButton DayPicker-NavButton--prev',\n navButtonNext: 'DayPicker-NavButton DayPicker-NavButton--next',\n navButtonInteractionDisabled: 'DayPicker-NavButton--interactionDisabled',\n\n caption: 'DayPicker-Caption',\n weekdays: 'DayPicker-Weekdays',\n weekdaysRow: 'DayPicker-WeekdaysRow',\n weekday: 'DayPicker-Weekday',\n body: 'DayPicker-Body',\n week: 'DayPicker-Week',\n weekNumber: 'DayPicker-WeekNumber',\n day: 'DayPicker-Day',\n footer: 'DayPicker-Footer',\n todayButton: 'DayPicker-TodayButton',\n\n // default modifiers\n today: 'today',\n selected: 'selected',\n disabled: 'disabled',\n outside: 'outside',\n};\n","export { default } from './DayPicker';\nexport { default as DateUtils } from './DateUtils';\nexport { default as LocaleUtils } from './LocaleUtils';\nexport { default as ModifiersUtils } from './ModifiersUtils';\n","export const LEFT = 37;\nexport const UP = 38;\nexport const RIGHT = 39;\nexport const DOWN = 40;\nexport const ENTER = 13;\nexport const SPACE = 32;\nexport const ESC = 27;\nexport const TAB = 9;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = require('gud');\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n var Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Provider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Provider.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits = void 0;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== 'production') {\n (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n Provider.prototype.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(_react.Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n var Consumer = function (_Component2) {\n _inherits(Consumer, _Component2);\n\n function Consumer() {\n var _temp2, _this2, _ret2;\n\n _classCallCheck(this, Consumer);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n value: _this2.getValue()\n }, _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({ value: _this2.getValue() });\n }\n }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n }\n\n Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n var observedBits = this.props.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n Consumer.prototype.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n Consumer.prototype.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(_react.Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n\n\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = require('./implementation');\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];","/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && require.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar require = function(module, callback) {\n var packagedModule = _require(\"\", module, callback);\n if (packagedModule == undefined && require.original)\n return require.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _require(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.require || !root.require.packaged) {\n require.original = root.require;\n root.require = require;\n root.require.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nif (typeof Element != \"undefined\" && !Element.prototype.remove) {\n Object.defineProperty(Element.prototype, \"remove\", {\n enumerable: false,\n writable: true,\n configurable: true,\n value: function() { this.parentNode && this.parentNode.removeChild(this); }\n });\n}\n\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nexports.OS = {\n LINUX: \"LINUX\",\n MAC: \"MAC\",\n WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function() {\n if (exports.isMac) {\n return exports.OS.MAC;\n } else if (exports.isLinux) {\n return exports.OS.LINUX;\n } else {\n return exports.OS.WINDOWS;\n }\n};\nvar _navigator = typeof navigator == \"object\" ? navigator : {};\n\nvar os = (/mac|win|linux/i.exec(_navigator.platform) || [\"other\"])[0].toLowerCase();\nvar ua = _navigator.userAgent || \"\";\nvar appName = _navigator.appName || \"\";\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE = \n (appName == \"Microsoft Internet Explorer\" || appName.indexOf(\"MSAppHost\") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]); // for ie\n \nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = ua.match(/ Gecko\\/\\d+/);\nexports.isOpera = typeof opera == \"object\" && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\n\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\n\nexports.isEdge = parseFloat(ua.split(\" Edge/\")[1]) || undefined;\n\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\n\nexports.isAndroid = ua.indexOf(\"Android\") >= 0;\n\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\n\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\n\nif (exports.isIOS) exports.isMac = true;\n\nexports.isMobile = exports.isIOS || exports.isAndroid;\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar useragent = require(\"./useragent\"); \nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\n\nexports.buildDom = function buildDom(arr, parent, refs) {\n if (typeof arr == \"string\" && arr) {\n var txt = document.createTextNode(arr);\n if (parent)\n parent.appendChild(txt);\n return txt;\n }\n \n if (!Array.isArray(arr)) {\n if (arr && arr.appendChild && parent)\n parent.appendChild(arr);\n return arr;\n }\n if (typeof arr[0] != \"string\" || !arr[0]) {\n var els = [];\n for (var i = 0; i < arr.length; i++) {\n var ch = buildDom(arr[i], parent, refs);\n ch && els.push(ch);\n }\n return els;\n }\n \n var el = document.createElement(arr[0]);\n var options = arr[1];\n var childIndex = 1;\n if (options && typeof options == \"object\" && !Array.isArray(options))\n childIndex = 2;\n for (var i = childIndex; i < arr.length; i++)\n buildDom(arr[i], el, refs);\n if (childIndex == 2) {\n Object.keys(options).forEach(function(n) {\n var val = options[n];\n if (n === \"class\") {\n el.className = Array.isArray(val) ? val.join(\" \") : val;\n } else if (typeof val == \"function\" || n == \"value\" || n[0] == \"$\") {\n el[n] = val;\n } else if (n === \"ref\") {\n if (refs) refs[val] = el;\n } else if (n === \"style\") {\n if (typeof val == \"string\") el.style.cssText = val;\n } else if (val != null) {\n el.setAttribute(n, val);\n }\n });\n }\n if (parent)\n parent.appendChild(el);\n return el;\n};\n\nexports.getDocumentHead = function(doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\n\nexports.createElement = function(tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\n\nexports.removeChildren = function(element) {\n element.innerHTML = \"\";\n};\n\nexports.createTextNode = function(textContent, element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createTextNode(textContent);\n};\n\nexports.createFragment = function(element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createDocumentFragment();\n};\n\nexports.hasCssClass = function(el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function(el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\n\nexports.toggleCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function(node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n } else {\n exports.removeCssClass(node, className);\n }\n};\n\nexports.hasCssString = function(id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n if ((sheets = doc.querySelectorAll(\"style\"))) {\n while (index < sheets.length)\n if (sheets[index++].id === id)\n return true;\n }\n};\n\nvar strictCSP;\nvar cssCache = [];\nexports.useStrictCSP = function(value) {\n strictCSP = value;\n if (value == false) insertPendingStyles();\n else if (!cssCache) cssCache = [];\n};\n\nfunction insertPendingStyles() {\n var cache = cssCache;\n cssCache = null;\n cache && cache.forEach(function(item) {\n importCssString(item[0], item[1]);\n });\n}\n\nfunction importCssString(cssText, id, target) {\n if (typeof document == \"undefined\")\n return;\n if (cssCache) {\n if (target) {\n insertPendingStyles();\n } else if (target === false) {\n return cssCache.push([cssText, id]);\n }\n }\n if (strictCSP) return;\n\n var container = target;\n if (!target || !target.getRootNode) {\n container = document;\n } else {\n container = target.getRootNode();\n if (!container || container == target)\n container = document;\n }\n \n var doc = container.ownerDocument || container;\n if (id && exports.hasCssString(id, container))\n return null;\n \n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n \n var style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n\n if (container == doc)\n container = exports.getDocumentHead(doc);\n container.insertBefore(style, container.firstChild);\n}\nexports.importCssString = importCssString;\n\nexports.importCssStylsheet = function(uri, doc) {\n exports.buildDom([\"link\", {rel: \"stylesheet\", href: uri}], exports.getDocumentHead(doc));\n};\nexports.scrollbarWidth = function(document) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n\n outer.appendChild(inner);\n\n var body = document.documentElement;\n body.appendChild(outer);\n\n var noScrollbar = inner.offsetWidth;\n\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n\n if (noScrollbar == withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n\n body.removeChild(outer);\n\n return noScrollbar-withScrollbar;\n};\n\nexports.computedStyle = function(element, style) {\n return window.getComputedStyle(element, \"\") || {};\n};\n\nexports.setStyle = function(styles, property, value) {\n if (styles[property] !== value) {\n styles[property] = value;\n }\n};\n\nexports.HAS_CSS_ANIMATION = false;\nexports.HAS_CSS_TRANSFORMS = false;\nexports.HI_DPI = useragent.isWin\n ? typeof window !== \"undefined\" && window.devicePixelRatio >= 1.5\n : true;\n\nif (useragent.isChromeOS) exports.HI_DPI = false;\n\nif (typeof document !== \"undefined\") {\n var div = document.createElement(\"div\");\n if (exports.HI_DPI && div.style.transform !== undefined)\n exports.HAS_CSS_TRANSFORMS = true;\n if (!useragent.isEdge && typeof div.style.animationName !== \"undefined\")\n exports.HAS_CSS_ANIMATION = true;\n div = null;\n}\n\nif (exports.HAS_CSS_TRANSFORMS) {\n exports.translate = function(element, tx, ty) {\n element.style.transform = \"translate(\" + Math.round(tx) + \"px, \" + Math.round(ty) +\"px)\";\n };\n} else {\n exports.translate = function(element, tx, ty) {\n element.style.top = Math.round(ty) + \"px\";\n element.style.left = Math.round(tx) + \"px\";\n };\n}\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nexports.inherits = function(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\n\nexports.mixin = function(obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\n\nexports.implement = function(proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./oop\");\nvar Keys = (function() {\n var ret = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',\n 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'\n },\n\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\" : 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8, \n \"control\": 1\n },\n\n FUNCTION_KEYS : {\n 8 : \"Backspace\",\n 9 : \"Tab\",\n 13 : \"Return\",\n 19 : \"Pause\",\n 27 : \"Esc\",\n 32 : \"Space\",\n 33 : \"PageUp\",\n 34 : \"PageDown\",\n 35 : \"End\",\n 36 : \"Home\",\n 37 : \"Left\",\n 38 : \"Up\",\n 39 : \"Right\",\n 40 : \"Down\",\n 44 : \"Print\",\n 45 : \"Insert\",\n 46 : \"Delete\",\n 96 : \"Numpad0\",\n 97 : \"Numpad1\",\n 98 : \"Numpad2\",\n 99 : \"Numpad3\",\n 100: \"Numpad4\",\n 101: \"Numpad5\",\n 102: \"Numpad6\",\n 103: \"Numpad7\",\n 104: \"Numpad8\",\n 105: \"Numpad9\",\n '-13': \"NumpadEnter\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n\n PRINTABLE_KEYS: {\n 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\',221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n };\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret[\"return\"];\n ret.escape = ret.esc;\n ret.del = ret[\"delete\"];\n ret[173] = '-';\n \n (function() {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) { \n ret.KEY_MODS[i] = mods.filter(function(x) {\n return i & ret.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n })();\n\n ret.KEY_MODS[0] = \"\";\n ret.KEY_MODS[-1] = \"input-\";\n\n return ret;\n})();\noop.mixin(exports, Keys);\n\nexports.keyCodeToString = function(keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar keys = require(\"./keys\");\nvar useragent = require(\"./useragent\");\n\nvar pressedKeys = null;\nvar ts = 0;\n\nvar activeListenerOptions;\nfunction detectListenerOptionsSupport() {\n activeListenerOptions = false;\n try {\n document.createComment(\"\").addEventListener(\"test\", function() {}, { \n get passive() { \n activeListenerOptions = {passive: false};\n }\n });\n } catch(e) {}\n}\n\nfunction getListenerOptions() {\n if (activeListenerOptions == undefined)\n detectListenerOptionsSupport();\n return activeListenerOptions;\n}\n\nfunction EventListener(elem, type, callback) {\n this.elem = elem;\n this.type = type;\n this.callback = callback;\n}\nEventListener.prototype.destroy = function() {\n removeListener(this.elem, this.type, this.callback);\n this.elem = this.type = this.callback = undefined;\n};\n\nvar addListener = exports.addListener = function(elem, type, callback, destroyer) {\n elem.addEventListener(type, callback, getListenerOptions());\n if (destroyer)\n destroyer.$toDestroy.push(new EventListener(elem, type, callback));\n};\n\nvar removeListener = exports.removeListener = function(elem, type, callback) {\n elem.removeEventListener(type, callback, getListenerOptions());\n};\nexports.stopEvent = function(e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\n\nexports.stopPropagation = function(e) {\n if (e.stopPropagation)\n e.stopPropagation();\n};\n\nexports.preventDefault = function(e) {\n if (e.preventDefault)\n e.preventDefault();\n};\nexports.getButton = function(e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n return e.button;\n};\n\nexports.capture = function(el, eventHandler, releaseCaptureHandler) {\n var ownerDocument = el && el.ownerDocument || document;\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n\n removeListener(ownerDocument, \"mousemove\", eventHandler);\n removeListener(ownerDocument, \"mouseup\", onMouseUp);\n removeListener(ownerDocument, \"dragstart\", onMouseUp);\n }\n\n addListener(ownerDocument, \"mousemove\", eventHandler);\n addListener(ownerDocument, \"mouseup\", onMouseUp);\n addListener(ownerDocument, \"dragstart\", onMouseUp);\n \n return onMouseUp;\n};\n\nexports.addMouseWheelListener = function(el, callback, destroyer) {\n if (\"onmousewheel\" in el) {\n addListener(el, \"mousewheel\", function(e) {\n var factor = 8;\n if (e.wheelDeltaX !== undefined) {\n e.wheelX = -e.wheelDeltaX / factor;\n e.wheelY = -e.wheelDeltaY / factor;\n } else {\n e.wheelX = 0;\n e.wheelY = -e.wheelDelta / factor;\n }\n callback(e);\n }, destroyer);\n } else if (\"onwheel\" in el) {\n addListener(el, \"wheel\", function(e) {\n var factor = 0.35;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = e.deltaX * factor || 0;\n e.wheelY = e.deltaY * factor || 0;\n break;\n case e.DOM_DELTA_LINE:\n case e.DOM_DELTA_PAGE:\n e.wheelX = (e.deltaX || 0) * 5;\n e.wheelY = (e.deltaY || 0) * 5;\n break;\n }\n \n callback(e);\n }, destroyer);\n } else {\n addListener(el, \"DOMMouseScroll\", function(e) {\n if (e.axis && e.axis == e.HORIZONTAL_AXIS) {\n e.wheelX = (e.detail || 0) * 5;\n e.wheelY = 0;\n } else {\n e.wheelX = 0;\n e.wheelY = (e.detail || 0) * 5;\n }\n callback(e);\n }, destroyer);\n }\n};\n\nexports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName, destroyer) {\n var clicks = 0;\n var startX, startY, timer; \n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n } else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n } else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600);\n\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n \n e._clicks = clicks;\n\n eventHandler[callbackName](\"mousedown\", e);\n\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function(el) {\n addListener(el, \"mousedown\", onMousedown, destroyer);\n });\n};\n\nvar getModifierHash = function(e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n};\n\nexports.getModifierString = function(e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\n\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n } else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n \n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n \n if (!hashId && keyCode === 13) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n \n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n \n return callback(e, hashId, keyCode);\n}\n\n\nexports.addCommandKeyListener = function(el, callback, destroyer) {\n if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, \"keydown\", function(e) {\n lastKeyDownKeyCode = e.keyCode;\n }, destroyer);\n addListener(el, \"keypress\", function(e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n }, destroyer);\n } else {\n var lastDefaultPrevented = null;\n\n addListener(el, \"keydown\", function(e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n }, destroyer);\n\n addListener(el, \"keypress\", function(e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n }, destroyer);\n\n addListener(el, \"keyup\", function(e) {\n pressedKeys[e.keyCode] = null;\n }, destroyer);\n\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\n\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function(callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + (postMessageId++);\n \n var listener = function(e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n removeListener(win, \"message\", listener);\n callback();\n }\n };\n \n addListener(win, \"message\", listener);\n win.postMessage(messageName, \"*\");\n };\n}\n\nexports.$idleBlocked = false;\nexports.onIdle = function(cb, timeout) {\n return setTimeout(function handler() {\n if (!exports.$idleBlocked) {\n cb();\n } else {\n setTimeout(handler, 100);\n }\n }, timeout);\n};\n\nexports.$idleBlockId = null;\nexports.blockIdle = function(delay) {\n if (exports.$idleBlockId)\n clearTimeout(exports.$idleBlockId);\n \n exports.$idleBlocked = true;\n exports.$idleBlockId = setTimeout(function() {\n exports.$idleBlocked = false;\n }, delay || 100);\n};\n\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\n\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function(callback) {\n setTimeout(callback, 17);\n };\n});\n\nace.define(\"ace/range\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nvar comparePoints = function(p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nvar Range = function(startRow, startColumn, endRow, endColumn) {\n this.start = {\n row: startRow,\n column: startColumn\n };\n\n this.end = {\n row: endRow,\n column: endColumn\n };\n};\n\n(function() {\n this.isEqual = function(range) {\n return this.start.row === range.start.row &&\n this.end.row === range.end.row &&\n this.start.column === range.start.column &&\n this.end.column === range.end.column;\n };\n this.toString = function() {\n return (\"Range: [\" + this.start.row + \"/\" + this.start.column +\n \"] -> [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n\n this.contains = function(row, column) {\n return this.compare(row, column) == 0;\n };\n this.compareRange = function(range) {\n var cmp,\n end = range.end,\n start = range.start;\n\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n } else if (cmp == 0) {\n return 1;\n } else {\n return 0;\n }\n } else if (cmp == -1) {\n return -2;\n } else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n } else if (cmp == 1) {\n return 42;\n } else {\n return 0;\n }\n }\n };\n this.comparePoint = function(p) {\n return this.compare(p.row, p.column);\n };\n this.containsRange = function(range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n this.intersects = function(range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n this.isEnd = function(row, column) {\n return this.end.row == row && this.end.column == column;\n };\n this.isStart = function(row, column) {\n return this.start.row == row && this.start.column == column;\n };\n this.setStart = function(row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n } else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n this.setEnd = function(row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n } else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n this.inside = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideStart = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideEnd = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.compare = function(row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n\n if (row < this.start.row)\n return -1;\n\n if (row > this.end.row)\n return 1;\n\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n\n return 0;\n };\n this.compareStart = function(row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareEnd = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareInside = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.clipRows = function(firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = {row: lastRow + 1, column: 0};\n else if (this.end.row < firstRow)\n var end = {row: firstRow, column: 0};\n\n if (this.start.row > lastRow)\n var start = {row: lastRow + 1, column: 0};\n else if (this.start.row < firstRow)\n var start = {row: firstRow, column: 0};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n this.extend = function(row, column) {\n var cmp = this.compare(row, column);\n\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = {row: row, column: column};\n else\n var end = {row: row, column: column};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n\n this.isEmpty = function() {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n this.isMultiLine = function() {\n return (this.start.row !== this.end.row);\n };\n this.clone = function() {\n return Range.fromPoints(this.start, this.end);\n };\n this.collapseRows = function() {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n this.toScreenRange = function(session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n\n return new Range(\n screenPosStart.row, screenPosStart.column,\n screenPosEnd.row, screenPosEnd.column\n );\n };\n this.moveBy = function(row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n\n}).call(Range.prototype);\nRange.fromPoints = function(start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\n\nRange.comparePoints = function(p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\n\n\nexports.Range = Range;\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nexports.last = function(a) {\n return a[a.length - 1];\n};\n\nexports.stringReverse = function(string) {\n return string.split(\"\").reverse().join(\"\");\n};\n\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n\n if (count >>= 1)\n string += string;\n }\n return result;\n};\n\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\n\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\n\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\n\nexports.copyObject = function(obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\n\nexports.copyArray = function(array){\n var copy = [];\n for (var i=0, l=array.length; i Date.now() - 50)\n return true;\n return $cancelT = false;\n },\n cancel: function() {\n $cancelT = Date.now();\n }\n};\n\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module) {\n\"use strict\";\n\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar clipboard = require(\"../clipboard\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\nvar HAS_FOCUS_ARGS = useragent.isChrome > 63;\nvar MAX_LINE_LENGTH = 400;\n\nvar KEYS = require(\"../lib/keys\");\nvar MODS = KEYS.KEY_MODS;\nvar isIOS = useragent.isIOS;\nvar valueResetRegex = isIOS ? /\\s/ : /\\n/;\nvar isMobile = useragent.isMobile;\n\nvar TextInput = function(parentNode, host) {\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", false);\n\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var sendingText = false;\n var tempStyle = '';\n \n if (!isMobile)\n text.style.fontSize = \"1px\";\n\n var commandMode = false;\n var ignoreFocusEvents = false;\n \n var lastValue = \"\";\n var lastSelectionStart = 0;\n var lastSelectionEnd = 0;\n var lastRestoreEnd = 0;\n try { var isFocused = document.activeElement === text; } catch(e) {}\n \n event.addListener(text, \"blur\", function(e) {\n if (ignoreFocusEvents) return;\n host.onBlur(e);\n isFocused = false;\n }, host);\n event.addListener(text, \"focus\", function(e) {\n if (ignoreFocusEvents) return;\n isFocused = true;\n if (useragent.isEdge) {\n try {\n if (!document.hasFocus())\n return;\n } catch(e) {}\n }\n host.onFocus(e);\n if (useragent.isEdge)\n setTimeout(resetSelection);\n else\n resetSelection();\n }, host);\n this.$focusScroll = false;\n this.focus = function() {\n if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n return text.focus({ preventScroll: true });\n\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n try {\n var isTransformed = text.getBoundingClientRect().top != 0;\n } catch(e) {\n return;\n }\n var ancestors = [];\n if (isTransformed) {\n var t = text.parentElement;\n while (t && t.nodeType == 1) {\n ancestors.push(t);\n t.setAttribute(\"ace_nocontext\", true);\n if (!t.parentElement && t.getRootNode)\n t = t.getRootNode().host;\n else\n t = t.parentElement;\n }\n }\n text.focus({ preventScroll: true });\n if (isTransformed) {\n ancestors.forEach(function(p) {\n p.removeAttribute(\"ace_nocontext\");\n });\n }\n setTimeout(function() {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function() {\n text.blur();\n };\n this.isFocused = function() {\n return isFocused;\n };\n \n host.on(\"beforeEndOperation\", function() {\n var curOp = host.curOp;\n var commandName = curOp && curOp.command && curOp.command.name;\n if (commandName == \"insertstring\")\n return;\n var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);\n if (inComposition && isUserAction) {\n lastValue = text.value = \"\";\n onCompositionEnd();\n }\n resetSelection();\n });\n \n var resetSelection = isIOS\n ? function(value) {\n if (!isFocused || (copied && !value) || sendingText) return;\n if (!value) \n value = \"\";\n var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n if (newValue != text.value)\n text.value = lastValue = newValue;\n \n var selectionStart = 4;\n var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));\n\n if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {\n text.setSelectionRange(selectionStart, selectionEnd);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n : function() {\n if (inComposition || sendingText)\n return;\n if (!isFocused && !afterContextMenu)\n return;\n inComposition = true;\n \n var selectionStart = 0;\n var selectionEnd = 0;\n var line = \"\";\n\n if (host.session) {\n var selection = host.selection;\n var range = selection.getRange();\n var row = selection.cursor.row;\n selectionStart = range.start.column;\n selectionEnd = range.end.column;\n line = host.session.getLine(row);\n\n if (range.start.row != row) {\n var prevLine = host.session.getLine(row - 1);\n selectionStart = range.start.row < row - 1 ? 0 : selectionStart;\n selectionEnd += prevLine.length + 1;\n line = prevLine + \"\\n\" + line;\n }\n else if (range.end.row != row) {\n var nextLine = host.session.getLine(row + 1);\n selectionEnd = range.end.row > row + 1 ? nextLine.length : selectionEnd;\n selectionEnd += line.length + 1;\n line = line + \"\\n\" + nextLine;\n }\n else if (isMobile && row > 0) {\n line = \"\\n\" + line;\n selectionEnd += 1;\n selectionStart += 1;\n }\n\n if (line.length > MAX_LINE_LENGTH) {\n if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {\n line = line.slice(0, MAX_LINE_LENGTH);\n } else {\n line = \"\\n\";\n if (selectionStart == selectionEnd) {\n selectionStart = selectionEnd = 0;\n }\n else {\n selectionStart = 0;\n selectionEnd = 1;\n }\n }\n }\n }\n\n var newValue = line + \"\\n\\n\";\n if (newValue != lastValue) {\n text.value = lastValue = newValue;\n lastSelectionStart = lastSelectionEnd = newValue.length;\n }\n if (afterContextMenu) {\n lastSelectionStart = text.selectionStart;\n lastSelectionEnd = text.selectionEnd;\n }\n if (\n lastSelectionEnd != selectionEnd \n || lastSelectionStart != selectionStart \n || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n ) {\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n } catch(e){}\n }\n inComposition = false;\n };\n this.resetSelection = resetSelection;\n\n if (isFocused)\n host.onFocus();\n\n\n var isAllSelected = function(text) {\n return text.selectionStart === 0 && text.selectionEnd >= lastValue.length\n && text.value === lastValue && lastValue\n && text.selectionEnd !== lastSelectionEnd;\n };\n\n var onSelect = function(e) {\n if (inComposition)\n return;\n if (copied) {\n copied = false;\n } else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n } else if (isMobile && text.selectionStart != lastSelectionStart) {\n resetSelection();\n }\n };\n\n var inputHandler = null;\n this.setInputHandler = function(cb) {inputHandler = cb;};\n this.getInputHandler = function() {return inputHandler;};\n var afterContextMenu = false;\n \n var sendText = function(value, fromInput) {\n if (afterContextMenu)\n afterContextMenu = false;\n if (pasted) {\n resetSelection();\n if (value)\n host.onPaste(value);\n pasted = false;\n return \"\";\n } else {\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n \n var extendLeft = lastSelectionStart;\n var extendRight = lastValue.length - lastSelectionEnd;\n \n var inserted = value;\n var restoreStart = value.length - selectionStart;\n var restoreEnd = value.length - selectionEnd;\n \n var i = 0;\n while (extendLeft > 0 && lastValue[i] == value[i]) {\n i++;\n extendLeft--;\n }\n inserted = inserted.slice(i);\n i = 1;\n while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {\n i++;\n extendRight--;\n }\n restoreStart -= i-1;\n restoreEnd -= i-1;\n var endIndex = inserted.length - i + 1;\n if (endIndex < 0) {\n extendLeft = -endIndex;\n endIndex = 0;\n } \n inserted = inserted.slice(0, endIndex);\n if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)\n return \"\";\n sendingText = true;\n var shouldReset = false;\n if (useragent.isAndroid && inserted == \". \") {\n inserted = \" \";\n shouldReset = true;\n }\n \n if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {\n host.onTextInput(inserted);\n } else {\n host.onTextInput(inserted, {\n extendLeft: extendLeft,\n extendRight: extendRight,\n restoreStart: restoreStart,\n restoreEnd: restoreEnd\n });\n }\n sendingText = false;\n \n lastValue = value;\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n lastRestoreEnd = restoreEnd;\n return shouldReset ? \"\\n\" : inserted;\n }\n };\n var onInput = function(e) {\n if (inComposition)\n return onCompositionUpdate();\n if (e && e.inputType) {\n if (e.inputType == \"historyUndo\") return host.execCommand(\"undo\");\n if (e.inputType == \"historyRedo\") return host.execCommand(\"redo\");\n }\n var data = text.value;\n var inserted = sendText(data, true);\n if (\n data.length > MAX_LINE_LENGTH + 100 \n || valueResetRegex.test(inserted)\n || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd\n ) {\n resetSelection();\n }\n };\n \n var handleClipboardData = function(e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n } else {\n return clipboardData.getData(mime);\n }\n } catch(e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n\n var doCopy = function(e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n\n if (handleClipboardData(e, data)) {\n if (isIOS) {\n resetSelection(data);\n copied = data;\n setTimeout(function () {\n copied = false;\n }, 10);\n }\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n } else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function(){\n copied = false;\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n \n var onCut = function(e) {\n doCopy(e, true);\n };\n \n var onCopy = function(e) {\n doCopy(e, false);\n };\n \n var onPaste = function(e) {\n var data = handleClipboardData(e);\n if (clipboard.pasteCancelled())\n return;\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n\n event.addCommandKeyListener(text, host.onCommandKey.bind(host), host);\n\n event.addListener(text, \"select\", onSelect, host);\n event.addListener(text, \"input\", onInput, host);\n\n event.addListener(text, \"cut\", onCut, host);\n event.addListener(text, \"copy\", onCopy, host);\n event.addListener(text, \"paste\", onPaste, host);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function(e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n }, host);\n }\n var onCompositionStart = function(e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly) \n return;\n \n inComposition = {};\n\n if (commandMode)\n return;\n \n if (e.data)\n inComposition.useTextareaForIME = false;\n \n setTimeout(onCompositionUpdate, 0);\n host._signal(\"compositionStart\");\n host.on(\"mousedown\", cancelComposition);\n \n var range = host.getSelectionRange();\n range.end.row = range.start.row;\n range.end.column = range.start.column;\n inComposition.markerRange = range;\n inComposition.selectionStart = lastSelectionStart;\n host.onCompositionStart(inComposition);\n \n if (inComposition.useTextareaForIME) {\n lastValue = text.value = \"\";\n lastSelectionStart = 0;\n lastSelectionEnd = 0;\n }\n else {\n if (text.msGetInputContext)\n inComposition.context = text.msGetInputContext();\n if (text.getInputContext)\n inComposition.context = text.getInputContext();\n }\n };\n\n var onCompositionUpdate = function() {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n if (commandMode)\n return cancelComposition();\n \n if (inComposition.useTextareaForIME) {\n host.onCompositionUpdate(text.value);\n }\n else {\n var data = text.value;\n sendText(data);\n if (inComposition.markerRange) {\n if (inComposition.context) {\n inComposition.markerRange.start.column = inComposition.selectionStart\n = inComposition.context.compositionStartOffset;\n }\n inComposition.markerRange.end.column = inComposition.markerRange.start.column\n + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;\n }\n }\n };\n\n var onCompositionEnd = function(e) {\n if (!host.onCompositionEnd || host.$readOnly) return;\n inComposition = false;\n host.onCompositionEnd();\n host.off(\"mousedown\", cancelComposition);\n if (e) onInput();\n };\n \n\n function cancelComposition() {\n ignoreFocusEvents = true;\n text.blur();\n text.focus();\n ignoreFocusEvents = false;\n }\n\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);\n \n function onKeyup(e) {\n if (e.keyCode == 27 && text.value.length < text.selectionStart) {\n if (!inComposition)\n lastValue = text.value;\n lastSelectionStart = lastSelectionEnd = -1;\n resetSelection();\n }\n syncComposition();\n }\n\n event.addListener(text, \"compositionstart\", onCompositionStart, host);\n event.addListener(text, \"compositionupdate\", onCompositionUpdate, host);\n event.addListener(text, \"keyup\", onKeyup, host);\n event.addListener(text, \"keydown\", syncComposition, host);\n event.addListener(text, \"compositionend\", onCompositionEnd, host);\n\n this.getElement = function() {\n return text;\n };\n this.setCommandMode = function(value) {\n commandMode = value;\n text.readOnly = false;\n };\n \n this.setReadOnly = function(readOnly) {\n if (!commandMode)\n text.readOnly = readOnly;\n };\n\n this.setCopyWithEmptySelection = function(value) {\n };\n\n this.onContextMenu = function(e) {\n afterContextMenu = true;\n resetSelection();\n host._emit(\"nativecontextmenu\", {target: host, domEvent: e});\n this.moveToMouse(e, true);\n };\n \n this.moveToMouse = function(e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n + \"text-indent: -\" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + \"px;\";\n\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight -2;\n var move = function(e) {\n dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n }; \n move(e);\n\n if (e.type != \"mousedown\")\n return;\n\n host.renderer.$isMousePressed = true;\n\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n host.renderer.$isMousePressed = false;\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$moveTextAreaToCursor();\n }, 0);\n }\n\n var onContextMenu = function(e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu, host);\n event.addListener(text, \"mousedown\", function(e) {\n e.preventDefault();\n onContextMenuClose();\n }, host);\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu, host);\n event.addListener(text, \"contextmenu\", onContextMenu, host);\n \n if (isIOS)\n addIosSelectionHandler(parentNode, host, text);\n\n function addIosSelectionHandler(parentNode, host, text) {\n var typingResetTimeout = null;\n var typing = false;\n \n text.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout) clearTimeout(typingResetTimeout);\n typing = true;\n }, true);\n\n text.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n }, true);\n var detectArrowKeys = function(e) {\n if (document.activeElement !== text) return;\n if (typing || inComposition || host.$mouseHandler.isMousePressed) return;\n\n if (copied) {\n return;\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n \n var key = null;\n var modifier = 0;\n if (selectionStart == 0) {\n key = KEYS.up;\n } else if (selectionStart == 1) {\n key = KEYS.home;\n } else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == \"\\n\") {\n key = KEYS.end;\n } else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == \" \") {\n key = KEYS.left;\n modifier = MODS.option;\n } else if (\n selectionStart < lastSelectionStart\n || (\n selectionStart == lastSelectionStart \n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd\n )\n ) {\n key = KEYS.left;\n } else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n key = KEYS.down;\n } else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == \" \") {\n key = KEYS.right;\n modifier = MODS.option;\n } else if (\n selectionEnd > lastSelectionEnd\n || (\n selectionEnd == lastSelectionEnd \n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd\n )\n ) {\n key = KEYS.right;\n }\n \n if (selectionStart !== selectionEnd)\n modifier |= MODS.shift;\n\n if (key) {\n var result = host.onCommandKey({}, modifier, key);\n if (!result && host.commands) {\n key = KEYS.keyCodeToString(key);\n var command = host.commands.findKeyCommand(modifier, key);\n if (command)\n host.execCommand(command);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n resetSelection(\"\");\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function() {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n};\n\nexports.TextInput = TextInput;\nexports.$setUserAgentForTests = function(_isMobile, _isIOS) {\n isMobile = _isMobile;\n isIOS = _isIOS;\n};\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar useragent = require(\"../lib/useragent\");\n\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 550; // milliseconds\n\nfunction DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n\n exports.forEach(function(x) {\n mouseHandler[x] = this[x];\n }, this);\n\n mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n}\n\n(function() {\n\n this.onMouseDown = function(ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n\n this.startSelect = function(pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n if (!this.mousedownEvent) return;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n if (editor.renderer.scroller.setCapture) {\n editor.renderer.scroller.setCapture();\n }\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n };\n\n this.select = function() {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n } else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n\n this.extendSelectionBy = function(unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n } else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n } else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n\n this.selectEnd =\n this.selectAllEnd =\n this.selectByWordsEnd =\n this.selectByLinesEnd = function() {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n if (this.editor.renderer.scroller.releaseCapture) {\n this.editor.renderer.scroller.releaseCapture();\n }\n };\n\n this.focusWait = function() {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n\n this.onDoubleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n } else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n\n this.onTripleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n } else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n\n this.onQuadClick = function(ev) {\n var editor = this.editor;\n\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n\n this.onMouseWheel = function(ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n \n var editor = this.editor;\n \n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n \n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = dt ? ev.wheelX / dt : prevScroll.vx;\n var vy = dt ? ev.wheelY / dt : prevScroll.vy;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n \n var direction = Math.abs(vx / vy);\n \n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n \n if (canScroll) {\n prevScroll.allowed = t;\n } else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n \n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n\n}).call(DefaultHandlers.prototype);\n\nexports.DefaultHandlers = DefaultHandlers;\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n\n if (cmp < 0)\n return {cursor: range.start, anchor: range.end};\n else\n return {cursor: range.end, anchor: range.start};\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nfunction Tooltip (parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n}\n\n(function() {\n this.$init = function() {\n this.$element = dom.createElement(\"div\");\n this.$element.className = \"ace_tooltip\";\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n this.getElement = function() {\n return this.$element || this.$init();\n };\n this.setText = function(text) {\n this.getElement().textContent = text;\n };\n this.setHtml = function(html) {\n this.getElement().innerHTML = html;\n };\n this.setPosition = function(x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n this.setClassName = function(className) {\n dom.addCssClass(this.getElement(), className);\n };\n this.show = function(text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n\n this.hide = function() {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n }\n };\n this.getHeight = function() {\n return this.getElement().offsetHeight;\n };\n this.getWidth = function() {\n return this.getElement().offsetWidth;\n };\n \n this.destroy = function() {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n\n}).call(Tooltip.prototype);\n\nexports.Tooltip = Tooltip;\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event\",\"ace/tooltip\"], function(require, exports, module) {\n\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar event = require(\"../lib/event\");\nvar Tooltip = require(\"../tooltip\").Tooltip;\n\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor.container);\n\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function(e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n\n if (gutterRegion == \"foldWidgets\")\n return;\n\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n\n\n var tooltipTimeout, mouseEvent, tooltipAnnotation;\n\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var annotation = gutter.$annotations[row];\n if (!annotation)\n return hideTooltip();\n\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n\n if (tooltipAnnotation == annotation)\n return;\n tooltipAnnotation = annotation.text.join(\"
\");\n\n tooltip.setHtml(tooltipAnnotation);\n tooltip.show();\n editor._signal(\"showGutterTooltip\", tooltip);\n editor.on(\"mousewheel\", hideTooltip);\n\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n } else {\n var gutterElement = mouseEvent.domEvent.target;\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n }\n\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltipAnnotation) {\n tooltip.hide();\n tooltipAnnotation = null;\n editor._signal(\"hideGutterTooltip\", tooltip);\n editor.off(\"mousewheel\", hideTooltip);\n }\n }\n\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function(e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n\n if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n\n event.addListener(editor.renderer.$gutter, \"mouseout\", function(e) {\n mouseEvent = null;\n if (!tooltipAnnotation || tooltipTimeout)\n return;\n\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n }, editor);\n \n editor.on(\"changeSession\", hideTooltip);\n}\n\nfunction GutterTooltip(parentNode) {\n Tooltip.call(this, parentNode);\n}\n\noop.inherits(GutterTooltip, Tooltip);\n\n(function(){\n this.setPosition = function(x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n\n}).call(GutterTooltip.prototype);\n\n\n\nexports.GutterHandler = GutterHandler;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar MouseEvent = exports.MouseEvent = function(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n \n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n\n this.$pos = null;\n this.$inSelection = null;\n \n this.propagationStopped = false;\n this.defaultPrevented = false;\n};\n\n(function() { \n \n this.stopPropagation = function() {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n \n this.preventDefault = function() {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n \n this.stop = function() {\n this.stopPropagation();\n this.preventDefault();\n };\n this.getDocumentPosition = function() {\n if (this.$pos)\n return this.$pos;\n \n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n this.inSelection = function() {\n if (this.$inSelection !== null)\n return this.$inSelection;\n \n var editor = this.editor;\n \n\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n\n return this.$inSelection;\n };\n this.getButton = function() {\n return event.getButton(this.domEvent);\n };\n this.getShiftKey = function() {\n return this.domEvent.shiftKey;\n };\n \n this.getAccelKey = useragent.isMac\n ? function() { return this.domEvent.metaKey; }\n : function() { return this.domEvent.ctrlKey; };\n \n}).call(MouseEvent.prototype);\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\n\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\n\nfunction DragdropHandler(mouseHandler) {\n\n var editor = mouseHandler.editor;\n\n var dragImage = dom.createElement(\"div\");\n dragImage.style.cssText = \"top:-100px;position:absolute;z-index:2147483647;opacity:0.5\";\n dragImage.textContent = \"\\xa0\";\n\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n\n exports.forEach(function(x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.on(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n\n this.onDragStart = function(e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function(){\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n editor.container.appendChild(dragImage);\n\n dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);\n setTimeout(function() {\n editor.container.removeChild(dragImage);\n });\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n\n isInternal = true;\n this.setState(\"drag\");\n };\n\n this.onDragEnd = function(e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.$resetCursorStyle();\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n\n this.onDragEnter = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragOver = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragLeave = function(e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n\n this.onDrop = function(e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n } else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n } else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler), editor);\n\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.moveCursorToPosition(cursor);\n cursorMovedTime = now;\n cursorPointOnCaretMoved = {x: x, y: y};\n } else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n } else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = {row: cursor.row, column: cursor.column};\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n } else {\n autoScrollStartTime = null;\n }\n }\n\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.selection.fromOrientedRange(range);\n if (editor.isFocused() && !isInternal)\n editor.$resetCursorStyle();\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function() {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function(type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n } catch (e) {}\n var dropEffect = \"none\";\n\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n\n return dropEffect;\n }\n}\n\n(function() {\n\n this.dragWait = function() {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n\n this.dragWaitEnd = function() {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n\n this.dragReadyEnd = function(e) {\n this.editor.$resetCursorStyle();\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n\n this.startDrag = function(){\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n\n this.onMouseDrag = function(e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n\n this.onMouseDown = function(e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n } else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n\n}).call(DragdropHandler.prototype);\n\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/mouse/touch_handler\",[\"require\",\"exports\",\"module\",\"ace/mouse/mouse_event\",\"ace/lib/event\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar event = require(\"../lib/event\");\nvar dom = require(\"../lib/dom\");\n\nexports.addTouchListeners = function(el, editor) {\n var mode = \"scroll\";\n var startX;\n var startY;\n var touchStartT;\n var lastT;\n var longTouchTimer;\n var animationTimer;\n var animationSteps = 0;\n var pos;\n var clickCount = 0;\n var vX = 0;\n var vY = 0;\n var pressed;\n var contextMenu;\n \n function createContextMenu() {\n var clipboard = window.navigator && window.navigator.clipboard;\n var isOpen = false;\n var updateMenu = function() {\n var selected = editor.getCopyText();\n var hasUndo = editor.session.getUndoManager().hasUndo();\n contextMenu.replaceChild(\n dom.buildDom(isOpen ? [\"span\",\n !selected && [\"span\", { class: \"ace_mobile-button\", action: \"selectall\" }, \"Select All\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"copy\" }, \"Copy\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"cut\" }, \"Cut\"],\n clipboard && [\"span\", { class: \"ace_mobile-button\", action: \"paste\" }, \"Paste\"],\n hasUndo && [\"span\", { class: \"ace_mobile-button\", action: \"undo\" }, \"Undo\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"find\" }, \"Find\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"openCommandPallete\" }, \"Pallete\"]\n ] : [\"span\"]),\n contextMenu.firstChild\n );\n };\n var handleClick = function(e) {\n var action = e.target.getAttribute(\"action\");\n\n if (action == \"more\" || !isOpen) {\n isOpen = !isOpen;\n return updateMenu();\n }\n if (action == \"paste\") {\n clipboard.readText().then(function (text) {\n editor.execCommand(action, text);\n });\n }\n else if (action) {\n if (action == \"cut\" || action == \"copy\") {\n if (clipboard)\n clipboard.writeText(editor.getCopyText());\n else\n document.execCommand(\"copy\");\n }\n editor.execCommand(action);\n }\n contextMenu.firstChild.style.display = \"none\";\n isOpen = false;\n if (action != \"openCommandPallete\")\n editor.focus();\n };\n contextMenu = dom.buildDom([\"div\",\n {\n class: \"ace_mobile-menu\",\n ontouchstart: function(e) {\n mode = \"menu\";\n e.stopPropagation();\n e.preventDefault();\n editor.textInput.focus();\n },\n ontouchend: function(e) {\n e.stopPropagation();\n e.preventDefault();\n handleClick(e);\n },\n onclick: handleClick\n },\n [\"span\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"more\" }, \"...\"]\n ], editor.container);\n }\n function showContextMenu() {\n if (!contextMenu) createContextMenu();\n var cursor = editor.selection.cursor;\n var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);\n var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;\n var scrollLeft = editor.renderer.scrollLeft;\n var rect = editor.container.getBoundingClientRect();\n contextMenu.style.top = pagePos.pageY - rect.top - 3 + \"px\";\n if (pagePos.pageX - rect.left < rect.width - 70) {\n contextMenu.style.left = \"\";\n contextMenu.style.right = \"10px\";\n } else {\n contextMenu.style.right = \"\";\n contextMenu.style.left = leftOffset + scrollLeft - rect.left + \"px\";\n }\n contextMenu.style.display = \"\";\n contextMenu.firstChild.style.display = \"none\";\n editor.on(\"input\", hideContextMenu);\n }\n function hideContextMenu(e) {\n if (contextMenu)\n contextMenu.style.display = \"none\";\n editor.off(\"input\", hideContextMenu);\n }\n\n function handleLongTap() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n var range = editor.selection.getRange();\n var inSelection = range.contains(pos.row, pos.column);\n if (range.isEmpty() || !inSelection) {\n editor.selection.moveToPosition(pos);\n editor.selection.selectWord();\n }\n mode = \"wait\";\n showContextMenu();\n }\n function switchToSelectionMode() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n editor.selection.moveToPosition(pos);\n var range = clickCount >= 2\n ? editor.selection.getLineRange(pos.row)\n : editor.session.getBracketRange(pos);\n if (range && !range.isEmpty()) {\n editor.selection.setRange(range);\n } else {\n editor.selection.selectWord();\n }\n mode = \"wait\";\n }\n event.addListener(el, \"contextmenu\", function(e) {\n if (!pressed) return;\n var textarea = editor.textInput.getElement();\n textarea.focus();\n }, editor);\n event.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n if (longTouchTimer || touches.length > 1) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n touchStartT = -1;\n mode = \"zoom\";\n return;\n }\n \n pressed = editor.$mouseHandler.isMousePressed = true;\n var h = editor.renderer.layerConfig.lineHeight;\n var w = editor.renderer.layerConfig.lineHeight;\n var t = e.timeStamp;\n lastT = t;\n var touchObj = touches[0];\n var x = touchObj.clientX;\n var y = touchObj.clientY;\n if (Math.abs(startX - x) + Math.abs(startY - y) > h)\n touchStartT = -1;\n \n startX = e.clientX = x;\n startY = e.clientY = y;\n vX = vY = 0;\n \n var ev = new MouseEvent(e, editor);\n pos = ev.getDocumentPosition();\n\n if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {\n clickCount++;\n e.preventDefault();\n e.button = 0;\n switchToSelectionMode();\n } else {\n clickCount = 0;\n var cursor = editor.selection.cursor;\n var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;\n \n var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);\n var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);\n var rect = editor.renderer.scroller.getBoundingClientRect();\n var offsetTop = editor.renderer.layerConfig.offset;\n var offsetLeft = editor.renderer.scrollLeft;\n var weightedDistance = function(x, y) {\n x = x / w;\n y = y / h - 0.75;\n return x * x + y * y;\n };\n \n if (e.clientX < rect.left) {\n mode = \"zoom\";\n return;\n }\n \n var diff1 = weightedDistance(\n e.clientX - rect.left - cursorPos.left + offsetLeft,\n e.clientY - rect.top - cursorPos.top + offsetTop\n );\n var diff2 = weightedDistance(\n e.clientX - rect.left - anchorPos.left + offsetLeft,\n e.clientY - rect.top - anchorPos.top + offsetTop\n );\n if (diff1 < 3.5 && diff2 < 3.5)\n mode = diff1 > diff2 ? \"cursor\" : \"anchor\";\n \n if (diff2 < 3.5)\n mode = \"anchor\";\n else if (diff1 < 3.5)\n mode = \"cursor\";\n else\n mode = \"scroll\";\n longTouchTimer = setTimeout(handleLongTap, 450);\n }\n touchStartT = t;\n }, editor);\n\n event.addListener(el, \"touchend\", function (e) {\n pressed = editor.$mouseHandler.isMousePressed = false;\n if (animationTimer) clearInterval(animationTimer);\n if (mode == \"zoom\") {\n mode = \"\";\n animationSteps = 0;\n } else if (longTouchTimer) {\n editor.selection.moveToPosition(pos);\n animationSteps = 0;\n showContextMenu();\n } else if (mode == \"scroll\") {\n animate();\n hideContextMenu();\n } else {\n showContextMenu();\n }\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }, editor);\n event.addListener(el, \"touchmove\", function (e) {\n if (longTouchTimer) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }\n var touches = e.touches;\n if (touches.length > 1 || mode == \"zoom\") return;\n\n var touchObj = touches[0];\n\n var wheelX = startX - touchObj.clientX;\n var wheelY = startY - touchObj.clientY;\n\n if (mode == \"wait\") {\n if (wheelX * wheelX + wheelY * wheelY > 4)\n mode = \"cursor\";\n else\n return e.preventDefault();\n }\n\n startX = touchObj.clientX;\n startY = touchObj.clientY;\n\n e.clientX = touchObj.clientX;\n e.clientY = touchObj.clientY;\n\n var t = e.timeStamp;\n var dt = t - lastT;\n lastT = t;\n if (mode == \"scroll\") {\n var mouseEvent = new MouseEvent(e, editor);\n mouseEvent.speed = 1;\n mouseEvent.wheelX = wheelX;\n mouseEvent.wheelY = wheelY;\n if (10 * Math.abs(wheelX) < Math.abs(wheelY)) wheelX = 0;\n if (10 * Math.abs(wheelY) < Math.abs(wheelX)) wheelY = 0;\n if (dt != 0) {\n vX = wheelX / dt;\n vY = wheelY / dt;\n }\n editor._emit(\"mousewheel\", mouseEvent);\n if (!mouseEvent.propagationStopped) {\n vX = vY = 0;\n }\n }\n else {\n var ev = new MouseEvent(e, editor);\n var pos = ev.getDocumentPosition();\n if (mode == \"cursor\")\n editor.selection.moveCursorToPosition(pos);\n else if (mode == \"anchor\")\n editor.selection.setSelectionAnchor(pos.row, pos.column);\n editor.renderer.scrollCursorIntoView(pos);\n e.preventDefault();\n }\n }, editor);\n\n function animate() {\n animationSteps += 60;\n animationTimer = setInterval(function() {\n if (animationSteps-- <= 0) {\n clearInterval(animationTimer);\n animationTimer = null;\n }\n if (Math.abs(vX) < 0.01) vX = 0;\n if (Math.abs(vY) < 0.01) vY = 0;\n if (animationSteps < 20) vX = 0.9 * vX;\n if (animationSteps < 20) vY = 0.9 * vY;\n var oldScrollTop = editor.session.getScrollTop();\n editor.renderer.scrollBy(10 * vX, 10 * vY);\n if (oldScrollTop == editor.session.getScrollTop())\n animationSteps = 0;\n }, 10);\n }\n};\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\nvar dom = require(\"./dom\");\n\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\n\nexports.loadScript = function(path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n\n s.src = path;\n head.appendChild(s);\n\n s.onload = s.onreadystatechange = function(_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function(url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nvar EventEmitter = {};\nvar stopPropagation = function() { this.propagationStopped = true; };\nvar preventDefault = function() { this.defaultPrevented = true; };\n\nEventEmitter._emit =\nEventEmitter._dispatchEvent = function(eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n\n if (typeof e != \"object\" || !e)\n e = {};\n\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n\n listeners = listeners.slice();\n for (var i=0; i 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n } else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\n\nexports.setModuleUrl = function(name, subst) {\n return options.$moduleUrls[name] = subst;\n};\n\nexports.$loading = {};\nexports.loadModule = function(moduleName, onLoad) {\n var module, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n\n try {\n module = require(moduleName);\n } catch (e) {}\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n\n exports.$loading[moduleName].push(onLoad);\n\n if (exports.$loading[moduleName].length > 1)\n return;\n\n var afterLoad = function() {\n require([moduleName], function(module) {\n exports._emit(\"load.module\", {name: moduleName, module: module});\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function(onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n\n if (!exports.get(\"packaged\"))\n return afterLoad();\n \n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n reportErrorIfPathIsNotConfigured();\n};\n\nvar reportErrorIfPathIsNotConfigured = function() {\n if (\n !options.basePath && !options.workerPath \n && !options.modePath && !options.themePath\n && !Object.keys(options.$moduleUrls).length\n ) {\n console.error(\n \"Unable to infer path to ace from script src,\",\n \"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes\",\n \"or with webpack use ace/webpack-resolver\"\n );\n reportErrorIfPathIsNotConfigured = function() {};\n }\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n options.packaged = packaged || require.packaged || module.packaged || (global.define && define.packaged);\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i 0){\n\t\t\tif (action == 0x10){\n\t\t\t\tfor(i = condPos; i < ix; i++){\n\t\t\t\t\tlevels[i] = 1;\n\t\t\t\t}\n\t\t\t\tcondPos = -1;\n\t\t\t} else {\n\t\t\t\tcondPos = -1;\n\t\t\t}\n\t\t}\n\t\tcond = impTab[newState][6];\n\t\tif (cond){\n\t\t\tif(condPos == -1){\n\t\t\t\tcondPos = ix;\n\t\t\t}\n\t\t}else{\n\t\t\tif (condPos > -1){\n\t\t\t\tfor(i = condPos; i < ix; i++){\n\t\t\t\t\tlevels[i] = newLevel;\n\t\t\t\t}\n\t\t\t\tcondPos = -1;\n\t\t\t}\n\t\t}\n\t\tif (charTypes[ix] == B){\n\t\t\tlevels[ix] = 0;\n\t\t}\n\t\thiLevel |= newLevel;\n\t}\n\tif (hasUBAT_S){\n\t\tfor(i = 0; i < len; i++){\n\t\t\tif(charTypes[i] == S){\n\t\t\t\tlevels[i] = dir;\n\t\t\t\tfor(var j = i - 1; j >= 0; j--){\n\t\t\t\t\tif(charTypes[j] == WS){\n\t\t\t\t\t\tlevels[j] = dir;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction _invertLevel(lev, levels, _array) {\n\tif (hiLevel < lev){\n\t\treturn;\n\t}\n\tif (lev == 1 && dir == RTL && !hasUBAT_B){\n\t\t_array.reverse();\n\t\treturn;\n\t}\n\tvar len = _array.length, start = 0, end, lo, hi, tmp;\n\twhile(start < len){\n\t\tif (levels[start] >= lev){\n\t\t\tend = start + 1;\n\t\twhile(end < len && levels[end] >= lev){\n\t\t\tend++;\n\t\t}\n\t\tfor(lo = start, hi = end - 1 ; lo < hi; lo++, hi--){\n\t\t\ttmp = _array[lo];\n\t\t\t_array[lo] = _array[hi];\n\t\t\t_array[hi] = tmp;\n\t\t}\n\t\tstart = end;\n\t}\n\tstart++;\n\t}\n}\n\nfunction _getCharClass(chars, types, classes, ix) {\t\t\t\n\tvar cType = types[ix], wType, nType, len, i;\n\tswitch(cType){\n\t\tcase L:\n\t\tcase R:\n\t\t\tlastArabic = false;\n\t\tcase ON:\n\t\tcase AN:\n\t\t\treturn cType;\n\t\tcase EN:\n\t\t\treturn lastArabic ? AN : EN;\n\t\tcase AL:\n\t\t\tlastArabic = true;\n\t\t\thasUBAT_AL = true;\n\t\t\treturn R;\n\t\tcase WS:\n\t\t\treturn ON;\n\t\tcase CS:\n\t\t\tif (ix < 1 || (ix + 1) >= types.length ||\n\t\t\t\t((wType = classes[ix - 1]) != EN && wType != AN) ||\n\t\t\t\t((nType = types[ix + 1]) != EN && nType != AN)){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\tif (lastArabic){nType = AN;}\n\t\t\treturn nType == wType ? nType : ON;\n\t\tcase ES:\n\t\t\twType = ix > 0 ? classes[ix - 1] : B;\n\t\t\tif (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\treturn ON;\n\t\tcase ET:\n\t\t\tif (ix > 0 && classes[ix - 1] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\tif (lastArabic){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\ti = ix + 1;\n\t\t\tlen = types.length;\n\t\t\twhile (i < len && types[i] == ET){\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < len && types[i] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\treturn ON;\n\t\tcase NSM:\n\t\t\tlen = types.length;\n\t\t\ti = ix + 1;\n\t\t\twhile (i < len && types[i] == NSM){\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < len){\n\t\t\t\tvar c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n\t\t\t\t\n\t\t\t\twType = types[i];\n\t\t\t\tif (rtlCandidate && (wType == R || wType == AL)){\n\t\t\t\t\treturn R;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ix < 1 || (wType = types[ix - 1]) == B){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\treturn classes[ix - 1];\n\t\tcase B:\n\t\t\tlastArabic = false;\n\t\t\thasUBAT_B = true;\n\t\t\treturn dir;\n\t\tcase S:\n\t\t\thasUBAT_S = true;\n\t\t\treturn ON;\n\t\tcase LRE:\n\t\tcase RLE:\n\t\tcase LRO:\n\t\tcase RLO:\n\t\tcase PDF:\n\t\t\tlastArabic = false;\n\t\tcase BN:\n\t\t\treturn ON;\n\t}\n}\n\nfunction _getCharacterType( ch ) {\t\t\n\tvar uc = ch.charCodeAt(0), hi = uc >> 8;\n\t\n\tif (hi == 0) {\t\t\n\t\treturn ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n\t} else if (hi == 5) {\n\t\treturn (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n\t} else if (hi == 6) {\n\t\tif (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n\t\t\treturn NSM;\n\t\telse if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n\t\t\treturn AN;\n\t\telse if (uc == 0x066A)\n\t\t\treturn ET;\n\t\telse if (/[\\u06f0-\\u06f9]/.test(ch))\n\t\t\treturn EN;\t\t\t\n\t\telse\n\t\t\treturn AL;\n\t} else if (hi == 0x20 && uc <= 0x205F) {\n\t\treturn UnicodeTBL20[uc & 0xFF];\n\t} else if (hi == 0xFE) {\n\t\treturn (uc >= 0xFE70 ? AL : ON);\n\t}\t\t\n\treturn ON;\t\n}\n\nfunction _isArabicDiacritics( ch ) {\n\treturn (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\nexports.RLE = 7;\n\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function(text, textCharTypes, isRtl) {\n\tif (text.length < 2)\n\t\treturn {};\n\t\t\n\tvar chars = text.split(\"\"), logicalFromVisual = new Array(chars.length),\n\t\tbidiLevels = new Array(chars.length), levels = []; \n\n\tdir = isRtl ? RTL : LTR;\n\n\t_computeLevels(chars, levels, chars.length, textCharTypes);\n\n\tfor (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++);\n\n\t_invertLevel(2, levels, logicalFromVisual);\n\t_invertLevel(1, levels, logicalFromVisual);\n\n\tfor (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n\t\tif (textCharTypes[i] === AN) {\n\t\t\tlevels[i] = exports.AN;\n\t\t} else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE) \n\t\t\t|| textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n\t\t\tlevels[i] = exports.ON_R;\n\t\t} else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n\t\t\tlevels[i - 1] = levels[i] = exports.R_H;\n\t\t\ti++;\n\t\t}\n\t}\n\tif (chars[chars.length - 1] === exports.DOT)\n\t\tlevels[chars.length - 1] = exports.B;\n\t\t\t\t\n\tif (chars[0] === '\\u202B')\n\t\tlevels[0] = exports.RLE;\n\t\t\t\t\n\tfor (var i = 0; i < logicalFromVisual.length; i++) {\n\t\tbidiLevels[i] = levels[logicalFromVisual[i]];\n\t}\n\n\treturn {'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels};\n};\nexports.hasBidiCharacters = function(text, textCharTypes){\n\tvar ret = false;\n\tfor (var i = 0; i < text.length; i++){\n\t\ttextCharTypes[i] = _getCharacterType(text.charAt(i));\n\t\tif (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))\n\t\t\tret = true;\n\t}\n\treturn ret;\n};\t\nexports.getVisualFromLogicalIdx = function(logIdx, rowMap) {\n\tfor (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n\t\tif (rowMap.logicalFromVisual[i] == logIdx)\n\t\t\treturn i;\n\t}\n\treturn 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\"], function(require, exports, module) {\n\"use strict\";\n\nvar bidiUtil = require(\"./lib/bidiutil\");\nvar lang = require(\"./lib/lang\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\u202B]/;\nvar BidiHandler = function(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.$isRtl = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.EOF = \"\\xB6\";\n this.RLE = \"\\u202B\";\n this.contentWidth = 0;\n this.fontMetrics = null;\n this.rtlLineOffset = 0;\n this.wrapOffset = 0;\n this.isMoveLeftOperation = false;\n this.seenBidi = bidiRE.test(session.getValue());\n};\n\n(function() {\n this.isBidiRow = function(screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n\n this.onChange = function(delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n } \n else {\n this.currentRow = null;\n }\n };\n\n this.getDocumentRow = function() {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n\n return docRow;\n };\n\n this.getSplitIndex = function() {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n\n prevIndex = currentIndex;\n splitIndex++;\n }\n } else {\n splitIndex = this.currentRow;\n }\n\n return splitIndex;\n };\n\n this.updateRowLine = function(docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n \n var isLastRow = (docRow === this.session.getLength() - 1),\n endOfLine = isLastRow ? this.EOF : this.EOL;\n\n this.wrapIndent = 0;\n this.line = this.session.getLine(docRow);\n this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n\n if(splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :\n this.line.substring(splits[splits.length - 1]);\n } else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n }\n if (splitIndex == splits.length)\n this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;\n } else {\n this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function(ch, i){\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n\n if (this.isRtlDir) {\n this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;\n this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;\n }\n };\n \n this.updateBidiMap = function() {\n var textCharTypes = [];\n if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {\n this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);\n } else {\n this.bidiMap = {};\n }\n };\n this.markAsDirty = function() {\n this.currentRow = null;\n };\n this.updateCharacterWidths = function(fontMetrics) {\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n\n this.fontMetrics = fontMetrics;\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;\n\n this.currentRow = null;\n };\n\n this.setShowInvisibles = function(showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n\n this.setEolChar = function(eolChar) {\n this.EOL = eolChar; \n };\n\n this.setContentWidth = function(width) {\n this.contentWidth = width;\n };\n\n this.isRtlLine = function(row) {\n if (this.$isRtl) return true;\n if (row != undefined)\n return (this.session.getLine(row).charAt(0) == this.RLE);\n else\n return this.isRtlDir; \n };\n\n this.setRtlDirection = function(editor, isRtlDir) {\n var cursor = editor.getCursorPosition(); \n for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {\n if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)\n editor.session.doc.removeInLine(row, 0, 1);\n else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)\n editor.session.doc.insert({column: 0, row: row}, editor.session.$bidiHandler.RLE);\n }\n };\n this.getPosLeft = function(col) {\n col -= this.wrapIndent;\n var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;\n var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap),\n levels = this.bidiMap.bidiLevels, left = 0;\n\n if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n \n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n\n if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))\n left += this.charWidths[levels[visualIdx]];\n\n if (this.wrapIndent)\n left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n\n if (this.isRtlDir)\n left += this.rtlLineOffset;\n\n return left;\n };\n this.getSelections = function(startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0,\n selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent,\n isSelected = false, isSelectedPrev = false, selectionStart = 0;\n \n if (this.wrapIndent)\n offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n } else if (!isSelected && isSelectedPrev) {\n selections.push({left: selectionStart, width: offset - selectionStart});\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n\n if (isSelected && (visIdx === levels.length)) {\n selections.push({left: selectionStart, width: offset - selectionStart});\n }\n\n if(this.isRtlDir) {\n for (var i = 0; i < selections.length; i++) {\n selections[i].left += this.rtlLineOffset;\n }\n }\n return selections;\n };\n this.offsetToCol = function(posX) {\n if(this.isRtlDir)\n posX -= this.rtlLineOffset;\n\n var logicalIdx = 0, posX = Math.max(posX, 0),\n offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels,\n charWidth = this.charWidths[levels[visualIdx]];\n\n if (this.wrapIndent)\n posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n \n while(posX > offset + charWidth/2) {\n offset += charWidth;\n if(visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n \n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)){\n if(posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n\n } else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)){\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n\n } else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))){\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n } else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n\n if (logicalIdx === 0 && this.isRtlDir)\n logicalIdx++;\n\n return (logicalIdx + this.wrapIndent);\n };\n\n}).call(BidiHandler.prototype);\n\nexports.BidiHandler = BidiHandler;\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Selection = function(session) {\n this.session = session;\n this.doc = session.getDocument();\n\n this.clearSelection();\n this.cursor = this.lead = this.doc.createAnchor(0, 0);\n this.anchor = this.doc.createAnchor(0, 0);\n this.$silent = false;\n\n var self = this;\n this.cursor.on(\"change\", function(e) {\n self.$cursorChanged = true;\n if (!self.$silent)\n self._emit(\"changeCursor\");\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n\n this.anchor.on(\"change\", function() {\n self.$anchorChanged = true;\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n });\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.isEmpty = function() {\n return this.$isEmpty || (\n this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column\n );\n };\n this.isMultiLine = function() {\n return !this.$isEmpty && this.anchor.row != this.cursor.row;\n };\n this.getCursor = function() {\n return this.lead.getPosition();\n };\n this.setSelectionAnchor = function(row, column) {\n this.$isEmpty = false;\n this.anchor.setPosition(row, column);\n };\n this.getAnchor = \n this.getSelectionAnchor = function() {\n if (this.$isEmpty)\n return this.getSelectionLead();\n \n return this.anchor.getPosition();\n };\n this.getSelectionLead = function() {\n return this.lead.getPosition();\n };\n this.isBackwards = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n this.getRange = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n\n if (this.$isEmpty)\n return Range.fromPoints(lead, lead);\n\n return this.isBackwards()\n ? Range.fromPoints(lead, anchor)\n : Range.fromPoints(anchor, lead);\n };\n this.clearSelection = function() {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n this.selectAll = function() {\n this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);\n };\n this.setRange =\n this.setSelectionRange = function(range, reverse) {\n var start = reverse ? range.end : range.start;\n var end = reverse ? range.start : range.end;\n this.$setSelection(start.row, start.column, end.row, end.column);\n };\n\n this.$setSelection = function(anchorRow, anchorColumn, cursorRow, cursorColumn) {\n if (this.$silent)\n return;\n var wasEmpty = this.$isEmpty;\n var wasMultiselect = this.inMultiSelectMode;\n this.$silent = true;\n this.$cursorChanged = this.$anchorChanged = false;\n this.anchor.setPosition(anchorRow, anchorColumn);\n this.cursor.setPosition(cursorRow, cursorColumn);\n this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);\n this.$silent = false;\n if (this.$cursorChanged)\n this._emit(\"changeCursor\");\n if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)\n this._emit(\"changeSelection\");\n };\n\n this.$moveSelection = function(mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n\n mover.call(this);\n };\n this.selectTo = function(row, column) {\n this.$moveSelection(function() {\n this.moveCursorTo(row, column);\n });\n };\n this.selectToPosition = function(pos) {\n this.$moveSelection(function() {\n this.moveCursorToPosition(pos);\n });\n };\n this.moveTo = function(row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n this.moveToPosition = function(pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n this.selectUp = function() {\n this.$moveSelection(this.moveCursorUp);\n };\n this.selectDown = function() {\n this.$moveSelection(this.moveCursorDown);\n };\n this.selectRight = function() {\n this.$moveSelection(this.moveCursorRight);\n };\n this.selectLeft = function() {\n this.$moveSelection(this.moveCursorLeft);\n };\n this.selectLineStart = function() {\n this.$moveSelection(this.moveCursorLineStart);\n };\n this.selectLineEnd = function() {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n this.selectFileEnd = function() {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n this.selectFileStart = function() {\n this.$moveSelection(this.moveCursorFileStart);\n };\n this.selectWordRight = function() {\n this.$moveSelection(this.moveCursorWordRight);\n };\n this.selectWordLeft = function() {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n this.getWordRange = function(row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n this.selectWord = function() {\n this.setSelectionRange(this.getWordRange());\n };\n this.selectAWord = function() {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n\n this.getLineRange = function(row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n } else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n this.selectLine = function() {\n this.setSelectionRange(this.getLineRange());\n };\n this.moveCursorUp = function() {\n this.moveCursorBy(-1, 0);\n };\n this.moveCursorDown = function() {\n this.moveCursorBy(1, 0);\n };\n this.wouldMoveIntoSoftTab = function(cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length-1 == tabSize;\n };\n this.moveCursorLeft = function() {\n var cursor = this.lead.getPosition(),\n fold;\n\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n } else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n } else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n this.moveCursorRight = function() {\n var cursor = this.lead.getPosition(),\n fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n } else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n this.moveCursorLineStart = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(\n row, null, firstColumnPosition.row,\n firstColumnPosition.column\n );\n\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n this.moveCursorLineEnd = function() {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n this.moveCursorFileEnd = function() {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n this.moveCursorFileStart = function() {\n this.moveCursorTo(0, 0);\n };\n this.moveCursorLongWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n this.moveCursorLongWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n\n var leftOfCursor = lang.stringReverse(str);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n\n this.$shortWordEndIndex = function(rightOfCursor) {\n var index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n\n tokenRe.lastIndex = 0;\n if (this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index ++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n\n return index;\n };\n\n this.moveCursorShortWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n\n var index = this.$shortWordEndIndex(rightOfCursor);\n\n this.moveCursorTo(row, column + index);\n };\n\n this.moveCursorShortWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n\n return this.moveCursorTo(row, column - index);\n };\n\n this.moveCursorWordRight = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n\n this.moveCursorWordLeft = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n this.moveCursorBy = function(rows, chars) {\n var screenPos = this.session.documentToScreenPosition(\n this.lead.row,\n this.lead.column\n );\n\n var offsetX;\n\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n } else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n \n if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {\n var widget = this.session.lineWidgets[this.lead.row];\n if (rows < 0)\n rows -= widget.rowsAbove || 0;\n else if (rows > 0)\n rows += widget.rowCount - (widget.rowsAbove || 0);\n }\n \n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n \n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n \n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n this.moveCursorToPosition = function(position) {\n this.moveCursorTo(position.row, position.column);\n };\n this.moveCursorTo = function(row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n this.moveCursorToScreen = function(row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n this.detach = function() {\n this.lead.detach();\n this.anchor.detach();\n };\n\n this.fromOrientedRange = function(range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n\n this.toOrientedRange = function(range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n } else {\n range = r;\n }\n\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n this.getRangeOfMovements = function(func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start, end);\n } catch(e) {\n return Range.fromPoints(start, start);\n } finally {\n this.moveCursorToPosition(start);\n }\n };\n\n this.toJSON = function() {\n if (this.rangeCount) {\n var data = this.ranges.map(function(r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n } else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n\n this.fromJSON = function(data) {\n if (data.start == undefined) {\n if (this.rangeList && data.length > 1) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--; ) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n } else {\n data = data[0];\n }\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n\n this.isEqual = function(data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n\n for (var i = this.ranges.length; i--; ) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n\n}).call(Selection.prototype);\n\nexports.Selection = Selection;\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar config = require(\"./config\");\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = function(rules) {\n this.states = rules;\n\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = {defaultToken: \"text\"};\n var flag = \"g\";\n\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive)\n flag = \"gi\";\n if (rule.regex == null)\n continue;\n\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n } else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", { \n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n } else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n } else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function(match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n } else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n \n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n \n splitterRurles.forEach(function(rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n};\n\n(function() {\n this.$setMaxTokenCount = function(m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n \n this.$applyToken = function(str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{type: types, value: str}];\n\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n\n this.$arrayTokens = function(str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n\n this.removeCapturingGroups = function(src) {\n var r = src.replace(\n /\\\\.|\\[(?:\\\\.|[^\\\\\\]])*|\\(\\?[:=!<]|(\\()/g,\n function(x, y) {return y ? \"(?:\" : x;}\n );\n return r;\n };\n\n this.createSplitterRegexp = function(src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function(\n m, esc, parenOpen, parenClose, square, index\n ) {\n if (inChClass) {\n inChClass = square != \"]\";\n } else if (square) {\n inChClass = true;\n } else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index+1;\n lastCapture.stack = -1;\n }\n stack--;\n } else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\") src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\") src += \"$\";\n \n return new RegExp(src, (flag||\"\").replace(\"g\", \"\"));\n };\n this.getLineTokens = function(line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n } else\n var stack = [];\n\n var currentState = startState || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n\n var token = {type: null, value: \"\"};\n\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: skipped};\n }\n }\n\n for (var i = 0; i < match.length-2; i++) {\n if (match[i + 1] === undefined)\n continue;\n\n rule = state[mapping[i]];\n\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n } else {\n currentState = rule.next(currentState, stack);\n }\n \n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: value};\n }\n } else if (type) {\n if (token.type)\n tokens.push(token);\n token = {type: null, value: \"\"};\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n\n if (lastIndex == line.length)\n break;\n\n lastIndex = index;\n\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 500),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n\n if (token.type)\n tokens.push(token);\n \n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens : tokens,\n state : stack.length ? stack : currentState\n };\n };\n \n this.reportError = config.reportError;\n \n}).call(Tokenizer.prototype);\n\nexports.Tokenizer = Tokenizer;\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"../lib/lang\");\n\nvar TextHighlightRules = function() {\n\n this.$rules = {\n \"start\" : [{\n token : \"empty_line\",\n regex : '^$'\n }, {\n defaultToken : \"text\"\n }]\n };\n};\n\n(function() {\n\n this.addRules = function(rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n\n this.getRules = function() {\n return this.$rules;\n };\n\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n } else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n\n this.addRules(embedRules, prefix);\n\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));\n }\n\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n\n this.getEmbeds = function() {\n return this.$embeds;\n };\n\n var pushState = function(currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function(currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n\n this.normalizeRules = function() {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n } else if (next == \"pop\") {\n rule.next = popState;\n }\n\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n } else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (Array.isArray(includeName))\n toInsert = includeName.map(function(x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function(x) {return !x.next;});\n state.splice.apply(state, args);\n i--;\n }\n \n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(\n rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive\n );\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n\n this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n this.$keywordList = [];\n Object.keys(map).forEach(function(className) {\n var a = map[className];\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--; ) {\n var word = list[i];\n this.$keywordList.push(word);\n if (ignoreCase)\n word = word.toLowerCase(); \n keywords[word] = className;\n }\n }, this);\n map = null;\n return ignoreCase\n ? function(value) {return keywords[value.toLowerCase()] || defaultToken; }\n : function(value) {return keywords[value] || defaultToken; };\n };\n\n this.getKeywords = function() {\n return this.$keywords;\n };\n\n}).call(TextHighlightRules.prototype);\n\nexports.TextHighlightRules = TextHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nvar Behaviour = function() {\n this.$behaviours = {};\n};\n\n(function () {\n\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n \n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n \n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n \n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n } else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n \n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n } else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n\n}).call(Behaviour.prototype);\n\nexports.Behaviour = Behaviour;\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"./range\").Range;\nvar TokenIterator = function(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n};\n\n(function() { \n this.stepBackward = function() {\n this.$tokenIndex -= 1;\n \n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n \n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.stepForward = function() {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentTokenRow = function () {\n return this.$row;\n }; \n this.getCurrentTokenColumn = function() {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n \n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n \n return column; \n };\n this.getCurrentTokenPosition = function() {\n return {row: this.$row, column: this.getCurrentTokenColumn()};\n };\n this.getCurrentTokenRange = function() {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n \n}).call(TokenIterator.prototype);\n\nexports.TokenIterator = TokenIterator;\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\n\nvar SAFE_INSERT_IN_TOKENS =\n [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS =\n [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\", \"comment\"];\n\nvar context;\nvar contextCache = {};\nvar defaultQuotes = {'\"' : '\"', \"'\" : \"'\"};\n\nvar initContext = function(editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = {rangeCount: editor.multiSelect.rangeCount};\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\n\nvar getWrapped = function(selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\n\nvar CstyleBehaviour = function(options) {\n this.add(\"braces\", \"insertion\", function(state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options && options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n } else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n } else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n } else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n } else if (closing) {\n var next_indent = this.$getIndent(line);\n } else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n } else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n\n this.add(\"braces\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n } else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n\n this.add(\"parens\", \"insertion\", function(state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n } else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"parens\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"brackets\", \"insertion\", function(state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n } else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"brackets\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"string_dquotes\", \"insertion\", function(state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) \n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n } else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column-1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n \n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n \n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n \n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n } else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(leftChar);\n if (isWordBefore || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n var charBefore = line[cursor.column - 2];\n if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore)))\n return null;\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1,1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n};\n\n \nCstyleBehaviour.isSaneInsertion = function(editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n if (/[)}\\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))\n return true;\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\n\nCstyleBehaviour.$matchTokenType = function(token, types) {\n return types.indexOf(token.type || token) > -1;\n};\n\nCstyleBehaviour.recordAutoInsert = function(editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\n\nCstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isMaybeInsertedClosing(cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\n\nCstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\n\nCstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\n\nCstyleBehaviour.popAutoInsertedClosing = function() {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\n\nCstyleBehaviour.clearMaybeInsertedClosing = function() {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\n\n\n\noop.inherits(CstyleBehaviour, Behaviour);\n\nexports.CstyleBehaviour = CstyleBehaviour;\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nvar wordChars = [48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2];\n\nvar code = 0;\nvar str = [];\nfor (var i = 0; i < wordChars.length; i += 2) {\n str.push(code += wordChars[i]);\n if (wordChars[i + 1])\n str.push(45, code += wordChars[i + 1]);\n}\n\nexports.wordChars = String.fromCharCode.apply(null, str);\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar config = require(\"../config\");\n\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = require(\"../unicode\");\nvar lang = require(\"../lib/lang\");\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\n\nvar Mode = function() {\n this.HighlightRules = TextHighlightRules;\n};\n\n(function() {\n this.$defaultBehaviour = new CstyleBehaviour();\n\n this.tokenRe = new RegExp(\"^[\" + unicode.wordChars + \"\\\\$_]+\", \"g\");\n\n this.nonTokenRe = new RegExp(\"^(?:[^\" + unicode.wordChars + \"\\\\$_]|\\\\s])+\", \"g\");\n\n this.getTokenizer = function() {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n\n this.toggleCommentLines = function(state, session, startRow, endRow) {\n var doc = session.doc;\n\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n\n var comment = function(line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({row: i, column: line.length}, lineCommentEnd);\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n\n var uncomment = function(line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n\n var testRemove = function(line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n } else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n } else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n \n insertAtTabStop = session.getUseSoftTabs();\n\n var uncomment = function(line, i) {\n var m = line.match(regexpStart);\n if (!m) return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function(line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({row: i, column: minIndent}, commentWithSpace);\n else\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n var testRemove = function(line, i) {\n return regexpStart.test(line);\n };\n \n var shouldInsertSpace = function(line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n };\n }\n\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n\n\n var minEmptyLength = Infinity;\n iter(function(line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n } else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n\n iter(shouldRemove ? uncomment : comment);\n };\n\n this.toggleBlockComment = function(state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n } else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.autoOutdent = function(state, doc, row) {\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n this.createWorker = function(session) {\n return null;\n };\n\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n var Mode = mapping[i];\n var id = Mode.prototype.$id;\n var mode = config.$modes[id];\n if (!mode)\n config.$modes[id] = mode = new Mode();\n if (!config.$modes[i])\n config.$modes[i] = mode;\n this.$embeds.push(i);\n this.$modes[i] = mode;\n }\n }\n\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\", \n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n\n for (var i = 0; i < delegations.length; i++) {\n (function(scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function() {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this));\n }\n };\n\n this.$delegator = function(method, args, defaultHandler) {\n var state = args[0] || \"start\";\n if (typeof state != \"string\") {\n if (Array.isArray(state[2])) {\n var language = state[2][state[2].length - 1];\n var mode = this.$modes[language];\n if (mode)\n return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1)));\n }\n state = state[0] || \"start\";\n }\n \n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]]) continue;\n\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n\n this.transformAction = function(state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n \n this.getKeywords = function(append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { \n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n \n this.$createKeywordList = function() {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function(word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nfunction throwDeltaError(delta, errorText){\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\n\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\n\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\n\nexports.applyDelta = function(docLines, delta, doNotValidate) {\n \n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n } else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n } else {\n docLines.splice(\n row, endRow - row + 1,\n line.substring(0, startColumn) + docLines[endRow].substring(endColumn)\n );\n }\n break;\n }\n};\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\n\nvar Anchor = exports.Anchor = function(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n \n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.getPosition = function() {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n this.getDocument = function() {\n return this.document;\n };\n this.$insertRight = false;\n this.onChange = function(delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n\n if (delta.start.row > this.row)\n return;\n \n var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n \n function $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n }\n \n function $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n \n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n }\n this.setPosition = function(row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n } else {\n pos = this.$clipPositionToDocument(row, column);\n }\n\n if (this.row == pos.row && this.column == pos.column)\n return;\n\n var old = {\n row: this.row,\n column: this.column\n };\n\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n this.detach = function() {\n this.document.off(\"change\", this.$onChange);\n };\n this.attach = function(doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n this.$clipPositionToDocument = function(row, column) {\n var pos = {};\n\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n\n if (column < 0)\n pos.column = 0;\n\n return pos;\n };\n\n}).call(Anchor.prototype);\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\n\nvar Document = function(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n } else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({row: 0, column: 0}, textOrLines);\n } else {\n this.insert({row: 0, column:0}, textOrLines);\n }\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setValue = function(text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({row: 0, column: 0}, text);\n };\n this.getValue = function() {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n this.createAnchor = function(row, column) {\n return new Anchor(this, row, column);\n };\n if (\"aaa\".split(/a/).length === 0) {\n this.$split = function(text) {\n return text.replace(/\\r\\n|\\r/g, \"\\n\").split(\"\\n\");\n };\n } else {\n this.$split = function(text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n }\n\n\n this.$detectNewLine = function(text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n this.getNewLineCharacter = function() {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n\n this.$autoNewLine = \"\";\n this.$newLineMode = \"auto\";\n this.setNewLineMode = function(newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n this.getNewLineMode = function() {\n return this.$newLineMode;\n };\n this.isNewLine = function(text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n this.getLine = function(row) {\n return this.$lines[row] || \"\";\n };\n this.getLines = function(firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n this.getAllLines = function() {\n return this.getLines(0, this.getLength());\n };\n this.getLength = function() {\n return this.$lines.length;\n };\n this.getTextRange = function(range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n this.getLinesForRange = function(range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n } else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n this.insertLines = function(row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n this.removeLines = function(firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n this.insertNewLine = function(position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n this.insert = function(position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n \n return this.insertMergedLines(position, this.$split(text));\n };\n this.insertInLine = function(position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n \n return this.clonePos(end);\n };\n \n this.clippedPos = function(row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n } else if (row < 0) {\n row = 0;\n } else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return {row: row, column: column};\n };\n \n this.clonePos = function(pos) {\n return {row: pos.row, column: pos.column};\n };\n \n this.pos = function(row, column) {\n return {row: row, column: column};\n };\n \n this.$clipPosition = function(position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n } else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n this.insertFullLines = function(row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n } else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({row: row, column: column}, lines);\n }; \n this.insertMergedLines = function(position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n \n return this.clonePos(end);\n };\n this.remove = function(range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({start: start, end: end})\n });\n return this.clonePos(start);\n };\n this.removeInLine = function(row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({start: start, end: end})\n }, true);\n \n return this.clonePos(start);\n };\n this.removeFullLines = function(firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow );\n var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 );\n var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow );\n var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); \n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n \n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n this.removeNewLine = function(row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n this.replace = function(range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n \n return end;\n };\n this.applyDeltas = function(deltas) {\n for (var i=0; i=0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n this.applyDelta = function(delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n \n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n \n this.$safeApplyDelta = function(delta) {\n var docLength = this.$lines.length;\n if (\n delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength\n ) {\n this.applyDelta(delta);\n }\n };\n \n this.$splitAndapplyLargeDelta = function(delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row; \n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n this.revertDelta = function(delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n this.indexToPosition = function(index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return {row: i, column: index + lines[i].length + newlineLength};\n }\n return {row: l-1, column: index + lines[l-1].length + newlineLength};\n };\n this.positionToIndex = function(pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n\n return index + pos.column;\n };\n\n}).call(Document.prototype);\n\nexports.Document = Document;\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\n\nvar BackgroundTokenizer = function(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n\n var self = this;\n\n this.$worker = function() {\n if (!self.running) { return; }\n\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n \n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines ++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) {\n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n \n if (endLine == -1)\n endLine = currentLine;\n \n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n this.setTokenizer = function(tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n\n this.start(0);\n };\n this.setDocument = function(doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n\n this.stop();\n };\n this.fireUpdateEvent = function(firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", {data: data});\n };\n this.start = function(startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n \n this.scheduleStart = function() {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n\n this.$updateOnChange = function(delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n this.lines[startRow] = null;\n } else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n\n this.stop();\n };\n this.stop = function() {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n this.getTokens = function(row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n this.getState = function(row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n\n this.$tokenizeRow = function(row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n\n var data = this.tokenizer.getLineTokens(line, state, row);\n\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n } else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n\n return this.lines[row] = data.tokens;\n };\n\n}).call(BackgroundTokenizer.prototype);\n\nexports.BackgroundTokenizer = BackgroundTokenizer;\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\n\nvar SearchHighlight = function(regExp, clazz, type) {\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type || \"text\";\n};\n\n(function() {\n this.MAX_RANGES = 500;\n \n this.setRegexp = function(regExp) {\n if (this.regExp+\"\" == regExp+\"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n\n this.update = function(html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function(match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n\n for (var j = ranges.length; j --; ) {\n markerLayer.drawSingleLineMarker(\n html, ranges[j].toScreenRange(session), this.clazz, config);\n }\n }\n };\n\n}).call(SearchHighlight.prototype);\n\nexports.SearchHighlight = SearchHighlight;\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../range\").Range;\nfunction FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n } else {\n folds = this.folds = [ folds ];\n }\n\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column,\n last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n\n this.folds.forEach(function(fold) {\n fold.setFoldLine(this);\n }, this);\n}\n\n(function() {\n this.shiftRow = function(shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function(fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n\n this.addFold = function(fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function(a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n } else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n } else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n\n this.containsRow = function(row) {\n return row >= this.start.row && row <= this.end.row;\n };\n\n this.walk = function(callback, endRow, endColumn) {\n var lastEnd = 0,\n folds = this.folds,\n fold,\n cmp, stop, isNewRow = true;\n\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n\n this.getNextFoldTo = function(row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n } else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n\n this.addRemoveChars = function(row, column, len) {\n var ret = this.getNextFoldTo(row, column),\n fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row)\n {\n window.console && window.console.log(row, column, fold);\n } else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n\n this.split = function(row, column) {\n var pos = this.getNextFoldTo(row, column);\n \n if (!pos || pos.kind == \"inside\")\n return null;\n \n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n \n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n\n this.merge = function(foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n\n this.toString = function() {\n var ret = [this.range.toString() + \": [\" ];\n\n this.folds.forEach(function(fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n\n this.idxToPosition = function(idx) {\n var lastFoldEndColumn = 0;\n\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n\n lastFoldEndColumn = fold.end.column;\n }\n\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n}).call(FoldLine.prototype);\n\nexports.FoldLine = FoldLine;\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar Range = require(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\n\nvar RangeList = function() {\n this.ranges = [];\n this.$bias = 1;\n};\n\n(function() {\n this.comparePoints = comparePoints;\n\n this.pointIndex = function(pos, excludeEdges, startIndex) {\n var list = this.ranges;\n\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i-2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n\n return -i-1;\n }\n return -i - 1;\n };\n\n this.add = function(range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n\n this.addList = function(list) {\n var removed = [];\n for (var i = list.length; i--; ) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n\n this.substractPoint = function(pos) {\n var i = this.pointIndex(pos);\n\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n this.merge = function() {\n var removed = [];\n var list = this.ranges;\n \n list = list.sort(function(a, b) {\n return comparePoints(a.start, b.start);\n });\n \n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n \n this.ranges = list;\n\n return removed;\n };\n\n this.contains = function(row, column) {\n return this.pointIndex({row: row, column: column}) >= 0;\n };\n\n this.containsPoint = function(pos) {\n return this.pointIndex(pos) >= 0;\n };\n\n this.rangeAtPoint = function(pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n\n\n this.clipRows = function(startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n\n var startIndex = this.pointIndex({row: startRow, column: 0});\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({row: endRow, column: 0}, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n\n this.removeAll = function() {\n return this.ranges.splice(0, this.ranges.length);\n };\n\n this.attach = function(session) {\n if (this.session)\n this.detach();\n\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n\n this.session.on('change', this.onChange);\n };\n\n this.detach = function() {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n\n this.$onChange = function(delta) {\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var ranges = this.ranges;\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row >= startRow)\n break;\n }\n \n if (delta.action == \"insert\") {\n var lineDif = endRow - startRow;\n var colDiff = -start.column + end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > startRow)\n break;\n \n if (r.start.row == startRow && r.start.column >= start.column) {\n if (r.start.column == start.column && this.$bias <= 0) {\n } else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$bias < 0) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) {\n if (r.end.column > r.start.column && r.end.column == ranges[i+1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n } else {\n var lineDif = startRow - endRow;\n var colDiff = start.column - end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n \n if (r.start.row > endRow)\n break;\n \n if (r.end.row < endRow\n && (\n startRow < r.end.row \n || startRow == r.end.row && start.column < r.end.column\n )\n ) {\n r.end.row = startRow;\n r.end.column = start.column;\n }\n else if (r.end.row == endRow) {\n if (r.end.column <= end.column) {\n if (lineDif || r.end.column > start.column) {\n r.end.column = start.column;\n r.end.row = start.row;\n }\n }\n else {\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n else if (r.end.row > endRow) {\n r.end.row += lineDif;\n }\n \n if (r.start.row < endRow\n && (\n startRow < r.start.row \n || startRow == r.start.row && start.column < r.start.column\n )\n ) {\n r.start.row = startRow;\n r.start.column = start.column;\n }\n else if (r.start.row == endRow) {\n if (r.start.column <= end.column) {\n if (lineDif || r.start.column > start.column) {\n r.start.column = start.column;\n r.start.row = start.row;\n }\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n else if (r.start.row > endRow) {\n r.start.row += lineDif;\n }\n }\n }\n\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n\n}).call(RangeList.prototype);\n\nexports.RangeList = RangeList;\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/lib/oop\"], function(require, exports, module) {\n\"use strict\";\n\nvar RangeList = require(\"../range_list\").RangeList;\nvar oop = require(\"../lib/oop\");\nvar Fold = exports.Fold = function(range, placeholder) {\n this.foldLine = null;\n this.placeholder = placeholder;\n this.range = range;\n this.start = range.start;\n this.end = range.end;\n\n this.sameRow = range.start.row == range.end.row;\n this.subFolds = this.ranges = [];\n};\n\noop.inherits(Fold, RangeList);\n\n(function() {\n\n this.toString = function() {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n\n this.setFoldLine = function(foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function(fold) {\n fold.setFoldLine(foldLine);\n });\n };\n\n this.clone = function() {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function(subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n\n this.addSubFold = function(fold) {\n if (this.range.isEqual(fold))\n return;\n consumeRange(fold, this.start);\n\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n var firstConsumed = 0;\n\n if (cmp == 0) {\n if (afterStart.range.containsRange(fold))\n return afterStart.addSubFold(fold);\n else\n firstConsumed = 1;\n }\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n if (cmp == 0) j++;\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length;\n for (var k = firstConsumed; k < last; k++) {\n fold.addSubFold(consumedFolds[k]);\n }\n fold.setFoldLine(this.foldLine);\n\n return fold;\n };\n \n this.restoreRange = function(range) {\n return restoreRange(range, this.start);\n };\n\n}).call(Fold.prototype);\n\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../range\").Range;\nvar FoldLine = require(\"./fold_line\").FoldLine;\nvar Fold = require(\"./fold\").Fold;\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\n\nfunction Folding() {\n this.getFoldAt = function(row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var range = folds[i].range;\n if (range.contains(row, column)) {\n if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) {\n continue;\n } else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) {\n continue;\n }\n return folds[i];\n }\n }\n };\n this.getFoldsInRange = function(range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n\n start.column += 1;\n end.column -= 1;\n\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n } else if (cmp == 2) {\n continue;\n } else\n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n\n return foundFolds;\n };\n\n this.getFoldsInRangeList = function(ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function(range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n } else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function() {\n var folds = [];\n var foldLines = this.$foldData;\n \n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n\n return folds;\n };\n this.getFoldStringAt = function(row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n\n this.getFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n } else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n\n this.getFoldedRowCount = function(first, last) {\n var foldData = this.$foldData, rowCount = last-first+1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i],\n end = foldLine.end.row,\n start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last-start;\n else\n rowCount = 0; // in one fold\n }\n break;\n } else if (end >= first){\n if (start >= first) // fold inside range\n rowCount -= end-start;\n else\n rowCount -= end-first+1;\n }\n }\n return rowCount;\n };\n\n this.$addFoldLine = function(foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function(a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function(placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n \n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n \n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n if (!fold.collapseChildren) {\n folds.forEach(function(subFold) {\n fold.addSubFold(subFold);\n });\n }\n }\n\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n } else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n } else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n\n return fold;\n };\n\n this.addFolds = function(folds) {\n folds.forEach(function(fold) {\n this.addFold(fold);\n }, this);\n };\n\n this.removeFold = function(fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n } else\n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n } else\n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n } else\n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n } else\n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n\n this.removeFolds = function(folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n\n cloneFolds.forEach(function(fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n\n this.expandFold = function(fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function(subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row+1, fold.end.row, fold.collapseChildren-1);\n }\n fold.subFolds = [];\n };\n\n this.expandFolds = function(folds) {\n folds.forEach(function(fold) {\n this.expandFold(fold);\n }, this);\n };\n\n this.unfold = function(location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n if (expandInner == null) expandInner = true;\n } else if (typeof location == \"number\") {\n range = new Range(location, 0, location, this.getLine(location).length);\n } else if (\"row\" in location) {\n range = Range.fromPoints(location, location);\n } else if (Array.isArray(location)) {\n folds = [];\n location.forEach(function(range) {\n folds = folds.concat(this.unfold(range));\n }, this);\n return folds;\n } else {\n range = location;\n }\n \n folds = this.getFoldsInRangeList(range);\n var outermostFolds = folds;\n while (\n folds.length == 1\n && Range.comparePoints(folds[0].start, range.start) < 0 \n && Range.comparePoints(folds[0].end, range.end) > 0\n ) {\n this.expandFolds(folds);\n folds = this.getFoldsInRangeList(range);\n }\n \n if (expandInner != false) {\n this.removeFolds(folds);\n } else {\n this.expandFolds(folds);\n }\n if (outermostFolds.length)\n return outermostFolds;\n };\n this.isRowFolded = function(docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n\n this.getRowFoldEnd = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n\n this.getRowFoldStart = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n\n this.getFoldDisplayLine = function(foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n\n if (placeholder != null) {\n textLine += placeholder;\n } else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n\n this.getDisplayLine = function(row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n } else {\n return this.getFoldDisplayLine(\n foldLine, row, endColumn, startRow, startColumn);\n }\n };\n\n this.$cloneFoldData = function() {\n var fd = [];\n fd = this.$foldData.map(function(foldLine) {\n var folds = foldLine.folds.map(function(fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n\n return fd;\n };\n\n this.toggleFold = function(tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n\n if (fold) {\n this.expandFold(fold);\n return;\n } else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n } else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n } else if (bracketPos = this.findMatchingBracket({row: cursor.row, column: cursor.column + 1})) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n\n range.start.column++;\n } else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n } else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n } else if (folds.length == 1 ) {\n fold = folds[0];\n }\n }\n\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n\n this.addFold(placeholder, range);\n };\n\n this.getCommentFoldRange = function(row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token && token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type));\n iterator.stepForward();\n }\n \n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + 2;\n\n iterator = new TokenIterator(this, row, column);\n \n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (!re.test(state))\n lastRow = iterator.$row;\n } else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type));\n token = iterator.stepBackward();\n } else\n token = iterator.getCurrentToken();\n\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2;\n return range;\n }\n };\n\n this.foldAll = function(startRow, endRow, depth, test) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n \n if (test && !test(row)) continue;\n\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow\n ) {\n row = range.end.row;\n range.collapseChildren = depth;\n this.addFold(\"...\", range);\n }\n }\n };\n \n this.foldToLevel = function(level) {\n this.foldAll();\n while (level-- > 0)\n this.unfold(null, false);\n };\n \n this.foldAllComments = function() {\n var session = this;\n this.foldAll(null, null, null, function(row) {\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"text\" && /^\\s+$/.test(token.value))\n continue;\n if (/comment/.test(token.type))\n return true;\n return false;\n }\n });\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function(style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n \n if (this.$foldStyle == style)\n return;\n\n this.$foldStyle = style;\n \n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n\n this.$setFolding = function(foldMode) {\n if (this.$foldMode == foldMode)\n return;\n \n this.$foldMode = foldMode;\n \n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n \n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n \n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n \n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n\n this.onFoldWidgetClick = function(row, e) {\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n \n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n \n this.$toggleFoldWidget = function(row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n \n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n } else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n } else if (range) {\n if (options.all) \n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n \n return range;\n };\n \n \n \n this.toggleFoldWidget = function(toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n \n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n \n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n\n if (fold) {\n this.removeFold(fold);\n } else {\n this.addFold(\"...\", range);\n }\n }\n };\n\n this.updateFoldWidgets = function(delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n } else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function(e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\n\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\n\n\nfunction BracketMatch() {\n\n this.findMatchingBracket = function(position, chr) {\n if (position.column == 0) return null;\n\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column-1);\n if (charBeforeCursor == \"\") return null;\n\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n \n this.getBracketRange = function(pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = {row: pos.row, column: pos.column + 1};\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n } else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n \n return range;\n };\n this.getMatchingBracketRanges = function(pos) {\n var line = this.getLine(pos.row);\n\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = {row: pos.row, column: pos.column + 1};\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n }\n\n if (!match)\n return null;\n\n var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);\n var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)\n : this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return [startRange];\n var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);\n\n return [startRange, endRange];\n };\n\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\",\n \"<\": \">\",\n \">\": \"<\"\n };\n\n this.$findOpeningBracket = function(bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n \n if (!typeRe){\n typeRe = new RegExp(\n \"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n + \")+\"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n \n while (true) {\n \n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n \n value = token.value;\n valueIndex = value.length - 1;\n }\n \n return null;\n };\n\n this.$findClosingBracket = function(bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n\n if (!typeRe){\n typeRe = new RegExp(\n \"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n + \")+\"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n\n while (true) {\n\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n\n valueIndex = 0;\n }\n \n return null;\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar BidiHandler = require(\"./bidihandler\").BidiHandler;\nvar config = require(\"./config\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Selection = require(\"./selection\").Selection;\nvar TextMode = require(\"./mode/text\").Mode;\nvar Range = require(\"./range\").Range;\nvar Document = require(\"./document\").Document;\nvar BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = require(\"./search_highlight\").SearchHighlight;\n\nvar EditSession = function(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function() {\n return this.join(\"\\n\");\n };\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(text);\n\n this.setDocument(text);\n this.selection = new Selection(this);\n this.$bidiHandler = new BidiHandler(this);\n\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n};\n\n\nEditSession.$uid = 0;\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setDocument = function(doc) {\n if (this.doc)\n this.doc.off(\"change\", this.$onChange);\n\n this.doc = doc;\n doc.on(\"change\", this.$onChange);\n\n if (this.bgTokenizer)\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.resetCaches();\n };\n this.getDocument = function() {\n return this.doc;\n };\n this.$resetRowCache = function(docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n\n this.$getRowCacheIndex = function(cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n\n return low -1;\n };\n\n this.resetCaches = function() {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (this.bgTokenizer)\n this.bgTokenizer.start(0);\n };\n\n this.onChangeFold = function(e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n\n this.onChange = function(delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager) {\n if (removedFolds && removedFolds.length) {\n this.$undoManager.add({\n action: \"removeFolds\",\n folds: removedFolds\n }, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n }\n this.$undoManager.add(delta, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n \n this.$informUndoManager.schedule();\n }\n\n this.bgTokenizer && this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n this.setValue = function(text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n\n this.$resetRowCache(0);\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n this.getValue =\n this.toString = function() {\n return this.doc.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.getState = function(row) {\n return this.bgTokenizer.getState(row);\n };\n this.getTokens = function(row) {\n return this.bgTokenizer.getTokens(row);\n };\n this.getTokenAt = function(row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n } else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n this.setUndoManager = function(undoManager) {\n this.$undoManager = undoManager;\n \n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n \n if (undoManager) {\n var self = this;\n undoManager.addSession(this);\n this.$syncInformUndoManager = function() {\n self.$informUndoManager.cancel();\n self.mergeUndoDeltas = false;\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n } else {\n this.$syncInformUndoManager = function() {};\n }\n };\n this.markUndoGroup = function() {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n \n this.$defaultUndoManager = {\n undo: function() {},\n redo: function() {},\n hasUndo: function() {},\n hasRedo: function() {},\n reset: function() {},\n add: function() {},\n addSelection: function() {},\n startNewGroup: function() {},\n addSession: function() {}\n };\n this.getUndoManager = function() {\n return this.$undoManager || this.$defaultUndoManager;\n };\n this.getTabString = function() {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n } else {\n return \"\\t\";\n }\n };\n this.setUseSoftTabs = function(val) {\n this.setOption(\"useSoftTabs\", val);\n };\n this.getUseSoftTabs = function() {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n this.setTabSize = function(tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n this.getTabSize = function() {\n return this.$tabSize;\n };\n this.isTabStop = function(position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n this.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n this.getNavigateWithinSoftTabs = function() {\n return this.$navigateWithinSoftTabs;\n };\n\n this.$overwrite = false;\n this.setOverwrite = function(overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n this.getOverwrite = function() {\n return this.$overwrite;\n };\n this.toggleOverwrite = function() {\n this.setOverwrite(!this.$overwrite);\n };\n this.addGutterDecoration = function(row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n this.removeGutterDecoration = function(row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n this.getBreakpoints = function() {\n return this.$breakpoints;\n };\n this.setBreakpoints = function(rows) {\n this.$breakpoints = [];\n for (var i=0; i 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column-1, column+1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n\n var start = column;\n if (start > 0) {\n do {\n start--;\n }\n while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n\n return new Range(row, start, row, end);\n };\n this.getAWordRange = function(row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n this.setNewLineMode = function(newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n this.getNewLineMode = function() {\n return this.doc.getNewLineMode();\n };\n this.setUseWorker = function(useWorker) { this.setOption(\"useWorker\", useWorker); };\n this.getUseWorker = function() { return this.$useWorker; };\n this.onReloadTokenizer = function(e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n\n this.$modes = config.$modes;\n this.$mode = null;\n this.$modeId = null;\n this.setMode = function(mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n } else {\n path = mode || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function(m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n } else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n\n this.$onChangeMode = function(mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode) \n return;\n \n var oldMode = this.$mode;\n this.$mode = mode;\n\n this.$stopWorker();\n\n if (this.$useWorker)\n this.$startWorker();\n\n var tokenizer = mode.getTokenizer();\n\n if(tokenizer.on !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.on(\"update\", onReloadTokenizer);\n }\n\n if (!this.bgTokenizer) {\n this.bgTokenizer = new BackgroundTokenizer(tokenizer);\n var _self = this;\n this.bgTokenizer.on(\"update\", function(e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n } else {\n this.bgTokenizer.setTokenizer(tokenizer);\n }\n\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n\n \n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\", {oldMode: oldMode, mode: mode});\n }\n };\n\n this.$stopWorker = function() {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n\n this.$startWorker = function() {\n try {\n this.$worker = this.$mode.createWorker(this);\n } catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n this.getMode = function() {\n return this.$mode;\n };\n\n this.$scrollTop = 0;\n this.setScrollTop = function(scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n this.getScrollTop = function() {\n return this.$scrollTop;\n };\n\n this.$scrollLeft = 0;\n this.setScrollLeft = function(scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n this.getScrollLeft = function() {\n return this.$scrollLeft;\n };\n this.getScreenWidth = function() {\n this.$computeWidth();\n if (this.lineWidgets) \n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n \n this.getLineWidgetMaxWidth = function() {\n if (this.lineWidgetsWidth != null) return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function(w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n\n this.$computeWidth = function(force) {\n if (this.$modified || force) {\n this.$modified = false;\n\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n this.getLine = function(row) {\n return this.doc.getLine(row);\n };\n this.getLines = function(firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n this.getLength = function() {\n return this.doc.getLength();\n };\n this.getTextRange = function(range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n this.insert = function(position, text) {\n return this.doc.insert(position, text);\n };\n this.remove = function(range) {\n return this.doc.remove(range);\n };\n this.removeFullLines = function(firstRow, lastRow){\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n this.undoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.revertDelta(delta);\n } else if (delta.folds) {\n this.addFolds(delta.folds);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionBefore)\n this.selection.fromJSON(deltas.selectionBefore);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, true));\n }\n this.$fromUndo = false;\n };\n this.redoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.$safeApplyDelta(delta);\n }\n }\n\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionAfter)\n this.selection.fromJSON(deltas.selectionAfter);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, false));\n }\n this.$fromUndo = false;\n };\n this.setUndoSelect = function(enable) {\n this.$undoSelect = enable;\n };\n\n this.$getUndoSelection = function(deltas, isUndo) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n\n var range, point;\n\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (!delta.start) continue; // skip folds\n if (!range) {\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n } else {\n range = Range.fromPoints(delta.start, delta.start);\n }\n continue;\n }\n \n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n } else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n }\n }\n return range;\n };\n this.replace = function(range, text) {\n return this.doc.replace(range, text);\n };\n this.moveText = function(fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function(x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n\n return toRange;\n };\n this.indentRows = function(startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row=startRow; row<=endRow; row++)\n this.doc.insertInLine({row: row, column: 0}, indentString);\n };\n this.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n } else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n\n this.$moveLines = function(firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0) return 0;\n var diff = row-firstRow;\n } else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength()-1) return 0;\n var diff = row-lastRow;\n } else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function(x){\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n \n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow+diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n this.moveLinesUp = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n this.moveLinesDown = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n this.duplicateLines = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n\n\n this.$clipRowToDocument = function(row) {\n return Math.max(0, Math.min(row, this.doc.getLength()-1));\n };\n\n this.$clipColumnToRow = function(row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n\n\n this.$clipPositionToDocument = function(row, column) {\n column = Math.max(0, column);\n\n if (row < 0) {\n row = 0;\n column = 0;\n } else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len-1).length;\n } else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n\n return {\n row: row,\n column: column\n };\n };\n\n this.$clipRangeToDocument = function(range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n } else {\n range.start.column = this.$clipColumnToRow(\n range.start.row,\n range.start.column\n );\n }\n\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n } else {\n range.end.column = this.$clipColumnToRow(\n range.end.row,\n range.end.column\n );\n }\n return range;\n };\n this.$wrapLimit = 80;\n this.$useWrapMode = false;\n this.$wrapLimitRange = {\n min : null,\n max : null\n };\n this.setUseWrapMode = function(useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n\n this._signal(\"changeWrapMode\");\n }\n };\n this.getUseWrapMode = function() {\n return this.$useWrapMode;\n };\n this.setWrapLimitRange = function(min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n this.adjustWrapLimit = function(desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = {min: $printMargin, max: $printMargin};\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n\n this.$constrainWrapLimit = function(wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n\n return wrapLimit;\n };\n this.getWrapLimit = function() {\n return this.$wrapLimit;\n };\n this.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n this.getWrapLimitRange = function() {\n return {\n min : this.$wrapLimitRange.min,\n max : this.$wrapLimitRange.max\n };\n };\n\n this.$updateInternalDataOnChange = function(delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n \n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n\n lastRow = firstRow;\n } else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n } else\n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n } else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n\n return removedFolds;\n };\n\n this.$updateRowLengthCache = function(firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n\n this.$updateWrapData = function(firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row ++;\n } else {\n tokens = [];\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(\n placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n } else {\n walkTokens = this.$getDisplayTokens(\n lines[row].substring(lastColumn, column),\n tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this),\n foldLine.end.row,\n lines[foldLine.end.row].length + 1\n );\n\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n var CHAR = 1,\n CHAR_EXT = 2,\n PLACEHOLDER_START = 3,\n PLACEHOLDER_BODY = 4,\n PUNCTUATION = 9,\n SPACE = 10,\n TAB = 11,\n TAB_SPACE = 12;\n\n\n this.$computeWrapSplits = function(tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n\n var isCode = this.$wrapAsCode;\n\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var len = screenPos - lastSplit;\n for (var i = lastSplit; i < screenPos; i++) {\n var ch = tokens[i];\n if (ch === 12 || ch === 2) len -= 1;\n }\n\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit -(wrapLimit>>2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split --;\n }\n } else {\n while (split > minSplit && tokens[split] < SPACE) {\n split --;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n this.$getDisplayTokens = function(str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n } else if((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n } else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n } else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n\n return [screenColumn, column];\n };\n\n this.lineWidgets = null;\n this.getRowLength = function(row) {\n var h = 1;\n if (this.lineWidgets)\n h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n \n if (!this.$useWrapMode || !this.$wrapData[row])\n return h;\n else\n return this.$wrapData[row].length + h;\n };\n this.getRowLineCount = function(row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n } else {\n return this.$wrapData[row].length + 1;\n }\n };\n\n this.getRowWrapIndent = function(screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n } else {\n return 0;\n }\n };\n this.getScreenLastRowColumn = function(screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n this.getDocumentLastRowColumn = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n this.getDocumentLastRowColumnPosition = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n this.getRowSplitData = function(row) {\n if (!this.$useWrapMode) {\n return undefined;\n } else {\n return this.$wrapData[row];\n }\n };\n this.getScreenTabSize = function(screenColumn) {\n return this.$tabSize - (screenColumn % this.$tabSize | 0);\n };\n\n\n this.screenToDocumentRow = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n\n\n this.screenToDocumentColumn = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n this.screenToDocumentPosition = function(screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return {row: 0, column: 0};\n\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n } else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row+1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n } else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n } else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if(splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n\n return {row: docRow, column: docColumn};\n };\n this.documentToScreenPosition = function(docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n\n docRow = pos.row;\n docColumn = pos.column;\n\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n\n var rowEnd, row = 0;\n\n\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ?foldLine.start.row :Infinity;\n\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ?foldLine.start.row :Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n\n screenRow += this.getRowLength(row);\n row = rowEnd;\n\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n } else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow ++;\n screenRowOffset++;\n }\n textLine = textLine.substring(\n wrapRow[screenRowOffset - 1] || 0, textLine.length\n );\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n \n if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)\n screenRow += this.lineWidgets[row].rowsAbove;\n\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n this.documentToScreenColumn = function(row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n this.documentToScreenRow = function(docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n this.getScreenLength = function() {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n } else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row :Infinity;\n\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row ++;\n if (row > foldStart) {\n row = fold.end.row+1;\n fold = this.$foldData[i++];\n foldStart = fold ?fold.start.row :Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n\n return screenRows;\n };\n this.$setFontMetrics = function(fm) {\n if (!this.$enableVarChar) return;\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n \n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n } else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n \n return [screenColumn, column];\n };\n };\n \n this.destroy = function() {\n if (this.bgTokenizer) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer = null;\n }\n this.$stopWorker();\n this.removeAllListeners();\n if (this.doc) {\n this.doc.off(\"change\", this.$onChange);\n }\n this.selection.detach();\n };\n\n this.isFullWidth = isFullWidth;\n function isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n }\n\n}).call(EditSession.prototype);\n\nrequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nrequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\n\n\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function(value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n } else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function() {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n }, \n wrapMethod: {\n set: function(val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: {\n set: function() {\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n },\n initialValue: true \n },\n firstLineNumber: {\n set: function() {this._signal(\"changeBreakpoint\");},\n initialValue: 1\n },\n useWorker: {\n set: function(useWorker) {\n this.$useWorker = useWorker;\n\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: {initialValue: true},\n tabSize: {\n set: function(tabSize) {\n tabSize = parseInt(tabSize);\n if (tabSize > 0 && this.$tabSize !== tabSize) {\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n }\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: {initialValue: false},\n foldStyle: {\n set: function(val) {this.setFoldStyle(val);},\n handlesSet: true\n },\n overwrite: {\n set: function(val) {this._signal(\"changeOverwrite\");},\n initialValue: false\n },\n newLineMode: {\n set: function(val) {this.doc.setNewLineMode(val);},\n get: function() {return this.doc.getNewLineMode();},\n handlesSet: true\n },\n mode: {\n set: function(val) { this.setMode(val); },\n get: function() { return this.$modeId; },\n handlesSet: true\n }\n});\n\nexports.EditSession = EditSession;\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\n\nvar Search = function() {\n this.$options = {};\n};\n\n(function() {\n this.set = function(options) {\n oop.mixin(this.$options, options);\n return this;\n };\n this.getOptions = function() {\n return lang.copyObject(this.$options);\n };\n this.setOptions = function(options) {\n this.$options = options;\n };\n this.find = function(session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n\n var firstRange = null;\n iterator.forEach(function(sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)\n ) {\n firstRange = null;\n return false;\n }\n \n return true;\n });\n\n return firstRange;\n };\n this.findAll = function(session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n \n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n \n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex\n ) {\n continue;\n }\n ranges.push(prevRange = new Range(\n row, startIndex, row + len - 1, endIndex\n ));\n if (len > 2)\n row = row + len - 2;\n }\n } else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.start.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row)\n i++;\n\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row)\n j--;\n \n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n\n return ranges;\n };\n this.replace = function(input, replacement) {\n var options = this.$options;\n\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n\n if (!re)\n return;\n\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n \n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--; ) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n \n return replacement;\n };\n\n this.$assembleRegExp = function(options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n\n var needle = options.needle;\n\n if (!options.needle)\n return options.re = false;\n\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n\n try {\n var re = new RegExp(needle, modifier);\n } catch(e) {\n re = false;\n }\n return options.re = re;\n };\n\n this.$assembleMultilineRegExp = function(needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++) try {\n re.push(new RegExp(parts[i], modifier));\n } catch(e) {\n return false;\n }\n return re;\n };\n\n this.$matchIterator = function(session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n \n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n \n if (backwards) {\n var forEach = function(callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function(callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n \n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function(row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0 || startRow + len > session.getLength()) return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1) return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset) return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function(row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length) break;\n re.lastIndex = last += 1;\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function(row, startIndex, callback) {\n var line = session.getLine(row);\n var last;\n var m;\n re.lastIndex = startIndex;\n while((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row,last + length))\n return true;\n if (!length) {\n re.lastIndex = last += 1;\n if (last >= line.length) return false;\n }\n }\n };\n }\n return {forEach: forEach};\n };\n\n}).call(Search.prototype);\n\nfunction addWordBoundary(needle, options) {\n function wordBoundary(c) {\n if (/\\w/.test(c) || options.regExp) return \"\\\\b\";\n return \"\";\n }\n return wordBoundary(needle[0]) + needle\n + wordBoundary(needle[needle.length - 1]);\n}\n\nexports.Search = Search;\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar keyUtil = require(\"../lib/keys\");\nvar useragent = require(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\n\nfunction HashHandler(config, platform) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = true;\n}\n\nfunction MultiHashHandler(config, platform) {\n HashHandler.call(this, config, platform);\n this.$singleCommand = false;\n}\n\nMultiHashHandler.prototype = HashHandler.prototype;\n\n(function() {\n \n\n this.addCommand = function(command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n\n this.commands[command.name] = command;\n\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n\n this.removeCommand = function(command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n } else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n\n this.bindKey = function(key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({exec: command, bindKey: key, name: command.name || key});\n \n key.split(\"|\").forEach(function(keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function(keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n \n function getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position \n || (command.isDefault ? -100 : 0);\n }\n this._addCommandToBinding = function(keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n } else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n } else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n } else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n \n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n\n this.addCommands = function(commands) {\n commands && Object.keys(commands).forEach(function(name) {\n var command = commands[name];\n if (!command)\n return;\n \n if (typeof command === \"string\")\n return this.bindKey(command, name);\n\n if (typeof command === \"function\")\n command = { exec: command };\n\n if (typeof command !== \"object\")\n return;\n\n if (!command.name)\n command.name = name;\n\n this.addCommand(command);\n }, this);\n };\n\n this.removeCommands = function(commands) {\n Object.keys(commands).forEach(function(name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n\n this.bindKeys = function(keyList) {\n Object.keys(keyList).forEach(function(key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n\n this._buildKeyHash = function(command) {\n this.bindKey(command.bindKey, command);\n };\n this.parseKeys = function(keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(x){return x;});\n var key = parts.pop();\n\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return {key: key, hashId: -1};\n else if (parts.length == 1 && parts[0] == \"shift\")\n return {key: key.toUpperCase(), hashId: -1};\n\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return {key: key, hashId: hashId};\n };\n\n this.findKeyCommand = function findKeyCommand(hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n\n this.handleKeyboard = function(data, hashId, keyString, keyCode) {\n if (keyCode < 0) return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n \n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return {command: \"null\"};\n }\n }\n \n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return {command: command};\n };\n \n this.getStatusText = function(editor, data) {\n return data.$keyChain || \"\";\n };\n\n}).call(HashHandler.prototype);\n\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar MultiHashHandler = require(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\n\nvar CommandManager = function(platform, commands) {\n MultiHashHandler.call(this, commands, platform);\n this.byName = this.commands;\n this.setDefaultHandler(\"exec\", function(e) {\n return e.command.exec(e.editor, e.args || {});\n });\n};\n\noop.inherits(CommandManager, MultiHashHandler);\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.exec = function(command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--; ) {\n if (this.exec(command[i], editor, args)) return true;\n }\n return false;\n }\n\n if (typeof command === \"string\")\n command = this.commands[command];\n\n if (!command)\n return false;\n\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n\n if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor))\n return false;\n\n var e = {editor: editor, command: command, args: args};\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n\n return e.returnValue === false ? false : true;\n };\n\n this.toggleRecording = function(editor) {\n if (this.$inReplay)\n return;\n\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.off(\"exec\", this.$addCommandToMacro);\n\n if (!this.macro.length)\n this.macro = this.oldMacro;\n\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function(e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n\n this.replay = function(editor) {\n if (this.$inReplay || !this.macro)\n return;\n\n if (this.recording)\n return this.toggleRecording(editor);\n\n try {\n this.$inReplay = true;\n this.macro.forEach(function(x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n } finally {\n this.$inReplay = false;\n }\n };\n\n this.trimMacro = function(m) {\n return m.map(function(x){\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n\n}).call(CommandManager.prototype);\n\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"../lib/lang\");\nvar config = require(\"../config\");\nvar Range = require(\"../range\").Range;\n\nfunction bindKey(win, mac) {\n return {win: win, mac: mac};\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n description: \"Show settings menu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/settings_menu\", function(module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n}, {\n name: \"goToNextError\",\n description: \"Go to next error\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function(editor) {\n config.loadModule(\"./ext/error_marker\", function(module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"goToPreviousError\",\n description: \"Go to previous error\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function(editor) {\n config.loadModule(\"./ext/error_marker\", function(module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"selectall\",\n description: \"Select all\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function(editor) { editor.selectAll(); },\n readOnly: true\n}, {\n name: \"centerselection\",\n description: \"Center selection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function(editor) { editor.centerSelection(); },\n readOnly: true\n}, {\n name: \"gotoline\",\n description: \"Go to line...\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function(editor, line) {\n if (typeof line === \"number\" && !isNaN(line))\n editor.gotoLine(line);\n editor.prompt({ $type: \"gotoLine\" });\n },\n readOnly: true\n}, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function(editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function(editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"toggleFoldWidget\",\n description: \"Toggle fold widget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function(editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"toggleParentFoldWidget\",\n description: \"Toggle parent fold widget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function(editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldall\",\n description: \"Fold all\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function(editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldAllComments\",\n description: \"Fold all comments\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function(editor) { editor.session.foldAllComments(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldOther\",\n description: \"Fold other\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function(editor) { \n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"unfoldall\",\n description: \"Unfold all\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function(editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"findnext\",\n description: \"Find next\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function(editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"findprevious\",\n description: \"Find previous\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function(editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"selectOrFindNext\",\n description: \"Select or find next\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function(editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext(); \n },\n readOnly: true\n}, {\n name: \"selectOrFindPrevious\",\n description: \"Select or find previous\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function(editor) { \n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n}, {\n name: \"find\",\n description: \"Find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor);});\n },\n readOnly: true\n}, {\n name: \"overwrite\",\n description: \"Overwrite\",\n bindKey: \"Insert\",\n exec: function(editor) { editor.toggleOverwrite(); },\n readOnly: true\n}, {\n name: \"selecttostart\",\n description: \"Select to start\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function(editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"gotostart\",\n description: \"Go to start\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function(editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"selectup\",\n description: \"Select up\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function(editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"golineup\",\n description: \"Go line up\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function(editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttoend\",\n description: \"Select to end\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function(editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"gotoend\",\n description: \"Go to end\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function(editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"selectdown\",\n description: \"Select down\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function(editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"golinedown\",\n description: \"Go line down\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function(editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectwordleft\",\n description: \"Select word left\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function(editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotowordleft\",\n description: \"Go to word left\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function(editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttolinestart\",\n description: \"Select to line start\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotolinestart\",\n description: \"Go to line start\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function(editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectleft\",\n description: \"Select left\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function(editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotoleft\",\n description: \"Go to left\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function(editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectwordright\",\n description: \"Select word right\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function(editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotowordright\",\n description: \"Go to word right\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function(editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttolineend\",\n description: \"Select to line end\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotolineend\",\n description: \"Go to line end\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function(editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectright\",\n description: \"Select right\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function(editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotoright\",\n description: \"Go to right\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function(editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectpagedown\",\n description: \"Select page down\",\n bindKey: \"Shift-PageDown\",\n exec: function(editor) { editor.selectPageDown(); },\n readOnly: true\n}, {\n name: \"pagedown\",\n description: \"Page down\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function(editor) { editor.scrollPageDown(); },\n readOnly: true\n}, {\n name: \"gotopagedown\",\n description: \"Go to page down\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function(editor) { editor.gotoPageDown(); },\n readOnly: true\n}, {\n name: \"selectpageup\",\n description: \"Select page up\",\n bindKey: \"Shift-PageUp\",\n exec: function(editor) { editor.selectPageUp(); },\n readOnly: true\n}, {\n name: \"pageup\",\n description: \"Page up\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function(editor) { editor.scrollPageUp(); },\n readOnly: true\n}, {\n name: \"gotopageup\",\n description: \"Go to page up\",\n bindKey: \"PageUp\",\n exec: function(editor) { editor.gotoPageUp(); },\n readOnly: true\n}, {\n name: \"scrollup\",\n description: \"Scroll up\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: \"scrolldown\",\n description: \"Scroll down\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: \"selectlinestart\",\n description: \"Select line start\",\n bindKey: \"Shift-Home\",\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectlineend\",\n description: \"Select line end\",\n bindKey: \"Shift-End\",\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"togglerecording\",\n description: \"Toggle recording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function(editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n}, {\n name: \"replaymacro\",\n description: \"Replay macro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function(editor) { editor.commands.replay(editor); },\n readOnly: true\n}, {\n name: \"jumptomatching\",\n description: \"Jump to matching\",\n bindKey: bindKey(\"Ctrl-\\\\|Ctrl-P\", \"Command-\\\\\"),\n exec: function(editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"selecttomatching\",\n description: \"Select to matching\",\n bindKey: bindKey(\"Ctrl-Shift-\\\\|Ctrl-Shift-P\", \"Command-Shift-\\\\\"),\n exec: function(editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"expandToMatching\",\n description: \"Expand to matching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function(editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"passKeysToBrowser\",\n description: \"Pass keys to browser\",\n bindKey: bindKey(null, null),\n exec: function() {},\n passEvent: true,\n readOnly: true\n}, {\n name: \"copy\",\n description: \"Copy\",\n exec: function(editor) {\n },\n readOnly: true\n},\n{\n name: \"cut\",\n description: \"Cut\",\n exec: function(editor) {\n var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty();\n var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange();\n editor._emit(\"cut\", range);\n\n if (!range.isEmpty())\n editor.session.remove(range);\n editor.clearSelection();\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"paste\",\n description: \"Paste\",\n exec: function(editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n}, {\n name: \"removeline\",\n description: \"Remove line\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function(editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n}, {\n name: \"duplicateSelection\",\n description: \"Duplicate selection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function(editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"sortlines\",\n description: \"Sort lines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function(editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n}, {\n name: \"togglecomment\",\n description: \"Toggle comment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function(editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"toggleBlockComment\",\n description: \"Toggle block comment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function(editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"modifyNumberUp\",\n description: \"Modify number up\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function(editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"modifyNumberDown\",\n description: \"Modify number down\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function(editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"replace\",\n description: \"Replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor, true);});\n }\n}, {\n name: \"undo\",\n description: \"Undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function(editor) { editor.undo(); }\n}, {\n name: \"redo\",\n description: \"Redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function(editor) { editor.redo(); }\n}, {\n name: \"copylinesup\",\n description: \"Copy lines up\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function(editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"movelinesup\",\n description: \"Move lines up\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function(editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"copylinesdown\",\n description: \"Copy lines down\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function(editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"movelinesdown\",\n description: \"Move lines down\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function(editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"del\",\n description: \"Delete\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function(editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"backspace\",\n description: \"Backspace\",\n bindKey: bindKey(\n \"Shift-Backspace|Backspace\",\n \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"\n ),\n exec: function(editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"cut_or_delete\",\n description: \"Cut or delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function(editor) { \n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n } else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolinestart\",\n description: \"Remove to line start\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function(editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolineend\",\n description: \"Remove to line end\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function(editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolinestarthard\",\n description: \"Remove to line start hard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function(editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolineendhard\",\n description: \"Remove to line end hard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function(editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removewordleft\",\n description: \"Remove word left\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function(editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removewordright\",\n description: \"Remove word right\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function(editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"outdent\",\n description: \"Outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"indent\",\n description: \"Indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function(editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"blockoutdent\",\n description: \"Block outdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"blockindent\",\n description: \"Block indent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function(editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"insertstring\",\n description: \"Insert string\",\n exec: function(editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"inserttext\",\n description: \"Insert text\",\n exec: function(editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"splitline\",\n description: \"Split line\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function(editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"transposeletters\",\n description: \"Transpose letters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function(editor) { editor.transposeLetters(); },\n multiSelectAction: function(editor) {editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"touppercase\",\n description: \"To uppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function(editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"tolowercase\",\n description: \"To lowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function(editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"autoindent\",\n description: \"Auto Indent\",\n bindKey: bindKey(null, null),\n exec: function(editor) { editor.autoIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"animate\"\n}, {\n name: \"expandtoline\",\n description: \"Expand to line\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function(editor) {\n var range = editor.selection.getRange();\n\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"joinlines\",\n description: \"Join lines\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n } else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n}, {\n name: \"invertSelection\",\n description: \"Invert selection\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n } else {\n newRanges.push(new Range(ranges[i-1].end.row, ranges[i-1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n\n editor.exitMultiSelectMode();\n editor.clearSelection();\n\n for(var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n}, {\n name: \"addLineAfter\",\n description: \"Add new line after the current line\",\n exec: function(editor) {\n editor.selection.clearSelection();\n editor.navigateLineEnd();\n editor.insert(\"\\n\");\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"addLineBefore\",\n description: \"Add new line before the current line\",\n exec: function(editor) {\n editor.selection.clearSelection();\n var cursor = editor.getCursorPosition();\n editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);\n editor.insert(\"\\n\");\n if (cursor.row === 0) editor.navigateUp();\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"openCommandPallete\",\n description: \"Open command pallete\",\n bindKey: bindKey(\"F1\", \"F1\"),\n exec: function(editor) {\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n}, {\n name: \"modeSelect\",\n description: \"Change language mode...\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n editor.prompt({ $type: \"modes\" });\n },\n readOnly: true\n}];\n\nfor (var i = 1; i < 9; i++) {\n exports.commands.push({\n name: \"foldToLevel\" + i,\n description: \"Fold To Level \" + i,\n level: i,\n exec: function(editor) { editor.session.foldToLevel(this.level); },\n scrollIntoView: \"center\",\n readOnly: true\n });\n}\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\",\"ace/clipboard\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar useragent = require(\"./lib/useragent\");\nvar TextInput = require(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = require(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = require(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = require(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Search = require(\"./search\").Search;\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = require(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = require(\"./commands/default_commands\").commands;\nvar config = require(\"./config\");\nvar TokenIterator = require(\"./token_iterator\").TokenIterator;\n\nvar clipboard = require(\"./clipboard\");\nvar Editor = function(renderer, session, options) {\n this.$toDestroy = [];\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n\n this.keyBinding = new KeyBinding(this);\n\n this.$search = new Search().set({\n wrap: true\n });\n\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n\n this.$initOperationListeners();\n \n this._$emitInputEvent = lang.delayedCall(function() {\n this._signal(\"input\", {});\n if (this.session && this.session.bgTokenizer)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n \n this.on(\"change\", function(_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n\n this.setSession(session || options && options.session || new EditSession(\"\"));\n config.resetOptions(this);\n if (options)\n this.setOptions(options);\n config._signal(\"editor\", this);\n};\n\nEditor.$uid = 0;\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$initOperationListeners = function() {\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n this.on(\"change\", function() {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.docChanged = true;\n }.bind(this), true);\n \n this.on(\"changeSelection\", function() {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n\n this.curOp = null;\n this.prevOp = {};\n this.startOperation = function(commandEvent) {\n if (this.curOp) {\n if (!commandEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commandEvent) {\n this.previousCommand = null;\n commandEvent = {};\n }\n\n this.$opResetTimer.schedule();\n this.curOp = this.session.curOp = {\n command: commandEvent.command || {},\n args: commandEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n this.curOp.selectionBefore = this.selection.toJSON();\n };\n\n this.endOperation = function(e) {\n if (this.curOp && this.session) {\n if (e && e.returnValue === false || !this.session)\n return (this.curOp = null);\n if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\")\n return;\n this._signal(\"beforeEndOperation\");\n if (!this.curOp) return;\n var command = this.curOp.command;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n var sel = this.selection.toJSON();\n this.curOp.selectionAfter = sel;\n this.$lastSel = this.selection.toJSON();\n this.session.getUndoManager().addSelection(sel);\n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n this.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\n this.$historyTracker = function(e) {\n if (!this.$mergeUndoDeltas)\n return;\n\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n\n this.mergeNextCommand = true;\n } else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n\n if (\n this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000\n ) {\n shouldMerge = false; // the sequence is too long\n }\n\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n this.setKeyboardHandler = function(keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\" && keyboardHandler != \"ace\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function(module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n } else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n this.getKeyboardHandler = function() {\n return this.keyBinding.getKeyboardHandler();\n };\n this.setSession = function(session) {\n if (this.session == session)\n return;\n if (this.curOp) this.endOperation();\n this.curOp = {};\n\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n \n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n \n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n \n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n \n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n \n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n \n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n \n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n \n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n \n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n \n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n \n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n \n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n \n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n \n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n \n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n \n this.onChangeMode();\n \n this.onCursorChange();\n \n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n } else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n \n this.curOp = null;\n \n oldSession && oldSession._signal(\"changeEditor\", {oldEditor: this});\n session && session._signal(\"changeEditor\", {editor: this});\n \n if (session && session.bgTokenizer)\n session.bgTokenizer.scheduleStart();\n };\n this.getSession = function() {\n return this.session;\n };\n this.setValue = function(val, cursorPos) {\n this.session.doc.setValue(val);\n\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n\n return val;\n };\n this.getValue = function() {\n return this.session.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.resize = function(force) {\n this.renderer.onResize(force);\n };\n this.setTheme = function(theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n this.getTheme = function() {\n return this.renderer.getTheme();\n };\n this.setStyle = function(style) {\n this.renderer.setStyle(style);\n };\n this.unsetStyle = function(style) {\n this.renderer.unsetStyle(style);\n };\n this.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container).fontSize;\n };\n this.setFontSize = function(size) {\n this.setOption(\"fontSize\", size);\n };\n\n this.$highlightBrackets = function() {\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function () {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n if (session.$bracketHighlight) {\n session.$bracketHighlight.markerIds.forEach(function(id) {\n session.removeMarker(id);\n });\n session.$bracketHighlight = null;\n }\n var ranges = session.getMatchingBracketRanges(self.getCursorPosition());\n if (!ranges && session.$mode.getMatching) \n ranges = session.$mode.getMatching(self.session);\n if (!ranges)\n return;\n\n var markerType = \"ace_bracket\";\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n } else if (ranges.length == 1) {\n markerType = \"ace_error_bracket\";\n }\n if (ranges.length == 2) {\n if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)\n ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];\n else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)\n ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];\n }\n\n session.$bracketHighlight = {\n ranges: ranges,\n markerIds: ranges.map(function(range) {\n return session.addMarker(range, markerType, \"text\");\n })\n };\n }, 50);\n };\n this.$highlightTags = function() {\n if (this.$highlightTagPending)\n return;\n var self = this;\n this.$highlightTagPending = true;\n setTimeout(function() {\n self.$highlightTagPending = false;\n \n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n \n var pos = self.getCursorPosition();\n var iterator = new TokenIterator(self.session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n \n if (!token || !/\\b(?:tag-open|tag-name)/.test(token.type)) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n return;\n }\n \n if (token.type.indexOf(\"tag-open\") !== -1) {\n token = iterator.stepForward();\n if (!token)\n return;\n }\n \n var tag = token.value;\n var currentTag = token.value;\n var depth = 0;\n var prevToken = iterator.stepBackward();\n \n if (prevToken.value === '<'){\n do {\n prevToken = token;\n token = iterator.stepForward();\n\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n currentTag = token.value;\n if (tag === currentTag) {\n if (prevToken.value === '<') {\n depth++;\n } else if (prevToken.value === '') { // self closing tag\n depth--;\n }\n }\n \n } while (token && depth >= 0);\n } else {\n do {\n token = prevToken;\n prevToken = iterator.stepBackward();\n\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n if (tag === token.value) {\n if (prevToken.value === '<') {\n depth++;\n } else if (prevToken.value === '') { // self closing tag\n var stepCount = 0;\n var tmpToken = prevToken;\n while (tmpToken) {\n if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {\n depth--;\n break;\n } else if (tmpToken.value === '<') {\n break;\n }\n tmpToken = iterator.stepBackward();\n stepCount++;\n }\n for (var i = 0; i < stepCount; i++) {\n iterator.stepForward();\n }\n }\n }\n } while (prevToken && depth <= 0);\n iterator.stepForward();\n }\n \n if (!token) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n return;\n }\n \n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn();\n var range = new Range(row, column, row, column+token.value.length);\n var sbm = session.$backMarkers[session.$tagHighlight];\n if (session.$tagHighlight && sbm != undefined && range.compareRange(sbm.range) !== 0) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n }\n \n if (!session.$tagHighlight)\n session.$tagHighlight = session.addMarker(range, \"ace_bracket\", \"text\");\n }, 50);\n };\n this.focus = function() {\n var _self = this;\n setTimeout(function() {\n if (!_self.isFocused())\n _self.textInput.focus();\n });\n this.textInput.focus();\n };\n this.isFocused = function() {\n return this.textInput.isFocused();\n };\n this.blur = function() {\n this.textInput.blur();\n };\n this.onFocus = function(e) {\n if (this.$isFocused)\n return;\n this.$isFocused = true;\n this.renderer.showCursor();\n this.renderer.visualizeFocus();\n this._emit(\"focus\", e);\n };\n this.onBlur = function(e) {\n if (!this.$isFocused)\n return;\n this.$isFocused = false;\n this.renderer.hideCursor();\n this.renderer.visualizeBlur();\n this._emit(\"blur\", e);\n };\n\n this.$cursorChange = function() {\n this.renderer.updateCursor();\n this.$highlightBrackets();\n this.$highlightTags();\n this.$updateHighlightActiveLine();\n };\n this.onDocumentChange = function(delta) {\n var wrap = this.session.$useWrapMode;\n var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\n this.renderer.updateLines(delta.start.row, lastRow, wrap);\n\n this._signal(\"change\", delta);\n this.$cursorChange();\n };\n\n this.onTokenizerUpdate = function(e) {\n var rows = e.data;\n this.renderer.updateLines(rows.first, rows.last);\n };\n\n\n this.onScrollTopChange = function() {\n this.renderer.scrollToY(this.session.getScrollTop());\n };\n\n this.onScrollLeftChange = function() {\n this.renderer.scrollToX(this.session.getScrollLeft());\n };\n this.onCursorChange = function() {\n this.$cursorChange();\n this._signal(\"changeSelection\");\n };\n\n this.$updateHighlightActiveLine = function() {\n var session = this.getSession();\n\n var highlight;\n if (this.$highlightActiveLine) {\n if (this.$selectionStyle != \"line\" || !this.selection.isMultiLine())\n highlight = this.getCursorPosition();\n if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty())\n highlight = false;\n if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\n highlight = false;\n }\n\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n } else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n } else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n\n this.onSelectionChange = function(e) {\n var session = this.session;\n\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n } else {\n this.$updateHighlightActiveLine();\n }\n\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n\n this._signal(\"changeSelection\");\n };\n\n this.$getSelectionHighLightRegexp = function() {\n var session = this.session;\n\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n\n var startColumn = selection.start.column;\n var endColumn = selection.end.column;\n var line = session.getLine(selection.start.row);\n \n var needle = line.substring(startColumn, endColumn);\n if (needle.length > 5000 || !/[\\w\\d]/.test(needle))\n return;\n\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n \n var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1);\n if (!re.test(wordWithBoundary))\n return;\n \n return re;\n };\n\n\n this.onChangeFrontMarker = function() {\n this.renderer.updateFrontMarkers();\n };\n\n this.onChangeBackMarker = function() {\n this.renderer.updateBackMarkers();\n };\n\n\n this.onChangeBreakpoint = function() {\n this.renderer.updateBreakpoints();\n };\n\n this.onChangeAnnotation = function() {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n\n\n this.onChangeMode = function(e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n\n\n this.onChangeWrapLimit = function() {\n this.renderer.updateFull();\n };\n\n this.onChangeWrapMode = function() {\n this.renderer.onResize(true);\n };\n\n\n this.onChangeFold = function() {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n this.getSelectedText = function() {\n return this.session.getTextRange(this.getSelectionRange());\n };\n this.getCopyText = function() {\n var text = this.getSelectedText();\n var nl = this.session.doc.getNewLineCharacter();\n var copyLine= false;\n if (!text && this.$copyWithEmptySelection) {\n copyLine = true;\n var ranges = this.selection.getAllRanges();\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (i && ranges[i - 1].start.row == range.start.row)\n continue;\n text += this.session.getLine(range.start.row) + nl;\n }\n }\n var e = {text: text};\n this._signal(\"copy\", e);\n clipboard.lineMode = copyLine ? e.text : false;\n return e.text;\n };\n this.onCopy = function() {\n this.commands.exec(\"copy\", this);\n };\n this.onCut = function() {\n this.commands.exec(\"cut\", this);\n };\n this.onPaste = function(text, event) {\n var e = {text: text, event: event};\n this.commands.exec(\"paste\", this, e);\n };\n \n this.$handlePaste = function(e) {\n if (typeof e == \"string\") \n e = {text: e};\n this._signal(\"paste\", e);\n var text = e.text;\n\n var lineMode = text === clipboard.lineMode;\n var session = this.session;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n if (lineMode)\n session.insert({ row: this.selection.lead.row, column: 0 }, text);\n else\n this.insert(text);\n } else if (lineMode) {\n this.selection.rangeList.ranges.forEach(function(range) {\n session.insert({ row: range.start.row, column: 0 }, text);\n });\n } else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n \n var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]);\n if (lines.length != ranges.length || isFullLine)\n return this.commands.exec(\"insertstring\", this, text);\n \n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n session.remove(range);\n \n session.insert(range.start, lines[i]);\n }\n }\n };\n\n this.execCommand = function(command, args) {\n return this.commands.exec(command, this, args);\n };\n this.insert = function(text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n if (!this.inVirtualSelectionMode) {\n this.session.mergeUndoDeltas = false;\n this.mergeNextCommand = false;\n }\n }\n text = transform.text;\n\n }\n }\n \n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n session.insert(cursor, text);\n\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(\n new Range(cursor.row, start + transform.selection[0],\n cursor.row, start + transform.selection[1]));\n } else { // Transform relative to the current row.\n this.selection.setSelectionRange(\n new Range(cursor.row + transform.selection[0],\n transform.selection[1],\n cursor.row + transform.selection[2],\n transform.selection[3]));\n }\n }\n if (this.$enableAutoIndent) {\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n\n session.insert({row: cursor.row+1, column: 0}, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n }\n };\n\n this.autoIndent = function () {\n var session = this.session;\n var mode = session.getMode();\n\n var startRow, endRow;\n if (this.selection.isEmpty()) {\n startRow = 0;\n endRow = session.doc.getLength() - 1;\n } else {\n var selectedRange = this.getSelectionRange();\n\n startRow = selectedRange.start.row;\n endRow = selectedRange.end.row;\n }\n\n var prevLineState = \"\";\n var prevLine = \"\";\n var lineIndent = \"\";\n var line, currIndent, range;\n var tab = session.getTabString();\n\n for (var row = startRow; row <= endRow; row++) {\n if (row > 0) {\n prevLineState = session.getState(row - 1);\n prevLine = session.getLine(row - 1);\n lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);\n }\n\n line = session.getLine(row);\n currIndent = mode.$getIndent(line);\n if (lineIndent !== currIndent) {\n if (currIndent.length > 0) {\n range = new Range(row, 0, row, currIndent.length);\n session.remove(range);\n }\n if (lineIndent.length > 0) {\n session.insert({row: row, column: 0}, lineIndent);\n }\n }\n\n mode.autoOutdent(prevLineState, session, row);\n }\n };\n\n\n this.onTextInput = function(text, composition) {\n if (!composition)\n return this.keyBinding.onTextInput(text);\n \n this.startOperation({command: { name: \"insertstring\" }});\n var applyComposition = this.applyComposition.bind(this, text, composition);\n if (this.selection.rangeCount)\n this.forEachSelection(applyComposition);\n else\n applyComposition();\n this.endOperation();\n };\n \n this.applyComposition = function(text, composition) {\n if (composition.extendLeft || composition.extendRight) {\n var r = this.selection.getRange();\n r.start.column -= composition.extendLeft;\n r.end.column += composition.extendRight;\n if (r.start.column < 0) {\n r.start.row--;\n r.start.column += this.session.getLine(r.start.row).length + 1;\n }\n this.selection.setRange(r);\n if (!text && !r.isEmpty())\n this.remove();\n }\n if (text || !this.selection.isEmpty())\n this.insert(text, true);\n if (composition.restoreStart || composition.restoreEnd) {\n var r = this.selection.getRange();\n r.start.column -= composition.restoreStart;\n r.end.column -= composition.restoreEnd;\n this.selection.setRange(r);\n }\n };\n\n this.onCommandKey = function(e, hashId, keyCode) {\n return this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n this.setOverwrite = function(overwrite) {\n this.session.setOverwrite(overwrite);\n };\n this.getOverwrite = function() {\n return this.session.getOverwrite();\n };\n this.toggleOverwrite = function() {\n this.session.toggleOverwrite();\n };\n this.setScrollSpeed = function(speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n this.getScrollSpeed = function() {\n return this.getOption(\"scrollSpeed\");\n };\n this.setDragDelay = function(dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n this.getDragDelay = function() {\n return this.getOption(\"dragDelay\");\n };\n this.setSelectionStyle = function(val) {\n this.setOption(\"selectionStyle\", val);\n };\n this.getSelectionStyle = function() {\n return this.getOption(\"selectionStyle\");\n };\n this.setHighlightActiveLine = function(shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n this.getHighlightActiveLine = function() {\n return this.getOption(\"highlightActiveLine\");\n };\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption(\"highlightGutterLine\");\n };\n this.setHighlightSelectedWord = function(shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n this.getHighlightSelectedWord = function() {\n return this.$highlightSelectedWord;\n };\n\n this.setAnimatedScroll = function(shouldAnimate){\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n\n this.getAnimatedScroll = function(){\n return this.renderer.getAnimatedScroll();\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.renderer.getShowInvisibles();\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n\n this.getDisplayIndentGuides = function() {\n return this.renderer.getDisplayIndentGuides();\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.renderer.getShowPrintMargin();\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.renderer.getPrintMarginColumn();\n };\n this.setReadOnly = function(readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n this.getReadOnly = function() {\n return this.getOption(\"readOnly\");\n };\n this.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n this.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n this.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n this.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n this.setShowFoldWidgets = function(show) {\n this.setOption(\"showFoldWidgets\", show);\n\n };\n this.getShowFoldWidgets = function() {\n return this.getOption(\"showFoldWidgets\");\n };\n\n this.setFadeFoldWidgets = function(fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n\n this.getFadeFoldWidgets = function() {\n return this.getOption(\"fadeFoldWidgets\");\n };\n this.remove = function(dir) {\n if (this.selection.isEmpty()){\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.removeWordRight = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeWordLeft = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineStart = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n if (this.selection.isEmpty())\n this.selection.selectLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineEnd = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.splitLine = function() {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n this.transposeLetters = function() {\n if (!this.selection.isEmpty()) {\n return;\n }\n\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column-1);\n range = new Range(cursor.row, column-1, cursor.row, column+1);\n }\n else {\n swap = line.charAt(column-1) + line.charAt(column-2);\n range = new Range(cursor.row, column-2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n this.toLowerCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.toUpperCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.indent = function() {\n var session = this.session;\n var range = this.getSelectionRange();\n\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n } else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n \n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n } else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n this.blockIndent = function() {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n this.blockOutdent = function() {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n this.sortLines = function() {\n var rows = this.$getSelectedRows();\n var session = this.session;\n\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n\n lines.sort(function(a, b) {\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n if (a.toLowerCase() > b.toLowerCase()) return 1;\n return 0;\n });\n\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i-rows.first]);\n }\n };\n this.toggleCommentLines = function() {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n\n this.toggleBlockComment = function() {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n this.getNumberAt = function(row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if(m.index <= column && m.index+m[0].length >= column){\n var number = {\n value: m[0],\n start: m.index,\n end: m.index+m[0].length\n };\n return number;\n }\n }\n return null;\n };\n this.modifyNumber = function(amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column-1, row, column);\n\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n\n\n if(fp !== nr.end && column < fp){\n amount *= Math.pow(10, nr.end - column - 1);\n } else {\n amount *= Math.pow(10, nr.end - column);\n }\n\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start +1, column + nnr.length - nr.value.length));\n\n }\n } else {\n this.toggleWord();\n }\n };\n\n this.$toggleWordPairs = [\n [\"first\", \"last\"],\n [\"true\", \"false\"],\n [\"yes\", \"no\"],\n [\"width\", \"height\"],\n [\"top\", \"bottom\"],\n [\"right\", \"left\"],\n [\"on\", \"off\"],\n [\"x\", \"y\"],\n [\"get\", \"set\"],\n [\"max\", \"min\"],\n [\"horizontal\", \"vertical\"],\n [\"show\", \"hide\"],\n [\"add\", \"remove\"],\n [\"up\", \"down\"],\n [\"before\", \"after\"],\n [\"even\", \"odd\"],\n [\"in\", \"out\"],\n [\"inside\", \"outside\"],\n [\"next\", \"previous\"],\n [\"increase\", \"decrease\"],\n [\"attach\", \"detach\"],\n [\"&&\", \"||\"],\n [\"==\", \"!=\"]\n ];\n\n this.toggleWord = function () {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n this.selection.selectWord();\n var currentState = this.getSelectedText();\n var currWordStart = this.selection.getWordRange().start.column;\n var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\\s/);\n var delta = column - currWordStart - 1;\n if (delta < 0) delta = 0;\n var curLength = 0, itLength = 0;\n var that = this;\n if (currentState.match(/[A-Za-z0-9_]+/)) {\n wordParts.forEach(function (item, i) {\n itLength = curLength + item.length;\n if (delta >= curLength && delta <= itLength) {\n currentState = item;\n that.selection.clearSelection();\n that.moveCursorTo(row, curLength + currWordStart);\n that.selection.selectTo(row, itLength + currWordStart);\n }\n curLength = itLength;\n });\n }\n\n var wordPairs = this.$toggleWordPairs;\n var reg;\n for (var i = 0; i < wordPairs.length; i++) {\n var item = wordPairs[i];\n for (var j = 0; j <= 1; j++) {\n var negate = +!j;\n var firstCondition = currentState.match(new RegExp('^\\\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\\\s?$', 'i'));\n if (firstCondition) {\n var secondCondition = currentState.match(new RegExp('([_]|^|\\\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\\\s)', 'g'));\n if (secondCondition) {\n reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) {\n var res = item[negate];\n if (result.toUpperCase() == result) {\n res = res.toUpperCase();\n } else if (result.charAt(0).toUpperCase() == result.charAt(0)) {\n res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1);\n }\n return res;\n });\n this.insert(reg);\n reg = \"\";\n }\n }\n }\n }\n };\n this.removeLines = function() {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n\n this.duplicateSelection = function() {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n } else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n\n sel.setSelectionRange(range, reverse);\n }\n };\n this.moveLinesDown = function() {\n this.$moveLines(1, false);\n };\n this.moveLinesUp = function() {\n this.$moveLines(-1, false);\n };\n this.moveText = function(range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n this.copyLinesUp = function() {\n this.$moveLines(-1, true);\n };\n this.copyLinesDown = function() {\n this.$moveLines(1, true);\n };\n this.$moveLines = function(dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1) moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n } else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n \n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff) ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1) rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy) diff = 0;\n totalDiff += diff;\n }\n \n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n this.$getSelectedRows = function(range) {\n range = (range || this.getSelectionRange()).collapseRows();\n\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n\n this.onCompositionStart = function(compositionState) {\n this.renderer.showComposition(compositionState);\n };\n\n this.onCompositionUpdate = function(text) {\n this.renderer.setCompositionText(text);\n };\n\n this.onCompositionEnd = function() {\n this.renderer.hideComposition();\n };\n this.getFirstVisibleRow = function() {\n return this.renderer.getFirstVisibleRow();\n };\n this.getLastVisibleRow = function() {\n return this.renderer.getLastVisibleRow();\n };\n this.isRowVisible = function(row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n this.isRowFullyVisible = function(row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n this.$getVisibleRowCount = function() {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n\n this.$moveByPage = function(dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n\n if (select === true) {\n this.selection.$moveSelection(function(){\n this.moveCursorBy(rows, 0);\n });\n } else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n\n var scrollTop = renderer.scrollTop;\n\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n\n renderer.animateScrolling(scrollTop);\n };\n this.selectPageDown = function() {\n this.$moveByPage(1, true);\n };\n this.selectPageUp = function() {\n this.$moveByPage(-1, true);\n };\n this.gotoPageDown = function() {\n this.$moveByPage(1, false);\n };\n this.gotoPageUp = function() {\n this.$moveByPage(-1, false);\n };\n this.scrollPageDown = function() {\n this.$moveByPage(1);\n };\n this.scrollPageUp = function() {\n this.$moveByPage(-1);\n };\n this.scrollToRow = function(row) {\n this.renderer.scrollToRow(row);\n };\n this.scrollToLine = function(line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n this.centerSelection = function() {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n this.getCursorPosition = function() {\n return this.selection.getCursor();\n };\n this.getCursorPositionScreen = function() {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n this.getSelectionRange = function() {\n return this.selection.getRange();\n };\n this.selectAll = function() {\n this.selection.selectAll();\n };\n this.clearSelection = function() {\n this.selection.clearSelection();\n };\n this.moveCursorTo = function(row, column) {\n this.selection.moveCursorTo(row, column);\n };\n this.moveCursorToPosition = function(pos) {\n this.selection.moveCursorToPosition(pos);\n };\n this.jumpToMatching = function(select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var token = prevToken || iterator.stepForward();\n\n if (!token) return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n \n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n \n if (prevToken.value === '<') {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if(this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n\n this.selection.setSelectionRange(selection);\n\n return replaced;\n };\n\n this.$tryReplace = function(range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n } else {\n return null;\n }\n };\n this.getLastSearchOptions = function() {\n return this.$search.getOptions();\n };\n this.find = function(needle, options, animate) {\n if (!options)\n options = {};\n\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({needle: needle});\n }\n\n this.$search.set(options);\n if (!options.start)\n this.$search.set({start: range});\n\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n this.findNext = function(options, animate) {\n this.find({skipCurrent: true, backwards: false}, options, animate);\n };\n this.findPrevious = function(options, animate) {\n this.find(options, {skipCurrent: true, backwards: true}, animate);\n };\n\n this.revealRange = function(range, animate) {\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n this.undo = function() {\n this.session.getUndoManager().undo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.redo = function() {\n this.session.getUndoManager().redo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.destroy = function() {\n if (this.$toDestroy) {\n this.$toDestroy.forEach(function(el) {\n el.destroy();\n });\n this.$toDestroy = null;\n }\n if (this.$mouseHandler)\n this.$mouseHandler.destroy();\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session)\n this.session.destroy();\n if (this._$emitInputEvent)\n this._$emitInputEvent.cancel();\n this.removeAllListeners();\n };\n this.setAutoScrollEditorIntoView = function(enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function() {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function() {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function() {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())\n ) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n } else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n } else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function(enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n\n\n this.$resetCursorStyle = function() {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n this.prompt = function(message, options, callback) {\n var editor = this;\n config.loadModule(\"./ext/prompt\", function (module) {\n module.prompt(editor, message, options, callback);\n });\n };\n\n}).call(Editor.prototype);\n\n\n\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function(style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", {data: style});\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function() {this.$updateHighlightActiveLine();},\n initialValue: true\n },\n highlightSelectedWord: {\n set: function(shouldHighlight) {this.$onSelectionChange();},\n initialValue: true\n },\n readOnly: {\n set: function(readOnly) {\n this.textInput.setReadOnly(readOnly);\n this.$resetCursorStyle(); \n },\n initialValue: false\n },\n copyWithEmptySelection: {\n set: function(value) {\n this.textInput.setCopyWithEmptySelection(value);\n },\n initialValue: false\n },\n cursorStyle: {\n set: function(val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: {initialValue: true},\n wrapBehavioursEnabled: {initialValue: true},\n enableAutoIndent: {initialValue: true},\n autoScrollEditorIntoView: {\n set: function(val) {this.setAutoScrollEditorIntoView(val);}\n },\n keyboardHandler: {\n set: function(val) { this.setKeyboardHandler(val); },\n get: function() { return this.$keybindingId; },\n handlesSet: true\n },\n value: {\n set: function(val) { this.session.setValue(val); },\n get: function() { return this.getValue(); },\n handlesSet: true,\n hidden: true\n },\n session: {\n set: function(val) { this.setSession(val); },\n get: function() { return this.session; },\n handlesSet: true,\n hidden: true\n },\n \n showLineNumbers: {\n set: function(show) {\n this.renderer.$gutterLayer.setShowLineNumbers(show);\n this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);\n if (show && this.$relativeLineNumbers)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n },\n initialValue: true\n },\n relativeLineNumbers: {\n set: function(value) {\n if (this.$showLineNumbers && value)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n }\n },\n placeholder: {\n set: function(message) {\n if (!this.$updatePlaceholder) {\n this.$updatePlaceholder = function() {\n var value = this.session && (this.renderer.$composition || this.getValue());\n if (value && this.renderer.placeholderNode) {\n this.renderer.off(\"afterRender\", this.$updatePlaceholder);\n dom.removeCssClass(this.container, \"ace_hasPlaceholder\");\n this.renderer.placeholderNode.remove();\n this.renderer.placeholderNode = null;\n } else if (!value && !this.renderer.placeholderNode) {\n this.renderer.on(\"afterRender\", this.$updatePlaceholder);\n dom.addCssClass(this.container, \"ace_hasPlaceholder\");\n var el = dom.createElement(\"div\");\n el.className = \"ace_placeholder\";\n el.textContent = this.$placeholder || \"\";\n this.renderer.placeholderNode = el;\n this.renderer.content.appendChild(this.renderer.placeholderNode);\n } else if (!value && this.renderer.placeholderNode) {\n this.renderer.placeholderNode.textContent = this.$placeholder || \"\";\n }\n }.bind(this);\n this.on(\"input\", this.$updatePlaceholder);\n }\n this.$updatePlaceholder();\n }\n },\n\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n displayIndentGuides: \"renderer\",\n showGutter: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n hasCssTransforms: \"renderer\",\n maxPixelHeight: \"renderer\",\n useTextareaForIME: \"renderer\",\n\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimeout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n navigateWithinSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\n\n\nvar relativeNumberRenderer = {\n getText: function(session, row) {\n return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? \"\\xb7\" : \"\"))) + \"\";\n },\n getWidth: function(session, lastLineNumber, config) {\n return Math.max(\n lastLineNumber.toString().length,\n (config.lastRow + 1).toString().length,\n 2\n ) * config.characterWidth;\n },\n update: function(e, editor) {\n editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);\n },\n attach: function(editor) {\n editor.renderer.$gutterLayer.$renderer = this;\n editor.on(\"changeSelection\", this.update);\n this.update(null, editor);\n },\n detach: function(editor) {\n if (editor.renderer.$gutterLayer.$renderer == this)\n editor.renderer.$gutterLayer.$renderer = null;\n editor.off(\"changeSelection\", this.update);\n this.update(null, editor);\n }\n};\n\nexports.Editor = Editor;\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar UndoManager = function() {\n this.$maxRev = 0;\n this.$fromUndo = false;\n this.reset();\n};\n\n(function() {\n \n this.addSession = function(session) {\n this.$session = session;\n };\n this.add = function(delta, allowMerge, session) {\n if (this.$fromUndo) return;\n if (delta == this.$lastDelta) return;\n if (!this.$keepRedoStack) this.$redoStack.length = 0;\n if (allowMerge === false || !this.lastDeltas) {\n this.lastDeltas = [];\n this.$undoStack.push(this.lastDeltas);\n delta.id = this.$rev = ++this.$maxRev;\n }\n if (delta.action == \"remove\" || delta.action == \"insert\")\n this.$lastDelta = delta;\n this.lastDeltas.push(delta);\n };\n \n this.addSelection = function(selection, rev) {\n this.selections.push({\n value: selection,\n rev: rev || this.$rev\n });\n };\n \n this.startNewGroup = function() {\n this.lastDeltas = null;\n return this.$rev;\n };\n \n this.markIgnored = function(from, to) {\n if (to == null) to = this.$rev + 1;\n var stack = this.$undoStack;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id <= from)\n break;\n if (delta.id < to)\n delta.ignore = true;\n }\n this.lastDeltas = null;\n };\n \n this.getSelection = function(rev, after) {\n var stack = this.selections;\n for (var i = stack.length; i--;) {\n var selection = stack[i];\n if (selection.rev < rev) {\n if (after)\n selection = stack[i + 1];\n return selection;\n }\n }\n };\n \n this.getRevision = function() {\n return this.$rev;\n };\n \n this.getDeltas = function(from, to) {\n if (to == null) to = this.$rev + 1;\n var stack = this.$undoStack;\n var end = null, start = 0;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id < to && !end)\n end = i+1;\n if (delta.id <= from) {\n start = i + 1;\n break;\n }\n }\n return stack.slice(start, end);\n };\n \n this.getChangedRanges = function(from, to) {\n if (to == null) to = this.$rev + 1;\n \n };\n \n this.getChangedLines = function(from, to) {\n if (to == null) to = this.$rev + 1;\n \n };\n this.undo = function(session, dontSelect) {\n this.lastDeltas = null;\n var stack = this.$undoStack;\n \n if (!rearrangeUndoStack(stack, stack.length))\n return;\n \n if (!session)\n session = this.$session;\n \n if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length)\n this.$redoStack = [];\n \n this.$fromUndo = true;\n \n var deltaSet = stack.pop();\n var undoSelectionRange = null;\n if (deltaSet) {\n undoSelectionRange = session.undoChanges(deltaSet, dontSelect);\n this.$redoStack.push(deltaSet);\n this.$syncRev();\n }\n \n this.$fromUndo = false;\n\n return undoSelectionRange;\n };\n this.redo = function(session, dontSelect) {\n this.lastDeltas = null;\n \n if (!session)\n session = this.$session;\n \n this.$fromUndo = true;\n if (this.$redoStackBaseRev != this.$rev) {\n var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);\n rebaseRedoStack(this.$redoStack, diff);\n this.$redoStackBaseRev = this.$rev;\n this.$redoStack.forEach(function(x) {\n x[0].id = ++this.$maxRev;\n }, this);\n }\n var deltaSet = this.$redoStack.pop();\n var redoSelectionRange = null;\n \n if (deltaSet) {\n redoSelectionRange = session.redoChanges(deltaSet, dontSelect);\n this.$undoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n \n return redoSelectionRange;\n };\n \n this.$syncRev = function() {\n var stack = this.$undoStack;\n var nextDelta = stack[stack.length - 1];\n var id = nextDelta && nextDelta[0].id || 0;\n this.$redoStackBaseRev = id;\n this.$rev = id;\n };\n this.reset = function() {\n this.lastDeltas = null;\n this.$lastDelta = null;\n this.$undoStack = [];\n this.$redoStack = [];\n this.$rev = 0;\n this.mark = 0;\n this.$redoStackBaseRev = this.$rev;\n this.selections = [];\n };\n this.canUndo = function() {\n return this.$undoStack.length > 0;\n };\n this.canRedo = function() {\n return this.$redoStack.length > 0;\n };\n this.bookmark = function(rev) {\n if (rev == undefined)\n rev = this.$rev;\n this.mark = rev;\n };\n this.isAtBookmark = function() {\n return this.$rev === this.mark;\n };\n \n this.toJSON = function() {\n \n };\n \n this.fromJSON = function() {\n \n };\n \n this.hasUndo = this.canUndo;\n this.hasRedo = this.canRedo;\n this.isClean = this.isAtBookmark;\n this.markClean = this.bookmark;\n \n this.$prettyPrint = function(delta) {\n if (delta) return stringifyDelta(delta);\n return stringifyDelta(this.$undoStack) + \"\\n---\\n\" + stringifyDelta(this.$redoStack);\n };\n}).call(UndoManager.prototype);\n\nfunction rearrangeUndoStack(stack, pos) {\n for (var i = pos; i--; ) {\n var deltaSet = stack[i];\n if (deltaSet && !deltaSet[0].ignore) {\n while(i < pos - 1) {\n var swapped = swapGroups(stack[i], stack[i + 1]);\n stack[i] = swapped[0];\n stack[i + 1] = swapped[1];\n i++;\n }\n return true;\n }\n }\n}\n\nvar Range = require(\"./range\").Range;\nvar cmp = Range.comparePoints;\nvar comparePoints = Range.comparePoints;\n\nfunction $updateMarkers(delta) {\n var isInsert = delta.action == \"insert\";\n var start = delta.start;\n var end = delta.end;\n var rowShift = (end.row - start.row) * (isInsert ? 1 : -1);\n var colShift = (end.column - start.column) * (isInsert ? 1 : -1);\n if (isInsert) end = start;\n\n for (var i in this.marks) {\n var point = this.marks[i];\n var cmp = comparePoints(point, start);\n if (cmp < 0) {\n continue; // delta starts after the range\n }\n if (cmp === 0) {\n if (isInsert) {\n if (point.bias == 1) {\n cmp = 1;\n }\n else {\n point.bias == -1;\n continue;\n }\n }\n }\n var cmp2 = isInsert ? cmp : comparePoints(point, end);\n if (cmp2 > 0) {\n point.row += rowShift;\n point.column += point.row == end.row ? colShift : 0;\n continue;\n }\n if (!isInsert && cmp2 <= 0) {\n point.row = start.row;\n point.column = start.column;\n if (cmp2 === 0)\n point.bias = 1;\n }\n }\n}\n\n\n\nfunction clonePos(pos) {\n return {row: pos.row,column: pos.column};\n}\nfunction cloneDelta(d) {\n return {\n start: clonePos(d.start),\n end: clonePos(d.end),\n action: d.action,\n lines: d.lines.slice()\n };\n}\nfunction stringifyDelta(d) {\n d = d || this;\n if (Array.isArray(d)) {\n return d.map(stringifyDelta).join(\"\\n\");\n }\n var type = \"\";\n if (d.action) {\n type = d.action == \"insert\" ? \"+\" : \"-\";\n type += \"[\" + d.lines + \"]\";\n } else if (d.value) {\n if (Array.isArray(d.value)) {\n type = d.value.map(stringifyRange).join(\"\\n\");\n } else {\n type = stringifyRange(d.value);\n }\n }\n if (d.start) {\n type += stringifyRange(d);\n }\n if (d.id || d.rev) {\n type += \"\\t(\" + (d.id || d.rev) + \")\";\n }\n return type;\n}\nfunction stringifyRange(r) {\n return r.start.row + \":\" + r.start.column \n + \"=>\" + r.end.row + \":\" + r.end.column;\n}\n\nfunction swap(d1, d2) {\n var i1 = d1.action == \"insert\";\n var i2 = d2.action == \"insert\";\n \n if (i1 && i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n } else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n } else {\n return null;\n }\n } else if (i1 && !i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n } else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n } else {\n return null;\n }\n } else if (!i1 && i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n } else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n } else {\n return null;\n }\n } else if (!i1 && !i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n } else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n } else {\n return null;\n }\n }\n return [d2, d1];\n}\nfunction swapGroups(ds1, ds2) {\n for (var i = ds1.length; i--; ) {\n for (var j = 0; j < ds2.length; j++) {\n if (!swap(ds1[i], ds2[j])) {\n while (i < ds1.length) {\n while (j--) {\n swap(ds2[j], ds1[i]);\n }\n j = ds2.length;\n i++;\n } \n return [ds1, ds2];\n }\n }\n }\n ds1.selectionBefore = ds2.selectionBefore = \n ds1.selectionAfter = ds2.selectionAfter = null;\n return [ds2, ds1];\n}\nfunction xform(d1, c1) {\n var i1 = d1.action == \"insert\";\n var i2 = c1.action == \"insert\";\n \n if (i1 && i2) {\n if (cmp(d1.start, c1.start) < 0) {\n shift(c1, d1, 1);\n } else {\n shift(d1, c1, 1);\n }\n } else if (i1 && !i2) {\n if (cmp(d1.start, c1.end) >= 0) {\n shift(d1, c1, -1);\n } else if (cmp(d1.start, c1.start) <= 0) {\n shift(c1, d1, +1);\n } else {\n shift(d1, Range.fromPoints(c1.start, d1.start), -1);\n shift(c1, d1, +1);\n }\n } else if (!i1 && i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n } else if (cmp(c1.start, d1.start) <= 0) {\n shift(d1, c1, +1);\n } else {\n shift(c1, Range.fromPoints(d1.start, c1.start), -1);\n shift(d1, c1, +1);\n }\n } else if (!i1 && !i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n } else if (cmp(c1.end, d1.start) <= 0) {\n shift(d1, c1, -1);\n } else {\n var before, after;\n if (cmp(d1.start, c1.start) < 0) {\n before = d1;\n d1 = splitDelta(d1, c1.start);\n }\n if (cmp(d1.end, c1.end) > 0) {\n after = splitDelta(d1, c1.end);\n }\n\n shiftPos(c1.end, d1.start, d1.end, -1);\n if (after && !before) {\n d1.lines = after.lines;\n d1.start = after.start;\n d1.end = after.end;\n after = d1;\n }\n\n return [c1, before, after].filter(Boolean);\n }\n }\n return [c1, d1];\n}\n \nfunction shift(d1, d2, dir) {\n shiftPos(d1.start, d2.start, d2.end, dir);\n shiftPos(d1.end, d2.start, d2.end, dir);\n}\nfunction shiftPos(pos, start, end, dir) {\n if (pos.row == (dir == 1 ? start : end).row) {\n pos.column += dir * (end.column - start.column);\n }\n pos.row += dir * (end.row - start.row);\n}\nfunction splitDelta(c, pos) {\n var lines = c.lines;\n var end = c.end;\n c.end = clonePos(pos); \n var rowsBefore = c.end.row - c.start.row;\n var otherLines = lines.splice(rowsBefore, lines.length);\n \n var col = rowsBefore ? pos.column : pos.column - c.start.column;\n lines.push(otherLines[0].substring(0, col));\n otherLines[0] = otherLines[0].substr(col) ; \n var rest = {\n start: clonePos(pos),\n end: end,\n lines: otherLines,\n action: c.action\n };\n return rest;\n}\n\nfunction moveDeltasByOne(redoStack, d) {\n d = cloneDelta(d);\n for (var j = redoStack.length; j--;) {\n var deltaSet = redoStack[j];\n for (var i = 0; i < deltaSet.length; i++) {\n var x = deltaSet[i];\n var xformed = xform(x, d);\n d = xformed[0];\n if (xformed.length != 2) {\n if (xformed[2]) {\n deltaSet.splice(i + 1, 1, xformed[1], xformed[2]);\n i++;\n } else if (!xformed[1]) {\n deltaSet.splice(i, 1);\n i--;\n }\n }\n }\n if (!deltaSet.length) {\n redoStack.splice(j, 1); \n }\n }\n return redoStack;\n}\nfunction rebaseRedoStack(redoStack, deltaSets) {\n for (var i = 0; i < deltaSets.length; i++) {\n var deltas = deltaSets[i];\n for (var j = 0; j < deltas.length; j++) {\n moveDeltasByOne(redoStack, deltas[j]);\n }\n }\n}\n\nexports.UndoManager = UndoManager;\n\n});\n\nace.define(\"ace/layer/lines\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"../lib/dom\");\n\nvar Lines = function(element, canvasHeight) {\n this.element = element;\n this.canvasHeight = canvasHeight || 500000;\n this.element.style.height = (this.canvasHeight * 2) + \"px\";\n \n this.cells = [];\n this.cellCache = [];\n this.$offsetCoefficient = 0;\n};\n\n(function() {\n \n this.moveContainer = function(config) {\n dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);\n }; \n \n this.pageChanged = function(oldConfig, newConfig) {\n return (\n Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==\n Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight)\n );\n };\n \n this.computeLineTop = function(row, config, session) {\n var screenTop = config.firstRowScreen * config.lineHeight;\n var screenPage = Math.floor(screenTop / this.canvasHeight);\n var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;\n return lineTop - (screenPage * this.canvasHeight);\n };\n \n this.computeLineHeight = function(row, config, session) {\n return config.lineHeight * session.getRowLineCount(row);\n };\n \n this.getLength = function() {\n return this.cells.length;\n };\n \n this.get = function(index) {\n return this.cells[index];\n };\n \n this.shift = function() {\n this.$cacheCell(this.cells.shift());\n };\n \n this.pop = function() {\n this.$cacheCell(this.cells.pop());\n };\n \n this.push = function(cell) {\n if (Array.isArray(cell)) {\n this.cells.push.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i=0; i foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$lines.getLength() > index + 1)\n this.$lines.pop();\n \n break;\n }\n\n cell = this.$lines.get(++index);\n if (cell) {\n cell.row = row;\n } else {\n cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$lines.push(cell);\n }\n\n this.$renderCell(cell, config, fold, row);\n row++;\n }\n \n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n\n this.$updateGutterWidth = function(config) {\n var session = this.session;\n \n var gutterRenderer = session.gutterRenderer || this.$renderer;\n \n var firstLineNumber = session.$firstLineNumber;\n var lastLineText = this.$lines.last() ? this.$lines.last().text : \"\";\n \n if (this.$fixedWidth || session.$useWrapMode)\n lastLineText = session.getLength() + firstLineNumber - 1;\n\n var gutterWidth = gutterRenderer \n ? gutterRenderer.getWidth(session, lastLineText, config)\n : lastLineText.toString().length * config.characterWidth;\n \n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.parentNode.style.width = \n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._signal(\"changeGutterWidth\", gutterWidth);\n }\n };\n \n this.$updateCursorRow = function() {\n if (!this.$highlightGutterLine)\n return;\n \n var position = this.session.selection.getCursor();\n if (this.$cursorRow === position.row)\n return;\n \n this.$cursorRow = position.row;\n };\n \n this.updateLineHighlight = function() {\n if (!this.$highlightGutterLine)\n return;\n var row = this.session.selection.cursor.row;\n this.$cursorRow = row;\n\n if (this.$cursorCell && this.$cursorCell.row == row)\n return;\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n var cells = this.$lines.cells;\n this.$cursorCell = null;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.row >= this.$cursorRow) {\n if (cell.row > this.$cursorRow) {\n var fold = this.session.getFoldLine(this.$cursorRow);\n if (i > 0 && fold && fold.start.row == cells[i - 1].row)\n cell = cells[i - 1];\n else\n break;\n }\n cell.element.className = \"ace_gutter-active-line \" + cell.element.className;\n this.$cursorCell = cell;\n break;\n }\n }\n };\n \n this.scrollLines = function(config) {\n var oldConfig = this.config;\n this.config = config;\n \n this.$updateCursorRow();\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n \n this.$lines.moveContainer(config);\n\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n this.session.getLength() - 1);\n var oldLastRow = this.oldLastRow;\n this.oldLastRow = lastRow;\n \n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n\n if (oldConfig.firstRow < config.firstRow)\n for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)\n this.$lines.shift();\n\n if (oldLastRow > lastRow)\n for (var row=this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row>0; row--)\n this.$lines.pop();\n\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));\n }\n\n if (lastRow > oldLastRow) {\n this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));\n }\n \n this.updateLineHighlight();\n \n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n\n this.$renderLines = function(config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n\n var cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$renderCell(cell, config, foldLine, row);\n fragment.push(cell);\n\n row++;\n }\n return fragment;\n };\n \n this.$renderCell = function(cell, config, fold, row) {\n var element = cell.element;\n \n var session = this.session;\n \n var textNode = element.childNodes[0];\n var foldWidget = element.childNodes[1];\n\n var firstLineNumber = session.$firstLineNumber;\n \n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var foldStart = fold ? fold.start.row : Number.MAX_VALUE;\n \n var className = \"ace_gutter-cell \";\n if (this.$highlightGutterLine) {\n if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {\n className += \"ace_gutter-active-line \";\n if (this.$cursorCell != cell) {\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n this.$cursorCell = cell;\n }\n }\n }\n \n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row])\n className += this.$annotations[row].className;\n if (element.className != className)\n element.className = className;\n\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n\n if (c) {\n var className = \"ace_fold-widget ace_\" + c;\n if (c == \"start\" && row == foldStart && row < fold.end.row)\n className += \" ace_closed\";\n else\n className += \" ace_open\";\n if (foldWidget.className != className)\n foldWidget.className = className;\n\n var foldHeight = config.lineHeight + \"px\";\n dom.setStyle(foldWidget.style, \"height\", foldHeight);\n dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n } else {\n if (foldWidget) {\n dom.setStyle(foldWidget.style, \"display\", \"none\");\n }\n }\n \n var text = (gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber).toString();\n \n if (text !== textNode.data) {\n textNode.data = text;\n }\n \n dom.setStyle(cell.element.style, \"height\", this.$lines.computeLineHeight(row, config, session) + \"px\");\n dom.setStyle(cell.element.style, \"top\", this.$lines.computeLineTop(row, config, session) + \"px\");\n \n cell.text = text;\n return cell;\n };\n\n this.$fixedWidth = false;\n \n this.$highlightGutterLine = true;\n this.$renderer = \"\";\n this.setHighlightGutterLine = function(highlightGutterLine) {\n this.$highlightGutterLine = highlightGutterLine;\n };\n \n this.$showLineNumbers = true;\n this.$renderer = \"\";\n this.setShowLineNumbers = function(show) {\n this.$renderer = !show && {\n getWidth: function() {return 0;},\n getText: function() {return \"\";}\n };\n };\n \n this.getShowLineNumbers = function() {\n return this.$showLineNumbers;\n };\n \n this.$showFoldWidgets = true;\n this.setShowFoldWidgets = function(show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n \n this.getShowFoldWidgets = function() {\n return this.$showFoldWidgets;\n };\n\n this.$computePadding = function() {\n if (!this.element.firstChild)\n return {left: 0, right: 0};\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = (parseInt(style.borderLeftWidth) || 0)\n + (parseInt(style.paddingLeft) || 0) + 1;\n this.$padding.right = (parseInt(style.borderRightWidth) || 0)\n + (parseInt(style.paddingRight) || 0);\n return this.$padding;\n };\n\n this.getRegion = function(point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n\n}).call(Gutter.prototype);\n\nfunction onCreateCell(element) {\n var textNode = document.createTextNode('');\n element.appendChild(textNode);\n \n var foldWidget = dom.createElement(\"span\");\n element.appendChild(foldWidget);\n \n return element;\n}\n\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\n\nvar Marker = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n};\n\n(function() {\n\n this.$padding = 0;\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n this.setSession = function(session) {\n this.session = session;\n };\n \n this.setMarkers = function(markers) {\n this.markers = markers;\n };\n \n this.elt = function(className, css) {\n var x = this.i != -1 && this.element.childNodes[this.i];\n if (!x) {\n x = document.createElement(\"div\");\n this.element.appendChild(x);\n this.i = -1;\n } else {\n this.i++;\n }\n x.style.cssText = css;\n x.className = className;\n };\n\n this.update = function(config) {\n if (!config) return;\n\n this.config = config;\n\n this.i = 0;\n var html;\n for (var key in this.markers) {\n var marker = this.markers[key];\n\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty()) continue;\n\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n marker.renderer(html, range, left, top, config);\n } else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n } else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n } else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n } else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n if (this.i !=-1) {\n while (this.i < this.element.childElementCount)\n this.element.removeChild(this.element.lastChild);\n }\n };\n\n this.$getTop = function(row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n\n function getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n }\n this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0; \n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n this.drawSingleLineMarker(stringBuilder, lineRange, \n clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end),\n layerConfig, row == end ? 0 : 1, extraStyle);\n }\n };\n this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height = config.lineHeight;\n var top = this.$getTop(range.start.row, config);\n var left = padding + range.start.column * config.characterWidth;\n extraStyle = extraStyle || \"\";\n\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n } else {\n this.elt(\n clazz + \" ace_br1 ace_start\",\n \"height:\"+ height+ \"px;\"+ \"right:0;\"+ \"top:\"+top+ \"px;left:\"+ left+ \"px;\" + (extraStyle || \"\")\n );\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n } else {\n top = this.$getTop(range.end.row, config);\n var width = range.end.column * config.characterWidth;\n\n this.elt(\n clazz + \" ace_br12\",\n \"height:\"+ height+ \"px;\"+\n \"width:\"+ width+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:\"+ padding+ \"px;\"+ (extraStyle || \"\")\n );\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n \n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n\n this.elt(\n clazz + (radiusClass ? \" ace_br\" + radiusClass : \"\"),\n \"height:\"+ height+ \"px;\"+\n \"right:0;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:\"+ padding+ \"px;\"+ (extraStyle || \"\")\n );\n };\n this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\n if (this.session.$bidiHandler.isBidiRow(range.start.row))\n return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle);\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n\n this.elt(\n clazz,\n \"height:\"+ height+ \"px;\"+\n \"width:\"+ width+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:\"+ left+ \"px;\"+ (extraStyle || \"\")\n );\n };\n this.drawBidiSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n\n selections.forEach(function(selection) {\n this.elt(\n clazz,\n \"height:\" + height + \"px;\" +\n \"width:\" + selection.width + (extraLength || 0) + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + (padding + selection.left) + \"px;\" + (extraStyle || \"\")\n );\n }, this);\n };\n\n this.drawFullLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n\n this.elt(\n clazz,\n \"height:\"+ height+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:0;right:0;\"+ (extraStyle || \"\")\n );\n };\n \n this.drawScreenLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n\n this.elt(\n clazz,\n \"height:\"+ height+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:0;right:0;\"+ (extraStyle || \"\")\n );\n };\n\n}).call(Marker.prototype);\n\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/layer/lines\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar Lines = require(\"./lines\").Lines;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\n\nvar Text = function(parentEl) {\n this.dom = dom; \n this.element = this.dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n this.$lines = new Lines(this.element);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.EOF_CHAR = \"\\xB6\";\n this.EOL_CHAR_LF = \"\\xAC\";\n this.EOL_CHAR_CRLF = \"\\xa4\";\n this.EOL_CHAR = this.EOL_CHAR_LF;\n this.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\n this.SPACE_CHAR = \"\\xB7\";\n this.$padding = 0;\n this.MAX_LINE_LENGTH = 10000;\n\n this.$updateEolChar = function() {\n var doc = this.session.doc;\n var unixMode = doc.getNewLineCharacter() == \"\\n\" && doc.getNewLineMode() != \"windows\";\n var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.element.style.margin = \"0 \" + padding + \"px\";\n };\n\n this.getLineHeight = function() {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n\n this.getCharacterWidth = function() {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n \n this.$setFontMetrics = function(measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", function(e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n\n this.checkForSizeChanges = function() {\n this.$fontMetrics.checkForSizeChanges();\n };\n this.$pollSizeChanges = function() {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n this.setSession = function(session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n\n this.showInvisibles = false;\n this.showSpaces = false;\n this.showTabs = false;\n this.showEOL = false;\n this.setShowInvisibles = function(showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n\n this.showInvisibles = showInvisibles;\n if (typeof showInvisibles == \"string\") {\n this.showSpaces = /tab/i.test(showInvisibles);\n this.showTabs = /space/i.test(showInvisibles);\n this.showEOL = /eol/i.test(showInvisibles);\n } else {\n this.showSpaces = this.showTabs = this.showEOL = showInvisibles;\n }\n this.$computeTabString();\n return true;\n };\n\n this.displayIndentGuides = true;\n this.setDisplayIndentGuides = function(display) {\n if (this.displayIndentGuides == display)\n return false;\n\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n\n this.$tabStrings = [];\n this.onChangeTabSize =\n this.$computeTabString = function() {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showTabs) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_tab\";\n span.textContent = lang.stringRepeat(this.TAB_CHAR, i);\n tabStr.push(span);\n } else {\n tabStr.push(this.dom.createTextNode(lang.stringRepeat(\" \", i), this.element));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = this.showSpaces ? \" ace_invisible ace_invisible_space\" : \"\";\n var spaceContent = this.showSpaces\n ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)\n : lang.stringRepeat(\" \", this.tabSize);\n\n var tabClass = this.showTabs ? \" ace_invisible ace_invisible_tab\" : \"\";\n var tabContent = this.showTabs \n ? lang.stringRepeat(this.TAB_CHAR, this.tabSize)\n : spaceContent;\n\n var span = this.dom.createElement(\"span\");\n span.className = className + spaceClass;\n span.textContent = spaceContent;\n this.$tabStrings[\" \"] = span;\n \n var span = this.dom.createElement(\"span\");\n span.className = className + tabClass;\n span.textContent = tabContent;\n this.$tabStrings[\"\\t\"] = span;\n }\n };\n\n this.updateLines = function(config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n return this.update(config);\n }\n \n this.config = config;\n\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n } else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx ++;\n }\n\n var heightChanged = false;\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row :Infinity;\n }\n if (row > last)\n break;\n\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n this.dom.removeChildren(lineElement);\n this.$renderLine(\n lineElement, row, row == foldStart ? foldLine : false\n );\n\n if (heightChanged)\n lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + \"px\";\n\n var height = (config.lineHeight * this.session.getRowLength(row)) + \"px\";\n if (lineElement.style.height != height) {\n heightChanged = true;\n lineElement.style.height = height;\n }\n }\n row++;\n }\n if (heightChanged) {\n while (lineElementsIdx < this.$lines.cells.length) {\n var cell = this.$lines.cells[lineElementsIdx++];\n cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + \"px\";\n }\n }\n };\n\n this.scrollLines = function(config) {\n var oldConfig = this.config;\n this.config = config;\n\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n \n this.$lines.moveContainer(config);\n \n var lastRow = config.lastRow;\n var oldLastRow = oldConfig ? oldConfig.lastRow : -1;\n\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n\n if (oldConfig.firstRow < config.firstRow)\n for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)\n this.$lines.shift();\n\n if (oldConfig.lastRow > config.lastRow)\n for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--)\n this.$lines.pop();\n\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));\n }\n\n if (config.lastRow > oldConfig.lastRow) {\n this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));\n }\n };\n\n this.$renderLinesFragment = function(config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n\n var line = this.$lines.createCell(row, config, this.session);\n \n var lineEl = line.element;\n this.dom.removeChildren(lineEl);\n dom.setStyle(lineEl.style, \"height\", this.$lines.computeLineHeight(row, config, this.session) + \"px\");\n dom.setStyle(lineEl.style, \"top\", this.$lines.computeLineTop(row, config, this.session) + \"px\");\n this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);\n\n if (this.$useLineGroups()) {\n lineEl.className = \"ace_line_group\";\n } else {\n lineEl.className = \"ace_line\";\n }\n fragment.push(line);\n\n row++;\n }\n return fragment;\n };\n\n this.update = function(config) {\n this.$lines.moveContainer(config);\n \n this.config = config;\n\n var firstRow = config.firstRow;\n var lastRow = config.lastRow;\n\n var lines = this.$lines;\n while (lines.getLength())\n lines.pop();\n \n lines.push(this.$renderLinesFragment(config, firstRow, lastRow));\n };\n\n this.$textToken = {\n \"text\": true,\n \"rparen\": true,\n \"lparen\": true\n };\n\n this.$renderToken = function(parent, screenColumn, token, value) {\n var self = this;\n var re = /(\\t)|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\uFEFF\\uFFF9-\\uFFFC]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n \n var valueFragment = this.dom.createFragment(this.element);\n\n var m;\n var i = 0;\n while (m = re.exec(value)) {\n var tab = m[1];\n var simpleSpace = m[2];\n var controlCharacter = m[3];\n var cjkSpace = m[4];\n var cjk = m[5];\n \n if (!self.showSpaces && simpleSpace)\n continue;\n\n var before = i != m.index ? value.slice(i, m.index) : \"\";\n\n i = m.index + m[0].length;\n \n if (before) {\n valueFragment.appendChild(this.dom.createTextNode(before, this.element));\n }\n \n if (tab) {\n var tabSize = self.session.getScreenTabSize(screenColumn + m.index);\n valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));\n screenColumn += tabSize - 1;\n } else if (simpleSpace) {\n if (self.showSpaces) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);\n valueFragment.appendChild(span);\n } else {\n valueFragment.appendChild(this.com.createTextNode(simpleSpace, this.element));\n }\n } else if (controlCharacter) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space ace_invalid\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length);\n valueFragment.appendChild(span);\n } else if (cjkSpace) {\n screenColumn += 1;\n \n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = self.showSpaces ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;\n valueFragment.appendChild(span);\n } else if (cjk) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = \"ace_cjk\";\n span.textContent = cjk;\n valueFragment.appendChild(span);\n }\n }\n \n valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element));\n\n if (!this.$textToken[token.type]) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var span = this.dom.createElement(\"span\");\n if (token.type == \"fold\")\n span.style.width = (token.value.length * this.config.characterWidth) + \"px\";\n \n span.className = classes;\n span.appendChild(valueFragment);\n \n parent.appendChild(span);\n }\n else {\n parent.appendChild(valueFragment);\n }\n \n return screenColumn + value.length;\n };\n\n this.renderIndentGuide = function(parent, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n var count = cols/this.tabSize;\n for (var i=0; i= splitChars) {\n screenColumn = this.$renderToken(\n lineEl, screenColumn,\n token, value.substring(0, splitChars - chars)\n );\n value = value.substring(splitChars - chars);\n chars = splitChars;\n\n lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n\n lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element));\n\n split ++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(\n lineEl, screenColumn, token, value\n );\n }\n }\n }\n \n if (splits[splits.length - 1] > this.MAX_LINE_LENGTH)\n this.$renderOverflowMessage(lineEl, screenColumn, null, \"\", true);\n };\n\n this.$renderSimpleLine = function(parent, tokens) {\n var screenColumn = 0;\n var token = tokens[0];\n var value = token.value;\n if (this.displayIndentGuides)\n value = this.renderIndentGuide(parent, value);\n if (value)\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n for (var i = 1; i < tokens.length; i++) {\n token = tokens[i];\n value = token.value;\n if (screenColumn + value.length > this.MAX_LINE_LENGTH)\n return this.$renderOverflowMessage(parent, screenColumn, token, value);\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n }\n };\n \n this.$renderOverflowMessage = function(parent, screenColumn, token, value, hide) {\n token && this.$renderToken(parent, screenColumn, token,\n value.slice(0, this.MAX_LINE_LENGTH - screenColumn));\n \n var overflowEl = this.dom.createElement(\"span\");\n overflowEl.className = \"ace_inline_button ace_keyword ace_toggle_wrap\";\n overflowEl.textContent = hide ? \"\" : \"\";\n \n parent.appendChild(overflowEl); \n };\n this.$renderLine = function(parent, row, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n\n var lastLineEl = parent;\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length) {\n this.$renderWrappedLine(parent, tokens, splits);\n var lastLineEl = parent.lastChild;\n } else {\n var lastLineEl = parent;\n if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n this.$renderSimpleLine(lastLineEl, tokens);\n }\n } else if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n\n if (this.showEOL && lastLineEl) {\n if (foldLine)\n row = foldLine.end.row;\n\n var invisibleEl = this.dom.createElement(\"span\");\n invisibleEl.className = \"ace_invisible ace_invisible_eol\";\n invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR;\n \n lastLineEl.appendChild(invisibleEl);\n }\n };\n\n this.$getFoldLineTokens = function(row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n\n col = from + value.length;\n idx += 1;\n }\n\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n } else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n\n var tokens = session.getTokens(row);\n foldLine.walk(function(placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n } else {\n if (isNewRow)\n tokens = session.getTokens(row);\n\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n\n return renderTokens;\n };\n\n this.$useLineGroups = function() {\n return this.session.getUseWrapMode();\n };\n\n this.destroy = function() {};\n}).call(Text.prototype);\n\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"../lib/dom\");\n\nvar Cursor = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n \n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = this.$updateOpacity.bind(this);\n};\n\n(function() {\n \n this.$updateOpacity = function(val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n dom.setStyle(cursors[i].style, \"opacity\", val ? \"\" : \"0\");\n };\n\n this.$startCssAnimation = function() {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n cursors[i].style.animationDuration = this.blinkInterval + \"ms\";\n\n this.$isAnimating = true;\n setTimeout(function() {\n if (this.$isAnimating) {\n dom.addCssClass(this.element, \"ace_animate-blinking\");\n }\n }.bind(this));\n };\n \n this.$stopCssAnimation = function() {\n this.$isAnimating = false;\n dom.removeCssClass(this.element, \"ace_animate-blinking\");\n };\n\n this.$padding = 0;\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n\n this.setSession = function(session) {\n this.session = session;\n };\n\n this.setBlinking = function(blinking) {\n if (blinking != this.isBlinking) {\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n\n this.setBlinkInterval = function(blinkInterval) {\n if (blinkInterval != this.blinkInterval) {\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n\n this.setSmoothBlinking = function(smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.restartTimer();\n }\n };\n\n this.addCursor = function() {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n\n this.removeCursor = function() {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n\n this.hideCursor = function() {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n\n this.showCursor = function() {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n\n this.restartTimer = function() {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n this.$stopCssAnimation();\n\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = false;\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n \n update(true);\n\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible) {\n this.$stopCssAnimation();\n return;\n }\n\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = true;\n setTimeout(function() {\n if (this.$isSmoothBlinking) {\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }\n }.bind(this));\n }\n \n if (dom.HAS_CSS_ANIMATION) {\n this.$startCssAnimation();\n } else {\n var blink = function(){\n this.timeoutId = setTimeout(function() {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n \n this.intervalId = setInterval(function() {\n update(true);\n blink();\n }, this.blinkInterval);\n blink();\n }\n };\n\n this.getPixelPosition = function(position, onScreen) {\n if (!this.config || !this.session)\n return {left : 0, top : 0};\n\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n\n return {left : cursorLeft, top : cursorTop};\n };\n\n this.isCursorInView = function(pixelPos, config) {\n return pixelPos.top >= 0 && pixelPos.top < config.maxHeight;\n };\n\n this.update = function(config) {\n this.config = config;\n\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n\n if (selections === undefined || selections.length === 0){\n selections = [{cursor: null}];\n }\n\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n\n var element = this.cursors[cursorIndex++] || this.addCursor();\n var style = element.style;\n \n if (!this.drawCursor) {\n if (!this.isCursorInView(pixelPos, config)) {\n dom.setStyle(style, \"display\", \"none\");\n } else {\n dom.setStyle(style, \"display\", \"block\");\n dom.translate(element, pixelPos.left, pixelPos.top);\n dom.setStyle(style, \"width\", Math.round(config.characterWidth) + \"px\");\n dom.setStyle(style, \"height\", config.lineHeight + \"px\");\n }\n } else {\n this.drawCursor(element, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n \n this.drawCursor = null;\n\n this.$setOverwrite = function(overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n\n this.destroy = function() {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n\n}).call(Cursor.prototype);\n\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar ScrollBar = function(parent) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + this.classSuffix;\n\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.inner.textContent = \"\\xa0\";\n this.element.appendChild(this.inner);\n\n parent.appendChild(this.element);\n\n this.setVisible(false);\n this.skipEvent = false;\n\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n};\n\n(function() {\n oop.implement(this, EventEmitter);\n\n this.setVisible = function(isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n}).call(ScrollBar.prototype);\nvar VScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollTop = 0;\n this.scrollHeight = 0;\n renderer.$scrollbarWidth = \n this.width = dom.scrollbarWidth(parent.ownerDocument);\n this.inner.style.width =\n this.element.style.width = (this.width || 15) + 5 + \"px\";\n this.$minWidth = 0;\n};\n\noop.inherits(VScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = '-v';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", {data: this.scrollTop});\n }\n this.skipEvent = false;\n };\n this.getWidth = function() {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n this.setHeight = function(height) {\n this.element.style.height = height + \"px\";\n };\n this.setInnerHeight = \n this.setScrollHeight = function(height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n } else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n this.setScrollTop = function(scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n\n}).call(VScrollBar.prototype);\nvar HScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollLeft = 0;\n this.height = renderer.$scrollbarWidth;\n this.inner.style.height =\n this.element.style.height = (this.height || 15) + 5 + \"px\";\n};\n\noop.inherits(HScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = '-h';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", {data: this.scrollLeft});\n }\n this.skipEvent = false;\n };\n this.getHeight = function() {\n return this.isVisible ? this.height : 0;\n };\n this.setWidth = function(width) {\n this.element.style.width = width + \"px\";\n };\n this.setInnerWidth = function(width) {\n this.inner.style.width = width + \"px\";\n };\n this.setScrollWidth = function(width) {\n this.inner.style.width = width + \"px\";\n };\n this.setScrollLeft = function(scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n\n}).call(HScrollBar.prototype);\n\n\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\n\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(require, exports, module) {\n\"use strict\";\n\nvar event = require(\"./lib/event\");\n\n\nvar RenderLoop = function(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.$recursionLimit = 2;\n this.window = win || window;\n var _self = this;\n this._flush = function(ts) {\n _self.pending = false;\n var changes = _self.changes;\n\n if (changes) {\n event.blockIdle(100);\n _self.changes = 0;\n _self.onRender(changes);\n }\n \n if (_self.changes) {\n if (_self.$recursionLimit-- < 0) return;\n _self.schedule();\n } else {\n _self.$recursionLimit = 2;\n }\n };\n};\n\n(function() {\n\n this.schedule = function(change) {\n this.changes = this.changes | change;\n if (this.changes && !this.pending) {\n event.nextFrame(this._flush);\n this.pending = true;\n }\n };\n\n this.clear = function(change) {\n var changes = this.changes;\n this.changes = 0;\n return changes;\n };\n\n}).call(RenderLoop.prototype);\n\nexports.RenderLoop = RenderLoop;\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\n\nvar CHAR_COUNT = 256;\nvar USE_OBSERVER = typeof ResizeObserver == \"function\";\nvar L = 200;\n\nvar FontMetrics = exports.FontMetrics = function(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n \n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n \n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n \n \n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n \n this.$measureNode.textContent = lang.stringRepeat(\"X\", CHAR_COUNT);\n \n this.$characterSize = {width: 0, height: 0};\n \n \n if (USE_OBSERVER)\n this.$addObserver();\n else\n this.checkForSizeChanges();\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n \n this.$characterSize = {width: 0, height: 0};\n \n this.$setMeasureNodeStyles = function(style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n } else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n\n this.checkForSizeChanges = function(size) {\n if (size === undefined)\n size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", {data: size});\n }\n };\n \n this.$addObserver = function() {\n var self = this;\n this.$observer = new window.ResizeObserver(function(e) {\n self.checkForSizeChanges();\n });\n this.$observer.observe(this.$measureNode);\n };\n\n this.$pollSizeChanges = function() {\n if (this.$pollSizeChangesTimer || this.$observer)\n return this.$pollSizeChangesTimer;\n var self = this;\n \n return this.$pollSizeChangesTimer = event.onIdle(function cb() {\n self.checkForSizeChanges();\n event.onIdle(cb, 500);\n }, 500);\n };\n \n this.setPolling = function(val) {\n if (val) {\n this.$pollSizeChanges();\n } else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n\n this.$measureSizes = function(node) {\n var size = {\n height: (node || this.$measureNode).clientHeight,\n width: (node || this.$measureNode).clientWidth / CHAR_COUNT\n };\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n\n this.$measureCharWidth = function(ch) {\n this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n \n this.getCharacterWidth = function(ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n\n this.destroy = function() {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$observer)\n this.$observer.disconnect();\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n\n \n this.$getZoom = function getZoom(element) {\n if (!element || !element.parentElement) return 1;\n return (window.getComputedStyle(element).zoom || 1) * getZoom(element.parentElement);\n };\n this.$initTransformMeasureNodes = function() {\n var t = function(t, l) {\n return [\"div\", {\n style: \"position: absolute;top:\" + t + \"px;left:\" + l + \"px;\"\n }];\n };\n this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el);\n };\n this.transformCoordinates = function(clientPos, elPos) {\n if (clientPos) {\n var zoom = this.$getZoom(this.el);\n clientPos = mul(1 / zoom, clientPos);\n }\n function solve(l1, l2, r) {\n var det = l1[1] * l2[0] - l1[0] * l2[1];\n return [\n (-l2[1] * r[0] + l2[0] * r[1]) / det,\n (+l1[1] * r[0] - l1[0] * r[1]) / det\n ];\n }\n function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }\n function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }\n function mul(a, b) { return [a * b[0], a * b[1]]; }\n\n if (!this.els)\n this.$initTransformMeasureNodes();\n \n function p(el) {\n var r = el.getBoundingClientRect();\n return [r.left, r.top];\n }\n\n var a = p(this.els[0]);\n var b = p(this.els[1]);\n var c = p(this.els[2]);\n var d = p(this.els[3]);\n\n var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a)));\n\n var m1 = mul(1 + h[0], sub(b, a));\n var m2 = mul(1 + h[1], sub(c, a));\n \n if (elPos) {\n var x = elPos;\n var k = h[0] * x[0] / L + h[1] * x[1] / L + 1;\n var ut = add(mul(x[0], m1), mul(x[1], m2));\n return add(mul(1 / k / L, ut), a);\n }\n var u = sub(clientPos, a);\n var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u);\n return mul(L, f);\n };\n \n}).call(FontMetrics.prototype);\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar config = require(\"./config\");\nvar GutterLayer = require(\"./layer/gutter\").Gutter;\nvar MarkerLayer = require(\"./layer/marker\").Marker;\nvar TextLayer = require(\"./layer/text\").Text;\nvar CursorLayer = require(\"./layer/cursor\").Cursor;\nvar HScrollBar = require(\"./scrollbar\").HScrollBar;\nvar VScrollBar = require(\"./scrollbar\").VScrollBar;\nvar RenderLoop = require(\"./renderloop\").RenderLoop;\nvar FontMetrics = require(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = \"\\\n.ace_br1 {border-top-left-radius : 3px;}\\\n.ace_br2 {border-top-right-radius : 3px;}\\\n.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\\\n.ace_br4 {border-bottom-right-radius: 3px;}\\\n.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\\\n.ace_br8 {border-bottom-left-radius : 3px;}\\\n.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_editor {\\\nposition: relative;\\\noverflow: hidden;\\\npadding: 0;\\\nfont: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\\\ndirection: ltr;\\\ntext-align: left;\\\n-webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\\n}\\\n.ace_scroller {\\\nposition: absolute;\\\noverflow: hidden;\\\ntop: 0;\\\nbottom: 0;\\\nbackground-color: inherit;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\ncursor: text;\\\n}\\\n.ace_content {\\\nposition: absolute;\\\nbox-sizing: border-box;\\\nmin-width: 100%;\\\ncontain: style size layout;\\\nfont-variant-ligatures: no-common-ligatures;\\\n}\\\n.ace_dragging .ace_scroller:before{\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\nbottom: 0;\\\ncontent: '';\\\nbackground: rgba(250, 250, 250, 0.01);\\\nz-index: 1000;\\\n}\\\n.ace_dragging.ace_dark .ace_scroller:before{\\\nbackground: rgba(0, 0, 0, 0.01);\\\n}\\\n.ace_selecting, .ace_selecting * {\\\ncursor: text !important;\\\n}\\\n.ace_gutter {\\\nposition: absolute;\\\noverflow : hidden;\\\nwidth: auto;\\\ntop: 0;\\\nbottom: 0;\\\nleft: 0;\\\ncursor: default;\\\nz-index: 4;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\ncontain: style size layout;\\\n}\\\n.ace_gutter-active-line {\\\nposition: absolute;\\\nleft: 0;\\\nright: 0;\\\n}\\\n.ace_scroller.ace_scroll-left {\\\nbox-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\\\n}\\\n.ace_gutter-cell {\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\npadding-left: 19px;\\\npadding-right: 6px;\\\nbackground-repeat: no-repeat;\\\n}\\\n.ace_gutter-cell.ace_error {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==\\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_warning {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==\\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_info {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=\\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_dark .ace_gutter-cell.ace_info {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_scrollbar {\\\ncontain: strict;\\\nposition: absolute;\\\nright: 0;\\\nbottom: 0;\\\nz-index: 6;\\\n}\\\n.ace_scrollbar-inner {\\\nposition: absolute;\\\ncursor: text;\\\nleft: 0;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-v{\\\noverflow-x: hidden;\\\noverflow-y: scroll;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-h {\\\noverflow-x: scroll;\\\noverflow-y: hidden;\\\nleft: 0;\\\n}\\\n.ace_print-margin {\\\nposition: absolute;\\\nheight: 100%;\\\n}\\\n.ace_text-input {\\\nposition: absolute;\\\nz-index: 0;\\\nwidth: 0.5em;\\\nheight: 1em;\\\nopacity: 0;\\\nbackground: transparent;\\\n-moz-appearance: none;\\\nappearance: none;\\\nborder: none;\\\nresize: none;\\\noutline: none;\\\noverflow: hidden;\\\nfont: inherit;\\\npadding: 0 1px;\\\nmargin: 0 -1px;\\\ncontain: strict;\\\n-ms-user-select: text;\\\n-moz-user-select: text;\\\n-webkit-user-select: text;\\\nuser-select: text;\\\nwhite-space: pre!important;\\\n}\\\n.ace_text-input.ace_composition {\\\nbackground: transparent;\\\ncolor: inherit;\\\nz-index: 1000;\\\nopacity: 1;\\\n}\\\n.ace_composition_placeholder { color: transparent }\\\n.ace_composition_marker { \\\nborder-bottom: 1px solid;\\\nposition: absolute;\\\nborder-radius: 0;\\\nmargin-top: 1px;\\\n}\\\n[ace_nocontext=true] {\\\ntransform: none!important;\\\nfilter: none!important;\\\nclip-path: none!important;\\\nmask : none!important;\\\ncontain: none!important;\\\nperspective: none!important;\\\nmix-blend-mode: initial!important;\\\nz-index: auto;\\\n}\\\n.ace_layer {\\\nz-index: 1;\\\nposition: absolute;\\\noverflow: hidden;\\\nword-wrap: normal;\\\nwhite-space: pre;\\\nheight: 100%;\\\nwidth: 100%;\\\nbox-sizing: border-box;\\\npointer-events: none;\\\n}\\\n.ace_gutter-layer {\\\nposition: relative;\\\nwidth: auto;\\\ntext-align: right;\\\npointer-events: auto;\\\nheight: 1000000px;\\\ncontain: style size layout;\\\n}\\\n.ace_text-layer {\\\nfont: inherit !important;\\\nposition: absolute;\\\nheight: 1000000px;\\\nwidth: 1000000px;\\\ncontain: style size layout;\\\n}\\\n.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {\\\ncontain: style size layout;\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\n}\\\n.ace_hidpi .ace_text-layer,\\\n.ace_hidpi .ace_gutter-layer,\\\n.ace_hidpi .ace_content,\\\n.ace_hidpi .ace_gutter {\\\ncontain: strict;\\\nwill-change: transform;\\\n}\\\n.ace_hidpi .ace_text-layer > .ace_line, \\\n.ace_hidpi .ace_text-layer > .ace_line_group {\\\ncontain: strict;\\\n}\\\n.ace_cjk {\\\ndisplay: inline-block;\\\ntext-align: center;\\\n}\\\n.ace_cursor-layer {\\\nz-index: 4;\\\n}\\\n.ace_cursor {\\\nz-index: 4;\\\nposition: absolute;\\\nbox-sizing: border-box;\\\nborder-left: 2px solid;\\\ntransform: translatez(0);\\\n}\\\n.ace_multiselect .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_slim-cursors .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_overwrite-cursors .ace_cursor {\\\nborder-left-width: 0;\\\nborder-bottom: 1px solid;\\\n}\\\n.ace_hidden-cursors .ace_cursor {\\\nopacity: 0.2;\\\n}\\\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\\\nopacity: 0;\\\n}\\\n.ace_smooth-blinking .ace_cursor {\\\ntransition: opacity 0.18s;\\\n}\\\n.ace_animate-blinking .ace_cursor {\\\nanimation-duration: 1000ms;\\\nanimation-timing-function: step-end;\\\nanimation-name: blink-ace-animate;\\\nanimation-iteration-count: infinite;\\\n}\\\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\\\nanimation-duration: 1000ms;\\\nanimation-timing-function: ease-in-out;\\\nanimation-name: blink-ace-animate-smooth;\\\n}\\\n@keyframes blink-ace-animate {\\\nfrom, to { opacity: 1; }\\\n60% { opacity: 0; }\\\n}\\\n@keyframes blink-ace-animate-smooth {\\\nfrom, to { opacity: 1; }\\\n45% { opacity: 1; }\\\n60% { opacity: 0; }\\\n85% { opacity: 0; }\\\n}\\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\\nposition: absolute;\\\nz-index: 3;\\\n}\\\n.ace_marker-layer .ace_selection {\\\nposition: absolute;\\\nz-index: 5;\\\n}\\\n.ace_marker-layer .ace_bracket {\\\nposition: absolute;\\\nz-index: 6;\\\n}\\\n.ace_marker-layer .ace_error_bracket {\\\nposition: absolute;\\\nborder-bottom: 1px solid #DE5555;\\\nborder-radius: 0;\\\n}\\\n.ace_marker-layer .ace_active-line {\\\nposition: absolute;\\\nz-index: 2;\\\n}\\\n.ace_marker-layer .ace_selected-word {\\\nposition: absolute;\\\nz-index: 4;\\\nbox-sizing: border-box;\\\n}\\\n.ace_line .ace_fold {\\\nbox-sizing: border-box;\\\ndisplay: inline-block;\\\nheight: 11px;\\\nmargin-top: -2px;\\\nvertical-align: middle;\\\nbackground-image:\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\\nbackground-repeat: no-repeat, repeat-x;\\\nbackground-position: center center, top left;\\\ncolor: transparent;\\\nborder: 1px solid black;\\\nborder-radius: 2px;\\\ncursor: pointer;\\\npointer-events: auto;\\\n}\\\n.ace_dark .ace_fold {\\\n}\\\n.ace_fold:hover{\\\nbackground-image:\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_tooltip {\\\nbackground-color: #FFF;\\\nbackground-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\\\nborder: 1px solid gray;\\\nborder-radius: 1px;\\\nbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\\ncolor: black;\\\nmax-width: 100%;\\\npadding: 3px 4px;\\\nposition: fixed;\\\nz-index: 999999;\\\nbox-sizing: border-box;\\\ncursor: default;\\\nwhite-space: pre;\\\nword-wrap: break-word;\\\nline-height: normal;\\\nfont-style: normal;\\\nfont-weight: normal;\\\nletter-spacing: normal;\\\npointer-events: none;\\\n}\\\n.ace_folding-enabled > .ace_gutter-cell {\\\npadding-right: 13px;\\\n}\\\n.ace_fold-widget {\\\nbox-sizing: border-box;\\\nmargin: 0 -12px 0 1px;\\\ndisplay: none;\\\nwidth: 11px;\\\nvertical-align: top;\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: center;\\\nborder-radius: 3px;\\\nborder: 1px solid transparent;\\\ncursor: pointer;\\\n}\\\n.ace_folding-enabled .ace_fold-widget {\\\ndisplay: inline-block; \\\n}\\\n.ace_fold-widget.ace_end {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_fold-widget.ace_closed {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\\n}\\\n.ace_fold-widget:hover {\\\nborder: 1px solid rgba(0, 0, 0, 0.3);\\\nbackground-color: rgba(255, 255, 255, 0.2);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\\n}\\\n.ace_fold-widget:active {\\\nborder: 1px solid rgba(0, 0, 0, 0.4);\\\nbackground-color: rgba(0, 0, 0, 0.05);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\\n}\\\n.ace_dark .ace_fold-widget {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_end {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_closed {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_dark .ace_fold-widget:hover {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\nbackground-color: rgba(255, 255, 255, 0.1);\\\n}\\\n.ace_dark .ace_fold-widget:active {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\n}\\\n.ace_inline_button {\\\nborder: 1px solid lightgray;\\\ndisplay: inline-block;\\\nmargin: -1px 8px;\\\npadding: 0 5px;\\\npointer-events: auto;\\\ncursor: pointer;\\\n}\\\n.ace_inline_button:hover {\\\nborder-color: gray;\\\nbackground: rgba(200,200,200,0.2);\\\ndisplay: inline-block;\\\npointer-events: auto;\\\n}\\\n.ace_fold-widget.ace_invalid {\\\nbackground-color: #FFB4B4;\\\nborder-color: #DE5555;\\\n}\\\n.ace_fade-fold-widgets .ace_fold-widget {\\\ntransition: opacity 0.4s ease 0.05s;\\\nopacity: 0;\\\n}\\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\\ntransition: opacity 0.05s ease 0.05s;\\\nopacity:1;\\\n}\\\n.ace_underline {\\\ntext-decoration: underline;\\\n}\\\n.ace_bold {\\\nfont-weight: bold;\\\n}\\\n.ace_nobold .ace_bold {\\\nfont-weight: normal;\\\n}\\\n.ace_italic {\\\nfont-style: italic;\\\n}\\\n.ace_error-marker {\\\nbackground-color: rgba(255, 0, 0,0.2);\\\nposition: absolute;\\\nz-index: 9;\\\n}\\\n.ace_highlight-marker {\\\nbackground-color: rgba(255, 255, 0,0.2);\\\nposition: absolute;\\\nz-index: 8;\\\n}\\\n.ace_mobile-menu {\\\nposition: absolute;\\\nline-height: 1.5;\\\nborder-radius: 4px;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\nbackground: white;\\\nbox-shadow: 1px 3px 2px grey;\\\nborder: 1px solid #dcdcdc;\\\ncolor: black;\\\n}\\\n.ace_dark > .ace_mobile-menu {\\\nbackground: #333;\\\ncolor: #ccc;\\\nbox-shadow: 1px 3px 2px grey;\\\nborder: 1px solid #444;\\\n}\\\n.ace_mobile-button {\\\npadding: 2px;\\\ncursor: pointer;\\\noverflow: hidden;\\\n}\\\n.ace_mobile-button:hover {\\\nbackground-color: #eee;\\\nopacity:1;\\\n}\\\n.ace_mobile-button:active {\\\nbackground-color: #ddd;\\\n}\\\n.ace_placeholder {\\\nfont-family: arial;\\\ntransform: scale(0.9);\\\ntransform-origin: left;\\\nwhite-space: pre;\\\nopacity: 0.7;\\\nmargin: 0 10px;\\\n}\";\n\nvar useragent = require(\"./lib/useragent\");\nvar HIDE_TEXTAREA = useragent.isIE;\n\ndom.importCssString(editorCss, \"ace_editor.css\", false);\n\nvar VirtualRenderer = function(container, theme) {\n var _self = this;\n\n this.container = container || dom.createElement(\"div\");\n\n dom.addCssClass(this.container, \"ace_editor\");\n if (dom.HI_DPI) dom.addCssClass(this.container, \"ace_hidpi\");\n\n this.setTheme(theme);\n if (config.get(\"useStrictCSP\") == null) \n config.set(\"useStrictCSP\", false);\n\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", true);\n\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n \n this.container.appendChild(this.scroller);\n\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n\n this.$markerBack = new MarkerLayer(this.content);\n\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n\n this.$markerFront = new MarkerLayer(this.content);\n\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n\n this.scrollBar = \n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.on(\"scroll\", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.on(\"scroll\", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n\n this.scrollTop = 0;\n this.scrollLeft = 0;\n\n this.cursorPos = {\n row : 0,\n column : 0\n };\n\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.on(\"changeCharacterSize\", function(e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n\n this.layerConfig = {\n width : 1,\n padding : 0,\n firstRow : 0,\n firstRowScreen: 0,\n lastRow : 0,\n lineHeight : 0,\n characterWidth : 0,\n minHeight : 1,\n maxHeight : 1,\n offset : 0,\n height : 1,\n gutterOffset: 1\n };\n \n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n \n this.margin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n \n this.$keepTextAreaAtCursor = !useragent.isIOS;\n\n this.$loop = new RenderLoop(\n this.$renderChanges.bind(this),\n this.container.ownerDocument.defaultView\n );\n this.$loop.schedule(this.CHANGE_FULL);\n\n this.updateCharacterSize();\n this.setPadding(4);\n config.resetOptions(this);\n config._signal(\"renderer\", this);\n};\n\n(function() {\n\n this.CHANGE_CURSOR = 1;\n this.CHANGE_MARKER = 2;\n this.CHANGE_GUTTER = 4;\n this.CHANGE_SCROLL = 8;\n this.CHANGE_LINES = 16;\n this.CHANGE_TEXT = 32;\n this.CHANGE_SIZE = 64;\n this.CHANGE_MARKER_BACK = 128;\n this.CHANGE_MARKER_FRONT = 256;\n this.CHANGE_FULL = 512;\n this.CHANGE_H_SCROLL = 1024;\n\n oop.implement(this, EventEmitter);\n\n this.updateCharacterSize = function() {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n dom.setStyle(this.scroller.style, \"line-height\", this.lineHeight + \"px\");\n };\n this.setSession = function(session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n \n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n \n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n \n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n this.updateLines = function(firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n\n this.onChangeNewLineMode = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n \n this.onChangeTabSize = function() {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n this.updateText = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n this.updateFull = function(force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n this.updateFontSize = function() {\n this.$textLayer.checkForSizeChanges();\n };\n\n this.$changes = 0;\n this.$updateSizeAsync = function() {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n this.onResize = function(force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n\n \n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n\n if (force)\n this.$gutterLayer.$padding = null;\n\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n };\n \n this.$updateCachedSize = function(force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n\n changes = changes | this.CHANGE_SCROLL;\n }\n\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n \n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n \n this.gutterWidth = gutterWidth;\n \n dom.setStyle(this.scrollBarH.element.style, \"left\", gutterWidth + \"px\");\n dom.setStyle(this.scroller.style, \"left\", gutterWidth + this.margin.left + \"px\");\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h);\n dom.setStyle(this.$gutter.style, \"left\", this.margin.left + \"px\");\n \n var right = this.scrollBarV.getWidth() + \"px\";\n dom.setStyle(this.scrollBarH.element.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"bottom\", this.scrollBarH.getHeight());\n\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) {\n changes |= this.CHANGE_FULL;\n }\n }\n \n size.$dirty = !width || !height;\n\n if (changes)\n this._signal(\"resize\", oldSize);\n\n return changes;\n };\n\n this.onGutterResize = function(width) {\n var gutterWidth = this.$showGutter ? width : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else {\n this.$computeLayerConfig();\n }\n };\n this.adjustWrapLimit = function() {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n this.setAnimatedScroll = function(shouldAnimate){\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n this.getAnimatedScroll = function() {\n return this.$animatedScroll;\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.getOption(\"showInvisibles\");\n };\n this.getDisplayIndentGuides = function() {\n return this.getOption(\"displayIndentGuides\");\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.getOption(\"showPrintMargin\");\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.setOption(\"printMarginColumn\", showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.getOption(\"printMarginColumn\");\n };\n this.getShowGutter = function(){\n return this.getOption(\"showGutter\");\n };\n this.setShowGutter = function(show){\n return this.setOption(\"showGutter\", show);\n };\n\n this.getFadeFoldWidgets = function(){\n return this.getOption(\"fadeFoldWidgets\");\n };\n\n this.setFadeFoldWidgets = function(show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption(\"highlightGutterLine\");\n };\n\n this.$updatePrintMargin = function() {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n\n var style = this.$printMarginEl.style;\n style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n \n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n this.getContainerElement = function() {\n return this.container;\n };\n this.getMouseEventTarget = function() {\n return this.scroller;\n };\n this.getTextAreaContainer = function() {\n return this.container;\n };\n this.$moveTextAreaToCursor = function() {\n if (this.$isMousePressed) return;\n var style = this.textarea.style;\n var composition = this.$composition;\n if (!this.$keepTextAreaAtCursor && !composition) {\n dom.translate(this.textarea, -100, 0);\n return;\n }\n var pixelPos = this.$cursorLayer.$pixelPos;\n if (!pixelPos)\n return;\n if (composition && composition.markerRange)\n pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true);\n \n var config = this.layerConfig;\n var posTop = pixelPos.top;\n var posLeft = pixelPos.left;\n posTop -= config.offset;\n\n var h = composition && composition.useTextareaForIME ? this.lineHeight : HIDE_TEXTAREA ? 0 : 1;\n if (posTop < 0 || posTop > config.height - h) {\n dom.translate(this.textarea, 0, 0);\n return;\n }\n\n var w = 1;\n var maxTop = this.$size.height - h;\n if (!composition) {\n posTop += this.lineHeight;\n }\n else {\n if (composition.useTextareaForIME) {\n var val = this.textarea.value;\n w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]);\n }\n else {\n posTop += this.lineHeight + 2;\n }\n }\n \n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n\n posLeft += this.gutterWidth + this.margin.left;\n\n dom.setStyle(style, \"height\", h + \"px\");\n dom.setStyle(style, \"width\", w + \"px\");\n dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop));\n };\n this.getFirstVisibleRow = function() {\n return this.layerConfig.firstRow;\n };\n this.getFirstFullyVisibleRow = function() {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n this.getLastFullyVisibleRow = function() {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n this.getLastVisibleRow = function() {\n return this.layerConfig.lastRow;\n };\n\n this.$padding = null;\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n \n this.setScrollMargin = function(top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top|0;\n sm.bottom = bottom|0;\n sm.right = right|0;\n sm.left = left|0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n \n this.setMargin = function(top, bottom, left, right) {\n var sm = this.margin;\n sm.top = top|0;\n sm.bottom = bottom|0;\n sm.right = right|0;\n sm.left = left|0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height);\n this.updateFull();\n };\n this.getHScrollBarAlwaysVisible = function() {\n return this.$hScrollBarAlwaysVisible;\n };\n this.setHScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n this.getVScrollBarAlwaysVisible = function() {\n return this.$vScrollBarAlwaysVisible;\n };\n this.setVScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n\n this.$updateScrollBarV = function() {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n this.$updateScrollBarH = function() {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n \n this.$frozen = false;\n this.freeze = function() {\n this.$frozen = true;\n };\n \n this.unfreeze = function() {\n this.$frozen = false;\n };\n\n this.$renderChanges = function(changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return; \n } \n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n \n this._signal(\"beforeRender\", changes);\n \n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL\n ) {\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - this.layerConfig.firstRow) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n \n dom.translate(this.content, -this.scrollLeft, -config.offset);\n \n var width = config.width + 2 * this.$padding + \"px\";\n var height = config.minHeight + \"px\";\n \n dom.setStyle(this.content.style, \"width\", width);\n dom.setStyle(this.content.style, \"height\", height);\n }\n if (changes & this.CHANGE_H_SCROLL) {\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller\" : \"ace_scroller ace_scroll-left\";\n }\n if (changes & this.CHANGE_FULL) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n this.$changedLines = null;\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n\n if (this.$showGutter) {\n if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES)\n this.$gutterLayer.update(config);\n else\n this.$gutterLayer.scrollLines(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n\n if (changes & this.CHANGE_TEXT) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_CURSOR) {\n if (this.$highlightGutterLine)\n this.$gutterLayer.updateLineHighlight(config);\n }\n\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n\n this._signal(\"afterRender\", changes);\n };\n\n \n this.$autosize = function() {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight, \n Math.max((this.$minLines || 1) * this.lineHeight, height)\n ) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n \n var hideScrollbars = desiredHeight <= 2 * this.lineHeight;\n var vScroll = !hideScrollbars && height > maxHeight;\n \n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n \n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n \n this._signal(\"autosize\");\n }\n };\n \n this.$computeLayerConfig = function() {\n var session = this.session;\n var size = this.$size;\n \n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n\n var longestLine = this.$getLongestLine();\n \n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n\n var minHeight = size.scrollerHeight + this.lineHeight;\n \n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n \n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top,\n Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, \n longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n \n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n\n var offset = this.scrollTop % this.lineHeight;\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n\n offset = this.scrollTop - firstRowScreen * lineHeight;\n\n var changes = 0;\n if (this.layerConfig.width != longestLine || hScrollChanged) \n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n \n this.layerConfig = {\n width : longestLine,\n padding : this.$padding,\n firstRow : firstRow,\n firstRowScreen: firstRowScreen,\n lastRow : lastRow,\n lineHeight : lineHeight,\n characterWidth : this.characterWidth,\n minHeight : minHeight,\n maxHeight : maxHeight,\n offset : offset,\n gutterOffset : lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height : this.$size.scrollerHeight\n };\n\n if (this.session.$bidiHandler)\n this.session.$bidiHandler.setContentWidth(longestLine - this.$padding);\n\n return changes;\n };\n\n this.$updateLines = function() {\n if (!this.$changedLines) return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n\n var layerConfig = this.layerConfig;\n\n if (firstRow > layerConfig.lastRow + 1) { return; }\n if (lastRow < layerConfig.firstRow) { return; }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n\n this.$getLongestLine = function() {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n \n if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH)\n charCount = this.$textLayer.MAX_LINE_LENGTH + 30;\n\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n this.updateFrontMarkers = function() {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n this.updateBackMarkers = function() {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n this.addGutterDecoration = function(row, className){\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n this.removeGutterDecoration = function(row, className){\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n this.updateBreakpoints = function(rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.setAnnotations = function(annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.updateCursor = function() {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n this.hideCursor = function() {\n this.$cursorLayer.hideCursor();\n };\n this.showCursor = function() {\n this.$cursorLayer.showCursor();\n };\n\n this.scrollSelectionIntoView = function(anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n this.scrollCursorIntoView = function(cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n\n var left = pos.left;\n var top = pos.top;\n \n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n \n var scrollTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n \n if (scrollTop + topMargin > top) {\n if (offset && scrollTop + topMargin > top + this.lineHeight)\n top -= offset * this.$size.scrollerHeight;\n if (top === 0)\n top = -this.scrollMargin.top;\n this.session.setScrollTop(top);\n } else if (scrollTop + this.$size.scrollerHeight - bottomMargin < top + this.lineHeight) {\n if (offset && scrollTop + this.$size.scrollerHeight - bottomMargin < top - this.lineHeight)\n top += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(top + this.lineHeight + bottomMargin - this.$size.scrollerHeight);\n }\n\n var scrollLeft = this.scrollLeft;\n\n if (scrollLeft > left) {\n if (left < this.$padding + 2 * this.layerConfig.characterWidth)\n left = -this.scrollMargin.left;\n this.session.setScrollLeft(left);\n } else if (scrollLeft + this.$size.scrollerWidth < left + this.characterWidth) {\n this.session.setScrollLeft(Math.round(left + this.characterWidth - this.$size.scrollerWidth));\n } else if (scrollLeft <= this.$padding && left - scrollLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n };\n this.getScrollTop = function() {\n return this.session.getScrollTop();\n };\n this.getScrollLeft = function() {\n return this.session.getScrollLeft();\n };\n this.getScrollTopRow = function() {\n return this.scrollTop / this.lineHeight;\n };\n this.getScrollBottomRow = function() {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n this.scrollToRow = function(row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n\n this.alignCursor = function(cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = {row: cursor, column: 0};\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n\n this.session.setScrollTop(offset);\n return offset;\n };\n\n this.STEPS = 8;\n this.$calcSteps = function(fromValue, toValue){\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n\n var func = function(t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n\n return steps;\n };\n this.scrollToLine = function(line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0});\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n\n this.animateScrolling = function(fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n \n if (fromValue == toValue)\n return;\n \n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n \n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = {from: fromValue, to: toValue, steps: steps};\n\n clearInterval(this.$timer);\n\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n this.$timer = setInterval(function() {\n if (!_self.session) \n return clearInterval(_self.$timer);\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n } else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n } else {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n callback && callback();\n }\n }, 10);\n };\n this.scrollToY = function(scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n this.scrollToX = function(scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n this.scrollTo = function(x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(x);\n };\n this.scrollBy = function(deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n this.isScrollableBy = function(deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n\n this.pixelToScreenCoordinates = function(x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = {top:0, left: 0};\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n } else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n \n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n\n return {row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX};\n };\n\n this.screenToTextCoordinates = function(x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = {top:0, left: 0};\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n } else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n this.textToScreenCoordinates = function(row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n \n var y = pos.row * this.lineHeight;\n\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n this.visualizeFocus = function() {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n this.visualizeBlur = function() {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n this.showComposition = function(composition) {\n this.$composition = composition;\n if (!composition.cssText) {\n composition.cssText = this.textarea.style.cssText;\n }\n if (composition.useTextareaForIME == undefined)\n composition.useTextareaForIME = this.$useTextareaForIME;\n \n if (this.$useTextareaForIME) {\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n this.$cursorLayer.element.style.display = \"none\";\n }\n else {\n composition.markerId = this.session.addMarker(composition.markerRange, \"ace_composition_marker\", \"text\");\n }\n };\n this.setCompositionText = function(text) {\n var cursor = this.session.selection.cursor;\n this.addToken(text, \"composition_placeholder\", cursor.row, cursor.column);\n this.$moveTextAreaToCursor();\n };\n this.hideComposition = function() {\n if (!this.$composition)\n return;\n \n if (this.$composition.markerId)\n this.session.removeMarker(this.$composition.markerId);\n\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = this.$composition.cssText;\n var cursor = this.session.selection.cursor;\n this.removeExtraToken(cursor.row, cursor.column);\n this.$composition = null;\n this.$cursorLayer.element.style.display = \"\";\n };\n \n this.addToken = function(text, type, row, column) {\n var session = this.session;\n session.bgTokenizer.lines[row] = null;\n var newToken = {type: type, value: text};\n var tokens = session.getTokens(row);\n if (column == null) {\n tokens.push(newToken);\n } else {\n var l = 0;\n for (var i =0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (column <= l) {\n var diff = token.value.length - (l - column);\n var before = token.value.slice(0, diff);\n var after = token.value.slice(diff);\n \n tokens.splice(i, 1, {type: token.type, value: before}, newToken, {type: token.type, value: after});\n break;\n }\n }\n }\n this.updateLines(row, row);\n };\n\n this.removeExtraToken = function(row, column) {\n this.updateLines(row, row);\n };\n this.setTheme = function(theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange',{theme:theme});\n\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n } else {\n afterLoad(theme);\n }\n\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n if (module.$id)\n _self.$themeId = module.$id;\n dom.importCssString(\n module.cssText,\n module.cssClass,\n _self.container\n );\n\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n\n var padding = \"padding\" in module ? module.padding \n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n\n _self._dispatchEvent('themeLoaded', {theme:module});\n cb && cb();\n }\n };\n this.getTheme = function() {\n return this.$themeId;\n };\n this.setStyle = function(style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n this.unsetStyle = function(style) {\n dom.removeCssClass(this.container, style);\n };\n \n this.setCursorStyle = function(style) {\n dom.setStyle(this.scroller.style, \"cursor\", style);\n };\n this.setMouseCursor = function(cursorStyle) {\n dom.setStyle(this.scroller.style, \"cursor\", cursorStyle);\n };\n \n this.attachToShadowRoot = function() {\n dom.importCssString(editorCss, \"ace_editor.css\", this.container);\n };\n this.destroy = function() {\n this.freeze();\n this.$fontMetrics.destroy();\n this.$cursorLayer.destroy();\n this.removeAllListeners();\n this.container.textContent = \"\";\n };\n\n}).call(VirtualRenderer.prototype);\n\n\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n animatedScroll: {initialValue: false},\n showInvisibles: {\n set: function(value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function(val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function() {\n return this.$showPrintMargin && this.$printMarginColumn; \n }\n },\n showGutter: {\n set: function(show){\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n fadeFoldWidgets: {\n set: function(show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function(show) {\n this.$gutterLayer.setShowFoldWidgets(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function(show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function(shouldHighlight) {\n this.$gutterLayer.setHighlightGutterLine(shouldHighlight);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n hScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function(size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function(name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function(val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function(val) {\n if (!(this.$minLines < 0x1ffffffffffff))\n this.$minLines = 0;\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function(val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function(val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function(val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n theme: {\n set: function(val) { this.setTheme(val); },\n get: function() { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n },\n hasCssTransforms: {\n },\n useTextareaForIME: {\n initialValue: !useragent.isMobile && !useragent.isIE\n }\n});\n\nexports.VirtualRenderer = VirtualRenderer;\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar net = require(\"../lib/net\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar config = require(\"../config\");\n\nfunction $workerBlob(workerUrl) {\n var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl) {\n if (typeof Worker == \"undefined\")\n return { postMessage: function() {}, terminate: function() {} };\n if (config.get(\"loadWorkerFromBlob\")) {\n var blob = $workerBlob(workerUrl);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n }\n return new Worker(workerUrl);\n}\n\nvar WorkerClient = function(worker) {\n if (!worker.postMessage)\n worker = this.$createWorkerFromOldConfig.apply(this, arguments);\n\n this.$worker = worker;\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n if (require.nameToUrl && !require.toUrl)\n require.toUrl = require.nameToUrl;\n\n if (config.get(\"packaged\") || !require.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(require.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(require.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod,\n classname : classname\n });\n return this.$worker;\n };\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n if (data.data && data.data.err)\n data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code};\n this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n\n var messageBuffer = [];\n var workerClient = new WorkerClient({\n messageBuffer: messageBuffer,\n terminate: function() {},\n postMessage: function(e) {\n messageBuffer.push(e);\n if (!main) return;\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n });\n\n workerClient.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n workerClient.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (messageBuffer.length)\n processNext();\n });\n\n return workerClient;\n};\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar oop = require(\"./lib/oop\");\n\nvar PlaceHolder = function(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate);\n this.$others = others;\n \n this.$onCursorChange = function() {\n setTimeout(function() {\n _self.onCursorChange();\n });\n };\n \n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || {length: -1};\n this.$undoStackDepth = undoStack.length;\n this.setup();\n\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setup = function() {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n \n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function(other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n this.showOtherMarkers = function() {\n if (this.othersActive) return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function(anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column+_self.length), _self.othersClass, null, false);\n });\n };\n this.hideOtherMarkers = function() {\n if (!this.othersActive) return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n this.onUpdate = function(delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n \n var range = delta;\n if (range.start.row !== range.end.row) return;\n if (range.start.row !== this.pos.row) return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n \n this.updateAnchors(delta);\n \n if (inMainRange)\n this.length += lengthDiff;\n\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n } else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n \n this.$updating = false;\n this.updateMarkers();\n };\n \n this.updateAnchors = function(delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n \n this.updateMarkers = function() {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function(pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column+_self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n\n this.onCursorChange = function(event) {\n if (this.$updating || !this.session) return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n } else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n }; \n this.detach = function() {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.off(\"change\", this.$onUpdate);\n this.session.selection.off(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n this.cancel = function() {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(this.session, true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n}).call(PlaceHolder.prototype);\n\n\nexports.PlaceHolder = PlaceHolder;\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module) {\n\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\n\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n \n if (ctrl && useragent.isMac)\n button = ev.button;\n\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n \n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n \n if (button !== 0)\n return;\n\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function(e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n \n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n \n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n } else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n } else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n \n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n \n editor.inVirtualSelectionMode = true;\n \n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function() {\n var tmpSel = selection.toOrientedRange();\n\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n } else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.inVirtualSelectionMode = false;\n });\n\n } else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true; \n var initialRange;\n var rectSel = [];\n var blockSelect = function() {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n \n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n };\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n } else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n \n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead); \n else\n selection.moveToPosition(pos);\n \n screenCursor = {row: -1, column: -1};\n\n var onMouseSelectionEnd = function(e) {\n blockSelect();\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n };\n\n var onSelectionInterval = blockSelect;\n\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function() {onSelectionInterval();}, 20);\n\n return e.preventDefault();\n }\n}\n\n\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(require, exports, module) {\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n description: \"Add cursor above\",\n exec: function(editor) { editor.selectMoreLines(-1); },\n bindKey: {win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorBelow\",\n description: \"Add cursor below\",\n exec: function(editor) { editor.selectMoreLines(1); },\n bindKey: {win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorAboveSkipCurrent\",\n description: \"Add cursor above (skip current)\",\n exec: function(editor) { editor.selectMoreLines(-1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorBelowSkipCurrent\",\n description: \"Add cursor below (skip current)\",\n exec: function(editor) { editor.selectMoreLines(1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectMoreBefore\",\n description: \"Select more before\",\n exec: function(editor) { editor.selectMore(-1); },\n bindKey: {win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectMoreAfter\",\n description: \"Select more after\",\n exec: function(editor) { editor.selectMore(1); },\n bindKey: {win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectNextBefore\",\n description: \"Select next before\",\n exec: function(editor) { editor.selectMore(-1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectNextAfter\",\n description: \"Select next after\",\n exec: function(editor) { editor.selectMore(1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"toggleSplitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function(editor) {\n if (editor.multiSelect.rangeCount > 1)\n editor.multiSelect.joinSelections();\n else\n editor.multiSelect.splitIntoLines();\n },\n bindKey: {win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\"},\n readOnly: true\n}, {\n name: \"splitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function(editor) { editor.multiSelect.splitIntoLines(); },\n readOnly: true\n}, {\n name: \"alignCursors\",\n description: \"Align cursors\",\n exec: function(editor) { editor.alignCursors(); },\n bindKey: {win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\"},\n scrollIntoView: \"cursor\"\n}, {\n name: \"findAll\",\n description: \"Find all\",\n exec: function(editor) { editor.findAll(); },\n bindKey: {win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n description: \"Single selection\",\n bindKey: \"esc\",\n exec: function(editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function(editor) {return editor && editor.inMultiSelectMode;}\n}];\n\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(require, exports, module) {\n\nvar RangeList = require(\"./range_list\").RangeList;\nvar Range = require(\"./range\").Range;\nvar Selection = require(\"./selection\").Selection;\nvar onMouseDown = require(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = require(\"./lib/event\");\nvar lang = require(\"./lib/lang\");\nvar commands = require(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require(\"./search\").Search;\nvar search = new Search();\n\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = require(\"./edit_session\").EditSession;\n(function() {\n this.getSelectionMarkers = function() {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function() {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function(range, $blockChangeEvents) {\n if (!range)\n return;\n\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n\n if (!range.cursor)\n range.cursor = range.end;\n\n var removed = this.rangeList.add(range);\n\n this.$onAddRange(range);\n\n if (removed.length)\n this.$onRemoveRange(removed);\n\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n this.toSingleRange = function(range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function(pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function() {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n };\n\n this.$onAddRange = function(range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", {range: range});\n };\n\n this.$onRemoveRange = function(removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n\n for (var i = removed.length; i--; ) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n\n this._signal(\"removeRange\", {ranges: removed});\n\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function() {\n if (this.rangeList)\n return;\n\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function() {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n this.splitIntoLines = function () {\n var ranges = this.ranges.length ? this.ranges : [this.getRange()];\n var newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var row = range.start.row;\n var endRow = range.end.row;\n if (row === endRow) {\n newRanges.push(range.clone());\n } else {\n newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));\n while (++row < endRow)\n newRanges.push(this.getLineRange(row, true));\n newRanges.push(new Range(endRow, 0, endRow, range.end.column));\n }\n if (i == 0 && !this.isBackwards())\n newRanges = newRanges.reverse();\n }\n this.toSingleRange();\n for (var i = newRanges.length; i--;)\n this.addRange(newRanges[i]);\n };\n \n this.joinSelections = function () {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n } else {\n var cursor = this.session.documentToScreenPosition(this.cursor);\n var anchor = this.session.documentToScreenPosition(this.anchor);\n\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function(screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n } else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n } else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n\n if (startRow == endRow)\n includeEmptyLines = true;\n\n var docEnd;\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(\n this.session.screenToDocumentPosition(row, startColumn, startOffsetX),\n this.session.screenToDocumentPosition(row, endColumn, endOffsetX)\n );\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n\n if (yBackwards)\n rectSel.reverse();\n\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = require(\"./editor\").Editor;\n(function() {\n this.updateSelectionMarkers = function() {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function(orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function(range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n\n this.removeSelectionMarkers = function(ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--; ) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n\n this.$onAddRange = function(e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onRemoveRange = function(e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onMultiSelect = function(e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onSingleSelect = function(e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n\n this.$onMultiSelectExec = function(e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n } else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n } else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n } else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n } else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n }; \n this.forEachSelection = function(cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n \n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n \n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n if (selection.ranges[0])\n selection.fromOrientedRange(selection.ranges[0]);\n \n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n \n return result;\n };\n this.exitMultiSelectMode = function() {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n\n this.getSelectedText = function() {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n } else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n \n this.$checkMultiselectChange = function(e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row \n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n else\n this.multiSelect.mergeOverlappingRanges();\n }\n };\n this.findAll = function(needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n } \n this.$search.set(options);\n \n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n\n var selection = this.multiSelect;\n\n if (!additive)\n selection.toSingleRange(ranges[0]);\n\n for (var i = ranges.length; i--; )\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n \n return ranges.length;\n };\n this.selectMoreLines = function(dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n } else {\n var anchor = lead;\n }\n\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n } else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n } else {\n if (skip)\n var toRemove = range.cursor;\n }\n\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function(dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n\n var words = [];\n for (var i = all.length; i--; ) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n sel.fromOrientedRange(sel.ranges[0]);\n };\n this.selectMore = function(dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function() {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function(r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n \n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n \n if (fr < 0) fr = 0;\n if (lr >= max) lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({row: fr, column: 0}, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n } else {\n sameRowRanges.forEach(function(r) {\n sel.substractPoint(r.cursor);\n });\n\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function(r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function(r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n\n this.$reAlignText = function(lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n\n return lines.map(function(line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\n\n\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function(e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n\n addAltCursorListeners(editor);\n}\n\nfunction addAltCursorListeners(editor){\n if (!editor.textInput) return;\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function(e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n } else if (altCursor) {\n reset();\n }\n }, editor);\n\n event.addListener(el, \"keyup\", reset, editor);\n event.addListener(el, \"blur\", reset, editor);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\n\nexports.MultiSelect = MultiSelect;\n\n\nrequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function(val) {\n MultiSelect(this);\n if (val) {\n this.on(\"changeSession\", this.$multiselectOnSessionChange);\n this.on(\"mousedown\", onMouseDown);\n } else {\n this.off(\"changeSession\", this.$multiselectOnSessionChange);\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function(val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\n\n(function() {\n\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n return null;\n };\n\n this.indentationBlock = function(session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n\n if (level == -1)\n continue;\n\n if (level <= startLevel) {\n var token = session.getTokenAt(row, 0);\n if (!token || token.type !== \"string\")\n break;\n }\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n\n this.openingBracketBlock = function(session, bracket, row, column, typeRe) {\n var start = {row: row, column: column + 1};\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n\n if (fw == \"start\" && end.row > start.row) {\n end.row --;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n\n this.closingBracketBlock = function(session, bracket, row, column, typeRe) {\n var end = {row: row, column: column};\n var start = session.$findOpeningBracket(bracket, end);\n\n if (!start)\n return;\n\n start.column++;\n end.column--;\n\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = \".ace-tm .ace_gutter {\\\nbackground: #f0f0f0;\\\ncolor: #333;\\\n}\\\n.ace-tm .ace_print-margin {\\\nwidth: 1px;\\\nbackground: #e8e8e8;\\\n}\\\n.ace-tm .ace_fold {\\\nbackground-color: #6B72E6;\\\n}\\\n.ace-tm {\\\nbackground-color: #FFFFFF;\\\ncolor: black;\\\n}\\\n.ace-tm .ace_cursor {\\\ncolor: black;\\\n}\\\n.ace-tm .ace_invisible {\\\ncolor: rgb(191, 191, 191);\\\n}\\\n.ace-tm .ace_storage,\\\n.ace-tm .ace_keyword {\\\ncolor: blue;\\\n}\\\n.ace-tm .ace_constant {\\\ncolor: rgb(197, 6, 11);\\\n}\\\n.ace-tm .ace_constant.ace_buildin {\\\ncolor: rgb(88, 72, 246);\\\n}\\\n.ace-tm .ace_constant.ace_language {\\\ncolor: rgb(88, 92, 246);\\\n}\\\n.ace-tm .ace_constant.ace_library {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_invalid {\\\nbackground-color: rgba(255, 0, 0, 0.1);\\\ncolor: red;\\\n}\\\n.ace-tm .ace_support.ace_function {\\\ncolor: rgb(60, 76, 114);\\\n}\\\n.ace-tm .ace_support.ace_constant {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_support.ace_type,\\\n.ace-tm .ace_support.ace_class {\\\ncolor: rgb(109, 121, 222);\\\n}\\\n.ace-tm .ace_keyword.ace_operator {\\\ncolor: rgb(104, 118, 135);\\\n}\\\n.ace-tm .ace_string {\\\ncolor: rgb(3, 106, 7);\\\n}\\\n.ace-tm .ace_comment {\\\ncolor: rgb(76, 136, 107);\\\n}\\\n.ace-tm .ace_comment.ace_doc {\\\ncolor: rgb(0, 102, 255);\\\n}\\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\\ncolor: rgb(128, 159, 191);\\\n}\\\n.ace-tm .ace_constant.ace_numeric {\\\ncolor: rgb(0, 0, 205);\\\n}\\\n.ace-tm .ace_variable {\\\ncolor: rgb(49, 132, 149);\\\n}\\\n.ace-tm .ace_xml-pe {\\\ncolor: rgb(104, 104, 91);\\\n}\\\n.ace-tm .ace_entity.ace_name.ace_function {\\\ncolor: #0000A2;\\\n}\\\n.ace-tm .ace_heading {\\\ncolor: rgb(12, 7, 255);\\\n}\\\n.ace-tm .ace_list {\\\ncolor:rgb(185, 6, 144);\\\n}\\\n.ace-tm .ace_meta.ace_tag {\\\ncolor:rgb(0, 22, 142);\\\n}\\\n.ace-tm .ace_string.ace_regex {\\\ncolor: rgb(255, 0, 0)\\\n}\\\n.ace-tm .ace_marker-layer .ace_selection {\\\nbackground: rgb(181, 213, 255);\\\n}\\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\\nbox-shadow: 0 0 3px 0px white;\\\n}\\\n.ace-tm .ace_marker-layer .ace_step {\\\nbackground: rgb(252, 255, 0);\\\n}\\\n.ace-tm .ace_marker-layer .ace_stack {\\\nbackground: rgb(164, 229, 101);\\\n}\\\n.ace-tm .ace_marker-layer .ace_bracket {\\\nmargin: -1px 0 0 -1px;\\\nborder: 1px solid rgb(192, 192, 192);\\\n}\\\n.ace-tm .ace_marker-layer .ace_active-line {\\\nbackground: rgba(0, 0, 0, 0.07);\\\n}\\\n.ace-tm .ace_gutter-active-line {\\\nbackground-color : #dcdcdc;\\\n}\\\n.ace-tm .ace_marker-layer .ace_selected-word {\\\nbackground: rgb(250, 250, 255);\\\nborder: 1px solid rgb(200, 200, 250);\\\n}\\\n.ace-tm .ace_indent-guide {\\\nbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\\n}\\\n\";\nexports.$id = \"ace/theme/textmate\";\n\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"./lib/dom\");\n\nfunction LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n \n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n}\n\n(function() {\n this.getRowLength = function(row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else \n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n } else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n\n this.$getWidgetScreenLength = function() {\n var screenRows = 0;\n this.lineWidgets.forEach(function(w){\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n }; \n \n this.$onChangeEditor = function(e) {\n this.attach(e.editor);\n };\n \n this.attach = function(editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n\n if (this.editor == editor)\n return;\n\n this.detach();\n this.editor = editor;\n \n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n this.detach = function(e) {\n var editor = this.editor;\n if (!editor)\n return;\n \n this.editor = null;\n editor.widgetManager = null;\n \n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function(w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n\n this.updateOnFold = function(e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n } else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n \n this.updateOnChange = function(delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n \n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n } else if (delta.action == \"remove\") {\n var removed = lineWidgets.splice(startRow + 1, len);\n if (!lineWidgets[startRow] && removed[removed.length - 1]) {\n lineWidgets[startRow] = removed.pop();\n }\n removed.forEach(function(w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n } else {\n var args = new Array(len);\n if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {\n if (delta.start.column > lineWidgets[startRow].column)\n startRow++;\n }\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n \n this.$updateRows = function() {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n var noWidgets = true;\n lineWidgets.forEach(function(w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n\n this.$registerLineWidget = function(w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n \n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n \n this.session.lineWidgets[w.row] = w;\n return w;\n };\n \n this.addLineWidget = function(w) {\n this.$registerLineWidget(w);\n w.session = this.session;\n \n if (!this.editor) return w;\n \n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n \n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n \n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n \n this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\n \n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n \n this.removeLineWidget = function(w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy) try {\n w.editor.destroy();\n } catch(e){}\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n } else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\n this.$updateRows();\n };\n \n this.getWidgetsAtRow = function(row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n \n this.onWidgetChanged = function(w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n \n this.measureWidgets = function(e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n \n if (!changedWidgets || !changedWidgets.length) return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el) continue;\n if (w.session != this.session) continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n \n w.h = w.el.offsetHeight;\n \n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n \n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", {data:{start:{row: min}}});\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n \n this.renderWidgets = function(e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n \n while (first > 0 && !lineWidgets[first])\n first--;\n \n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el) continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({row: i, column:0}, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n \n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n \n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n \n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n } else {\n w.el.style.right = \"\";\n }\n }\n };\n \n}).call(LineWidgets.prototype);\n\n\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar LineWidgets = require(\"../line_widgets\").LineWidgets;\nvar dom = require(\"../lib/dom\");\nvar Range = require(\"../range\").Range;\n\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\n\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n \n var i = binarySearch(annotations, {row: row, column: -1}, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n \n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n \n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n \n \n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\n\nexports.showErrorMarker = function(editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n \n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function(w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n } else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n } else if (oldWidget) {\n return;\n } else {\n gutterAnno = {\n text: [\"Looks good!\"],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n \n var w = {\n row: pos.row, \n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n \n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n \n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join(\"
\");\n \n el.appendChild(dom.createElement(\"div\"));\n \n var kb = function(_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return {command: \"null\"};\n }\n };\n \n w.destroy = function() {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n \n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n \n editor.session.widgetManager.addLineWidget(w);\n \n w.el.onmousedown = editor.focus.bind(editor);\n \n editor.renderer.scrollCursorIntoView(null, 0.5, {bottom: w.el.offsetHeight});\n};\n\n\ndom.importCssString(\"\\\n .error_widget_wrapper {\\\n background: inherit;\\\n color: inherit;\\\n border:none\\\n }\\\n .error_widget {\\\n border-top: solid 2px;\\\n border-bottom: solid 2px;\\\n margin: 5px 0;\\\n padding: 10px 40px;\\\n white-space: pre-wrap;\\\n }\\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\\n border-color: #ff5a5a\\\n }\\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\\n border-color: #F1D817\\\n }\\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\\n border-color: #5a5a5a\\\n }\\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\\n border-color: #5aaa5a\\\n }\\\n .error_widget_arrow {\\\n position: absolute;\\\n border: solid 5px;\\\n border-top-color: transparent!important;\\\n border-right-color: transparent!important;\\\n border-left-color: transparent!important;\\\n top: -5px;\\\n }\\\n\", \"error_marker.css\", false);\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/range\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\n\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\n\nvar Range = require(\"./range\").Range;\nvar Editor = require(\"./editor\").Editor;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nrequire(\"./worker/worker_client\");\nrequire(\"./keyboard/hash_handler\");\nrequire(\"./placeholder\");\nrequire(\"./multi_select\");\nrequire(\"./mode/folding/fold_mode\");\nrequire(\"./theme/textmate\");\nrequire(\"./ext/error_marker\");\n\nexports.config = require(\"./config\");\nexports.require = require;\n\nif (typeof define === \"function\")\n exports.define = define;\nexports.edit = function(el, options) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n } else if (el) {\n value = el.textContent;\n el.innerHTML = \"\";\n }\n\n var doc = exports.createEditSession(value);\n\n var editor = new Editor(new Renderer(el), doc, options);\n\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode) env.textarea = oldNode;\n event.addListener(window, \"resize\", env.onResize);\n editor.on(\"destroy\", function() {\n event.removeListener(window, \"resize\", env.onResize);\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function(text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.Range = Range;\nexports.Editor = Editor;\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.VirtualRenderer = Renderer;\nexports.version = exports.config.version;\n}); (function() {\n ace.require([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n if (!window.ace)\n window.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n window.ace[key] = a[key];\n window.ace[\"default\"] = window.ace;\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = window.ace;\n }\n });\n })();\n ","ace.define(\"ace/split\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/editor\",\"ace/virtual_renderer\",\"ace/edit_session\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\n\nvar Editor = require(\"./editor\").Editor;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nvar EditSession = require(\"./edit_session\").EditSession;\n\n\nvar Split = function(container, theme, splits) {\n this.BELOW = 1;\n this.BESIDE = 0;\n\n this.$container = container;\n this.$theme = theme;\n this.$splits = 0;\n this.$editorCSS = \"\";\n this.$editors = [];\n this.$orientation = this.BESIDE;\n\n this.setSplits(splits || 1);\n this.$cEditor = this.$editors[0];\n\n\n this.on(\"focus\", function(editor) {\n this.$cEditor = editor;\n }.bind(this));\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createEditor = function() {\n var el = document.createElement(\"div\");\n el.className = this.$editorCSS;\n el.style.cssText = \"position: absolute; top:0px; bottom:0px\";\n this.$container.appendChild(el);\n var editor = new Editor(new Renderer(el, this.$theme));\n\n editor.on(\"focus\", function() {\n this._emit(\"focus\", editor);\n }.bind(this));\n\n this.$editors.push(editor);\n editor.setFontSize(this.$fontSize);\n return editor;\n };\n\n this.setSplits = function(splits) {\n var editor;\n if (splits < 1) {\n throw \"The number of splits have to be > 0!\";\n }\n\n if (splits == this.$splits) {\n return;\n } else if (splits > this.$splits) {\n while (this.$splits < this.$editors.length && this.$splits < splits) {\n editor = this.$editors[this.$splits];\n this.$container.appendChild(editor.container);\n editor.setFontSize(this.$fontSize);\n this.$splits ++;\n }\n while (this.$splits < splits) {\n this.$createEditor();\n this.$splits ++;\n }\n } else {\n while (this.$splits > splits) {\n editor = this.$editors[this.$splits - 1];\n this.$container.removeChild(editor.container);\n this.$splits --;\n }\n }\n this.resize();\n };\n this.getSplits = function() {\n return this.$splits;\n };\n this.getEditor = function(idx) {\n return this.$editors[idx];\n };\n this.getCurrentEditor = function() {\n return this.$cEditor;\n };\n this.focus = function() {\n this.$cEditor.focus();\n };\n this.blur = function() {\n this.$cEditor.blur();\n };\n this.setTheme = function(theme) {\n this.$editors.forEach(function(editor) {\n editor.setTheme(theme);\n });\n };\n this.setKeyboardHandler = function(keybinding) {\n this.$editors.forEach(function(editor) {\n editor.setKeyboardHandler(keybinding);\n });\n };\n this.forEach = function(callback, scope) {\n this.$editors.forEach(callback, scope);\n };\n\n\n this.$fontSize = \"\";\n this.setFontSize = function(size) {\n this.$fontSize = size;\n this.forEach(function(editor) {\n editor.setFontSize(size);\n });\n };\n\n this.$cloneSession = function(session) {\n var s = new EditSession(session.getDocument(), session.getMode());\n\n var undoManager = session.getUndoManager();\n s.setUndoManager(undoManager);\n s.setTabSize(session.getTabSize());\n s.setUseSoftTabs(session.getUseSoftTabs());\n s.setOverwrite(session.getOverwrite());\n s.setBreakpoints(session.getBreakpoints());\n s.setUseWrapMode(session.getUseWrapMode());\n s.setUseWorker(session.getUseWorker());\n s.setWrapLimitRange(session.$wrapLimitRange.min,\n session.$wrapLimitRange.max);\n s.$foldData = session.$cloneFoldData();\n\n return s;\n };\n this.setSession = function(session, idx) {\n var editor;\n if (idx == null) {\n editor = this.$cEditor;\n } else {\n editor = this.$editors[idx];\n }\n var isUsed = this.$editors.some(function(editor) {\n return editor.session === session;\n });\n\n if (isUsed) {\n session = this.$cloneSession(session);\n }\n editor.setSession(session);\n return session;\n };\n this.getOrientation = function() {\n return this.$orientation;\n };\n this.setOrientation = function(orientation) {\n if (this.$orientation == orientation) {\n return;\n }\n this.$orientation = orientation;\n this.resize();\n };\n this.resize = function() {\n var width = this.$container.clientWidth;\n var height = this.$container.clientHeight;\n var editor;\n\n if (this.$orientation == this.BESIDE) {\n var editorWidth = width / this.$splits;\n for (var i = 0; i < this.$splits; i++) {\n editor = this.$editors[i];\n editor.container.style.width = editorWidth + \"px\";\n editor.container.style.top = \"0px\";\n editor.container.style.left = i * editorWidth + \"px\";\n editor.container.style.height = height + \"px\";\n editor.resize();\n }\n } else {\n var editorHeight = height / this.$splits;\n for (var i = 0; i < this.$splits; i++) {\n editor = this.$editors[i];\n editor.container.style.width = width + \"px\";\n editor.container.style.top = i * editorHeight + \"px\";\n editor.container.style.left = \"0px\";\n editor.container.style.height = editorHeight + \"px\";\n editor.resize();\n }\n }\n };\n\n}).call(Split.prototype);\n\nexports.Split = Split;\n});\n\nace.define(\"ace/ext/split\",[\"require\",\"exports\",\"module\",\"ace/split\"], function(require, exports, module) {\n\"use strict\";\nmodule.exports = require(\"../split\");\n\n}); (function() {\n ace.require([\"ace/ext/split\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","\n; (function() {\n ace.require([\"ace/mode/text\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/theme/dracula\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexports.isDark = true;\nexports.cssClass = \"ace-dracula\";\nexports.cssText = \"\\\n.ace-dracula .ace_gutter {\\\nbackground: #282a36;\\\ncolor: rgb(144,145,148)\\\n}\\\n.ace-dracula .ace_print-margin {\\\nwidth: 1px;\\\nbackground: #44475a\\\n}\\\n.ace-dracula {\\\nbackground-color: #282a36;\\\ncolor: #f8f8f2\\\n}\\\n.ace-dracula .ace_cursor {\\\ncolor: #f8f8f0\\\n}\\\n.ace-dracula .ace_marker-layer .ace_selection {\\\nbackground: #44475a\\\n}\\\n.ace-dracula.ace_multiselect .ace_selection.ace_start {\\\nbox-shadow: 0 0 3px 0px #282a36;\\\nborder-radius: 2px\\\n}\\\n.ace-dracula .ace_marker-layer .ace_step {\\\nbackground: rgb(198, 219, 174)\\\n}\\\n.ace-dracula .ace_marker-layer .ace_bracket {\\\nmargin: -1px 0 0 -1px;\\\nborder: 1px solid #a29709\\\n}\\\n.ace-dracula .ace_marker-layer .ace_active-line {\\\nbackground: #44475a\\\n}\\\n.ace-dracula .ace_gutter-active-line {\\\nbackground-color: #44475a\\\n}\\\n.ace-dracula .ace_marker-layer .ace_selected-word {\\\nbox-shadow: 0px 0px 0px 1px #a29709;\\\nborder-radius: 3px;\\\n}\\\n.ace-dracula .ace_fold {\\\nbackground-color: #50fa7b;\\\nborder-color: #f8f8f2\\\n}\\\n.ace-dracula .ace_keyword {\\\ncolor: #ff79c6\\\n}\\\n.ace-dracula .ace_constant.ace_language {\\\ncolor: #bd93f9\\\n}\\\n.ace-dracula .ace_constant.ace_numeric {\\\ncolor: #bd93f9\\\n}\\\n.ace-dracula .ace_constant.ace_character {\\\ncolor: #bd93f9\\\n}\\\n.ace-dracula .ace_constant.ace_character.ace_escape {\\\ncolor: #ff79c6\\\n}\\\n.ace-dracula .ace_constant.ace_other {\\\ncolor: #bd93f9\\\n}\\\n.ace-dracula .ace_support.ace_function {\\\ncolor: #8be9fd\\\n}\\\n.ace-dracula .ace_support.ace_constant {\\\ncolor: #6be5fd\\\n}\\\n.ace-dracula .ace_support.ace_class {\\\nfont-style: italic;\\\ncolor: #66d9ef\\\n}\\\n.ace-dracula .ace_support.ace_type {\\\nfont-style: italic;\\\ncolor: #66d9ef\\\n}\\\n.ace-dracula .ace_storage {\\\ncolor: #ff79c6\\\n}\\\n.ace-dracula .ace_storage.ace_type {\\\nfont-style: italic;\\\ncolor: #8be9fd\\\n}\\\n.ace-dracula .ace_invalid {\\\ncolor: #F8F8F0;\\\nbackground-color: #ff79c6\\\n}\\\n.ace-dracula .ace_invalid.ace_deprecated {\\\ncolor: #F8F8F0;\\\nbackground-color: #bd93f9\\\n}\\\n.ace-dracula .ace_string {\\\ncolor: #f1fa8c\\\n}\\\n.ace-dracula .ace_comment {\\\ncolor: #6272a4\\\n}\\\n.ace-dracula .ace_variable {\\\ncolor: #50fa7b\\\n}\\\n.ace-dracula .ace_variable.ace_parameter {\\\nfont-style: italic;\\\ncolor: #ffb86c\\\n}\\\n.ace-dracula .ace_entity.ace_other.ace_attribute-name {\\\ncolor: #50fa7b\\\n}\\\n.ace-dracula .ace_entity.ace_name.ace_function {\\\ncolor: #50fa7b\\\n}\\\n.ace-dracula .ace_entity.ace_name.ace_tag {\\\ncolor: #ff79c6\\\n}\\\n.ace-dracula .ace_invisible {\\\ncolor: #626680;\\\n}\\\n.ace-dracula .ace_indent-guide {\\\nbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\\\n}\";\nexports.$selectionColorConflict = true;\n\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n}); (function() {\n ace.require([\"ace/theme/dracula\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/theme/eclipse\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nexports.isDark = false;\nexports.cssText = \".ace-eclipse .ace_gutter {\\\nbackground: #ebebeb;\\\nborder-right: 1px solid rgb(159, 159, 159);\\\ncolor: rgb(136, 136, 136);\\\n}\\\n.ace-eclipse .ace_print-margin {\\\nwidth: 1px;\\\nbackground: #ebebeb;\\\n}\\\n.ace-eclipse {\\\nbackground-color: #FFFFFF;\\\ncolor: black;\\\n}\\\n.ace-eclipse .ace_fold {\\\nbackground-color: rgb(60, 76, 114);\\\n}\\\n.ace-eclipse .ace_cursor {\\\ncolor: black;\\\n}\\\n.ace-eclipse .ace_storage,\\\n.ace-eclipse .ace_keyword,\\\n.ace-eclipse .ace_variable {\\\ncolor: rgb(127, 0, 85);\\\n}\\\n.ace-eclipse .ace_constant.ace_buildin {\\\ncolor: rgb(88, 72, 246);\\\n}\\\n.ace-eclipse .ace_constant.ace_library {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-eclipse .ace_function {\\\ncolor: rgb(60, 76, 114);\\\n}\\\n.ace-eclipse .ace_string {\\\ncolor: rgb(42, 0, 255);\\\n}\\\n.ace-eclipse .ace_comment {\\\ncolor: rgb(113, 150, 130);\\\n}\\\n.ace-eclipse .ace_comment.ace_doc {\\\ncolor: rgb(63, 95, 191);\\\n}\\\n.ace-eclipse .ace_comment.ace_doc.ace_tag {\\\ncolor: rgb(127, 159, 191);\\\n}\\\n.ace-eclipse .ace_constant.ace_numeric {\\\ncolor: darkblue;\\\n}\\\n.ace-eclipse .ace_tag {\\\ncolor: rgb(25, 118, 116);\\\n}\\\n.ace-eclipse .ace_type {\\\ncolor: rgb(127, 0, 127);\\\n}\\\n.ace-eclipse .ace_xml-pe {\\\ncolor: rgb(104, 104, 91);\\\n}\\\n.ace-eclipse .ace_marker-layer .ace_selection {\\\nbackground: rgb(181, 213, 255);\\\n}\\\n.ace-eclipse .ace_marker-layer .ace_bracket {\\\nmargin: -1px 0 0 -1px;\\\nborder: 1px solid rgb(192, 192, 192);\\\n}\\\n.ace-eclipse .ace_meta.ace_tag {\\\ncolor:rgb(25, 118, 116);\\\n}\\\n.ace-eclipse .ace_invisible {\\\ncolor: #ddd;\\\n}\\\n.ace-eclipse .ace_entity.ace_other.ace_attribute-name {\\\ncolor:rgb(127, 0, 127);\\\n}\\\n.ace-eclipse .ace_marker-layer .ace_step {\\\nbackground: rgb(255, 255, 0);\\\n}\\\n.ace-eclipse .ace_active-line {\\\nbackground: rgb(232, 242, 254);\\\n}\\\n.ace-eclipse .ace_gutter-active-line {\\\nbackground-color : #DADADA;\\\n}\\\n.ace-eclipse .ace_marker-layer .ace_selected-word {\\\nborder: 1px solid rgb(181, 213, 255);\\\n}\\\n.ace-eclipse .ace_indent-guide {\\\nbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\\n}\";\n\nexports.cssClass = \"ace-eclipse\";\n\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n}); (function() {\n ace.require([\"ace/theme/eclipse\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n } catch (e) { // happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) { return false; }\n }\n\n return true;\n}\n\nmodule.exports = deepEqual;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","/**\n * Diff Match and Patch\n * Copyright 2018 The diff-match-patch Authors.\n * https://github.com/google/diff-match-patch\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Computes the difference between two texts to create a patch.\n * Applies the patch onto another text, allowing for errors.\n * @author fraser@google.com (Neil Fraser)\n */\n\n/**\n * Class containing the diff, match and patch methods.\n * @constructor\n */\nvar diff_match_patch = function() {\n\n // Defaults.\n // Redefine these in your program to override the defaults.\n\n // Number of seconds to map a diff before giving up (0 for infinity).\n this.Diff_Timeout = 1.0;\n // Cost of an empty edit operation in terms of edit characters.\n this.Diff_EditCost = 4;\n // At what point is no match declared (0.0 = perfection, 1.0 = very loose).\n this.Match_Threshold = 0.5;\n // How far to search for a match (0 = exact location, 1000+ = broad match).\n // A match this many characters away from the expected location will add\n // 1.0 to the score (0.0 is a perfect match).\n this.Match_Distance = 1000;\n // When deleting a large block of text (over ~64 characters), how close do\n // the contents have to be to match the expected contents. (0.0 = perfection,\n // 1.0 = very loose). Note that Match_Threshold controls how closely the\n // end points of a delete need to match.\n this.Patch_DeleteThreshold = 0.5;\n // Chunk size for context length.\n this.Patch_Margin = 4;\n\n // The number of bits in an int.\n this.Match_MaxBits = 32;\n};\n\n\n// DIFF FUNCTIONS\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n/**\n * Class representing one diff tuple.\n * ~Attempts to look like a two-element array (which is what this used to be).~\n * Constructor returns an actual two-element array, to allow destructing @JackuB\n * See https://github.com/JackuB/diff-match-patch/issues/14 for details\n * @param {number} op Operation, one of: DIFF_DELETE, DIFF_INSERT, DIFF_EQUAL.\n * @param {string} text Text to be deleted, inserted, or retained.\n * @constructor\n */\ndiff_match_patch.Diff = function(op, text) {\n return [op, text];\n};\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean=} opt_checklines Optional speedup flag. If present and false,\n * then don't run a line-level diff first to identify the changed areas.\n * Defaults to true, which does a faster, slightly less optimal diff.\n * @param {number=} opt_deadline Optional time when the diff should be complete\n * by. Used internally for recursive calls. Users should set DiffTimeout\n * instead.\n * @return {!Array.} Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_main = function(text1, text2, opt_checklines,\n opt_deadline) {\n // Set a deadline by which time the diff must be complete.\n if (typeof opt_deadline == 'undefined') {\n if (this.Diff_Timeout <= 0) {\n opt_deadline = Number.MAX_VALUE;\n } else {\n opt_deadline = (new Date).getTime() + this.Diff_Timeout * 1000;\n }\n }\n var deadline = opt_deadline;\n\n // Check for null inputs.\n if (text1 == null || text2 == null) {\n throw new Error('Null input. (diff_main)');\n }\n\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [new diff_match_patch.Diff(DIFF_EQUAL, text1)];\n }\n return [];\n }\n\n if (typeof opt_checklines == 'undefined') {\n opt_checklines = true;\n }\n var checklines = opt_checklines;\n\n // Trim off common prefix (speedup).\n var commonlength = this.diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = this.diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = this.diff_compute_(text1, text2, checklines, deadline);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, commonprefix));\n }\n if (commonsuffix) {\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, commonsuffix));\n }\n this.diff_cleanupMerge(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean} checklines Speedup flag. If false, then don't run a\n * line-level diff first to identify the changed areas.\n * If true, then run a faster, slightly less optimal diff.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_compute_ = function(text1, text2, checklines,\n deadline) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [new diff_match_patch.Diff(DIFF_INSERT, text2)];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [new diff_match_patch.Diff(DIFF_DELETE, text1)];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [new diff_match_patch.Diff(DIFF_INSERT, longtext.substring(0, i)),\n new diff_match_patch.Diff(DIFF_EQUAL, shorttext),\n new diff_match_patch.Diff(DIFF_INSERT,\n longtext.substring(i + shorttext.length))];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [new diff_match_patch.Diff(DIFF_DELETE, text1),\n new diff_match_patch.Diff(DIFF_INSERT, text2)];\n }\n\n // Check to see if the problem can be split in two.\n var hm = this.diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline);\n var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline);\n // Merge the results.\n return diffs_a.concat([new diff_match_patch.Diff(DIFF_EQUAL, mid_common)],\n diffs_b);\n }\n\n if (checklines && text1.length > 100 && text2.length > 100) {\n return this.diff_lineMode_(text1, text2, deadline);\n }\n\n return this.diff_bisect_(text1, text2, deadline);\n};\n\n\n/**\n * Do a quick line-level diff on both strings, then rediff the parts for\n * greater accuracy.\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_lineMode_ = function(text1, text2, deadline) {\n // Scan the text on a line-by-line basis first.\n var a = this.diff_linesToChars_(text1, text2);\n text1 = a.chars1;\n text2 = a.chars2;\n var linearray = a.lineArray;\n\n var diffs = this.diff_main(text1, text2, false, deadline);\n\n // Convert the diff back to original text.\n this.diff_charsToLines_(diffs, linearray);\n // Eliminate freak matches (e.g. blank lines)\n this.diff_cleanupSemantic(diffs);\n\n // Rediff any replacement blocks, this time character-by-character.\n // Add a dummy entry at the end.\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete >= 1 && count_insert >= 1) {\n // Delete the offending records and add the merged ones.\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert);\n pointer = pointer - count_delete - count_insert;\n var subDiff =\n this.diff_main(text_delete, text_insert, false, deadline);\n for (var j = subDiff.length - 1; j >= 0; j--) {\n diffs.splice(pointer, 0, subDiff[j]);\n }\n pointer = pointer + subDiff.length;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n pointer++;\n }\n diffs.pop(); // Remove the dummy entry at the end.\n\n return diffs;\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisect_ = function(text1, text2, deadline) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Bail out if deadline is reached.\n if ((new Date()).getTime() > deadline) {\n break;\n }\n\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [new diff_match_patch.Diff(DIFF_DELETE, text1),\n new diff_match_patch.Diff(DIFF_INSERT, text2)];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisectSplit_ = function(text1, text2, x, y,\n deadline) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = this.diff_main(text1a, text2a, false, deadline);\n var diffsb = this.diff_main(text1b, text2b, false, deadline);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Split two texts into an array of strings. Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {{chars1: string, chars2: string, lineArray: !Array.}}\n * An object containing the encoded text1, the encoded text2 and\n * the array of unique strings.\n * The zeroth element of the array of unique strings is intentionally blank.\n * @private\n */\ndiff_match_patch.prototype.diff_linesToChars_ = function(text1, text2) {\n var lineArray = []; // e.g. lineArray[4] == 'Hello\\n'\n var lineHash = {}; // e.g. lineHash['Hello\\n'] == 4\n\n // '\\x00' is a valid character, but various debuggers don't like it.\n // So we'll insert a junk entry to avoid generating a null character.\n lineArray[0] = '';\n\n /**\n * Split a text into an array of strings. Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * Modifies linearray and linehash through being a closure.\n * @param {string} text String to encode.\n * @return {string} Encoded string.\n * @private\n */\n function diff_linesToCharsMunge_(text) {\n var chars = '';\n // Walk the text, pulling out a substring for each line.\n // text.split('\\n') would would temporarily double our memory footprint.\n // Modifying text would create many large strings to garbage collect.\n var lineStart = 0;\n var lineEnd = -1;\n // Keeping our own length variable is faster than looking it up.\n var lineArrayLength = lineArray.length;\n while (lineEnd < text.length - 1) {\n lineEnd = text.indexOf('\\n', lineStart);\n if (lineEnd == -1) {\n lineEnd = text.length - 1;\n }\n var line = text.substring(lineStart, lineEnd + 1);\n\n if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) :\n (lineHash[line] !== undefined)) {\n chars += String.fromCharCode(lineHash[line]);\n } else {\n if (lineArrayLength == maxLines) {\n // Bail out at 65535 because\n // String.fromCharCode(65536) == String.fromCharCode(0)\n line = text.substring(lineStart);\n lineEnd = text.length;\n }\n chars += String.fromCharCode(lineArrayLength);\n lineHash[line] = lineArrayLength;\n lineArray[lineArrayLength++] = line;\n }\n lineStart = lineEnd + 1;\n }\n return chars;\n }\n // Allocate 2/3rds of the space for text1, the rest for text2.\n var maxLines = 40000;\n var chars1 = diff_linesToCharsMunge_(text1);\n maxLines = 65535;\n var chars2 = diff_linesToCharsMunge_(text2);\n return {chars1: chars1, chars2: chars2, lineArray: lineArray};\n};\n\n\n/**\n * Rehydrate the text in a diff from a string of line hashes to real lines of\n * text.\n * @param {!Array.} diffs Array of diff tuples.\n * @param {!Array.} lineArray Array of unique strings.\n * @private\n */\ndiff_match_patch.prototype.diff_charsToLines_ = function(diffs, lineArray) {\n for (var i = 0; i < diffs.length; i++) {\n var chars = diffs[i][1];\n var text = [];\n for (var j = 0; j < chars.length; j++) {\n text[j] = lineArray[chars.charCodeAt(j)];\n }\n diffs[i][1] = text.join('');\n }\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\ndiff_match_patch.prototype.diff_commonPrefix = function(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\ndiff_match_patch.prototype.diff_commonSuffix = function(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine if the suffix of one string is the prefix of another.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of the first\n * string and the start of the second string.\n * @private\n */\ndiff_match_patch.prototype.diff_commonOverlap_ = function(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n // Eliminate the null case.\n if (text1_length == 0 || text2_length == 0) {\n return 0;\n }\n // Truncate the longer string.\n if (text1_length > text2_length) {\n text1 = text1.substring(text1_length - text2_length);\n } else if (text1_length < text2_length) {\n text2 = text2.substring(0, text1_length);\n }\n var text_length = Math.min(text1_length, text2_length);\n // Quick check for the worst case.\n if (text1 == text2) {\n return text_length;\n }\n\n // Start by looking for a single character match\n // and increase length until no match is found.\n // Performance analysis: https://neil.fraser.name/news/2010/11/04/\n var best = 0;\n var length = 1;\n while (true) {\n var pattern = text1.substring(text_length - length);\n var found = text2.indexOf(pattern);\n if (found == -1) {\n return best;\n }\n length += found;\n if (found == 0 || text1.substring(text_length - length) ==\n text2.substring(0, length)) {\n best = length;\n length++;\n }\n }\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n * @private\n */\ndiff_match_patch.prototype.diff_halfMatch_ = function(text1, text2) {\n if (this.Diff_Timeout <= 0) {\n // Don't risk returning a non-optimal diff if we have unlimited time.\n return null;\n }\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n var dmp = this; // 'this' becomes 'window' in a closure.\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = dmp.diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reduce the number of edits by eliminating semantically trivial equalities.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemantic = function(diffs) {\n var changes = false;\n var equalities = []; // Stack of indices where equalities are found.\n var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n /** @type {?string} */\n var lastEquality = null;\n // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n var pointer = 0; // Index of current position.\n // Number of characters that changed prior to the equality.\n var length_insertions1 = 0;\n var length_deletions1 = 0;\n // Number of characters that changed after the equality.\n var length_insertions2 = 0;\n var length_deletions2 = 0;\n while (pointer < diffs.length) {\n if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found.\n equalities[equalitiesLength++] = pointer;\n length_insertions1 = length_insertions2;\n length_deletions1 = length_deletions2;\n length_insertions2 = 0;\n length_deletions2 = 0;\n lastEquality = diffs[pointer][1];\n } else { // An insertion or deletion.\n if (diffs[pointer][0] == DIFF_INSERT) {\n length_insertions2 += diffs[pointer][1].length;\n } else {\n length_deletions2 += diffs[pointer][1].length;\n }\n // Eliminate an equality that is smaller or equal to the edits on both\n // sides of it.\n if (lastEquality && (lastEquality.length <=\n Math.max(length_insertions1, length_deletions1)) &&\n (lastEquality.length <= Math.max(length_insertions2,\n length_deletions2))) {\n // Duplicate record.\n diffs.splice(equalities[equalitiesLength - 1], 0,\n new diff_match_patch.Diff(DIFF_DELETE, lastEquality));\n // Change second copy to insert.\n diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n // Throw away the equality we just deleted.\n equalitiesLength--;\n // Throw away the previous equality (it needs to be reevaluated).\n equalitiesLength--;\n pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n length_insertions1 = 0; // Reset the counters.\n length_deletions1 = 0;\n length_insertions2 = 0;\n length_deletions2 = 0;\n lastEquality = null;\n changes = true;\n }\n }\n pointer++;\n }\n\n // Normalize the diff.\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n this.diff_cleanupSemanticLossless(diffs);\n\n // Find any overlaps between deletions and insertions.\n // e.g: abcxxxxxxdef\n // -> abcxxxdef\n // e.g: xxxabcdefxxx\n // -> defxxxabc\n // Only extract an overlap if it is as big as the edit ahead or behind it.\n pointer = 1;\n while (pointer < diffs.length) {\n if (diffs[pointer - 1][0] == DIFF_DELETE &&\n diffs[pointer][0] == DIFF_INSERT) {\n var deletion = diffs[pointer - 1][1];\n var insertion = diffs[pointer][1];\n var overlap_length1 = this.diff_commonOverlap_(deletion, insertion);\n var overlap_length2 = this.diff_commonOverlap_(insertion, deletion);\n if (overlap_length1 >= overlap_length2) {\n if (overlap_length1 >= deletion.length / 2 ||\n overlap_length1 >= insertion.length / 2) {\n // Overlap found. Insert an equality and trim the surrounding edits.\n diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL,\n insertion.substring(0, overlap_length1)));\n diffs[pointer - 1][1] =\n deletion.substring(0, deletion.length - overlap_length1);\n diffs[pointer + 1][1] = insertion.substring(overlap_length1);\n pointer++;\n }\n } else {\n if (overlap_length2 >= deletion.length / 2 ||\n overlap_length2 >= insertion.length / 2) {\n // Reverse overlap found.\n // Insert an equality and swap and trim the surrounding edits.\n diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL,\n deletion.substring(0, overlap_length2)));\n diffs[pointer - 1][0] = DIFF_INSERT;\n diffs[pointer - 1][1] =\n insertion.substring(0, insertion.length - overlap_length2);\n diffs[pointer + 1][0] = DIFF_DELETE;\n diffs[pointer + 1][1] =\n deletion.substring(overlap_length2);\n pointer++;\n }\n }\n pointer++;\n }\n pointer++;\n }\n};\n\n\n/**\n * Look for single edits surrounded on both sides by equalities\n * which can be shifted sideways to align the edit to a word boundary.\n * e.g: The cat came. -> The cat came.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemanticLossless = function(diffs) {\n /**\n * Given two strings, compute a score representing whether the internal\n * boundary falls on logical boundaries.\n * Scores range from 6 (best) to 0 (worst).\n * Closure, but does not reference any external variables.\n * @param {string} one First string.\n * @param {string} two Second string.\n * @return {number} The score.\n * @private\n */\n function diff_cleanupSemanticScore_(one, two) {\n if (!one || !two) {\n // Edges are the best.\n return 6;\n }\n\n // Each port of this function behaves slightly differently due to\n // subtle differences in each language's definition of things like\n // 'whitespace'. Since this function's purpose is largely cosmetic,\n // the choice has been made to use each language's native features\n // rather than force total conformity.\n var char1 = one.charAt(one.length - 1);\n var char2 = two.charAt(0);\n var nonAlphaNumeric1 = char1.match(diff_match_patch.nonAlphaNumericRegex_);\n var nonAlphaNumeric2 = char2.match(diff_match_patch.nonAlphaNumericRegex_);\n var whitespace1 = nonAlphaNumeric1 &&\n char1.match(diff_match_patch.whitespaceRegex_);\n var whitespace2 = nonAlphaNumeric2 &&\n char2.match(diff_match_patch.whitespaceRegex_);\n var lineBreak1 = whitespace1 &&\n char1.match(diff_match_patch.linebreakRegex_);\n var lineBreak2 = whitespace2 &&\n char2.match(diff_match_patch.linebreakRegex_);\n var blankLine1 = lineBreak1 &&\n one.match(diff_match_patch.blanklineEndRegex_);\n var blankLine2 = lineBreak2 &&\n two.match(diff_match_patch.blanklineStartRegex_);\n\n if (blankLine1 || blankLine2) {\n // Five points for blank lines.\n return 5;\n } else if (lineBreak1 || lineBreak2) {\n // Four points for line breaks.\n return 4;\n } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n // Three points for end of sentences.\n return 3;\n } else if (whitespace1 || whitespace2) {\n // Two points for whitespace.\n return 2;\n } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n // One point for non-alphanumeric.\n return 1;\n }\n return 0;\n }\n\n var pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n var equality1 = diffs[pointer - 1][1];\n var edit = diffs[pointer][1];\n var equality2 = diffs[pointer + 1][1];\n\n // First, shift the edit as far left as possible.\n var commonOffset = this.diff_commonSuffix(equality1, edit);\n if (commonOffset) {\n var commonString = edit.substring(edit.length - commonOffset);\n equality1 = equality1.substring(0, equality1.length - commonOffset);\n edit = commonString + edit.substring(0, edit.length - commonOffset);\n equality2 = commonString + equality2;\n }\n\n // Second, step character by character right, looking for the best fit.\n var bestEquality1 = equality1;\n var bestEdit = edit;\n var bestEquality2 = equality2;\n var bestScore = diff_cleanupSemanticScore_(equality1, edit) +\n diff_cleanupSemanticScore_(edit, equality2);\n while (edit.charAt(0) === equality2.charAt(0)) {\n equality1 += edit.charAt(0);\n edit = edit.substring(1) + equality2.charAt(0);\n equality2 = equality2.substring(1);\n var score = diff_cleanupSemanticScore_(equality1, edit) +\n diff_cleanupSemanticScore_(edit, equality2);\n // The >= encourages trailing rather than leading whitespace on edits.\n if (score >= bestScore) {\n bestScore = score;\n bestEquality1 = equality1;\n bestEdit = edit;\n bestEquality2 = equality2;\n }\n }\n\n if (diffs[pointer - 1][1] != bestEquality1) {\n // We have an improvement, save it back to the diff.\n if (bestEquality1) {\n diffs[pointer - 1][1] = bestEquality1;\n } else {\n diffs.splice(pointer - 1, 1);\n pointer--;\n }\n diffs[pointer][1] = bestEdit;\n if (bestEquality2) {\n diffs[pointer + 1][1] = bestEquality2;\n } else {\n diffs.splice(pointer + 1, 1);\n pointer--;\n }\n }\n }\n pointer++;\n }\n};\n\n// Define some regex patterns for matching boundaries.\ndiff_match_patch.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;\ndiff_match_patch.whitespaceRegex_ = /\\s/;\ndiff_match_patch.linebreakRegex_ = /[\\r\\n]/;\ndiff_match_patch.blanklineEndRegex_ = /\\n\\r?\\n$/;\ndiff_match_patch.blanklineStartRegex_ = /^\\r?\\n\\r?\\n/;\n\n/**\n * Reduce the number of edits by eliminating operationally trivial equalities.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupEfficiency = function(diffs) {\n var changes = false;\n var equalities = []; // Stack of indices where equalities are found.\n var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n /** @type {?string} */\n var lastEquality = null;\n // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n var pointer = 0; // Index of current position.\n // Is there an insertion operation before the last equality.\n var pre_ins = false;\n // Is there a deletion operation before the last equality.\n var pre_del = false;\n // Is there an insertion operation after the last equality.\n var post_ins = false;\n // Is there a deletion operation after the last equality.\n var post_del = false;\n while (pointer < diffs.length) {\n if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found.\n if (diffs[pointer][1].length < this.Diff_EditCost &&\n (post_ins || post_del)) {\n // Candidate found.\n equalities[equalitiesLength++] = pointer;\n pre_ins = post_ins;\n pre_del = post_del;\n lastEquality = diffs[pointer][1];\n } else {\n // Not a candidate, and can never become one.\n equalitiesLength = 0;\n lastEquality = null;\n }\n post_ins = post_del = false;\n } else { // An insertion or deletion.\n if (diffs[pointer][0] == DIFF_DELETE) {\n post_del = true;\n } else {\n post_ins = true;\n }\n /*\n * Five types to be split:\n * ABXYCD\n * AXCD\n * ABXC\n * AXCD\n * ABXC\n */\n if (lastEquality && ((pre_ins && pre_del && post_ins && post_del) ||\n ((lastEquality.length < this.Diff_EditCost / 2) &&\n (pre_ins + pre_del + post_ins + post_del) == 3))) {\n // Duplicate record.\n diffs.splice(equalities[equalitiesLength - 1], 0,\n new diff_match_patch.Diff(DIFF_DELETE, lastEquality));\n // Change second copy to insert.\n diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n equalitiesLength--; // Throw away the equality we just deleted;\n lastEquality = null;\n if (pre_ins && pre_del) {\n // No changes made which could affect previous entry, keep going.\n post_ins = post_del = true;\n equalitiesLength = 0;\n } else {\n equalitiesLength--; // Throw away the previous equality.\n pointer = equalitiesLength > 0 ?\n equalities[equalitiesLength - 1] : -1;\n post_ins = post_del = false;\n }\n changes = true;\n }\n }\n pointer++;\n }\n\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupMerge = function(diffs) {\n // Add a dummy entry at the end.\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = this.diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, new diff_match_patch.Diff(DIFF_EQUAL,\n text_insert.substring(0, commonlength)));\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = this.diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n pointer -= count_delete + count_insert;\n diffs.splice(pointer, count_delete + count_insert);\n if (text_delete.length) {\n diffs.splice(pointer, 0,\n new diff_match_patch.Diff(DIFF_DELETE, text_delete));\n pointer++;\n }\n if (text_insert.length) {\n diffs.splice(pointer, 0,\n new diff_match_patch.Diff(DIFF_INSERT, text_insert));\n pointer++;\n }\n pointer++;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n};\n\n\n/**\n * loc is a location in text1, compute and return the equivalent location in\n * text2.\n * e.g. 'The cat' vs 'The big cat', 1->1, 5->8\n * @param {!Array.} diffs Array of diff tuples.\n * @param {number} loc Location within text1.\n * @return {number} Location within text2.\n */\ndiff_match_patch.prototype.diff_xIndex = function(diffs, loc) {\n var chars1 = 0;\n var chars2 = 0;\n var last_chars1 = 0;\n var last_chars2 = 0;\n var x;\n for (x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_INSERT) { // Equality or deletion.\n chars1 += diffs[x][1].length;\n }\n if (diffs[x][0] !== DIFF_DELETE) { // Equality or insertion.\n chars2 += diffs[x][1].length;\n }\n if (chars1 > loc) { // Overshot the location.\n break;\n }\n last_chars1 = chars1;\n last_chars2 = chars2;\n }\n // Was the location was deleted?\n if (diffs.length != x && diffs[x][0] === DIFF_DELETE) {\n return last_chars2;\n }\n // Add the remaining character length.\n return last_chars2 + (loc - last_chars1);\n};\n\n\n/**\n * Convert a diff array into a pretty HTML report.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} HTML representation.\n */\ndiff_match_patch.prototype.diff_prettyHtml = function(diffs) {\n var html = [];\n var pattern_amp = /&/g;\n var pattern_lt = //g;\n var pattern_para = /\\n/g;\n for (var x = 0; x < diffs.length; x++) {\n var op = diffs[x][0]; // Operation (insert, delete, equal)\n var data = diffs[x][1]; // Text of change.\n var text = data.replace(pattern_amp, '&').replace(pattern_lt, '<')\n .replace(pattern_gt, '>').replace(pattern_para, '¶
');\n switch (op) {\n case DIFF_INSERT:\n html[x] = '' + text + '';\n break;\n case DIFF_DELETE:\n html[x] = '' + text + '';\n break;\n case DIFF_EQUAL:\n html[x] = '' + text + '';\n break;\n }\n }\n return html.join('');\n};\n\n\n/**\n * Compute and return the source text (all equalities and deletions).\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Source text.\n */\ndiff_match_patch.prototype.diff_text1 = function(diffs) {\n var text = [];\n for (var x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_INSERT) {\n text[x] = diffs[x][1];\n }\n }\n return text.join('');\n};\n\n\n/**\n * Compute and return the destination text (all equalities and insertions).\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Destination text.\n */\ndiff_match_patch.prototype.diff_text2 = function(diffs) {\n var text = [];\n for (var x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_DELETE) {\n text[x] = diffs[x][1];\n }\n }\n return text.join('');\n};\n\n\n/**\n * Compute the Levenshtein distance; the number of inserted, deleted or\n * substituted characters.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {number} Number of changes.\n */\ndiff_match_patch.prototype.diff_levenshtein = function(diffs) {\n var levenshtein = 0;\n var insertions = 0;\n var deletions = 0;\n for (var x = 0; x < diffs.length; x++) {\n var op = diffs[x][0];\n var data = diffs[x][1];\n switch (op) {\n case DIFF_INSERT:\n insertions += data.length;\n break;\n case DIFF_DELETE:\n deletions += data.length;\n break;\n case DIFF_EQUAL:\n // A deletion and an insertion is one substitution.\n levenshtein += Math.max(insertions, deletions);\n insertions = 0;\n deletions = 0;\n break;\n }\n }\n levenshtein += Math.max(insertions, deletions);\n return levenshtein;\n};\n\n\n/**\n * Crush the diff into an encoded string which describes the operations\n * required to transform text1 into text2.\n * E.g. =3\\t-2\\t+ing -> Keep 3 chars, delete 2 chars, insert 'ing'.\n * Operations are tab-separated. Inserted text is escaped using %xx notation.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Delta text.\n */\ndiff_match_patch.prototype.diff_toDelta = function(diffs) {\n var text = [];\n for (var x = 0; x < diffs.length; x++) {\n switch (diffs[x][0]) {\n case DIFF_INSERT:\n text[x] = '+' + encodeURI(diffs[x][1]);\n break;\n case DIFF_DELETE:\n text[x] = '-' + diffs[x][1].length;\n break;\n case DIFF_EQUAL:\n text[x] = '=' + diffs[x][1].length;\n break;\n }\n }\n return text.join('\\t').replace(/%20/g, ' ');\n};\n\n\n/**\n * Given the original text1, and an encoded string which describes the\n * operations required to transform text1 into text2, compute the full diff.\n * @param {string} text1 Source string for the diff.\n * @param {string} delta Delta text.\n * @return {!Array.} Array of diff tuples.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.diff_fromDelta = function(text1, delta) {\n var diffs = [];\n var diffsLength = 0; // Keeping our own length var is faster in JS.\n var pointer = 0; // Cursor in text1\n var tokens = delta.split(/\\t/g);\n for (var x = 0; x < tokens.length; x++) {\n // Each token begins with a one character parameter which specifies the\n // operation of this token (delete, insert, equality).\n var param = tokens[x].substring(1);\n switch (tokens[x].charAt(0)) {\n case '+':\n try {\n diffs[diffsLength++] =\n new diff_match_patch.Diff(DIFF_INSERT, decodeURI(param));\n } catch (ex) {\n // Malformed URI sequence.\n throw new Error('Illegal escape in diff_fromDelta: ' + param);\n }\n break;\n case '-':\n // Fall through.\n case '=':\n var n = parseInt(param, 10);\n if (isNaN(n) || n < 0) {\n throw new Error('Invalid number in diff_fromDelta: ' + param);\n }\n var text = text1.substring(pointer, pointer += n);\n if (tokens[x].charAt(0) == '=') {\n diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_EQUAL, text);\n } else {\n diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_DELETE, text);\n }\n break;\n default:\n // Blank tokens are ok (from a trailing \\t).\n // Anything else is an error.\n if (tokens[x]) {\n throw new Error('Invalid diff operation in diff_fromDelta: ' +\n tokens[x]);\n }\n }\n }\n if (pointer != text1.length) {\n throw new Error('Delta length (' + pointer +\n ') does not equal source text length (' + text1.length + ').');\n }\n return diffs;\n};\n\n\n// MATCH FUNCTIONS\n\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc'.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n */\ndiff_match_patch.prototype.match_main = function(text, pattern, loc) {\n // Check for null inputs.\n if (text == null || pattern == null || loc == null) {\n throw new Error('Null input. (match_main)');\n }\n\n loc = Math.max(0, Math.min(loc, text.length));\n if (text == pattern) {\n // Shortcut (potentially not guaranteed by the algorithm)\n return 0;\n } else if (!text.length) {\n // Nothing to match.\n return -1;\n } else if (text.substring(loc, loc + pattern.length) == pattern) {\n // Perfect match at the perfect spot! (Includes case of null pattern)\n return loc;\n } else {\n // Do a fuzzy compare.\n return this.match_bitap_(text, pattern, loc);\n }\n};\n\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc' using the\n * Bitap algorithm.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n * @private\n */\ndiff_match_patch.prototype.match_bitap_ = function(text, pattern, loc) {\n if (pattern.length > this.Match_MaxBits) {\n throw new Error('Pattern too long for this browser.');\n }\n\n // Initialise the alphabet.\n var s = this.match_alphabet_(pattern);\n\n var dmp = this; // 'this' becomes 'window' in a closure.\n\n /**\n * Compute and return the score for a match with e errors and x location.\n * Accesses loc and pattern through being a closure.\n * @param {number} e Number of errors in match.\n * @param {number} x Location of match.\n * @return {number} Overall score for match (0.0 = good, 1.0 = bad).\n * @private\n */\n function match_bitapScore_(e, x) {\n var accuracy = e / pattern.length;\n var proximity = Math.abs(loc - x);\n if (!dmp.Match_Distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy;\n }\n return accuracy + (proximity / dmp.Match_Distance);\n }\n\n // Highest score beyond which we give up.\n var score_threshold = this.Match_Threshold;\n // Is there a nearby exact match? (speedup)\n var best_loc = text.indexOf(pattern, loc);\n if (best_loc != -1) {\n score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);\n // What about in the other direction? (speedup)\n best_loc = text.lastIndexOf(pattern, loc + pattern.length);\n if (best_loc != -1) {\n score_threshold =\n Math.min(match_bitapScore_(0, best_loc), score_threshold);\n }\n }\n\n // Initialise the bit arrays.\n var matchmask = 1 << (pattern.length - 1);\n best_loc = -1;\n\n var bin_min, bin_mid;\n var bin_max = pattern.length + text.length;\n var last_rd;\n for (var d = 0; d < pattern.length; d++) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from 'loc' we can stray at this\n // error level.\n bin_min = 0;\n bin_mid = bin_max;\n while (bin_min < bin_mid) {\n if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {\n bin_min = bin_mid;\n } else {\n bin_max = bin_mid;\n }\n bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);\n }\n // Use the result from this iteration as the maximum for the next.\n bin_max = bin_mid;\n var start = Math.max(1, loc - bin_mid + 1);\n var finish = Math.min(loc + bin_mid, text.length) + pattern.length;\n\n var rd = Array(finish + 2);\n rd[finish + 1] = (1 << d) - 1;\n for (var j = finish; j >= start; j--) {\n // The alphabet (s) is a sparse hash, so the following line generates\n // warnings.\n var charMatch = s[text.charAt(j - 1)];\n if (d === 0) { // First pass: exact match.\n rd[j] = ((rd[j + 1] << 1) | 1) & charMatch;\n } else { // Subsequent passes: fuzzy match.\n rd[j] = (((rd[j + 1] << 1) | 1) & charMatch) |\n (((last_rd[j + 1] | last_rd[j]) << 1) | 1) |\n last_rd[j + 1];\n }\n if (rd[j] & matchmask) {\n var score = match_bitapScore_(d, j - 1);\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (score <= score_threshold) {\n // Told you so.\n score_threshold = score;\n best_loc = j - 1;\n if (best_loc > loc) {\n // When passing loc, don't exceed our current distance from loc.\n start = Math.max(1, 2 * loc - best_loc);\n } else {\n // Already passed loc, downhill from here on in.\n break;\n }\n }\n }\n }\n // No hope for a (better) match at greater error levels.\n if (match_bitapScore_(d + 1, loc) > score_threshold) {\n break;\n }\n last_rd = rd;\n }\n return best_loc;\n};\n\n\n/**\n * Initialise the alphabet for the Bitap algorithm.\n * @param {string} pattern The text to encode.\n * @return {!Object} Hash of character locations.\n * @private\n */\ndiff_match_patch.prototype.match_alphabet_ = function(pattern) {\n var s = {};\n for (var i = 0; i < pattern.length; i++) {\n s[pattern.charAt(i)] = 0;\n }\n for (var i = 0; i < pattern.length; i++) {\n s[pattern.charAt(i)] |= 1 << (pattern.length - i - 1);\n }\n return s;\n};\n\n\n// PATCH FUNCTIONS\n\n\n/**\n * Increase the context until it is unique,\n * but don't let the pattern expand beyond Match_MaxBits.\n * @param {!diff_match_patch.patch_obj} patch The patch to grow.\n * @param {string} text Source text.\n * @private\n */\ndiff_match_patch.prototype.patch_addContext_ = function(patch, text) {\n if (text.length == 0) {\n return;\n }\n if (patch.start2 === null) {\n throw Error('patch not initialized');\n }\n var pattern = text.substring(patch.start2, patch.start2 + patch.length1);\n var padding = 0;\n\n // Look for the first and last matches of pattern in text. If two different\n // matches are found, increase the pattern length.\n while (text.indexOf(pattern) != text.lastIndexOf(pattern) &&\n pattern.length < this.Match_MaxBits - this.Patch_Margin -\n this.Patch_Margin) {\n padding += this.Patch_Margin;\n pattern = text.substring(patch.start2 - padding,\n patch.start2 + patch.length1 + padding);\n }\n // Add one chunk for good luck.\n padding += this.Patch_Margin;\n\n // Add the prefix.\n var prefix = text.substring(patch.start2 - padding, patch.start2);\n if (prefix) {\n patch.diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, prefix));\n }\n // Add the suffix.\n var suffix = text.substring(patch.start2 + patch.length1,\n patch.start2 + patch.length1 + padding);\n if (suffix) {\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, suffix));\n }\n\n // Roll back the start points.\n patch.start1 -= prefix.length;\n patch.start2 -= prefix.length;\n // Extend the lengths.\n patch.length1 += prefix.length + suffix.length;\n patch.length2 += prefix.length + suffix.length;\n};\n\n\n/**\n * Compute a list of patches to turn text1 into text2.\n * Use diffs if provided, otherwise compute it ourselves.\n * There are four ways to call this function, depending on what data is\n * available to the caller:\n * Method 1:\n * a = text1, b = text2\n * Method 2:\n * a = diffs\n * Method 3 (optimal):\n * a = text1, b = diffs\n * Method 4 (deprecated, use method 3):\n * a = text1, b = text2, c = diffs\n *\n * @param {string|!Array.} a text1 (methods 1,3,4) or\n * Array of diff tuples for text1 to text2 (method 2).\n * @param {string|!Array.=} opt_b text2 (methods 1,4) or\n * Array of diff tuples for text1 to text2 (method 3) or undefined (method 2).\n * @param {string|!Array.=} opt_c Array of diff tuples\n * for text1 to text2 (method 4) or undefined (methods 1,2,3).\n * @return {!Array.} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_make = function(a, opt_b, opt_c) {\n var text1, diffs;\n if (typeof a == 'string' && typeof opt_b == 'string' &&\n typeof opt_c == 'undefined') {\n // Method 1: text1, text2\n // Compute diffs from text1 and text2.\n text1 = /** @type {string} */(a);\n diffs = this.diff_main(text1, /** @type {string} */(opt_b), true);\n if (diffs.length > 2) {\n this.diff_cleanupSemantic(diffs);\n this.diff_cleanupEfficiency(diffs);\n }\n } else if (a && typeof a == 'object' && typeof opt_b == 'undefined' &&\n typeof opt_c == 'undefined') {\n // Method 2: diffs\n // Compute text1 from diffs.\n diffs = /** @type {!Array.} */(a);\n text1 = this.diff_text1(diffs);\n } else if (typeof a == 'string' && opt_b && typeof opt_b == 'object' &&\n typeof opt_c == 'undefined') {\n // Method 3: text1, diffs\n text1 = /** @type {string} */(a);\n diffs = /** @type {!Array.} */(opt_b);\n } else if (typeof a == 'string' && typeof opt_b == 'string' &&\n opt_c && typeof opt_c == 'object') {\n // Method 4: text1, text2, diffs\n // text2 is not used.\n text1 = /** @type {string} */(a);\n diffs = /** @type {!Array.} */(opt_c);\n } else {\n throw new Error('Unknown call format to patch_make.');\n }\n\n if (diffs.length === 0) {\n return []; // Get rid of the null case.\n }\n var patches = [];\n var patch = new diff_match_patch.patch_obj();\n var patchDiffLength = 0; // Keeping our own length var is faster in JS.\n var char_count1 = 0; // Number of characters into the text1 string.\n var char_count2 = 0; // Number of characters into the text2 string.\n // Start with text1 (prepatch_text) and apply the diffs until we arrive at\n // text2 (postpatch_text). We recreate the patches one by one to determine\n // context info.\n var prepatch_text = text1;\n var postpatch_text = text1;\n for (var x = 0; x < diffs.length; x++) {\n var diff_type = diffs[x][0];\n var diff_text = diffs[x][1];\n\n if (!patchDiffLength && diff_type !== DIFF_EQUAL) {\n // A new patch starts here.\n patch.start1 = char_count1;\n patch.start2 = char_count2;\n }\n\n switch (diff_type) {\n case DIFF_INSERT:\n patch.diffs[patchDiffLength++] = diffs[x];\n patch.length2 += diff_text.length;\n postpatch_text = postpatch_text.substring(0, char_count2) + diff_text +\n postpatch_text.substring(char_count2);\n break;\n case DIFF_DELETE:\n patch.length1 += diff_text.length;\n patch.diffs[patchDiffLength++] = diffs[x];\n postpatch_text = postpatch_text.substring(0, char_count2) +\n postpatch_text.substring(char_count2 +\n diff_text.length);\n break;\n case DIFF_EQUAL:\n if (diff_text.length <= 2 * this.Patch_Margin &&\n patchDiffLength && diffs.length != x + 1) {\n // Small equality inside a patch.\n patch.diffs[patchDiffLength++] = diffs[x];\n patch.length1 += diff_text.length;\n patch.length2 += diff_text.length;\n } else if (diff_text.length >= 2 * this.Patch_Margin) {\n // Time for a new patch.\n if (patchDiffLength) {\n this.patch_addContext_(patch, prepatch_text);\n patches.push(patch);\n patch = new diff_match_patch.patch_obj();\n patchDiffLength = 0;\n // Unlike Unidiff, our patch lists have a rolling context.\n // https://github.com/google/diff-match-patch/wiki/Unidiff\n // Update prepatch text & pos to reflect the application of the\n // just completed patch.\n prepatch_text = postpatch_text;\n char_count1 = char_count2;\n }\n }\n break;\n }\n\n // Update the current character count.\n if (diff_type !== DIFF_INSERT) {\n char_count1 += diff_text.length;\n }\n if (diff_type !== DIFF_DELETE) {\n char_count2 += diff_text.length;\n }\n }\n // Pick up the leftover patch if not empty.\n if (patchDiffLength) {\n this.patch_addContext_(patch, prepatch_text);\n patches.push(patch);\n }\n\n return patches;\n};\n\n\n/**\n * Given an array of patches, return another array that is identical.\n * @param {!Array.} patches Array of Patch objects.\n * @return {!Array.} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_deepCopy = function(patches) {\n // Making deep copies is hard in JavaScript.\n var patchesCopy = [];\n for (var x = 0; x < patches.length; x++) {\n var patch = patches[x];\n var patchCopy = new diff_match_patch.patch_obj();\n patchCopy.diffs = [];\n for (var y = 0; y < patch.diffs.length; y++) {\n patchCopy.diffs[y] =\n new diff_match_patch.Diff(patch.diffs[y][0], patch.diffs[y][1]);\n }\n patchCopy.start1 = patch.start1;\n patchCopy.start2 = patch.start2;\n patchCopy.length1 = patch.length1;\n patchCopy.length2 = patch.length2;\n patchesCopy[x] = patchCopy;\n }\n return patchesCopy;\n};\n\n\n/**\n * Merge a set of patches onto the text. Return a patched text, as well\n * as a list of true/false values indicating which patches were applied.\n * @param {!Array.} patches Array of Patch objects.\n * @param {string} text Old text.\n * @return {!Array.>} Two element Array, containing the\n * new text and an array of boolean values.\n */\ndiff_match_patch.prototype.patch_apply = function(patches, text) {\n if (patches.length == 0) {\n return [text, []];\n }\n\n // Deep copy the patches so that no changes are made to originals.\n patches = this.patch_deepCopy(patches);\n\n var nullPadding = this.patch_addPadding(patches);\n text = nullPadding + text + nullPadding;\n\n this.patch_splitMax(patches);\n // delta keeps track of the offset between the expected and actual location\n // of the previous patch. If there are patches expected at positions 10 and\n // 20, but the first patch was found at 12, delta is 2 and the second patch\n // has an effective expected position of 22.\n var delta = 0;\n var results = [];\n for (var x = 0; x < patches.length; x++) {\n var expected_loc = patches[x].start2 + delta;\n var text1 = this.diff_text1(patches[x].diffs);\n var start_loc;\n var end_loc = -1;\n if (text1.length > this.Match_MaxBits) {\n // patch_splitMax will only provide an oversized pattern in the case of\n // a monster delete.\n start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits),\n expected_loc);\n if (start_loc != -1) {\n end_loc = this.match_main(text,\n text1.substring(text1.length - this.Match_MaxBits),\n expected_loc + text1.length - this.Match_MaxBits);\n if (end_loc == -1 || start_loc >= end_loc) {\n // Can't find valid trailing context. Drop this patch.\n start_loc = -1;\n }\n }\n } else {\n start_loc = this.match_main(text, text1, expected_loc);\n }\n if (start_loc == -1) {\n // No match found. :(\n results[x] = false;\n // Subtract the delta for this failed patch from subsequent patches.\n delta -= patches[x].length2 - patches[x].length1;\n } else {\n // Found a match. :)\n results[x] = true;\n delta = start_loc - expected_loc;\n var text2;\n if (end_loc == -1) {\n text2 = text.substring(start_loc, start_loc + text1.length);\n } else {\n text2 = text.substring(start_loc, end_loc + this.Match_MaxBits);\n }\n if (text1 == text2) {\n // Perfect match, just shove the replacement text in.\n text = text.substring(0, start_loc) +\n this.diff_text2(patches[x].diffs) +\n text.substring(start_loc + text1.length);\n } else {\n // Imperfect match. Run a diff to get a framework of equivalent\n // indices.\n var diffs = this.diff_main(text1, text2, false);\n if (text1.length > this.Match_MaxBits &&\n this.diff_levenshtein(diffs) / text1.length >\n this.Patch_DeleteThreshold) {\n // The end points match, but the content is unacceptably bad.\n results[x] = false;\n } else {\n this.diff_cleanupSemanticLossless(diffs);\n var index1 = 0;\n var index2;\n for (var y = 0; y < patches[x].diffs.length; y++) {\n var mod = patches[x].diffs[y];\n if (mod[0] !== DIFF_EQUAL) {\n index2 = this.diff_xIndex(diffs, index1);\n }\n if (mod[0] === DIFF_INSERT) { // Insertion\n text = text.substring(0, start_loc + index2) + mod[1] +\n text.substring(start_loc + index2);\n } else if (mod[0] === DIFF_DELETE) { // Deletion\n text = text.substring(0, start_loc + index2) +\n text.substring(start_loc + this.diff_xIndex(diffs,\n index1 + mod[1].length));\n }\n if (mod[0] !== DIFF_DELETE) {\n index1 += mod[1].length;\n }\n }\n }\n }\n }\n }\n // Strip the padding off.\n text = text.substring(nullPadding.length, text.length - nullPadding.length);\n return [text, results];\n};\n\n\n/**\n * Add some padding on text start and end so that edges can match something.\n * Intended to be called only from within patch_apply.\n * @param {!Array.} patches Array of Patch objects.\n * @return {string} The padding string added to each side.\n */\ndiff_match_patch.prototype.patch_addPadding = function(patches) {\n var paddingLength = this.Patch_Margin;\n var nullPadding = '';\n for (var x = 1; x <= paddingLength; x++) {\n nullPadding += String.fromCharCode(x);\n }\n\n // Bump all the patches forward.\n for (var x = 0; x < patches.length; x++) {\n patches[x].start1 += paddingLength;\n patches[x].start2 += paddingLength;\n }\n\n // Add some padding on start of first diff.\n var patch = patches[0];\n var diffs = patch.diffs;\n if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) {\n // Add nullPadding equality.\n diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n patch.start1 -= paddingLength; // Should be 0.\n patch.start2 -= paddingLength; // Should be 0.\n patch.length1 += paddingLength;\n patch.length2 += paddingLength;\n } else if (paddingLength > diffs[0][1].length) {\n // Grow first equality.\n var extraLength = paddingLength - diffs[0][1].length;\n diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1];\n patch.start1 -= extraLength;\n patch.start2 -= extraLength;\n patch.length1 += extraLength;\n patch.length2 += extraLength;\n }\n\n // Add some padding on end of last diff.\n patch = patches[patches.length - 1];\n diffs = patch.diffs;\n if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) {\n // Add nullPadding equality.\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n patch.length1 += paddingLength;\n patch.length2 += paddingLength;\n } else if (paddingLength > diffs[diffs.length - 1][1].length) {\n // Grow last equality.\n var extraLength = paddingLength - diffs[diffs.length - 1][1].length;\n diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength);\n patch.length1 += extraLength;\n patch.length2 += extraLength;\n }\n\n return nullPadding;\n};\n\n\n/**\n * Look through the patches and break up any which are longer than the maximum\n * limit of the match algorithm.\n * Intended to be called only from within patch_apply.\n * @param {!Array.} patches Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_splitMax = function(patches) {\n var patch_size = this.Match_MaxBits;\n for (var x = 0; x < patches.length; x++) {\n if (patches[x].length1 <= patch_size) {\n continue;\n }\n var bigpatch = patches[x];\n // Remove the big old patch.\n patches.splice(x--, 1);\n var start1 = bigpatch.start1;\n var start2 = bigpatch.start2;\n var precontext = '';\n while (bigpatch.diffs.length !== 0) {\n // Create one of several smaller patches.\n var patch = new diff_match_patch.patch_obj();\n var empty = true;\n patch.start1 = start1 - precontext.length;\n patch.start2 = start2 - precontext.length;\n if (precontext !== '') {\n patch.length1 = patch.length2 = precontext.length;\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, precontext));\n }\n while (bigpatch.diffs.length !== 0 &&\n patch.length1 < patch_size - this.Patch_Margin) {\n var diff_type = bigpatch.diffs[0][0];\n var diff_text = bigpatch.diffs[0][1];\n if (diff_type === DIFF_INSERT) {\n // Insertions are harmless.\n patch.length2 += diff_text.length;\n start2 += diff_text.length;\n patch.diffs.push(bigpatch.diffs.shift());\n empty = false;\n } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 &&\n patch.diffs[0][0] == DIFF_EQUAL &&\n diff_text.length > 2 * patch_size) {\n // This is a large deletion. Let it pass in one chunk.\n patch.length1 += diff_text.length;\n start1 += diff_text.length;\n empty = false;\n patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n bigpatch.diffs.shift();\n } else {\n // Deletion or equality. Only take as much as we can stomach.\n diff_text = diff_text.substring(0,\n patch_size - patch.length1 - this.Patch_Margin);\n patch.length1 += diff_text.length;\n start1 += diff_text.length;\n if (diff_type === DIFF_EQUAL) {\n patch.length2 += diff_text.length;\n start2 += diff_text.length;\n } else {\n empty = false;\n }\n patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n if (diff_text == bigpatch.diffs[0][1]) {\n bigpatch.diffs.shift();\n } else {\n bigpatch.diffs[0][1] =\n bigpatch.diffs[0][1].substring(diff_text.length);\n }\n }\n }\n // Compute the head context for the next patch.\n precontext = this.diff_text2(patch.diffs);\n precontext =\n precontext.substring(precontext.length - this.Patch_Margin);\n // Append the end context for this patch.\n var postcontext = this.diff_text1(bigpatch.diffs)\n .substring(0, this.Patch_Margin);\n if (postcontext !== '') {\n patch.length1 += postcontext.length;\n patch.length2 += postcontext.length;\n if (patch.diffs.length !== 0 &&\n patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) {\n patch.diffs[patch.diffs.length - 1][1] += postcontext;\n } else {\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, postcontext));\n }\n }\n if (!empty) {\n patches.splice(++x, 0, patch);\n }\n }\n }\n};\n\n\n/**\n * Take a list of patches and return a textual representation.\n * @param {!Array.} patches Array of Patch objects.\n * @return {string} Text representation of patches.\n */\ndiff_match_patch.prototype.patch_toText = function(patches) {\n var text = [];\n for (var x = 0; x < patches.length; x++) {\n text[x] = patches[x];\n }\n return text.join('');\n};\n\n\n/**\n * Parse a textual representation of patches and return a list of Patch objects.\n * @param {string} textline Text representation of patches.\n * @return {!Array.} Array of Patch objects.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.patch_fromText = function(textline) {\n var patches = [];\n if (!textline) {\n return patches;\n }\n var text = textline.split('\\n');\n var textPointer = 0;\n var patchHeader = /^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;\n while (textPointer < text.length) {\n var m = text[textPointer].match(patchHeader);\n if (!m) {\n throw new Error('Invalid patch string: ' + text[textPointer]);\n }\n var patch = new diff_match_patch.patch_obj();\n patches.push(patch);\n patch.start1 = parseInt(m[1], 10);\n if (m[2] === '') {\n patch.start1--;\n patch.length1 = 1;\n } else if (m[2] == '0') {\n patch.length1 = 0;\n } else {\n patch.start1--;\n patch.length1 = parseInt(m[2], 10);\n }\n\n patch.start2 = parseInt(m[3], 10);\n if (m[4] === '') {\n patch.start2--;\n patch.length2 = 1;\n } else if (m[4] == '0') {\n patch.length2 = 0;\n } else {\n patch.start2--;\n patch.length2 = parseInt(m[4], 10);\n }\n textPointer++;\n\n while (textPointer < text.length) {\n var sign = text[textPointer].charAt(0);\n try {\n var line = decodeURI(text[textPointer].substring(1));\n } catch (ex) {\n // Malformed URI sequence.\n throw new Error('Illegal escape in patch_fromText: ' + line);\n }\n if (sign == '-') {\n // Deletion.\n patch.diffs.push(new diff_match_patch.Diff(DIFF_DELETE, line));\n } else if (sign == '+') {\n // Insertion.\n patch.diffs.push(new diff_match_patch.Diff(DIFF_INSERT, line));\n } else if (sign == ' ') {\n // Minor equality.\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, line));\n } else if (sign == '@') {\n // Start of next patch.\n break;\n } else if (sign === '') {\n // Blank line? Whatever.\n } else {\n // WTF?\n throw new Error('Invalid patch mode \"' + sign + '\" in: ' + line);\n }\n textPointer++;\n }\n }\n return patches;\n};\n\n\n/**\n * Class representing one patch operation.\n * @constructor\n */\ndiff_match_patch.patch_obj = function() {\n /** @type {!Array.} */\n this.diffs = [];\n /** @type {?number} */\n this.start1 = null;\n /** @type {?number} */\n this.start2 = null;\n /** @type {number} */\n this.length1 = 0;\n /** @type {number} */\n this.length2 = 0;\n};\n\n\n/**\n * Emulate GNU diff's format.\n * Header: @@ -382,8 +481,9 @@\n * Indices are printed as 1-based, not 0-based.\n * @return {string} The GNU diff string.\n */\ndiff_match_patch.patch_obj.prototype.toString = function() {\n var coords1, coords2;\n if (this.length1 === 0) {\n coords1 = this.start1 + ',0';\n } else if (this.length1 == 1) {\n coords1 = this.start1 + 1;\n } else {\n coords1 = (this.start1 + 1) + ',' + this.length1;\n }\n if (this.length2 === 0) {\n coords2 = this.start2 + ',0';\n } else if (this.length2 == 1) {\n coords2 = this.start2 + 1;\n } else {\n coords2 = (this.start2 + 1) + ',' + this.length2;\n }\n var text = ['@@ -' + coords1 + ' +' + coords2 + ' @@\\n'];\n var op;\n // Escape the body of the patch with %xx notation.\n for (var x = 0; x < this.diffs.length; x++) {\n switch (this.diffs[x][0]) {\n case DIFF_INSERT:\n op = '+';\n break;\n case DIFF_DELETE:\n op = '-';\n break;\n case DIFF_EQUAL:\n op = ' ';\n break;\n }\n text[x + 1] = op + encodeURI(this.diffs[x][1]) + '\\n';\n }\n return text.join('').replace(/%20/g, ' ');\n};\n\n\n// The following export code was added by @ForbesLindesay\nmodule.exports = diff_match_patch;\nmodule.exports['diff_match_patch'] = diff_match_patch;\nmodule.exports['DIFF_DELETE'] = DIFF_DELETE;\nmodule.exports['DIFF_INSERT'] = DIFF_INSERT;\nmodule.exports['DIFF_EQUAL'] = DIFF_EQUAL;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","/*!\nCopyright (C) 2013-2015 by Andrea Giammarchi - @WebReflection\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n(function(window){'use strict';\n /* jshint loopfunc: true, noempty: false*/\n // http://www.w3.org/TR/dom/#element\n\n function createDocumentFragment() {\n return document.createDocumentFragment();\n }\n\n function createElement(nodeName) {\n return document.createElement(nodeName);\n }\n\n function enoughArguments(length, name) {\n if (!length) throw new Error(\n 'Failed to construct ' +\n name +\n ': 1 argument required, but only 0 present.'\n );\n }\n\n function mutationMacro(nodes) {\n if (nodes.length === 1) {\n return textNodeIfPrimitive(nodes[0]);\n }\n for (var\n fragment = createDocumentFragment(),\n list = slice.call(nodes),\n i = 0; i < nodes.length; i++\n ) {\n fragment.appendChild(textNodeIfPrimitive(list[i]));\n }\n return fragment;\n }\n\n function textNodeIfPrimitive(node) {\n return typeof node === 'object' ? node : document.createTextNode(node);\n }\n\n for(var\n head,\n property,\n TemporaryPrototype,\n TemporaryTokenList,\n wrapVerifyToken,\n document = window.document,\n hOP = Object.prototype.hasOwnProperty,\n defineProperty = Object.defineProperty || function (object, property, descriptor) {\n if (hOP.call(descriptor, 'value')) {\n object[property] = descriptor.value;\n } else {\n if (hOP.call(descriptor, 'get'))\n object.__defineGetter__(property, descriptor.get);\n if (hOP.call(descriptor, 'set'))\n object.__defineSetter__(property, descriptor.set);\n }\n return object;\n },\n indexOf = [].indexOf || function indexOf(value){\n var length = this.length;\n while(length--) {\n if (this[length] === value) {\n break;\n }\n }\n return length;\n },\n // http://www.w3.org/TR/domcore/#domtokenlist\n verifyToken = function (token) {\n if (!token) {\n throw 'SyntaxError';\n } else if (spaces.test(token)) {\n throw 'InvalidCharacterError';\n }\n return token;\n },\n DOMTokenList = function (node) {\n var\n noClassName = typeof node.className === 'undefined',\n className = noClassName ?\n (node.getAttribute('class') || '') : node.className,\n isSVG = noClassName || typeof className === 'object',\n value = (isSVG ?\n (noClassName ? className : className.baseVal) :\n className\n ).replace(trim, '')\n ;\n if (value.length) {\n properties.push.apply(\n this,\n value.split(spaces)\n );\n }\n this._isSVG = isSVG;\n this._ = node;\n },\n classListDescriptor = {\n get: function get() {\n return new DOMTokenList(this);\n },\n set: function(){}\n },\n trim = /^\\s+|\\s+$/g,\n spaces = /\\s+/,\n SPACE = '\\x20',\n CLASS_LIST = 'classList',\n toggle = function toggle(token, force) {\n if (this.contains(token)) {\n if (!force) {\n // force is not true (either false or omitted)\n this.remove(token);\n }\n } else if(force === undefined || force) {\n force = true;\n this.add(token);\n }\n return !!force;\n },\n DocumentFragmentPrototype = window.DocumentFragment && DocumentFragment.prototype,\n Node = window.Node,\n NodePrototype = (Node || Element).prototype,\n CharacterData = window.CharacterData || Node,\n CharacterDataPrototype = CharacterData && CharacterData.prototype,\n DocumentType = window.DocumentType,\n DocumentTypePrototype = DocumentType && DocumentType.prototype,\n ElementPrototype = (window.Element || Node || window.HTMLElement).prototype,\n HTMLSelectElement = window.HTMLSelectElement || createElement('select').constructor,\n selectRemove = HTMLSelectElement.prototype.remove,\n SVGElement = window.SVGElement,\n properties = [\n 'matches', (\n ElementPrototype.matchesSelector ||\n ElementPrototype.webkitMatchesSelector ||\n ElementPrototype.khtmlMatchesSelector ||\n ElementPrototype.mozMatchesSelector ||\n ElementPrototype.msMatchesSelector ||\n ElementPrototype.oMatchesSelector ||\n function matches(selector) {\n var parentNode = this.parentNode;\n return !!parentNode && -1 < indexOf.call(\n parentNode.querySelectorAll(selector),\n this\n );\n }\n ),\n 'closest', function closest(selector) {\n var parentNode = this, matches;\n while (\n // document has no .matches\n (matches = parentNode && parentNode.matches) &&\n !parentNode.matches(selector)\n ) {\n parentNode = parentNode.parentNode;\n }\n return matches ? parentNode : null;\n },\n 'prepend', function prepend() {\n var firstChild = this.firstChild,\n node = mutationMacro(arguments);\n if (firstChild) {\n this.insertBefore(node, firstChild);\n } else {\n this.appendChild(node);\n }\n },\n 'append', function append() {\n this.appendChild(mutationMacro(arguments));\n },\n 'before', function before() {\n var parentNode = this.parentNode;\n if (parentNode) {\n parentNode.insertBefore(\n mutationMacro(arguments), this\n );\n }\n },\n 'after', function after() {\n var parentNode = this.parentNode,\n nextSibling = this.nextSibling,\n node = mutationMacro(arguments);\n if (parentNode) {\n if (nextSibling) {\n parentNode.insertBefore(node, nextSibling);\n } else {\n parentNode.appendChild(node);\n }\n }\n },\n // https://dom.spec.whatwg.org/#dom-element-toggleattribute\n 'toggleAttribute', function toggleAttribute(name, force) {\n var had = this.hasAttribute(name);\n if (1 < arguments.length) {\n if (had && !force)\n this.removeAttribute(name);\n else if (force && !had)\n this.setAttribute(name, \"\");\n }\n else if (had)\n this.removeAttribute(name);\n else\n this.setAttribute(name, \"\");\n return this.hasAttribute(name);\n },\n // WARNING - DEPRECATED - use .replaceWith() instead\n 'replace', function replace() {\n this.replaceWith.apply(this, arguments);\n },\n 'replaceWith', function replaceWith() {\n var parentNode = this.parentNode;\n if (parentNode) {\n parentNode.replaceChild(\n mutationMacro(arguments),\n this\n );\n }\n },\n 'remove', function remove() {\n var parentNode = this.parentNode;\n if (parentNode) {\n parentNode.removeChild(this);\n }\n }\n ],\n slice = properties.slice,\n i = properties.length; i; i -= 2\n ) {\n property = properties[i - 2];\n if (!(property in ElementPrototype)) {\n ElementPrototype[property] = properties[i - 1];\n }\n // avoid unnecessary re-patch when the script is included\n // gazillion times without any reason whatsoever\n // https://github.com/WebReflection/dom4/pull/48\n if (property === 'remove' && !selectRemove._dom4) {\n // see https://github.com/WebReflection/dom4/issues/19\n (HTMLSelectElement.prototype[property] = function () {\n return 0 < arguments.length ?\n selectRemove.apply(this, arguments) :\n ElementPrototype.remove.call(this);\n })._dom4 = true;\n }\n // see https://github.com/WebReflection/dom4/issues/18\n if (/^(?:before|after|replace|replaceWith|remove)$/.test(property)) {\n if (CharacterData && !(property in CharacterDataPrototype)) {\n CharacterDataPrototype[property] = properties[i - 1];\n }\n if (DocumentType && !(property in DocumentTypePrototype)) {\n DocumentTypePrototype[property] = properties[i - 1];\n }\n }\n // see https://github.com/WebReflection/dom4/pull/26\n if (/^(?:append|prepend)$/.test(property)) {\n if (DocumentFragmentPrototype) {\n if (!(property in DocumentFragmentPrototype)) {\n DocumentFragmentPrototype[property] = properties[i - 1];\n }\n } else {\n try {\n createDocumentFragment().constructor.prototype[property] = properties[i - 1];\n } catch(o_O) {}\n }\n }\n }\n\n // most likely an IE9 only issue\n // see https://github.com/WebReflection/dom4/issues/6\n if (!createElement('a').matches('a')) {\n ElementPrototype[property] = function(matches){\n return function (selector) {\n return matches.call(\n this.parentNode ?\n this :\n createDocumentFragment().appendChild(this),\n selector\n );\n };\n }(ElementPrototype[property]);\n }\n\n // used to fix both old webkit and SVG\n DOMTokenList.prototype = {\n length: 0,\n add: function add() {\n for(var j = 0, token; j < arguments.length; j++) {\n token = arguments[j];\n if(!this.contains(token)) {\n properties.push.call(this, property);\n }\n }\n if (this._isSVG) {\n this._.setAttribute('class', '' + this);\n } else {\n this._.className = '' + this;\n }\n },\n contains: (function(indexOf){\n return function contains(token) {\n i = indexOf.call(this, property = verifyToken(token));\n return -1 < i;\n };\n }([].indexOf || function (token) {\n i = this.length;\n while(i-- && this[i] !== token){}\n return i;\n })),\n item: function item(i) {\n return this[i] || null;\n },\n remove: function remove() {\n for(var j = 0, token; j < arguments.length; j++) {\n token = arguments[j];\n if(this.contains(token)) {\n properties.splice.call(this, i, 1);\n }\n }\n if (this._isSVG) {\n this._.setAttribute('class', '' + this);\n } else {\n this._.className = '' + this;\n }\n },\n toggle: toggle,\n toString: function toString() {\n return properties.join.call(this, SPACE);\n }\n };\n\n if (SVGElement && !(CLASS_LIST in SVGElement.prototype)) {\n defineProperty(SVGElement.prototype, CLASS_LIST, classListDescriptor);\n }\n\n // http://www.w3.org/TR/dom/#domtokenlist\n // iOS 5.1 has completely screwed this property\n // classList in ElementPrototype is false\n // but it's actually there as getter\n if (!(CLASS_LIST in document.documentElement)) {\n defineProperty(ElementPrototype, CLASS_LIST, classListDescriptor);\n } else {\n // iOS 5.1 and Nokia ASHA do not support multiple add or remove\n // trying to detect and fix that in here\n TemporaryTokenList = createElement('div')[CLASS_LIST];\n TemporaryTokenList.add('a', 'b', 'a');\n if ('a\\x20b' != TemporaryTokenList) {\n // no other way to reach original methods in iOS 5.1\n TemporaryPrototype = TemporaryTokenList.constructor.prototype;\n if (!('add' in TemporaryPrototype)) {\n // ASHA double fails in here\n TemporaryPrototype = window.TemporaryTokenList.prototype;\n }\n wrapVerifyToken = function (original) {\n return function () {\n var i = 0;\n while (i < arguments.length) {\n original.call(this, arguments[i++]);\n }\n };\n };\n TemporaryPrototype.add = wrapVerifyToken(TemporaryPrototype.add);\n TemporaryPrototype.remove = wrapVerifyToken(TemporaryPrototype.remove);\n // toggle is broken too ^_^ ... let's fix it\n TemporaryPrototype.toggle = toggle;\n }\n }\n\n if (!('contains' in NodePrototype)) {\n defineProperty(NodePrototype, 'contains', {\n value: function (el) {\n while (el && el !== this) el = el.parentNode;\n return this === el;\n }\n });\n }\n\n if (!('head' in document)) {\n defineProperty(document, 'head', {\n get: function () {\n return head || (\n head = document.getElementsByTagName('head')[0]\n );\n }\n });\n }\n\n // requestAnimationFrame partial polyfill\n (function () {\n for (var\n raf,\n rAF = window.requestAnimationFrame,\n cAF = window.cancelAnimationFrame,\n prefixes = ['o', 'ms', 'moz', 'webkit'],\n i = prefixes.length;\n !cAF && i--;\n ) {\n rAF = rAF || window[prefixes[i] + 'RequestAnimationFrame'];\n cAF = window[prefixes[i] + 'CancelAnimationFrame'] ||\n window[prefixes[i] + 'CancelRequestAnimationFrame'];\n }\n if (!cAF) {\n // some FF apparently implemented rAF but no cAF \n if (rAF) {\n raf = rAF;\n rAF = function (callback) {\n var goOn = true;\n raf(function () {\n if (goOn) callback.apply(this, arguments);\n });\n return function () {\n goOn = false;\n };\n };\n cAF = function (id) {\n id();\n };\n } else {\n rAF = function (callback) {\n return setTimeout(callback, 15, 15);\n };\n cAF = function (id) {\n clearTimeout(id);\n };\n }\n }\n window.requestAnimationFrame = rAF;\n window.cancelAnimationFrame = cAF;\n }());\n\n // http://www.w3.org/TR/dom/#customevent\n try{new window.CustomEvent('?');}catch(o_O){\n window.CustomEvent = function(\n eventName,\n defaultInitDict\n ){\n\n // the infamous substitute\n function CustomEvent(type, eventInitDict) {\n /*jshint eqnull:true */\n var event = document.createEvent(eventName);\n if (typeof type != 'string') {\n throw new Error('An event name must be provided');\n }\n if (eventName == 'Event') {\n event.initCustomEvent = initCustomEvent;\n }\n if (eventInitDict == null) {\n eventInitDict = defaultInitDict;\n }\n event.initCustomEvent(\n type,\n eventInitDict.bubbles,\n eventInitDict.cancelable,\n eventInitDict.detail\n );\n return event;\n }\n\n // attached at runtime\n function initCustomEvent(\n type, bubbles, cancelable, detail\n ) {\n /*jshint validthis:true*/\n this.initEvent(type, bubbles, cancelable);\n this.detail = detail;\n }\n\n // that's it\n return CustomEvent;\n }(\n // is this IE9 or IE10 ?\n // where CustomEvent is there\n // but not usable as construtor ?\n window.CustomEvent ?\n // use the CustomEvent interface in such case\n 'CustomEvent' : 'Event',\n // otherwise the common compatible one\n {\n bubbles: false,\n cancelable: false,\n detail: null\n }\n );\n }\n\n // window.Event as constructor\n try { new Event('_'); } catch (o_O) {\n /* jshint -W022 */\n o_O = (function ($Event) {\n function Event(type, init) {\n enoughArguments(arguments.length, 'Event');\n var out = document.createEvent('Event');\n if (!init) init = {};\n out.initEvent(\n type,\n !!init.bubbles,\n !!init.cancelable\n );\n return out;\n }\n Event.prototype = $Event.prototype;\n return Event;\n }(window.Event || function Event() {}));\n defineProperty(window, 'Event', {value: o_O});\n // Android 4 gotcha\n if (Event !== o_O) Event = o_O;\n }\n\n // window.KeyboardEvent as constructor\n try { new KeyboardEvent('_', {}); } catch (o_O) {\n /* jshint -W022 */\n o_O = (function ($KeyboardEvent) {\n // code inspired by https://gist.github.com/termi/4654819\n var\n initType = 0,\n defaults = {\n char: '',\n key: '',\n location: 0,\n ctrlKey: false,\n shiftKey: false,\n altKey: false,\n metaKey: false,\n altGraphKey: false,\n repeat: false,\n locale: navigator.language,\n detail: 0,\n bubbles: false,\n cancelable: false,\n keyCode: 0,\n charCode: 0,\n which: 0\n },\n eventType\n ;\n try {\n var e = document.createEvent('KeyboardEvent');\n e.initKeyboardEvent(\n 'keyup', false, false, window, '+', 3,\n true, false, true, false, false\n );\n initType = (\n (e.keyIdentifier || e.key) == '+' &&\n (e.keyLocation || e.location) == 3\n ) && (\n e.ctrlKey ? e.altKey ? 1 : 3 : e.shiftKey ? 2 : 4\n ) || 9;\n } catch(o_O) {}\n eventType = 0 < initType ? 'KeyboardEvent' : 'Event';\n\n function getModifier(init) {\n for (var\n out = [],\n keys = [\n 'ctrlKey',\n 'Control',\n 'shiftKey',\n 'Shift',\n 'altKey',\n 'Alt',\n 'metaKey',\n 'Meta',\n 'altGraphKey',\n 'AltGraph'\n ],\n i = 0; i < keys.length; i += 2\n ) {\n if (init[keys[i]])\n out.push(keys[i + 1]);\n }\n return out.join(' ');\n }\n\n function withDefaults(target, source) {\n for (var key in source) {\n if (\n source.hasOwnProperty(key) &&\n !source.hasOwnProperty.call(target, key)\n ) target[key] = source[key];\n }\n return target;\n }\n\n function withInitValues(key, out, init) {\n try {\n out[key] = init[key];\n } catch(o_O) {}\n }\n\n function KeyboardEvent(type, init) {\n enoughArguments(arguments.length, 'KeyboardEvent');\n init = withDefaults(init || {}, defaults);\n var\n out = document.createEvent(eventType),\n ctrlKey = init.ctrlKey,\n shiftKey = init.shiftKey,\n altKey = init.altKey,\n metaKey = init.metaKey,\n altGraphKey = init.altGraphKey,\n modifiers = initType > 3 ? getModifier(init) : null,\n key = String(init.key),\n chr = String(init.char),\n location = init.location,\n keyCode = init.keyCode || (\n (init.keyCode = key) &&\n key.charCodeAt(0)\n ) || 0,\n charCode = init.charCode || (\n (init.charCode = chr) &&\n chr.charCodeAt(0)\n ) || 0,\n bubbles = init.bubbles,\n cancelable = init.cancelable,\n repeat = init.repeat,\n locale = init.locale,\n view = init.view || window,\n args\n ;\n if (!init.which) init.which = init.keyCode;\n if ('initKeyEvent' in out) {\n out.initKeyEvent(\n type, bubbles, cancelable, view,\n ctrlKey, altKey, shiftKey, metaKey, keyCode, charCode\n );\n } else if (0 < initType && 'initKeyboardEvent' in out) {\n args = [type, bubbles, cancelable, view];\n switch (initType) {\n case 1:\n args.push(key, location, ctrlKey, shiftKey, altKey, metaKey, altGraphKey);\n break;\n case 2:\n args.push(ctrlKey, altKey, shiftKey, metaKey, keyCode, charCode);\n break;\n case 3:\n args.push(key, location, ctrlKey, altKey, shiftKey, metaKey, altGraphKey);\n break;\n case 4:\n args.push(key, location, modifiers, repeat, locale);\n break;\n default:\n args.push(char, key, location, modifiers, repeat, locale);\n }\n out.initKeyboardEvent.apply(out, args);\n } else {\n out.initEvent(type, bubbles, cancelable);\n }\n for (key in out) {\n if (defaults.hasOwnProperty(key) && out[key] !== init[key]) {\n withInitValues(key, out, init);\n }\n }\n return out;\n }\n KeyboardEvent.prototype = $KeyboardEvent.prototype;\n return KeyboardEvent;\n }(window.KeyboardEvent || function KeyboardEvent() {}));\n defineProperty(window, 'KeyboardEvent', {value: o_O});\n // Android 4 gotcha\n if (KeyboardEvent !== o_O) KeyboardEvent = o_O;\n }\n\n // window.MouseEvent as constructor\n try { new MouseEvent('_', {}); } catch (o_O) {\n /* jshint -W022 */\n o_O = (function ($MouseEvent) {\n function MouseEvent(type, init) {\n enoughArguments(arguments.length, 'MouseEvent');\n var out = document.createEvent('MouseEvent');\n if (!init) init = {};\n out.initMouseEvent(\n type,\n !!init.bubbles,\n !!init.cancelable,\n init.view || window,\n init.detail || 1,\n init.screenX || 0,\n init.screenY || 0,\n init.clientX || 0,\n init.clientY || 0,\n !!init.ctrlKey,\n !!init.altKey,\n !!init.shiftKey,\n !!init.metaKey,\n init.button || 0,\n init.relatedTarget || null\n );\n return out;\n }\n MouseEvent.prototype = $MouseEvent.prototype;\n return MouseEvent;\n }(window.MouseEvent || function MouseEvent() {}));\n defineProperty(window, 'MouseEvent', {value: o_O});\n // Android 4 gotcha\n if (MouseEvent !== o_O) MouseEvent = o_O;\n }\n\n if (!document.querySelectorAll('*').forEach) {\n (function () {\n function patch(what) {\n var querySelectorAll = what.querySelectorAll;\n what.querySelectorAll = function qSA(css) {\n var result = querySelectorAll.call(this, css);\n result.forEach = Array.prototype.forEach;\n return result;\n };\n }\n patch(document);\n patch(Element.prototype);\n }());\n }\n\n try {\n // https://drafts.csswg.org/selectors-4/#the-scope-pseudo\n document.querySelector(':scope *');\n } catch(o_O) {\n (function () {\n var dataScope = 'data-scope-' + (Math.random() * 1e9 >>> 0);\n var proto = Element.prototype;\n var querySelector = proto.querySelector;\n var querySelectorAll = proto.querySelectorAll;\n proto.querySelector = function qS(css) {\n return find(this, querySelector, css);\n };\n proto.querySelectorAll = function qSA(css) {\n return find(this, querySelectorAll, css);\n };\n function find(node, method, css) {\n if (node.type != document.ELEMENT_NODE) return method.call(node, css);\n node.setAttribute(dataScope, null);\n var result = method.call(\n node,\n String(css).replace(\n /(^|,\\s*)(:scope([ >]|$))/g,\n function ($0, $1, $2, $3) {\n return $1 + '[' + dataScope + ']' + ($3 || ' ');\n }\n )\n );\n node.removeAttribute(dataScope);\n return result;\n }\n }());\n }\n}(window));\n(function (global){'use strict';\n\n // a WeakMap fallback for DOM nodes only used as key\n var DOMMap = global.WeakMap || (function () {\n\n var\n counter = 0,\n dispatched = false,\n drop = false,\n value\n ;\n\n function dispatch(key, ce, shouldDrop) {\n drop = shouldDrop;\n dispatched = false;\n value = undefined;\n key.dispatchEvent(ce);\n }\n\n function Handler(value) {\n this.value = value;\n }\n\n Handler.prototype.handleEvent = function handleEvent(e) {\n dispatched = true;\n if (drop) {\n e.currentTarget.removeEventListener(e.type, this, false);\n } else {\n value = this.value;\n }\n };\n\n function DOMMap() {\n counter++; // make id clashing highly improbable\n this.__ce__ = new Event(('@DOMMap:' + counter) + Math.random());\n }\n\n DOMMap.prototype = {\n 'constructor': DOMMap,\n 'delete': function del(key) {\n return dispatch(key, this.__ce__, true), dispatched;\n },\n 'get': function get(key) {\n dispatch(key, this.__ce__, false);\n var v = value;\n value = undefined;\n return v;\n },\n 'has': function has(key) {\n return dispatch(key, this.__ce__, false), dispatched;\n },\n 'set': function set(key, value) {\n dispatch(key, this.__ce__, true);\n key.addEventListener(this.__ce__.type, new Handler(value), false);\n return this;\n },\n };\n\n return DOMMap;\n\n }());\n\n function Dict() {}\n Dict.prototype = (Object.create || Object)(null);\n\n // https://dom.spec.whatwg.org/#interface-eventtarget\n\n function createEventListener(type, callback, options) {\n function eventListener(e) {\n if (eventListener.once) {\n e.currentTarget.removeEventListener(\n e.type,\n callback,\n eventListener\n );\n eventListener.removed = true;\n }\n if (eventListener.passive) {\n e.preventDefault = createEventListener.preventDefault;\n }\n if (typeof eventListener.callback === 'function') {\n /* jshint validthis: true */\n eventListener.callback.call(this, e);\n } else if (eventListener.callback) {\n eventListener.callback.handleEvent(e);\n }\n if (eventListener.passive) {\n delete e.preventDefault;\n }\n }\n eventListener.type = type;\n eventListener.callback = callback;\n eventListener.capture = !!options.capture;\n eventListener.passive = !!options.passive;\n eventListener.once = !!options.once;\n // currently pointless but specs say to use it, so ...\n eventListener.removed = false;\n return eventListener;\n }\n\n createEventListener.preventDefault = function preventDefault() {};\n\n var\n Event = global.CustomEvent,\n dE = global.dispatchEvent,\n aEL = global.addEventListener,\n rEL = global.removeEventListener,\n counter = 0,\n increment = function () { counter++; },\n indexOf = [].indexOf || function indexOf(value){\n var length = this.length;\n while(length--) {\n if (this[length] === value) {\n break;\n }\n }\n return length;\n },\n getListenerKey = function (options) {\n return ''.concat(\n options.capture ? '1' : '0',\n options.passive ? '1' : '0',\n options.once ? '1' : '0'\n );\n },\n augment\n ;\n\n try {\n aEL('_', increment, {once: true});\n dE(new Event('_'));\n dE(new Event('_'));\n rEL('_', increment, {once: true});\n } catch(o_O) {}\n\n if (counter !== 1) {\n (function () {\n var dm = new DOMMap();\n function createAEL(aEL) {\n return function addEventListener(type, handler, options) {\n if (options && typeof options !== 'boolean') {\n var\n info = dm.get(this),\n key = getListenerKey(options),\n i, tmp, wrap\n ;\n if (!info) dm.set(this, (info = new Dict()));\n if (!(type in info)) info[type] = {\n handler: [],\n wrap: []\n };\n tmp = info[type];\n i = indexOf.call(tmp.handler, handler);\n if (i < 0) {\n i = tmp.handler.push(handler) - 1;\n tmp.wrap[i] = (wrap = new Dict());\n } else {\n wrap = tmp.wrap[i];\n }\n if (!(key in wrap)) {\n wrap[key] = createEventListener(type, handler, options);\n aEL.call(this, type, wrap[key], wrap[key].capture);\n }\n } else {\n aEL.call(this, type, handler, options);\n }\n };\n }\n function createREL(rEL) {\n return function removeEventListener(type, handler, options) {\n if (options && typeof options !== 'boolean') {\n var\n info = dm.get(this),\n key, i, tmp, wrap\n ;\n if (info && (type in info)) {\n tmp = info[type];\n i = indexOf.call(tmp.handler, handler);\n if (-1 < i) {\n key = getListenerKey(options);\n wrap = tmp.wrap[i];\n if (key in wrap) {\n rEL.call(this, type, wrap[key], wrap[key].capture);\n delete wrap[key];\n // return if there are other wraps\n for (key in wrap) return;\n // otherwise remove all the things\n tmp.handler.splice(i, 1);\n tmp.wrap.splice(i, 1);\n // if there are no other handlers\n if (tmp.handler.length === 0)\n // drop the info[type] entirely\n delete info[type];\n }\n }\n }\n } else {\n rEL.call(this, type, handler, options);\n }\n };\n }\n\n augment = function (Constructor) {\n if (!Constructor) return;\n var proto = Constructor.prototype;\n proto.addEventListener = createAEL(proto.addEventListener);\n proto.removeEventListener = createREL(proto.removeEventListener);\n };\n\n if (global.EventTarget) {\n augment(EventTarget);\n } else {\n augment(global.Text);\n augment(global.Element || global.HTMLElement);\n augment(global.HTMLDocument);\n augment(global.Window || {prototype:global});\n augment(global.XMLHttpRequest);\n }\n\n }());\n }\n\n}(self));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","module.exports = stringify\nstringify.default = stringify\nstringify.stable = deterministicStringify\nstringify.stableStringify = deterministicStringify\n\nvar LIMIT_REPLACE_NODE = '[...]'\nvar CIRCULAR_REPLACE_NODE = '[Circular]'\n\nvar arr = []\nvar replacerStack = []\n\nfunction defaultOptions () {\n return {\n depthLimit: Number.MAX_SAFE_INTEGER,\n edgesLimit: Number.MAX_SAFE_INTEGER\n }\n}\n\n// Regular stringify\nfunction stringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n decirc(obj, '', 0, [], undefined, 0, options)\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(obj, replacer, spacer)\n } else {\n res = JSON.stringify(obj, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction setReplace (replace, val, k, parent) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n if (propertyDescriptor.get !== undefined) {\n if (propertyDescriptor.configurable) {\n Object.defineProperty(parent, k, { value: replace })\n arr.push([parent, k, val, propertyDescriptor])\n } else {\n replacerStack.push([val, k, replace])\n }\n } else {\n parent[k] = replace\n arr.push([parent, k, val])\n }\n}\n\nfunction decirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n decirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n var keys = Object.keys(val)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n decirc(val[key], key, i, stack, val, depth, options)\n }\n }\n stack.pop()\n }\n}\n\n// Stable-stringify\nfunction compareFunction (a, b) {\n if (a < b) {\n return -1\n }\n if (a > b) {\n return 1\n }\n return 0\n}\n\nfunction deterministicStringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(tmp, replacer, spacer)\n } else {\n res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n // Ensure that we restore the object as it was.\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n try {\n if (typeof val.toJSON === 'function') {\n return\n }\n } catch (_) {\n return\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n deterministicDecirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n // Create a temporary object in the required way\n var tmp = {}\n var keys = Object.keys(val).sort(compareFunction)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n deterministicDecirc(val[key], key, i, stack, val, depth, options)\n tmp[key] = val[key]\n }\n if (typeof parent !== 'undefined') {\n arr.push([parent, k, val])\n parent[k] = tmp\n } else {\n return tmp\n }\n }\n stack.pop()\n }\n}\n\n// wraps replacer function to handle values we couldn't replace\n// and mark them as replaced value\nfunction replaceGetterValues (replacer) {\n replacer =\n typeof replacer !== 'undefined'\n ? replacer\n : function (k, v) {\n return v\n }\n return function (key, val) {\n if (replacerStack.length > 0) {\n for (var i = 0; i < replacerStack.length; i++) {\n var part = replacerStack[i]\n if (part[1] === key && part[0] === val) {\n val = part[2]\n replacerStack.splice(i, 1)\n break\n }\n }\n }\n return replacer.call(this, key, val)\n }\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\nvar validateFormat = process.env.NODE_ENV !== \"production\" ? function (format) {\n if (format === undefined) {\n throw new Error('invariant(...): Second argument must be a string.');\n }\n} : function (format) {};\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments to provide\n * information about what broke and what you were expecting.\n *\n * The invariant message will be stripped in production, but the invariant will\n * remain to ensure logic does not differ in production.\n */\n\nfunction invariant(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n validateFormat(format);\n\n if (!condition) {\n var error;\n\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return String(args[argIndex++]);\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // Skip invariant's own stack frame.\n\n throw error;\n }\n}\n\nmodule.exports = invariant;","/**\r\n * Copyright (c) 2014-present, Facebook, Inc.\r\n * All rights reserved.\r\n *\r\n * This source code is licensed under the BSD-style license found in the\r\n * LICENSE file in the root directory of this source tree. An additional grant\r\n * of patent rights can be found in the PATENTS file in the same directory.\r\n */\r\n\r\nmodule.exports.Dispatcher = require('./lib/Dispatcher');\r\n","/**\r\n * Copyright (c) 2014-present, Facebook, Inc.\r\n * All rights reserved.\r\n *\r\n * This source code is licensed under the BSD-style license found in the\r\n * LICENSE file in the root directory of this source tree. An additional grant\r\n * of patent rights can be found in the PATENTS file in the same directory.\r\n *\r\n * @providesModule Dispatcher\r\n * \r\n * @preventMunge\r\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar _prefix = 'ID_';\n/**\r\n * Dispatcher is used to broadcast payloads to registered callbacks. This is\r\n * different from generic pub-sub systems in two ways:\r\n *\r\n * 1) Callbacks are not subscribed to particular events. Every payload is\r\n * dispatched to every registered callback.\r\n * 2) Callbacks can be deferred in whole or part until other callbacks have\r\n * been executed.\r\n *\r\n * For example, consider this hypothetical flight destination form, which\r\n * selects a default city when a country is selected:\r\n *\r\n * var flightDispatcher = new Dispatcher();\r\n *\r\n * // Keeps track of which country is selected\r\n * var CountryStore = {country: null};\r\n *\r\n * // Keeps track of which city is selected\r\n * var CityStore = {city: null};\r\n *\r\n * // Keeps track of the base flight price of the selected city\r\n * var FlightPriceStore = {price: null}\r\n *\r\n * When a user changes the selected city, we dispatch the payload:\r\n *\r\n * flightDispatcher.dispatch({\r\n * actionType: 'city-update',\r\n * selectedCity: 'paris'\r\n * });\r\n *\r\n * This payload is digested by `CityStore`:\r\n *\r\n * flightDispatcher.register(function(payload) {\r\n * if (payload.actionType === 'city-update') {\r\n * CityStore.city = payload.selectedCity;\r\n * }\r\n * });\r\n *\r\n * When the user selects a country, we dispatch the payload:\r\n *\r\n * flightDispatcher.dispatch({\r\n * actionType: 'country-update',\r\n * selectedCountry: 'australia'\r\n * });\r\n *\r\n * This payload is digested by both stores:\r\n *\r\n * CountryStore.dispatchToken = flightDispatcher.register(function(payload) {\r\n * if (payload.actionType === 'country-update') {\r\n * CountryStore.country = payload.selectedCountry;\r\n * }\r\n * });\r\n *\r\n * When the callback to update `CountryStore` is registered, we save a reference\r\n * to the returned token. Using this token with `waitFor()`, we can guarantee\r\n * that `CountryStore` is updated before the callback that updates `CityStore`\r\n * needs to query its data.\r\n *\r\n * CityStore.dispatchToken = flightDispatcher.register(function(payload) {\r\n * if (payload.actionType === 'country-update') {\r\n * // `CountryStore.country` may not be updated.\r\n * flightDispatcher.waitFor([CountryStore.dispatchToken]);\r\n * // `CountryStore.country` is now guaranteed to be updated.\r\n *\r\n * // Select the default city for the new country\r\n * CityStore.city = getDefaultCityForCountry(CountryStore.country);\r\n * }\r\n * });\r\n *\r\n * The usage of `waitFor()` can be chained, for example:\r\n *\r\n * FlightPriceStore.dispatchToken =\r\n * flightDispatcher.register(function(payload) {\r\n * switch (payload.actionType) {\r\n * case 'country-update':\r\n * case 'city-update':\r\n * flightDispatcher.waitFor([CityStore.dispatchToken]);\r\n * FlightPriceStore.price =\r\n * getFlightPriceStore(CountryStore.country, CityStore.city);\r\n * break;\r\n * }\r\n * });\r\n *\r\n * The `country-update` payload will be guaranteed to invoke the stores'\r\n * registered callbacks in order: `CountryStore`, `CityStore`, then\r\n * `FlightPriceStore`.\r\n */\n\nvar Dispatcher = /*#__PURE__*/function () {\n function Dispatcher() {\n _defineProperty(this, \"_callbacks\", void 0);\n\n _defineProperty(this, \"_isDispatching\", void 0);\n\n _defineProperty(this, \"_isHandled\", void 0);\n\n _defineProperty(this, \"_isPending\", void 0);\n\n _defineProperty(this, \"_lastID\", void 0);\n\n _defineProperty(this, \"_pendingPayload\", void 0);\n\n this._callbacks = {};\n this._isDispatching = false;\n this._isHandled = {};\n this._isPending = {};\n this._lastID = 1;\n }\n /**\r\n * Registers a callback to be invoked with every dispatched payload. Returns\r\n * a token that can be used with `waitFor()`.\r\n */\n\n\n var _proto = Dispatcher.prototype;\n\n _proto.register = function register(callback) {\n var id = _prefix + this._lastID++;\n this._callbacks[id] = callback;\n return id;\n }\n /**\r\n * Removes a callback based on its token.\r\n */\n ;\n\n _proto.unregister = function unregister(id) {\n !this._callbacks[id] ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Dispatcher.unregister(...): `%s` does not map to a registered callback.', id) : invariant(false) : void 0;\n delete this._callbacks[id];\n }\n /**\r\n * Waits for the callbacks specified to be invoked before continuing execution\r\n * of the current callback. This method should only be used by a callback in\r\n * response to a dispatched payload.\r\n */\n ;\n\n _proto.waitFor = function waitFor(ids) {\n !this._isDispatching ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Dispatcher.waitFor(...): Must be invoked while dispatching.') : invariant(false) : void 0;\n\n for (var ii = 0; ii < ids.length; ii++) {\n var id = ids[ii];\n\n if (this._isPending[id]) {\n !this._isHandled[id] ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Dispatcher.waitFor(...): Circular dependency detected while ' + 'waiting for `%s`.', id) : invariant(false) : void 0;\n continue;\n }\n\n !this._callbacks[id] ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.', id) : invariant(false) : void 0;\n\n this._invokeCallback(id);\n }\n }\n /**\r\n * Dispatches a payload to all registered callbacks.\r\n */\n ;\n\n _proto.dispatch = function dispatch(payload) {\n !!this._isDispatching ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.') : invariant(false) : void 0;\n\n this._startDispatching(payload);\n\n try {\n for (var id in this._callbacks) {\n if (this._isPending[id]) {\n continue;\n }\n\n this._invokeCallback(id);\n }\n } finally {\n this._stopDispatching();\n }\n }\n /**\r\n * Is this Dispatcher currently dispatching.\r\n */\n ;\n\n _proto.isDispatching = function isDispatching() {\n return this._isDispatching;\n }\n /**\r\n * Call the callback stored with the given id. Also do some internal\r\n * bookkeeping.\r\n *\r\n * @internal\r\n */\n ;\n\n _proto._invokeCallback = function _invokeCallback(id) {\n this._isPending[id] = true;\n\n this._callbacks[id](this._pendingPayload);\n\n this._isHandled[id] = true;\n }\n /**\r\n * Set up bookkeeping needed when dispatching.\r\n *\r\n * @internal\r\n */\n ;\n\n _proto._startDispatching = function _startDispatching(payload) {\n for (var id in this._callbacks) {\n this._isPending[id] = false;\n this._isHandled[id] = false;\n }\n\n this._pendingPayload = payload;\n this._isDispatching = true;\n }\n /**\r\n * Clear bookkeeping used for dispatching.\r\n *\r\n * @internal\r\n */\n ;\n\n _proto._stopDispatching = function _stopDispatching() {\n delete this._pendingPayload;\n this._isDispatching = false;\n };\n\n return Dispatcher;\n}();\n\nmodule.exports = Dispatcher;","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","// THIS FILE IS GENERATED - DO NOT EDIT!\n/*!mobile-detect v1.4.5 2021-03-13*/\n/*global module:false, define:false*/\n/*jshint latedef:false*/\n/*!@license Copyright 2013, Heinrich Goebl, License: MIT, see https://github.com/hgoebl/mobile-detect.js*/\n(function (define, undefined) {\ndefine(function () {\n 'use strict';\n\n var impl = {};\n\n impl.mobileDetectRules = {\n \"phones\": {\n \"iPhone\": \"\\\\biPhone\\\\b|\\\\biPod\\\\b\",\n \"BlackBerry\": \"BlackBerry|\\\\bBB10\\\\b|rim[0-9]+|\\\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\\\b-[0-9]+\",\n \"Pixel\": \"; \\\\bPixel\\\\b\",\n \"HTC\": \"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\\\bEVO\\\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel\",\n \"Nexus\": \"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 5X|Nexus 6\",\n \"Dell\": \"Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\\\b001DL\\\\b|\\\\b101DL\\\\b|\\\\bGS01\\\\b\",\n \"Motorola\": \"Motorola|DROIDX|DROID BIONIC|\\\\bDroid\\\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\\\bMoto E\\\\b|XT1068|XT1092|XT1052\",\n \"Samsung\": \"\\\\bSamsung\\\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F|SM-G610F|SM-G981B|SM-G892A|SM-A530F\",\n \"LG\": \"\\\\bLG\\\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710\",\n \"Sony\": \"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533|SOV34|601SO|F8332\",\n \"Asus\": \"Asus.*Galaxy|PadFone.*Mobile\",\n \"Xiaomi\": \"^(?!.*\\\\bx11\\\\b).*xiaomi.*$|POCOPHONE F1|MI 8|Redmi Note 9S|Redmi Note 5A Prime|N2G47H|M2001J2G|M2001J2I|M1805E10A|M2004J11G|M1902F1G|M2002J9G|M2004J19G|M2003J6A1G\",\n \"NokiaLumia\": \"Lumia [0-9]{3,4}\",\n \"Micromax\": \"Micromax.*\\\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\\\b\",\n \"Palm\": \"PalmSource|Palm\",\n \"Vertu\": \"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature\",\n \"Pantech\": \"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790\",\n \"Fly\": \"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250\",\n \"Wiko\": \"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM\",\n \"iMobile\": \"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)\",\n \"SimValley\": \"\\\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\\\b\",\n \"Wolfgang\": \"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q\",\n \"Alcatel\": \"Alcatel\",\n \"Nintendo\": \"Nintendo (3DS|Switch)\",\n \"Amoi\": \"Amoi\",\n \"INQ\": \"INQ\",\n \"OnePlus\": \"ONEPLUS\",\n \"GenericPhone\": \"Tapatalk|PDA;|SAGEM|\\\\bmmp\\\\b|pocket|\\\\bpsp\\\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\\\bwap\\\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser\"\n },\n \"tablets\": {\n \"iPad\": \"iPad|iPad.*Mobile\",\n \"NexusTablet\": \"Android.*Nexus[\\\\s]+(7|9|10)\",\n \"GoogleTablet\": \"Android.*Pixel C\",\n \"SamsungTablet\": \"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V|SM-P610|SM-T290|SM-T515|SM-T590|SM-T595|SM-T725|SM-T817P|SM-P585N0|SM-T395|SM-T295|SM-T865|SM-P610N|SM-P615|SM-T970|SM-T380|SM-T5950|SM-T905|SM-T231|SM-T500|SM-T860\",\n \"Kindle\": \"Kindle|Silk.*Accelerated|Android.*\\\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\\\b|Android.*Silk\\/[0-9.]+ like Chrome\\/[0-9.]+ (?!Mobile)\",\n \"SurfaceTablet\": \"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)\",\n \"HPTablet\": \"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10\",\n \"AsusTablet\": \"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\\\bK00F\\\\b|\\\\bK00C\\\\b|\\\\bK00E\\\\b|\\\\bK00L\\\\b|TX201LA|ME176C|ME102A|\\\\bM80TA\\\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\\\bME70C\\\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\\\bP027\\\\b|\\\\bP024\\\\b|\\\\bP00C\\\\b\",\n \"BlackBerryTablet\": \"PlayBook|RIM Tablet\",\n \"HTCtablet\": \"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410\",\n \"MotorolaTablet\": \"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617\",\n \"NookTablet\": \"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2\",\n \"AcerTablet\": \"Android.*; \\\\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\\\b|W3-810|\\\\bA3-A10\\\\b|\\\\bA3-A11\\\\b|\\\\bA3-A20\\\\b|\\\\bA3-A30|A3-A40\",\n \"ToshibaTablet\": \"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO\",\n \"LGTablet\": \"\\\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\\\b\",\n \"FujitsuTablet\": \"Android.*\\\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\\\b\",\n \"PrestigioTablet\": \"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002\",\n \"LenovoTablet\": \"Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X|TB-X704F|TB-X104F|TB3-X70F|TB-X705F|TB-8504F|TB3-X70L|TB3-710F|TB-X704L\",\n \"DellTablet\": \"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7\",\n \"YarvikTablet\": \"Android.*\\\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\\\b\",\n \"MedionTablet\": \"Android.*\\\\bOYO\\\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB\",\n \"ArnovaTablet\": \"97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2\",\n \"IntensoTablet\": \"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004\",\n \"IRUTablet\": \"M702pro\",\n \"MegafonTablet\": \"MegaFon V9|\\\\bZTE V9\\\\b|Android.*\\\\bMT7A\\\\b\",\n \"EbodaTablet\": \"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)\",\n \"AllViewTablet\": \"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)\",\n \"ArchosTablet\": \"\\\\b(101G9|80G9|A101IT)\\\\b|Qilive 97R|Archos5|\\\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\\\b\",\n \"AinolTablet\": \"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark\",\n \"NokiaLumiaTablet\": \"Lumia 2520\",\n \"SonyTablet\": \"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712\",\n \"PhilipsTablet\": \"\\\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\\\b\",\n \"CubeTablet\": \"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT\",\n \"CobyTablet\": \"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010\",\n \"MIDTablet\": \"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10\",\n \"MSITablet\": \"MSI \\\\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\\\b\",\n \"SMiTTablet\": \"Android.*(\\\\bMID\\\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)\",\n \"RockChipTablet\": \"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A\",\n \"FlyTablet\": \"IQ310|Fly Vision\",\n \"bqTablet\": \"Android.*(bq)?.*\\\\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\\\\b|Maxwell.*Lite|Maxwell.*Plus\",\n \"HuaweiTablet\": \"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19\",\n \"NecTablet\": \"\\\\bN-06D|\\\\bN-08D\",\n \"PantechTablet\": \"Pantech.*P4100\",\n \"BronchoTablet\": \"Broncho.*(N701|N708|N802|a710)\",\n \"VersusTablet\": \"TOUCHPAD.*[78910]|\\\\bTOUCHTAB\\\\b\",\n \"ZyncTablet\": \"z1000|Z99 2G|z930|z990|z909|Z919|z900\",\n \"PositivoTablet\": \"TB07STA|TB10STA|TB07FTA|TB10FTA\",\n \"NabiTablet\": \"Android.*\\\\bNabi\",\n \"KoboTablet\": \"Kobo Touch|\\\\bK080\\\\b|\\\\bVox\\\\b Build|\\\\bArc\\\\b Build\",\n \"DanewTablet\": \"DSlide.*\\\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\\\b\",\n \"TexetTablet\": \"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE\",\n \"PlaystationTablet\": \"Playstation.*(Portable|Vita)\",\n \"TrekstorTablet\": \"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab\",\n \"PyleAudioTablet\": \"\\\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\\\b\",\n \"AdvanTablet\": \"Android.* \\\\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\\\b \",\n \"DanyTechTablet\": \"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1\",\n \"GalapadTablet\": \"Android [0-9.]+; [a-z-]+; \\\\bG1\\\\b\",\n \"MicromaxTablet\": \"Funbook|Micromax.*\\\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\\\b\",\n \"KarbonnTablet\": \"Android.*\\\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\\\b\",\n \"AllFineTablet\": \"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide\",\n \"PROSCANTablet\": \"\\\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\\\b\",\n \"YONESTablet\": \"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026\",\n \"ChangJiaTablet\": \"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503\",\n \"GUTablet\": \"TX-A1301|TX-M9002|Q702|kf026\",\n \"PointOfViewTablet\": \"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10\",\n \"OvermaxTablet\": \"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027\",\n \"HCLTablet\": \"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync\",\n \"DPSTablet\": \"DPS Dream 9|DPS Dual 7\",\n \"VistureTablet\": \"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10\",\n \"CrestaTablet\": \"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989\",\n \"MediatekTablet\": \"\\\\bMT8125|MT8389|MT8135|MT8377\\\\b\",\n \"ConcordeTablet\": \"Concorde([ ]+)?Tab|ConCorde ReadMan\",\n \"GoCleverTablet\": \"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042\",\n \"ModecomTablet\": \"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003\",\n \"VoninoTablet\": \"\\\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\\\bQ8\\\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\\\b\",\n \"ECSTablet\": \"V07OT2|TM105A|S10OT1|TR10CS1\",\n \"StorexTablet\": \"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab\",\n \"VodafoneTablet\": \"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400\",\n \"EssentielBTablet\": \"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2\",\n \"RossMoorTablet\": \"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711\",\n \"iMobileTablet\": \"i-mobile i-note\",\n \"TolinoTablet\": \"tolino tab [0-9.]+|tolino shine\",\n \"AudioSonicTablet\": \"\\\\bC-22Q|T7-QC|T-17B|T-17P\\\\b\",\n \"AMPETablet\": \"Android.* A78 \",\n \"SkkTablet\": \"Android.* (SKYPAD|PHOENIX|CYCLOPS)\",\n \"TecnoTablet\": \"TECNO P9|TECNO DP8D\",\n \"JXDTablet\": \"Android.* \\\\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\\\b\",\n \"iJoyTablet\": \"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)\",\n \"FX2Tablet\": \"FX2 PAD7|FX2 PAD10\",\n \"XoroTablet\": \"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151\",\n \"ViewsonicTablet\": \"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a\",\n \"VerizonTablet\": \"QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1\",\n \"OdysTablet\": \"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\\\bXELIO\\\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10\",\n \"CaptivaTablet\": \"CAPTIVA PAD\",\n \"IconbitTablet\": \"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S\",\n \"TeclastTablet\": \"T98 4G|\\\\bP80\\\\b|\\\\bX90HD\\\\b|X98 Air|X98 Air 3G|\\\\bX89\\\\b|P80 3G|\\\\bX80h\\\\b|P98 Air|\\\\bX89HD\\\\b|P98 3G|\\\\bP90HD\\\\b|P89 3G|X98 3G|\\\\bP70h\\\\b|P79HD 3G|G18d 3G|\\\\bP79HD\\\\b|\\\\bP89s\\\\b|\\\\bA88\\\\b|\\\\bP10HD\\\\b|\\\\bP19HD\\\\b|G18 3G|\\\\bP78HD\\\\b|\\\\bA78\\\\b|\\\\bP75\\\\b|G17s 3G|G17h 3G|\\\\bP85t\\\\b|\\\\bP90\\\\b|\\\\bP11\\\\b|\\\\bP98t\\\\b|\\\\bP98HD\\\\b|\\\\bG18d\\\\b|\\\\bP85s\\\\b|\\\\bP11HD\\\\b|\\\\bP88s\\\\b|\\\\bA80HD\\\\b|\\\\bA80se\\\\b|\\\\bA10h\\\\b|\\\\bP89\\\\b|\\\\bP78s\\\\b|\\\\bG18\\\\b|\\\\bP85\\\\b|\\\\bA70h\\\\b|\\\\bA70\\\\b|\\\\bG17\\\\b|\\\\bP18\\\\b|\\\\bA80s\\\\b|\\\\bA11s\\\\b|\\\\bP88HD\\\\b|\\\\bA80h\\\\b|\\\\bP76s\\\\b|\\\\bP76h\\\\b|\\\\bP98\\\\b|\\\\bA10HD\\\\b|\\\\bP78\\\\b|\\\\bP88\\\\b|\\\\bA11\\\\b|\\\\bA10t\\\\b|\\\\bP76a\\\\b|\\\\bP76t\\\\b|\\\\bP76e\\\\b|\\\\bP85HD\\\\b|\\\\bP85a\\\\b|\\\\bP86\\\\b|\\\\bP75HD\\\\b|\\\\bP76v\\\\b|\\\\bA12\\\\b|\\\\bP75a\\\\b|\\\\bA15\\\\b|\\\\bP76Ti\\\\b|\\\\bP81HD\\\\b|\\\\bA10\\\\b|\\\\bT760VE\\\\b|\\\\bT720HD\\\\b|\\\\bP76\\\\b|\\\\bP73\\\\b|\\\\bP71\\\\b|\\\\bP72\\\\b|\\\\bT720SE\\\\b|\\\\bC520Ti\\\\b|\\\\bT760\\\\b|\\\\bT720VE\\\\b|T720-3GE|T720-WiFi\",\n \"OndaTablet\": \"\\\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\\\b[\\\\s]+|V10 \\\\b4G\\\\b\",\n \"JaytechTablet\": \"TPC-PA762\",\n \"BlaupunktTablet\": \"Endeavour 800NG|Endeavour 1010\",\n \"DigmaTablet\": \"\\\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\\\b\",\n \"EvolioTablet\": \"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\\\bEvotab\\\\b|\\\\bNeura\\\\b\",\n \"LavaTablet\": \"QPAD E704|\\\\bIvoryS\\\\b|E-TAB IVORY|\\\\bE-TAB\\\\b\",\n \"AocTablet\": \"MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712\",\n \"MpmanTablet\": \"MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\\\bMPG7\\\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010\",\n \"CelkonTablet\": \"CT695|CT888|CT[\\\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\\\bCT-1\\\\b\",\n \"WolderTablet\": \"miTab \\\\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\\\b\",\n \"MediacomTablet\": \"M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA\",\n \"MiTablet\": \"\\\\bMI PAD\\\\b|\\\\bHM NOTE 1W\\\\b\",\n \"NibiruTablet\": \"Nibiru M1|Nibiru Jupiter One\",\n \"NexoTablet\": \"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI\",\n \"LeaderTablet\": \"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100\",\n \"UbislateTablet\": \"UbiSlate[\\\\s]?7C\",\n \"PocketBookTablet\": \"Pocketbook\",\n \"KocasoTablet\": \"\\\\b(TB-1207)\\\\b\",\n \"HisenseTablet\": \"\\\\b(F5281|E2371)\\\\b\",\n \"Hudl\": \"Hudl HT7S3|Hudl 2\",\n \"TelstraTablet\": \"T-Hub2\",\n \"GenericTablet\": \"Android.*\\\\b97D\\\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\\\bA7EB\\\\b|CatNova8|A1_07|CT704|CT1002|\\\\bM721\\\\b|rk30sdk|\\\\bEVOTAB\\\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\\\bM6pro\\\\b|CT1020W|arc 10HD|\\\\bTP750\\\\b|\\\\bQTAQZ3\\\\b|WVT101|TM1088|KT107\"\n },\n \"oss\": {\n \"AndroidOS\": \"Android\",\n \"BlackBerryOS\": \"blackberry|\\\\bBB10\\\\b|rim tablet os\",\n \"PalmOS\": \"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino\",\n \"SymbianOS\": \"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\\\bS60\\\\b\",\n \"WindowsMobileOS\": \"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;\",\n \"WindowsPhoneOS\": \"Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;\",\n \"iOS\": \"\\\\biPhone.*Mobile|\\\\biPod|\\\\biPad|AppleCoreMedia\",\n \"iPadOS\": \"CPU OS 13\",\n \"SailfishOS\": \"Sailfish\",\n \"MeeGoOS\": \"MeeGo\",\n \"MaemoOS\": \"Maemo\",\n \"JavaOS\": \"J2ME\\/|\\\\bMIDP\\\\b|\\\\bCLDC\\\\b\",\n \"webOS\": \"webOS|hpwOS\",\n \"badaOS\": \"\\\\bBada\\\\b\",\n \"BREWOS\": \"BREW\"\n },\n \"uas\": {\n \"Chrome\": \"\\\\bCrMo\\\\b|CriOS|Android.*Chrome\\/[.0-9]* (Mobile)?\",\n \"Dolfin\": \"\\\\bDolfin\\\\b\",\n \"Opera\": \"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\\/[0-9.]+$|Coast\\/[0-9.]+\",\n \"Skyfire\": \"Skyfire\",\n \"Edge\": \"\\\\bEdgiOS\\\\b|Mobile Safari\\/[.0-9]* Edge\",\n \"IE\": \"IEMobile|MSIEMobile\",\n \"Firefox\": \"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS\",\n \"Bolt\": \"bolt\",\n \"TeaShark\": \"teashark\",\n \"Blazer\": \"Blazer\",\n \"Safari\": \"Version((?!\\\\bEdgiOS\\\\b).)*Mobile.*Safari|Safari.*Mobile|MobileSafari\",\n \"WeChat\": \"\\\\bMicroMessenger\\\\b\",\n \"UCBrowser\": \"UC.*Browser|UCWEB\",\n \"baiduboxapp\": \"baiduboxapp\",\n \"baidubrowser\": \"baidubrowser\",\n \"DiigoBrowser\": \"DiigoBrowser\",\n \"Mercury\": \"\\\\bMercury\\\\b\",\n \"ObigoBrowser\": \"Obigo\",\n \"NetFront\": \"NF-Browser\",\n \"GenericBrowser\": \"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger\",\n \"PaleMoon\": \"Android.*PaleMoon|Mobile.*PaleMoon\"\n },\n \"props\": {\n \"Mobile\": \"Mobile\\/[VER]\",\n \"Build\": \"Build\\/[VER]\",\n \"Version\": \"Version\\/[VER]\",\n \"VendorID\": \"VendorID\\/[VER]\",\n \"iPad\": \"iPad.*CPU[a-z ]+[VER]\",\n \"iPhone\": \"iPhone.*CPU[a-z ]+[VER]\",\n \"iPod\": \"iPod.*CPU[a-z ]+[VER]\",\n \"Kindle\": \"Kindle\\/[VER]\",\n \"Chrome\": [\n \"Chrome\\/[VER]\",\n \"CriOS\\/[VER]\",\n \"CrMo\\/[VER]\"\n ],\n \"Coast\": [\n \"Coast\\/[VER]\"\n ],\n \"Dolfin\": \"Dolfin\\/[VER]\",\n \"Firefox\": [\n \"Firefox\\/[VER]\",\n \"FxiOS\\/[VER]\"\n ],\n \"Fennec\": \"Fennec\\/[VER]\",\n \"Edge\": \"Edge\\/[VER]\",\n \"IE\": [\n \"IEMobile\\/[VER];\",\n \"IEMobile [VER]\",\n \"MSIE [VER];\",\n \"Trident\\/[0-9.]+;.*rv:[VER]\"\n ],\n \"NetFront\": \"NetFront\\/[VER]\",\n \"NokiaBrowser\": \"NokiaBrowser\\/[VER]\",\n \"Opera\": [\n \" OPR\\/[VER]\",\n \"Opera Mini\\/[VER]\",\n \"Version\\/[VER]\"\n ],\n \"Opera Mini\": \"Opera Mini\\/[VER]\",\n \"Opera Mobi\": \"Version\\/[VER]\",\n \"UCBrowser\": [\n \"UCWEB[VER]\",\n \"UC.*Browser\\/[VER]\"\n ],\n \"MQQBrowser\": \"MQQBrowser\\/[VER]\",\n \"MicroMessenger\": \"MicroMessenger\\/[VER]\",\n \"baiduboxapp\": \"baiduboxapp\\/[VER]\",\n \"baidubrowser\": \"baidubrowser\\/[VER]\",\n \"SamsungBrowser\": \"SamsungBrowser\\/[VER]\",\n \"Iron\": \"Iron\\/[VER]\",\n \"Safari\": [\n \"Version\\/[VER]\",\n \"Safari\\/[VER]\"\n ],\n \"Skyfire\": \"Skyfire\\/[VER]\",\n \"Tizen\": \"Tizen\\/[VER]\",\n \"Webkit\": \"webkit[ \\/][VER]\",\n \"PaleMoon\": \"PaleMoon\\/[VER]\",\n \"SailfishBrowser\": \"SailfishBrowser\\/[VER]\",\n \"Gecko\": \"Gecko\\/[VER]\",\n \"Trident\": \"Trident\\/[VER]\",\n \"Presto\": \"Presto\\/[VER]\",\n \"Goanna\": \"Goanna\\/[VER]\",\n \"iOS\": \" \\\\bi?OS\\\\b [VER][ ;]{1}\",\n \"Android\": \"Android [VER]\",\n \"Sailfish\": \"Sailfish [VER]\",\n \"BlackBerry\": [\n \"BlackBerry[\\\\w]+\\/[VER]\",\n \"BlackBerry.*Version\\/[VER]\",\n \"Version\\/[VER]\"\n ],\n \"BREW\": \"BREW [VER]\",\n \"Java\": \"Java\\/[VER]\",\n \"Windows Phone OS\": [\n \"Windows Phone OS [VER]\",\n \"Windows Phone [VER]\"\n ],\n \"Windows Phone\": \"Windows Phone [VER]\",\n \"Windows CE\": \"Windows CE\\/[VER]\",\n \"Windows NT\": \"Windows NT [VER]\",\n \"Symbian\": [\n \"SymbianOS\\/[VER]\",\n \"Symbian\\/[VER]\"\n ],\n \"webOS\": [\n \"webOS\\/[VER]\",\n \"hpwOS\\/[VER];\"\n ]\n },\n \"utils\": {\n \"Bot\": \"Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp|AspiegelBot\",\n \"MobileBot\": \"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker\\/M1A1-R2D2\",\n \"DesktopMode\": \"WPDesktop\",\n \"TV\": \"SonyDTV|HbbTV\",\n \"WebKit\": \"(webkit)[ \\/]([\\\\w.]+)\",\n \"Console\": \"\\\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\\\\b\",\n \"Watch\": \"SM-V700\"\n }\n};\n\n // following patterns come from http://detectmobilebrowsers.com/\n impl.detectMobileBrowsers = {\n fullPattern: /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,\n shortPattern: /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,\n tabletPattern: /android|ipad|playbook|silk/i\n };\n\n var hasOwnProp = Object.prototype.hasOwnProperty,\n isArray;\n\n impl.FALLBACK_PHONE = 'UnknownPhone';\n impl.FALLBACK_TABLET = 'UnknownTablet';\n impl.FALLBACK_MOBILE = 'UnknownMobile';\n\n isArray = ('isArray' in Array) ?\n Array.isArray : function (value) { return Object.prototype.toString.call(value) === '[object Array]'; };\n\n function equalIC(a, b) {\n return a != null && b != null && a.toLowerCase() === b.toLowerCase();\n }\n\n function containsIC(array, value) {\n var valueLC, i, len = array.length;\n if (!len || !value) {\n return false;\n }\n valueLC = value.toLowerCase();\n for (i = 0; i < len; ++i) {\n if (valueLC === array[i].toLowerCase()) {\n return true;\n }\n }\n return false;\n }\n\n function convertPropsToRegExp(object) {\n for (var key in object) {\n if (hasOwnProp.call(object, key)) {\n object[key] = new RegExp(object[key], 'i');\n }\n }\n }\n\n function prepareUserAgent(userAgent) {\n return (userAgent || '').substr(0, 500); // mitigate vulnerable to ReDoS\n }\n\n (function init() {\n var key, values, value, i, len, verPos, mobileDetectRules = impl.mobileDetectRules;\n for (key in mobileDetectRules.props) {\n if (hasOwnProp.call(mobileDetectRules.props, key)) {\n values = mobileDetectRules.props[key];\n if (!isArray(values)) {\n values = [values];\n }\n len = values.length;\n for (i = 0; i < len; ++i) {\n value = values[i];\n verPos = value.indexOf('[VER]');\n if (verPos >= 0) {\n value = value.substring(0, verPos) + '([\\\\w._\\\\+]+)' + value.substring(verPos + 5);\n }\n values[i] = new RegExp(value, 'i');\n }\n mobileDetectRules.props[key] = values;\n }\n }\n convertPropsToRegExp(mobileDetectRules.oss);\n convertPropsToRegExp(mobileDetectRules.phones);\n convertPropsToRegExp(mobileDetectRules.tablets);\n convertPropsToRegExp(mobileDetectRules.uas);\n convertPropsToRegExp(mobileDetectRules.utils);\n\n // copy some patterns to oss0 which are tested first (see issue#15)\n mobileDetectRules.oss0 = {\n WindowsPhoneOS: mobileDetectRules.oss.WindowsPhoneOS,\n WindowsMobileOS: mobileDetectRules.oss.WindowsMobileOS\n };\n }());\n\n /**\n * Test userAgent string against a set of rules and find the first matched key.\n * @param {Object} rules (key is String, value is RegExp)\n * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent').\n * @returns {String|null} the matched key if found, otherwise null\n * @private\n */\n impl.findMatch = function(rules, userAgent) {\n for (var key in rules) {\n if (hasOwnProp.call(rules, key)) {\n if (rules[key].test(userAgent)) {\n return key;\n }\n }\n }\n return null;\n };\n\n /**\n * Test userAgent string against a set of rules and return an array of matched keys.\n * @param {Object} rules (key is String, value is RegExp)\n * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent').\n * @returns {Array} an array of matched keys, may be empty when there is no match, but not null\n * @private\n */\n impl.findMatches = function(rules, userAgent) {\n var result = [];\n for (var key in rules) {\n if (hasOwnProp.call(rules, key)) {\n if (rules[key].test(userAgent)) {\n result.push(key);\n }\n }\n }\n return result;\n };\n\n /**\n * Check the version of the given property in the User-Agent.\n *\n * @param {String} propertyName\n * @param {String} userAgent\n * @return {String} version or null if version not found\n * @private\n */\n impl.getVersionStr = function (propertyName, userAgent) {\n var props = impl.mobileDetectRules.props, patterns, i, len, match;\n if (hasOwnProp.call(props, propertyName)) {\n patterns = props[propertyName];\n len = patterns.length;\n for (i = 0; i < len; ++i) {\n match = patterns[i].exec(userAgent);\n if (match !== null) {\n return match[1];\n }\n }\n }\n return null;\n };\n\n /**\n * Check the version of the given property in the User-Agent.\n * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31)\n *\n * @param {String} propertyName\n * @param {String} userAgent\n * @return {Number} version or NaN if version not found\n * @private\n */\n impl.getVersion = function (propertyName, userAgent) {\n var version = impl.getVersionStr(propertyName, userAgent);\n return version ? impl.prepareVersionNo(version) : NaN;\n };\n\n /**\n * Prepare the version number.\n *\n * @param {String} version\n * @return {Number} the version number as a floating number\n * @private\n */\n impl.prepareVersionNo = function (version) {\n var numbers;\n\n numbers = version.split(/[a-z._ \\/\\-]/i);\n if (numbers.length === 1) {\n version = numbers[0];\n }\n if (numbers.length > 1) {\n version = numbers[0] + '.';\n numbers.shift();\n version += numbers.join('');\n }\n return Number(version);\n };\n\n impl.isMobileFallback = function (userAgent) {\n return impl.detectMobileBrowsers.fullPattern.test(userAgent) ||\n impl.detectMobileBrowsers.shortPattern.test(userAgent.substr(0,4));\n };\n\n impl.isTabletFallback = function (userAgent) {\n return impl.detectMobileBrowsers.tabletPattern.test(userAgent);\n };\n\n impl.prepareDetectionCache = function (cache, userAgent, maxPhoneWidth) {\n if (cache.mobile !== undefined) {\n return;\n }\n var phone, tablet, phoneSized;\n\n // first check for stronger tablet rules, then phone (see issue#5)\n tablet = impl.findMatch(impl.mobileDetectRules.tablets, userAgent);\n if (tablet) {\n cache.mobile = cache.tablet = tablet;\n cache.phone = null;\n return; // unambiguously identified as tablet\n }\n\n phone = impl.findMatch(impl.mobileDetectRules.phones, userAgent);\n if (phone) {\n cache.mobile = cache.phone = phone;\n cache.tablet = null;\n return; // unambiguously identified as phone\n }\n\n // our rules haven't found a match -> try more general fallback rules\n if (impl.isMobileFallback(userAgent)) {\n phoneSized = MobileDetect.isPhoneSized(maxPhoneWidth);\n if (phoneSized === undefined) {\n cache.mobile = impl.FALLBACK_MOBILE;\n cache.tablet = cache.phone = null;\n } else if (phoneSized) {\n cache.mobile = cache.phone = impl.FALLBACK_PHONE;\n cache.tablet = null;\n } else {\n cache.mobile = cache.tablet = impl.FALLBACK_TABLET;\n cache.phone = null;\n }\n } else if (impl.isTabletFallback(userAgent)) {\n cache.mobile = cache.tablet = impl.FALLBACK_TABLET;\n cache.phone = null;\n } else {\n // not mobile at all!\n cache.mobile = cache.tablet = cache.phone = null;\n }\n };\n\n // t is a reference to a MobileDetect instance\n impl.mobileGrade = function (t) {\n // impl note:\n // To keep in sync w/ Mobile_Detect.php easily, the following code is tightly aligned to the PHP version.\n // When changes are made in Mobile_Detect.php, copy this method and replace:\n // $this-> / t.\n // self::MOBILE_GRADE_(.) / '$1'\n // , self::VERSION_TYPE_FLOAT / (nothing)\n // isIOS() / os('iOS')\n // [reg] / (nothing) <-- jsdelivr complaining about unescaped unicode character U+00AE\n var $isMobile = t.mobile() !== null;\n\n if (\n // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1)\n t.os('iOS') && t.version('iPad')>=4.3 ||\n t.os('iOS') && t.version('iPhone')>=3.1 ||\n t.os('iOS') && t.version('iPod')>=3.1 ||\n\n // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5)\n // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM\n // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices\n // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7\n ( t.version('Android')>2.1 && t.is('Webkit') ) ||\n\n // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800\n t.version('Windows Phone OS')>=7.0 ||\n\n // Blackberry 7 - Tested on BlackBerry Torch 9810\n // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670\n t.is('BlackBerry') && t.version('BlackBerry')>=6.0 ||\n // Blackberry Playbook (1.0-2.0) - Tested on PlayBook\n t.match('Playbook.*Tablet') ||\n\n // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0)\n ( t.version('webOS')>=1.4 && t.match('Palm|Pre|Pixi') ) ||\n // Palm WebOS 3.0 - Tested on HP TouchPad\n t.match('hp.*TouchPad') ||\n\n // Firefox Mobile (12 Beta) - Tested on Android 2.3 device\n ( t.is('Firefox') && t.version('Firefox')>=12 ) ||\n\n // Chrome for Android - Tested on Android 4.0, 4.1 device\n ( t.is('Chrome') && t.is('AndroidOS') && t.version('Android')>=4.0 ) ||\n\n // Skyfire 4.1 - Tested on Android 2.3 device\n ( t.is('Skyfire') && t.version('Skyfire')>=4.1 && t.is('AndroidOS') && t.version('Android')>=2.3 ) ||\n\n // Opera Mobile 11.5-12: Tested on Android 2.3\n ( t.is('Opera') && t.version('Opera Mobi')>11 && t.is('AndroidOS') ) ||\n\n // Meego 1.2 - Tested on Nokia 950 and N9\n t.is('MeeGoOS') ||\n\n // Tizen (pre-release) - Tested on early hardware\n t.is('Tizen') ||\n\n // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser\n // @todo: more tests here!\n t.is('Dolfin') && t.version('Bada')>=2.0 ||\n\n // UC Browser - Tested on Android 2.3 device\n ( (t.is('UC Browser') || t.is('Dolfin')) && t.version('Android')>=2.3 ) ||\n\n // Kindle 3 and Fire - Tested on the built-in WebKit browser for each\n ( t.match('Kindle Fire') ||\n t.is('Kindle') && t.version('Kindle')>=3.0 ) ||\n\n // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet\n t.is('AndroidOS') && t.is('NookTablet') ||\n\n // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7\n t.version('Chrome')>=11 && !$isMobile ||\n\n // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7\n t.version('Safari')>=5.0 && !$isMobile ||\n\n // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7\n t.version('Firefox')>=4.0 && !$isMobile ||\n\n // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7\n t.version('MSIE')>=7.0 && !$isMobile ||\n\n // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7\n // @reference: http://my.opera.com/community/openweb/idopera/\n t.version('Opera')>=10 && !$isMobile\n\n ){\n return 'A';\n }\n\n if (\n t.os('iOS') && t.version('iPad')<4.3 ||\n t.os('iOS') && t.version('iPhone')<3.1 ||\n t.os('iOS') && t.version('iPod')<3.1 ||\n\n // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770\n t.is('Blackberry') && t.version('BlackBerry')>=5 && t.version('BlackBerry')<6 ||\n\n //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3\n ( t.version('Opera Mini')>=5.0 && t.version('Opera Mini')<=6.5 &&\n (t.version('Android')>=2.3 || t.is('iOS')) ) ||\n\n // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1)\n t.match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') ||\n\n // @todo: report this (tested on Nokia N71)\n t.version('Opera Mobi')>=11 && t.is('SymbianOS')\n ){\n return 'B';\n }\n\n if (\n // Blackberry 4.x - Tested on the Curve 8330\n t.version('BlackBerry')<5.0 ||\n // Windows Mobile - Tested on the HTC Leo (WinMo 5.2)\n t.match('MSIEMobile|Windows CE.*Mobile') || t.version('Windows Mobile')<=5.2\n\n ){\n return 'C';\n }\n\n //All older smartphone platforms and featurephones - Any device that doesn't support media queries\n //will receive the basic, C grade experience.\n return 'C';\n };\n\n impl.detectOS = function (ua) {\n return impl.findMatch(impl.mobileDetectRules.oss0, ua) ||\n impl.findMatch(impl.mobileDetectRules.oss, ua);\n };\n\n impl.getDeviceSmallerSide = function () {\n return window.screen.width < window.screen.height ?\n window.screen.width :\n window.screen.height;\n };\n\n /**\n * Constructor for MobileDetect object.\n *
\n * Such an object will keep a reference to the given user-agent string and cache most of the detect queries.
\n *
\n * Find information how to download and install:\n * github.com/hgoebl/mobile-detect.js/\n *
\n *\n * @example
\n     *     var md = new MobileDetect(window.navigator.userAgent);\n     *     if (md.mobile()) {\n     *         location.href = (md.mobileGrade() === 'A') ? '/mobile/' : '/lynx/';\n     *     }\n     * 
\n *\n * @param {string} userAgent typically taken from window.navigator.userAgent or http_header['User-Agent']\n * @param {number} [maxPhoneWidth=600] only for browsers specify a value for the maximum\n * width of smallest device side (in logical \"CSS\" pixels) until a device detected as mobile will be handled\n * as phone.\n * This is only used in cases where the device cannot be classified as phone or tablet.
\n * See Declaring Tablet Layouts\n * for Android.
\n * If you provide a value < 0, then this \"fuzzy\" check is disabled.\n * @constructor\n * @global\n */\n function MobileDetect(userAgent, maxPhoneWidth) {\n this.ua = prepareUserAgent(userAgent);\n this._cache = {};\n //600dp is typical 7\" tablet minimum width\n this.maxPhoneWidth = maxPhoneWidth || 600;\n }\n\n MobileDetect.prototype = {\n constructor: MobileDetect,\n\n /**\n * Returns the detected phone or tablet type or null if it is not a mobile device.\n *
\n * For a list of possible return values see {@link MobileDetect#phone} and {@link MobileDetect#tablet}.
\n *
\n * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against\n * the patterns of detectmobilebrowsers.com. If this test\n * is positive, a value of UnknownPhone, UnknownTablet or\n * UnknownMobile is returned.
\n * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
\n *
\n * When used server-side (node.js), there is no way to tell the difference between UnknownTablet\n * and UnknownMobile, so you will get UnknownMobile here.
\n * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for:\n * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}.\n * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use.\n *
\n * In most cases you will use the return value just as a boolean.\n *\n * @returns {String} the key for the phone family or tablet family, e.g. \"Nexus\".\n * @function MobileDetect#mobile\n */\n mobile: function () {\n impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth);\n return this._cache.mobile;\n },\n\n /**\n * Returns the detected phone type/family string or null.\n *
\n * The returned tablet (family or producer) is one of following keys:
\n *
iPhone, BlackBerry, Pixel, HTC, Nexus, Dell, Motorola, Samsung, LG, Sony, Asus,\n * Xiaomi, NokiaLumia, Micromax, Palm, Vertu, Pantech, Fly, Wiko, iMobile,\n * SimValley, Wolfgang, Alcatel, Nintendo, Amoi, INQ, OnePlus, GenericPhone
\n *
\n * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against\n * the patterns of detectmobilebrowsers.com. If this test\n * is positive, a value of UnknownPhone or UnknownMobile is returned.
\n * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
\n *
\n * When used server-side (node.js), there is no way to tell the difference between UnknownTablet\n * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile}\n * will return UnknownMobile.
\n * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for:\n * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}.\n * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use.\n *
\n * In most cases you will use the return value just as a boolean.\n *\n * @returns {String} the key of the phone family or producer, e.g. \"iPhone\"\n * @function MobileDetect#phone\n */\n phone: function () {\n impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth);\n return this._cache.phone;\n },\n\n /**\n * Returns the detected tablet type/family string or null.\n *
\n * The returned tablet (family or producer) is one of following keys:
\n *
iPad, NexusTablet, GoogleTablet, SamsungTablet, Kindle, SurfaceTablet,\n * HPTablet, AsusTablet, BlackBerryTablet, HTCtablet, MotorolaTablet, NookTablet,\n * AcerTablet, ToshibaTablet, LGTablet, FujitsuTablet, PrestigioTablet,\n * LenovoTablet, DellTablet, YarvikTablet, MedionTablet, ArnovaTablet,\n * IntensoTablet, IRUTablet, MegafonTablet, EbodaTablet, AllViewTablet,\n * ArchosTablet, AinolTablet, NokiaLumiaTablet, SonyTablet, PhilipsTablet,\n * CubeTablet, CobyTablet, MIDTablet, MSITablet, SMiTTablet, RockChipTablet,\n * FlyTablet, bqTablet, HuaweiTablet, NecTablet, PantechTablet, BronchoTablet,\n * VersusTablet, ZyncTablet, PositivoTablet, NabiTablet, KoboTablet, DanewTablet,\n * TexetTablet, PlaystationTablet, TrekstorTablet, PyleAudioTablet, AdvanTablet,\n * DanyTechTablet, GalapadTablet, MicromaxTablet, KarbonnTablet, AllFineTablet,\n * PROSCANTablet, YONESTablet, ChangJiaTablet, GUTablet, PointOfViewTablet,\n * OvermaxTablet, HCLTablet, DPSTablet, VistureTablet, CrestaTablet,\n * MediatekTablet, ConcordeTablet, GoCleverTablet, ModecomTablet, VoninoTablet,\n * ECSTablet, StorexTablet, VodafoneTablet, EssentielBTablet, RossMoorTablet,\n * iMobileTablet, TolinoTablet, AudioSonicTablet, AMPETablet, SkkTablet,\n * TecnoTablet, JXDTablet, iJoyTablet, FX2Tablet, XoroTablet, ViewsonicTablet,\n * VerizonTablet, OdysTablet, CaptivaTablet, IconbitTablet, TeclastTablet,\n * OndaTablet, JaytechTablet, BlaupunktTablet, DigmaTablet, EvolioTablet,\n * LavaTablet, AocTablet, MpmanTablet, CelkonTablet, WolderTablet, MediacomTablet,\n * MiTablet, NibiruTablet, NexoTablet, LeaderTablet, UbislateTablet,\n * PocketBookTablet, KocasoTablet, HisenseTablet, Hudl, TelstraTablet,\n * GenericTablet
\n *
\n * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against\n * the patterns of detectmobilebrowsers.com. If this test\n * is positive, a value of UnknownTablet or UnknownMobile is returned.
\n * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
\n *
\n * When used server-side (node.js), there is no way to tell the difference between UnknownTablet\n * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile}\n * will return UnknownMobile.
\n * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for:\n * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}.\n * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use.\n *
\n * In most cases you will use the return value just as a boolean.\n *\n * @returns {String} the key of the tablet family or producer, e.g. \"SamsungTablet\"\n * @function MobileDetect#tablet\n */\n tablet: function () {\n impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth);\n return this._cache.tablet;\n },\n\n /**\n * Returns the (first) detected user-agent string or null.\n *
\n * The returned user-agent is one of following keys:
\n *
Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, Blazer,\n * Safari, WeChat, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, Mercury,\n * ObigoBrowser, NetFront, GenericBrowser, PaleMoon
\n *
\n * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare\n * cases where a mobile device pretends to be more than one particular browser. You can get the\n * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by\n * providing one of the defined keys as first argument to {@link MobileDetect#is}.\n *\n * @returns {String} the key for the detected user-agent or null\n * @function MobileDetect#userAgent\n */\n userAgent: function () {\n if (this._cache.userAgent === undefined) {\n this._cache.userAgent = impl.findMatch(impl.mobileDetectRules.uas, this.ua);\n }\n return this._cache.userAgent;\n },\n\n /**\n * Returns all detected user-agent strings.\n *
\n * The array is empty or contains one or more of following keys:
\n *
Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, Blazer,\n * Safari, WeChat, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, Mercury,\n * ObigoBrowser, NetFront, GenericBrowser, PaleMoon
\n *
\n * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare\n * cases where a mobile device pretends to be more than one particular browser. You can get the\n * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by\n * providing one of the defined keys as first argument to {@link MobileDetect#is}.\n *\n * @returns {Array} the array of detected user-agent keys or []\n * @function MobileDetect#userAgents\n */\n userAgents: function () {\n if (this._cache.userAgents === undefined) {\n this._cache.userAgents = impl.findMatches(impl.mobileDetectRules.uas, this.ua);\n }\n return this._cache.userAgents;\n },\n\n /**\n * Returns the detected operating system string or null.\n *
\n * The operating system is one of following keys:
\n *
AndroidOS, BlackBerryOS, PalmOS, SymbianOS, WindowsMobileOS, WindowsPhoneOS,\n * iOS, iPadOS, SailfishOS, MeeGoOS, MaemoOS, JavaOS, webOS, badaOS, BREWOS
\n *\n * @returns {String} the key for the detected operating system.\n * @function MobileDetect#os\n */\n os: function () {\n if (this._cache.os === undefined) {\n this._cache.os = impl.detectOS(this.ua);\n }\n return this._cache.os;\n },\n\n /**\n * Get the version (as Number) of the given property in the User-Agent.\n *
\n * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31)\n *\n * @param {String} key a key defining a thing which has a version.
\n * You can use one of following keys:
\n *
Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast,\n * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini,\n * Opera Mobi, UCBrowser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser,\n * SamsungBrowser, Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon,\n * SailfishBrowser, Gecko, Trident, Presto, Goanna, iOS, Android, Sailfish,\n * BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows CE, Windows\n * NT, Symbian, webOS
\n *\n * @returns {Number} the version as float or NaN if User-Agent doesn't contain this version.\n * Be careful when comparing this value with '==' operator!\n * @function MobileDetect#version\n */\n version: function (key) {\n return impl.getVersion(key, this.ua);\n },\n\n /**\n * Get the version (as String) of the given property in the User-Agent.\n *
\n *\n * @param {String} key a key defining a thing which has a version.
\n * You can use one of following keys:
\n *
Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast,\n * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini,\n * Opera Mobi, UCBrowser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser,\n * SamsungBrowser, Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon,\n * SailfishBrowser, Gecko, Trident, Presto, Goanna, iOS, Android, Sailfish,\n * BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows CE, Windows\n * NT, Symbian, webOS
\n *\n * @returns {String} the \"raw\" version as String or null if User-Agent doesn't contain this version.\n *\n * @function MobileDetect#versionStr\n */\n versionStr: function (key) {\n return impl.getVersionStr(key, this.ua);\n },\n\n /**\n * Global test key against userAgent, os, phone, tablet and some other properties of userAgent string.\n *\n * @param {String} key the key (case-insensitive) of a userAgent, an operating system, phone or\n * tablet family.
\n * For a complete list of possible values, see {@link MobileDetect#userAgent},\n * {@link MobileDetect#os}, {@link MobileDetect#phone}, {@link MobileDetect#tablet}.
\n * Additionally you have following keys:
\n *
Bot, MobileBot, DesktopMode, TV, WebKit, Console, Watch
\n *\n * @returns {boolean} true when the given key is one of the defined keys of userAgent, os, phone,\n * tablet or one of the listed additional keys, otherwise false\n * @function MobileDetect#is\n */\n is: function (key) {\n return containsIC(this.userAgents(), key) ||\n equalIC(key, this.os()) ||\n equalIC(key, this.phone()) ||\n equalIC(key, this.tablet()) ||\n containsIC(impl.findMatches(impl.mobileDetectRules.utils, this.ua), key);\n },\n\n /**\n * Do a quick test against navigator::userAgent.\n *\n * @param {String|RegExp} pattern the pattern, either as String or RegExp\n * (a string will be converted to a case-insensitive RegExp).\n * @returns {boolean} true when the pattern matches, otherwise false\n * @function MobileDetect#match\n */\n match: function (pattern) {\n if (!(pattern instanceof RegExp)) {\n pattern = new RegExp(pattern, 'i');\n }\n return pattern.test(this.ua);\n },\n\n /**\n * Checks whether the mobile device can be considered as phone regarding screen.width.\n *
\n * Obviously this method makes sense in browser environments only (not for Node.js)!\n * @param {number} [maxPhoneWidth] the maximum logical pixels (aka. CSS-pixels) to be considered as phone.
\n * The argument is optional and if not present or falsy, the value of the constructor is taken.\n * @returns {boolean|undefined} undefined if screen size wasn't detectable, else true\n * when screen.width is less or equal to maxPhoneWidth, otherwise false.
\n * Will always return undefined server-side.\n */\n isPhoneSized: function (maxPhoneWidth) {\n return MobileDetect.isPhoneSized(maxPhoneWidth || this.maxPhoneWidth);\n },\n\n /**\n * Returns the mobile grade ('A', 'B', 'C').\n *\n * @returns {String} one of the mobile grades ('A', 'B', 'C').\n * @function MobileDetect#mobileGrade\n */\n mobileGrade: function () {\n if (this._cache.grade === undefined) {\n this._cache.grade = impl.mobileGrade(this);\n }\n return this._cache.grade;\n }\n };\n\n // environment-dependent\n if (typeof window !== 'undefined' && window.screen) {\n MobileDetect.isPhoneSized = function (maxPhoneWidth) {\n return maxPhoneWidth < 0 ? undefined : impl.getDeviceSmallerSide() <= maxPhoneWidth;\n };\n } else {\n MobileDetect.isPhoneSized = function () {};\n }\n\n // should not be replaced by a completely new object - just overwrite existing methods\n MobileDetect._impl = impl;\n \n MobileDetect.version = '1.4.5 2021-03-13';\n\n return MobileDetect;\n}); // end of call of define()\n})((function (undefined) {\n if (typeof module !== 'undefined' && module.exports) {\n return function (factory) { module.exports = factory(); };\n } else if (typeof define === 'function' && define.amd) {\n return define;\n } else if (typeof window !== 'undefined') {\n return function (factory) { window.MobileDetect = factory(); };\n } else {\n // please file a bug if you get this error!\n throw new Error('unknown environment');\n }\n})());","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar inspectCustom = require('./util.inspect').custom;\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function') {\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if ('cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\n return obj[inspectSymbol]();\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix\n : prefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","import { Ace, Range } from \"ace-builds\";\nimport * as AceBuilds from \"ace-builds\";\nimport * as PropTypes from \"prop-types\";\nimport * as React from \"react\";\nconst isEqual = require(\"lodash.isequal\");\nimport {\n debounce,\n editorEvents,\n editorOptions,\n getAceInstance\n} from \"./editorOptions\";\nconst ace = getAceInstance();\n\nimport {\n IAceEditor,\n IAceOptions,\n ICommand,\n IEditorProps,\n IMarker\n} from \"./types\";\n/**\n * See https://github.com/ajaxorg/ace/wiki/Configuring-Ace\n */\n\nexport interface IAceEditorProps {\n name?: string;\n style?: React.CSSProperties;\n /** For available modes see https://github.com/thlorenz/brace/tree/master/mode */\n mode?: string | object;\n /** For available themes see https://github.com/thlorenz/brace/tree/master/theme */\n theme?: string;\n height?: string;\n width?: string;\n className?: string;\n fontSize?: number | string;\n showGutter?: boolean;\n showPrintMargin?: boolean;\n highlightActiveLine?: boolean;\n focus?: boolean;\n cursorStart?: number;\n wrapEnabled?: boolean;\n readOnly?: boolean;\n minLines?: number;\n maxLines?: number;\n navigateToFileEnd?: boolean;\n debounceChangePeriod?: number;\n enableBasicAutocompletion?: boolean | string[];\n enableLiveAutocompletion?: boolean | string[];\n tabSize?: number;\n value?: string;\n placeholder?: string;\n defaultValue?: string;\n scrollMargin?: number[];\n enableSnippets?: boolean;\n onSelectionChange?: (value: any, event?: any) => void;\n onCursorChange?: (value: any, event?: any) => void;\n onInput?: (event?: any) => void;\n onLoad?: (editor: Ace.Editor) => void;\n onValidate?: (annotations: Ace.Annotation[]) => void;\n onBeforeLoad?: (ace: typeof AceBuilds) => void;\n onChange?: (value: string, event?: any) => void;\n onSelection?: (selectedText: string, event?: any) => void;\n onCopy?: (value: string) => void;\n onPaste?: (value: string) => void;\n onFocus?: (event: any, editor?: Ace.Editor) => void;\n onBlur?: (event: any, editor?: Ace.Editor) => void;\n onScroll?: (editor: IEditorProps) => void;\n editorProps?: IEditorProps;\n setOptions?: IAceOptions;\n keyboardHandler?: string;\n commands?: ICommand[];\n annotations?: Ace.Annotation[];\n markers?: IMarker[];\n}\n\nexport default class ReactAce extends React.Component {\n public static propTypes: PropTypes.ValidationMap = {\n mode: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n focus: PropTypes.bool,\n theme: PropTypes.string,\n name: PropTypes.string,\n className: PropTypes.string,\n height: PropTypes.string,\n width: PropTypes.string,\n fontSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n showGutter: PropTypes.bool,\n onChange: PropTypes.func,\n onCopy: PropTypes.func,\n onPaste: PropTypes.func,\n onFocus: PropTypes.func,\n onInput: PropTypes.func,\n onBlur: PropTypes.func,\n onScroll: PropTypes.func,\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n onLoad: PropTypes.func,\n onSelectionChange: PropTypes.func,\n onCursorChange: PropTypes.func,\n onBeforeLoad: PropTypes.func,\n onValidate: PropTypes.func,\n minLines: PropTypes.number,\n maxLines: PropTypes.number,\n readOnly: PropTypes.bool,\n highlightActiveLine: PropTypes.bool,\n tabSize: PropTypes.number,\n showPrintMargin: PropTypes.bool,\n cursorStart: PropTypes.number,\n debounceChangePeriod: PropTypes.number,\n editorProps: PropTypes.object,\n setOptions: PropTypes.object,\n style: PropTypes.object,\n scrollMargin: PropTypes.array,\n annotations: PropTypes.array,\n markers: PropTypes.array,\n keyboardHandler: PropTypes.string,\n wrapEnabled: PropTypes.bool,\n enableSnippets: PropTypes.bool,\n enableBasicAutocompletion: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.array\n ]),\n enableLiveAutocompletion: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.array\n ]),\n navigateToFileEnd: PropTypes.bool,\n commands: PropTypes.array,\n placeholder: PropTypes.string\n };\n public static defaultProps: Partial = {\n name: \"ace-editor\",\n focus: false,\n mode: \"\",\n theme: \"\",\n height: \"500px\",\n width: \"500px\",\n fontSize: 12,\n enableSnippets: false,\n showGutter: true,\n onChange: null,\n onPaste: null,\n onLoad: null,\n onScroll: null,\n minLines: null,\n maxLines: null,\n readOnly: false,\n highlightActiveLine: true,\n showPrintMargin: true,\n tabSize: 4,\n cursorStart: 1,\n editorProps: {},\n style: {},\n scrollMargin: [0, 0, 0, 0],\n setOptions: {},\n wrapEnabled: false,\n enableBasicAutocompletion: false,\n enableLiveAutocompletion: false,\n placeholder: null,\n navigateToFileEnd: true\n };\n public editor: IAceEditor;\n public refEditor: HTMLElement;\n public debounce: (fn: any, delay: number) => (...args: any) => void;\n // [index: string]: any;\n public silent: boolean;\n constructor(props: IAceEditorProps) {\n super(props);\n editorEvents.forEach(method => {\n this[method] = this[method].bind(this);\n });\n this.debounce = debounce;\n }\n public isInShadow(node: HTMLElement): boolean {\n let parent = node && node.parentNode;\n while (parent) {\n if (parent.toString() === \"[object ShadowRoot]\") {\n return true;\n }\n parent = parent.parentNode;\n }\n return false;\n }\n public componentDidMount() {\n const {\n className,\n onBeforeLoad,\n onValidate,\n mode,\n focus,\n theme,\n fontSize,\n value,\n defaultValue,\n showGutter,\n wrapEnabled,\n showPrintMargin,\n scrollMargin = [0, 0, 0, 0],\n keyboardHandler,\n onLoad,\n commands,\n annotations,\n markers,\n placeholder\n } = this.props;\n\n this.editor = ace.edit(this.refEditor);\n\n if (onBeforeLoad) {\n onBeforeLoad(ace);\n }\n\n const editorProps = Object.keys(this.props.editorProps);\n for (let i = 0; i < editorProps.length; i++) {\n this.editor[editorProps[i]] = this.props.editorProps[editorProps[i]];\n }\n if (this.props.debounceChangePeriod) {\n this.onChange = this.debounce(\n this.onChange,\n this.props.debounceChangePeriod\n );\n }\n this.editor.renderer.setScrollMargin(\n scrollMargin[0],\n scrollMargin[1],\n scrollMargin[2],\n scrollMargin[3]\n );\n if (this.isInShadow(this.refEditor)) {\n this.editor.renderer.attachToShadowRoot();\n }\n this.editor\n .getSession()\n .setMode(\n typeof mode === \"string\" ? `ace/mode/${mode}` : (mode as Ace.SyntaxMode)\n );\n if(theme && theme !== \"\")\n this.editor.setTheme(`ace/theme/${theme}`);\n this.editor.setFontSize(\n typeof fontSize === \"number\" ? `${fontSize}px` : fontSize\n );\n this.editor\n .getSession()\n .setValue(!defaultValue ? value || \"\" : defaultValue);\n\n if (this.props.navigateToFileEnd) {\n this.editor.navigateFileEnd();\n }\n this.editor.renderer.setShowGutter(showGutter);\n this.editor.getSession().setUseWrapMode(wrapEnabled);\n this.editor.setShowPrintMargin(showPrintMargin);\n this.editor.on(\"focus\", this.onFocus);\n this.editor.on(\"blur\", this.onBlur);\n this.editor.on(\"copy\", this.onCopy);\n this.editor.on(\"paste\", this.onPaste);\n this.editor.on(\"change\", this.onChange);\n this.editor.on(\"input\", this.onInput);\n if (placeholder) {\n this.updatePlaceholder();\n }\n this.editor\n .getSession()\n .selection.on(\"changeSelection\", this.onSelectionChange);\n this.editor.getSession().selection.on(\"changeCursor\", this.onCursorChange);\n if (onValidate) {\n // @ts-ignore types don't include\n this.editor.getSession().on(\"changeAnnotation\", () => {\n // tslint:disable-next-line:no-shadowed-variable\n const annotations = this.editor.getSession().getAnnotations();\n this.props.onValidate(annotations);\n });\n }\n this.editor.session.on(\"changeScrollTop\", this.onScroll);\n this.editor.getSession().setAnnotations(annotations || []);\n if (markers && markers.length > 0) {\n this.handleMarkers(markers);\n }\n\n // get a list of possible options to avoid 'misspelled option errors'\n const availableOptions = this.editor.$options;\n editorOptions.forEach(option => {\n if (availableOptions.hasOwnProperty(option)) {\n // @ts-ignore\n this.editor.setOption(option, this.props[option]);\n } else if (this.props[option]) {\n console.warn(\n `ReactAce: editor option ${option} was activated but not found. Did you need to import a related tool or did you possibly mispell the option?`\n );\n }\n });\n\n this.handleOptions(this.props);\n\n if (Array.isArray(commands)) {\n commands.forEach(command => {\n if (typeof command.exec === \"string\") {\n (this.editor.commands as any).bindKey(command.bindKey, command.exec);\n } else {\n (this.editor.commands as any).addCommand(command);\n }\n });\n }\n\n if (keyboardHandler) {\n this.editor.setKeyboardHandler(\"ace/keyboard/\" + keyboardHandler);\n }\n\n if (className) {\n this.refEditor.className += \" \" + className;\n }\n\n if (onLoad) {\n onLoad(this.editor);\n }\n\n this.editor.resize();\n\n if (focus) {\n this.editor.focus();\n }\n }\n\n public componentDidUpdate(prevProps: IAceEditorProps) {\n const oldProps = prevProps;\n const nextProps = this.props;\n\n for (let i = 0; i < editorOptions.length; i++) {\n const option = editorOptions[i];\n if (nextProps[option] !== oldProps[option]) {\n // @ts-ignore\n this.editor.setOption(option, nextProps[option]);\n }\n }\n\n if (nextProps.className !== oldProps.className) {\n const appliedClasses = this.refEditor.className;\n const appliedClassesArray = appliedClasses.trim().split(\" \");\n const oldClassesArray = oldProps.className.trim().split(\" \");\n oldClassesArray.forEach(oldClass => {\n const index = appliedClassesArray.indexOf(oldClass);\n appliedClassesArray.splice(index, 1);\n });\n this.refEditor.className =\n \" \" + nextProps.className + \" \" + appliedClassesArray.join(\" \");\n }\n\n // First process editor value, as it may create a new session (see issue #300)\n if (\n this.editor &&\n nextProps.value != null &&\n this.editor.getValue() !== nextProps.value\n ) {\n // editor.setValue is a synchronous function call, change event is emitted before setValue return.\n this.silent = true;\n const pos = this.editor.session.selection.toJSON();\n this.editor.setValue(nextProps.value, nextProps.cursorStart);\n this.editor.session.selection.fromJSON(pos);\n this.silent = false;\n }\n\n if (nextProps.placeholder !== oldProps.placeholder) {\n this.updatePlaceholder();\n }\n if (nextProps.mode !== oldProps.mode) {\n this.editor\n .getSession()\n .setMode(\n typeof nextProps.mode === \"string\"\n ? `ace/mode/${nextProps.mode}`\n : (nextProps.mode as Ace.SyntaxMode)\n );\n }\n if (nextProps.theme !== oldProps.theme) {\n this.editor.setTheme(\"ace/theme/\" + nextProps.theme);\n }\n if (nextProps.keyboardHandler !== oldProps.keyboardHandler) {\n if (nextProps.keyboardHandler) {\n this.editor.setKeyboardHandler(\n \"ace/keyboard/\" + nextProps.keyboardHandler\n );\n } else {\n this.editor.setKeyboardHandler(null);\n }\n }\n if (nextProps.fontSize !== oldProps.fontSize) {\n this.editor.setFontSize(\n typeof nextProps.fontSize === \"number\"\n ? `${nextProps.fontSize}px`\n : nextProps.fontSize\n );\n }\n if (nextProps.wrapEnabled !== oldProps.wrapEnabled) {\n this.editor.getSession().setUseWrapMode(nextProps.wrapEnabled);\n }\n if (nextProps.showPrintMargin !== oldProps.showPrintMargin) {\n this.editor.setShowPrintMargin(nextProps.showPrintMargin);\n }\n if (nextProps.showGutter !== oldProps.showGutter) {\n this.editor.renderer.setShowGutter(nextProps.showGutter);\n }\n if (!isEqual(nextProps.setOptions, oldProps.setOptions)) {\n this.handleOptions(nextProps);\n }\n if (!isEqual(nextProps.annotations, oldProps.annotations)) {\n this.editor.getSession().setAnnotations(nextProps.annotations || []);\n }\n if (\n !isEqual(nextProps.markers, oldProps.markers) &&\n Array.isArray(nextProps.markers)\n ) {\n this.handleMarkers(nextProps.markers);\n }\n\n // this doesn't look like it works at all....\n if (!isEqual(nextProps.scrollMargin, oldProps.scrollMargin)) {\n this.handleScrollMargins(nextProps.scrollMargin);\n }\n\n if (\n prevProps.height !== this.props.height ||\n prevProps.width !== this.props.width\n ) {\n this.editor.resize();\n }\n if (this.props.focus && !prevProps.focus) {\n this.editor.focus();\n }\n }\n\n public handleScrollMargins(margins = [0, 0, 0, 0]) {\n this.editor.renderer.setScrollMargin(\n margins[0],\n margins[1],\n margins[2],\n margins[3]\n );\n }\n\n public componentWillUnmount() {\n this.editor.destroy();\n this.editor = null;\n }\n\n public onChange(event: any) {\n if (this.props.onChange && !this.silent) {\n const value = this.editor.getValue();\n this.props.onChange(value, event);\n }\n }\n\n public onSelectionChange(event: any) {\n if (this.props.onSelectionChange) {\n const value = this.editor.getSelection();\n this.props.onSelectionChange(value, event);\n }\n }\n public onCursorChange(event: any) {\n if (this.props.onCursorChange) {\n const value = this.editor.getSelection();\n this.props.onCursorChange(value, event);\n }\n }\n public onInput(event?: any) {\n if (this.props.onInput) {\n this.props.onInput(event);\n }\n if (this.props.placeholder) {\n this.updatePlaceholder();\n }\n }\n public onFocus(event: any) {\n if (this.props.onFocus) {\n this.props.onFocus(event, this.editor);\n }\n }\n\n public onBlur(event: any) {\n if (this.props.onBlur) {\n this.props.onBlur(event, this.editor);\n }\n }\n\n public onCopy({ text }: { text: string }) {\n if (this.props.onCopy) {\n this.props.onCopy(text);\n }\n }\n\n public onPaste({ text }: { text: string }) {\n if (this.props.onPaste) {\n this.props.onPaste(text);\n }\n }\n\n public onScroll() {\n if (this.props.onScroll) {\n this.props.onScroll(this.editor);\n }\n }\n\n public handleOptions(props: IAceEditorProps) {\n const setOptions = Object.keys(props.setOptions);\n for (let y = 0; y < setOptions.length; y++) {\n // @ts-ignore\n this.editor.setOption(setOptions[y], props.setOptions[setOptions[y]]);\n }\n }\n\n public handleMarkers(markers: IMarker[]) {\n // remove foreground markers\n let currentMarkers = this.editor.getSession().getMarkers(true);\n for (const i in currentMarkers) {\n if (currentMarkers.hasOwnProperty(i)) {\n this.editor.getSession().removeMarker(currentMarkers[i].id);\n }\n }\n // remove background markers except active line marker and selected word marker\n currentMarkers = this.editor.getSession().getMarkers(false);\n for (const i in currentMarkers) {\n if (\n currentMarkers.hasOwnProperty(i) &&\n currentMarkers[i].clazz !== \"ace_active-line\" &&\n currentMarkers[i].clazz !== \"ace_selected-word\"\n ) {\n this.editor.getSession().removeMarker(currentMarkers[i].id);\n }\n }\n // add new markers\n markers.forEach(\n ({\n startRow,\n startCol,\n endRow,\n endCol,\n className,\n type,\n inFront = false\n }) => {\n const range = new Range(startRow, startCol, endRow, endCol);\n this.editor.getSession().addMarker(range, className, type, inFront);\n }\n );\n }\n\n public updatePlaceholder() {\n // Adapted from https://stackoverflow.com/questions/26695708/how-can-i-add-placeholder-text-when-the-editor-is-empty\n\n const editor = this.editor;\n const { placeholder } = this.props;\n\n const showPlaceholder = !editor.session.getValue().length;\n let node = editor.renderer.placeholderNode;\n\n if (!showPlaceholder && node) {\n editor.renderer.scroller.removeChild(editor.renderer.placeholderNode);\n editor.renderer.placeholderNode = null;\n } else if (showPlaceholder && !node) {\n node = editor.renderer.placeholderNode = document.createElement(\"div\");\n node.textContent = placeholder || \"\";\n node.className = \"ace_comment ace_placeholder\";\n node.style.padding = \"0 9px\";\n node.style.position = \"absolute\";\n node.style.zIndex = \"3\";\n editor.renderer.scroller.appendChild(node);\n } else if (showPlaceholder && node) {\n node.textContent = placeholder;\n }\n }\n\n public updateRef(item: HTMLElement) {\n this.refEditor = item;\n }\n\n public render() {\n const { name, width, height, style } = this.props;\n const divStyle = { width, height, ...style };\n return
;\n }\n}\n","import * as PropTypes from \"prop-types\";\nimport * as React from \"react\";\nimport SplitEditor from \"./split\";\nconst DiffMatchPatch = require(\"diff-match-patch\");\nimport { IEditorProps } from \"./types\";\n\nexport interface IDiffEditorProps {\n cursorStart?: number;\n editorProps?: object;\n enableBasicAutocompletion?: boolean | string[];\n enableLiveAutocompletion?: boolean | string[];\n focus?: boolean;\n fontSize?: number;\n height?: string;\n highlightActiveLine?: boolean;\n maxLines?: number;\n minLines?: number;\n mode?: string;\n name?: string;\n className?: string;\n onLoad?: (editor: IEditorProps) => void;\n onChange?: (value: string[], event?: any) => void;\n onPaste?: (value: string) => void;\n onScroll?: (editor: IEditorProps) => void;\n orientation?: string;\n readOnly?: boolean;\n scrollMargin?: number[];\n setOptions?: object;\n showGutter?: boolean;\n showPrintMargin?: boolean;\n splits?: number;\n style?: object;\n tabSize?: number;\n theme?: string;\n value?: string[];\n width?: string;\n wrapEnabled?: boolean;\n}\n\nexport interface IDiffEditorState {\n value: string[];\n}\n\nexport default class DiffComponent extends React.Component<\n IDiffEditorProps,\n IDiffEditorState\n> {\n public static propTypes: PropTypes.ValidationMap = {\n cursorStart: PropTypes.number,\n editorProps: PropTypes.object,\n enableBasicAutocompletion: PropTypes.bool,\n enableLiveAutocompletion: PropTypes.bool,\n focus: PropTypes.bool,\n fontSize: PropTypes.number,\n height: PropTypes.string,\n highlightActiveLine: PropTypes.bool,\n maxLines: PropTypes.number,\n minLines: PropTypes.number,\n mode: PropTypes.string,\n name: PropTypes.string,\n className: PropTypes.string,\n onLoad: PropTypes.func,\n onPaste: PropTypes.func,\n onScroll: PropTypes.func,\n onChange: PropTypes.func,\n orientation: PropTypes.string,\n readOnly: PropTypes.bool,\n scrollMargin: PropTypes.array,\n setOptions: PropTypes.object,\n showGutter: PropTypes.bool,\n showPrintMargin: PropTypes.bool,\n splits: PropTypes.number,\n style: PropTypes.object,\n tabSize: PropTypes.number,\n theme: PropTypes.string,\n value: PropTypes.array,\n width: PropTypes.string,\n wrapEnabled: PropTypes.bool\n };\n\n public static defaultProps: Partial = {\n cursorStart: 1,\n editorProps: {},\n enableBasicAutocompletion: false,\n enableLiveAutocompletion: false,\n focus: false,\n fontSize: 12,\n height: \"500px\",\n highlightActiveLine: true,\n maxLines: null,\n minLines: null,\n mode: \"\",\n name: \"ace-editor\",\n onLoad: null,\n onScroll: null,\n onPaste: null,\n onChange: null,\n orientation: \"beside\",\n readOnly: false,\n scrollMargin: [0, 0, 0, 0],\n setOptions: {},\n showGutter: true,\n showPrintMargin: true,\n splits: 2,\n style: {},\n tabSize: 4,\n theme: \"github\",\n value: [\"\", \"\"],\n width: \"500px\",\n wrapEnabled: true\n };\n constructor(props: IDiffEditorProps) {\n super(props);\n this.state = {\n value: this.props.value\n };\n this.onChange = this.onChange.bind(this);\n this.diff = this.diff.bind(this);\n }\n\n public componentDidUpdate() {\n const { value } = this.props;\n\n if (value !== this.state.value) {\n this.setState({ value });\n }\n }\n\n public onChange(value: any) {\n this.setState({\n value\n });\n if (this.props.onChange) {\n this.props.onChange(value);\n }\n }\n\n public diff() {\n const dmp = new DiffMatchPatch();\n const lhString = this.state.value[0];\n const rhString = this.state.value[1];\n\n if (lhString.length === 0 && rhString.length === 0) {\n return [];\n }\n\n const diff = dmp.diff_main(lhString, rhString);\n dmp.diff_cleanupSemantic(diff);\n\n const diffedLines = this.generateDiffedLines(diff);\n const codeEditorSettings = this.setCodeMarkers(diffedLines);\n return codeEditorSettings;\n }\n\n public generateDiffedLines(diff: any) {\n const C = {\n DIFF_EQUAL: 0,\n DIFF_DELETE: -1,\n DIFF_INSERT: 1\n };\n\n const diffedLines = {\n left: [] as any[],\n right: [] as any[]\n };\n\n const cursor = {\n left: 1,\n right: 1\n };\n\n diff.forEach((chunk: any) => {\n const chunkType = chunk[0];\n const text = chunk[1];\n let lines = text.split(\"\\n\").length - 1;\n\n // diff-match-patch sometimes returns empty strings at random\n if (text.length === 0) {\n return;\n }\n\n const firstChar = text[0];\n const lastChar = text[text.length - 1];\n let linesToHighlight = 0;\n\n switch (chunkType) {\n case C.DIFF_EQUAL:\n cursor.left += lines;\n cursor.right += lines;\n\n break;\n case C.DIFF_DELETE:\n // If the deletion starts with a newline, push the cursor down to that line\n if (firstChar === \"\\n\") {\n cursor.left++;\n lines--;\n }\n\n linesToHighlight = lines;\n\n // If the deletion does not include a newline, highlight the same line on the right\n if (linesToHighlight === 0) {\n diffedLines.right.push({\n startLine: cursor.right,\n endLine: cursor.right\n });\n }\n\n // If the last character is a newline, we don't want to highlight that line\n if (lastChar === \"\\n\") {\n linesToHighlight -= 1;\n }\n\n diffedLines.left.push({\n startLine: cursor.left,\n endLine: cursor.left + linesToHighlight\n });\n\n cursor.left += lines;\n break;\n case C.DIFF_INSERT:\n // If the insertion starts with a newline, push the cursor down to that line\n if (firstChar === \"\\n\") {\n cursor.right++;\n lines--;\n }\n\n linesToHighlight = lines;\n\n // If the insertion does not include a newline, highlight the same line on the left\n if (linesToHighlight === 0) {\n diffedLines.left.push({\n startLine: cursor.left,\n endLine: cursor.left\n });\n }\n\n // If the last character is a newline, we don't want to highlight that line\n if (lastChar === \"\\n\") {\n linesToHighlight -= 1;\n }\n\n diffedLines.right.push({\n startLine: cursor.right,\n endLine: cursor.right + linesToHighlight\n });\n\n cursor.right += lines;\n break;\n default:\n throw new Error(\"Diff type was not defined.\");\n }\n });\n return diffedLines;\n }\n\n // Receives a collection of line numbers and iterates through them to highlight appropriately\n // Returns an object that tells the render() method how to display the code editors\n public setCodeMarkers(diffedLines: any = { left: [], right: [] }) {\n const codeEditorSettings = [];\n\n const newMarkerSet = {\n left: [] as any[],\n right: [] as any[]\n };\n\n for (let i = 0; i < diffedLines.left.length; i++) {\n const markerObj = {\n startRow: diffedLines.left[i].startLine - 1,\n endRow: diffedLines.left[i].endLine,\n type: \"text\",\n className: \"codeMarker\"\n };\n newMarkerSet.left.push(markerObj);\n }\n\n for (let i = 0; i < diffedLines.right.length; i++) {\n const markerObj = {\n startRow: diffedLines.right[i].startLine - 1,\n endRow: diffedLines.right[i].endLine,\n type: \"text\",\n className: \"codeMarker\"\n };\n newMarkerSet.right.push(markerObj);\n }\n\n codeEditorSettings[0] = newMarkerSet.left;\n codeEditorSettings[1] = newMarkerSet.right;\n\n return codeEditorSettings;\n }\n\n public render() {\n const markers = this.diff();\n return (\n \n );\n }\n}\n","import * as AceBuilds from \"ace-builds\";\n\ntype EditorOption =\n | \"minLines\"\n | \"maxLines\"\n | \"readOnly\"\n | \"highlightActiveLine\"\n | \"tabSize\"\n | \"enableBasicAutocompletion\"\n | \"enableLiveAutocompletion\"\n | \"enableSnippets\";\n\nconst editorOptions: EditorOption[] = [\n \"minLines\",\n \"maxLines\",\n \"readOnly\",\n \"highlightActiveLine\",\n \"tabSize\",\n \"enableBasicAutocompletion\",\n \"enableLiveAutocompletion\",\n \"enableSnippets\"\n];\n\ntype EditorEvent =\n | \"onChange\"\n | \"onFocus\"\n | \"onInput\"\n | \"onBlur\"\n | \"onCopy\"\n | \"onPaste\"\n | \"onSelectionChange\"\n | \"onCursorChange\"\n | \"onScroll\"\n | \"handleOptions\"\n | \"updateRef\";\n\nconst editorEvents: EditorEvent[] = [\n \"onChange\",\n \"onFocus\",\n \"onInput\",\n \"onBlur\",\n \"onCopy\",\n \"onPaste\",\n \"onSelectionChange\",\n \"onCursorChange\",\n \"onScroll\",\n \"handleOptions\",\n \"updateRef\"\n];\n\n// Typescript globals definition to allow us to create a window object during SSR.\ndeclare global {\n namespace NodeJS {\n // tslint:disable-next-line\n interface Global {\n window: any;\n }\n }\n}\nconst getAceInstance = (): typeof AceBuilds => {\n let ace;\n if (typeof window === \"undefined\") {\n // ace-builds just needs some window object to attach ace to.\n // During SSR even just an empty object will work.\n global.window = {};\n ace = require(\"ace-builds\");\n // And it can be discarded immediately afterward to avoid confusing\n // other libraries that might detect SSR the same way we did.\n delete global.window;\n } else if ((window as any).ace) {\n // Fallback for ace.require when vanilla ACE is hosted over a CDN\n ace = (window as any).ace;\n ace.acequire = (window as any).ace.require || (window as any).ace.acequire;\n } else {\n ace = require(\"ace-builds\");\n }\n return ace;\n};\n\nconst debounce = (fn: (...args: any[]) => void, delay: number) => {\n let timer: any = null;\n // tslint:disable-next-line\n return function () {\n const context = this;\n const args = arguments;\n clearTimeout(timer);\n timer = setTimeout(() => {\n fn.apply(context, args);\n }, delay);\n };\n};\nexport { editorOptions, editorEvents, debounce, getAceInstance };\n","import ace, { IAceEditorProps } from \"./ace\";\nimport diff, { IDiffEditorProps, IDiffEditorState } from \"./diff\";\nimport split, { ISplitEditorProps } from \"./split\";\nimport {\n IAceOptions,\n IAnnotation,\n ICommand,\n ICommandBindKey,\n ICommandManager,\n IEditorProps,\n IMarker\n} from \"./types\";\nexport {\n split,\n diff,\n IAceOptions,\n IAceEditorProps,\n IAnnotation,\n ICommand,\n ICommandBindKey,\n ICommandManager,\n IDiffEditorProps,\n IDiffEditorState,\n IEditorProps,\n IMarker,\n ISplitEditorProps\n};\nexport default ace;\n","import {\n debounce,\n editorEvents,\n editorOptions,\n getAceInstance\n} from \"./editorOptions\";\nconst ace = getAceInstance();\nimport { Ace, Range } from \"ace-builds\";\nimport Editor = Ace.Editor;\nimport { Split } from \"ace-builds/src-noconflict/ext-split\";\nimport * as PropTypes from \"prop-types\";\nimport * as React from \"react\";\nconst isEqual = require(\"lodash.isequal\");\nconst get = require(\"lodash.get\");\nimport {\n IAceOptions,\n IAnnotation,\n ICommand,\n IEditorProps,\n IMarker\n} from \"./types\";\n\ninterface IAceEditorClass extends Editor {\n [index: string]: any;\n $options?: any;\n}\n\nexport interface ISplitEditorProps {\n [index: string]: any;\n name?: string;\n style?: object;\n /** For available modes see https://github.com/thlorenz/brace/tree/master/mode */\n mode?: string;\n /** For available themes see https://github.com/thlorenz/brace/tree/master/theme */\n theme?: string;\n height?: string;\n width?: string;\n className?: string;\n fontSize?: number | string;\n showGutter?: boolean;\n showPrintMargin?: boolean;\n highlightActiveLine?: boolean;\n focus?: boolean;\n splits: number;\n debounceChangePeriod?: number;\n cursorStart?: number;\n wrapEnabled?: boolean;\n readOnly?: boolean;\n minLines?: number;\n maxLines?: number;\n enableBasicAutocompletion?: boolean | string[];\n enableLiveAutocompletion?: boolean | string[];\n tabSize?: number;\n value?: string[];\n defaultValue?: string[];\n scrollMargin?: number[];\n orientation?: string;\n onSelectionChange?: (value: any, event?: any) => void;\n onCursorChange?: (value: any, event?: any) => void;\n onInput?: (event?: any) => void;\n onLoad?: (editor: IEditorProps) => void;\n onBeforeLoad?: (ace: any) => void;\n onChange?: (value: string[], event?: any) => void;\n onSelection?: (selectedText: string, event?: any) => void;\n onCopy?: (value: string) => void;\n onPaste?: (value: string) => void;\n onFocus?: (value: Event) => void;\n onBlur?: (value: Event) => void;\n onScroll?: (editor: IEditorProps) => void;\n editorProps?: IEditorProps;\n setOptions?: IAceOptions;\n keyboardHandler?: string;\n commands?: ICommand[];\n annotations?: IAnnotation[][];\n markers?: IMarker[][];\n}\n\nexport default class SplitComponent extends React.Component<\n ISplitEditorProps,\n undefined\n> {\n [index: string]: any;\n\n public static propTypes: PropTypes.ValidationMap = {\n className: PropTypes.string,\n debounceChangePeriod: PropTypes.number,\n defaultValue: PropTypes.arrayOf(PropTypes.string),\n focus: PropTypes.bool,\n fontSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.string,\n mode: PropTypes.string,\n name: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onCopy: PropTypes.func,\n onFocus: PropTypes.func,\n onInput: PropTypes.func,\n onLoad: PropTypes.func,\n onPaste: PropTypes.func,\n onScroll: PropTypes.func,\n orientation: PropTypes.string,\n showGutter: PropTypes.bool,\n splits: PropTypes.number,\n theme: PropTypes.string,\n value: PropTypes.arrayOf(PropTypes.string),\n width: PropTypes.string,\n onSelectionChange: PropTypes.func,\n onCursorChange: PropTypes.func,\n onBeforeLoad: PropTypes.func,\n minLines: PropTypes.number,\n maxLines: PropTypes.number,\n readOnly: PropTypes.bool,\n highlightActiveLine: PropTypes.bool,\n tabSize: PropTypes.number,\n showPrintMargin: PropTypes.bool,\n cursorStart: PropTypes.number,\n editorProps: PropTypes.object,\n setOptions: PropTypes.object,\n style: PropTypes.object,\n scrollMargin: PropTypes.array,\n annotations: PropTypes.array,\n markers: PropTypes.array,\n keyboardHandler: PropTypes.string,\n wrapEnabled: PropTypes.bool,\n enableBasicAutocompletion: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.array\n ]),\n enableLiveAutocompletion: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.array\n ]),\n commands: PropTypes.array\n };\n public static defaultProps: Partial = {\n name: \"ace-editor\",\n focus: false,\n orientation: \"beside\",\n splits: 2,\n mode: \"\",\n theme: \"\",\n height: \"500px\",\n width: \"500px\",\n value: [],\n fontSize: 12,\n showGutter: true,\n onChange: null,\n onPaste: null,\n onLoad: null,\n onScroll: null,\n minLines: null,\n maxLines: null,\n readOnly: false,\n highlightActiveLine: true,\n showPrintMargin: true,\n tabSize: 4,\n cursorStart: 1,\n editorProps: {},\n style: {},\n scrollMargin: [0, 0, 0, 0],\n setOptions: {},\n wrapEnabled: false,\n enableBasicAutocompletion: false,\n enableLiveAutocompletion: false\n };\n public editor: IAceEditorClass;\n public refEditor: HTMLElement;\n public silent: boolean;\n public split: IAceEditorClass;\n public splitEditor: IAceEditorClass;\n public debounce: (fn: any, delay: number) => (...args: any) => void;\n constructor(props: ISplitEditorProps) {\n super(props);\n editorEvents.forEach(method => {\n this[method] = this[method].bind(this);\n });\n this.debounce = debounce;\n }\n public isInShadow(node: HTMLElement): boolean {\n let parent = node && node.parentNode;\n while (parent) {\n if (parent.toString() === \"[object ShadowRoot]\") {\n return true;\n }\n parent = parent.parentNode;\n }\n return false;\n }\n public componentDidMount() {\n const {\n className,\n onBeforeLoad,\n mode,\n focus,\n theme,\n fontSize,\n value,\n defaultValue,\n cursorStart,\n showGutter,\n wrapEnabled,\n showPrintMargin,\n scrollMargin = [0, 0, 0, 0],\n keyboardHandler,\n onLoad,\n commands,\n annotations,\n markers,\n splits\n } = this.props;\n\n this.editor = ace.edit(this.refEditor);\n if (this.isInShadow(this.refEditor)) {\n this.editor.renderer.attachToShadowRoot();\n }\n this.editor.setTheme(`ace/theme/${theme}`);\n\n if (onBeforeLoad) {\n onBeforeLoad(ace);\n }\n\n const editorProps = Object.keys(this.props.editorProps);\n\n const split = new Split(\n this.editor.container,\n `ace/theme/${theme}`,\n splits\n );\n this.editor.env.split = split;\n\n this.splitEditor = split.getEditor(0);\n this.split = split;\n // in a split scenario we don't want a print margin for the entire application\n this.editor.setShowPrintMargin(false);\n this.editor.renderer.setShowGutter(false);\n // get a list of possible options to avoid 'misspelled option errors'\n const availableOptions = this.splitEditor.$options;\n if (this.props.debounceChangePeriod) {\n this.onChange = this.debounce(\n this.onChange,\n this.props.debounceChangePeriod\n );\n }\n split.forEach((editor: IAceEditorClass, index: number) => {\n for (let i = 0; i < editorProps.length; i++) {\n editor[editorProps[i]] = this.props.editorProps[editorProps[i]];\n }\n const defaultValueForEditor = get(defaultValue, index);\n const valueForEditor = get(value, index, \"\");\n editor.session.setUndoManager(new ace.UndoManager());\n editor.setTheme(`ace/theme/${theme}`);\n editor.renderer.setScrollMargin(\n scrollMargin[0],\n scrollMargin[1],\n scrollMargin[2],\n scrollMargin[3]\n );\n editor.getSession().setMode(`ace/mode/${mode}`);\n editor.setFontSize(fontSize as any);\n editor.renderer.setShowGutter(showGutter);\n editor.getSession().setUseWrapMode(wrapEnabled);\n editor.setShowPrintMargin(showPrintMargin);\n editor.on(\"focus\", this.onFocus);\n editor.on(\"blur\", this.onBlur);\n editor.on(\"input\" as any, this.onInput);\n editor.on(\"copy\", this.onCopy as any);\n editor.on(\"paste\", this.onPaste as any);\n editor.on(\"change\", this.onChange);\n editor\n .getSession()\n .selection.on(\"changeSelection\", this.onSelectionChange);\n editor.getSession().selection.on(\"changeCursor\", this.onCursorChange);\n editor.session.on(\"changeScrollTop\", this.onScroll);\n editor.setValue(\n defaultValueForEditor === undefined\n ? valueForEditor\n : defaultValueForEditor,\n cursorStart\n );\n const newAnnotations = get(annotations, index, []);\n const newMarkers = get(markers, index, []);\n editor.getSession().setAnnotations(newAnnotations);\n if (newMarkers && newMarkers.length > 0) {\n this.handleMarkers(newMarkers, editor);\n }\n\n for (let i = 0; i < editorOptions.length; i++) {\n const option = editorOptions[i];\n if (availableOptions.hasOwnProperty(option)) {\n editor.setOption(option as any, this.props[option]);\n } else if (this.props[option]) {\n console.warn(\n `ReaceAce: editor option ${option} was activated but not found. Did you need to import a related tool or did you possibly mispell the option?`\n );\n }\n }\n this.handleOptions(this.props, editor);\n\n if (Array.isArray(commands)) {\n commands.forEach(command => {\n if (typeof command.exec === \"string\") {\n (editor.commands as any).bindKey(command.bindKey, command.exec);\n } else {\n (editor.commands as any).addCommand(command);\n }\n });\n }\n\n if (keyboardHandler) {\n editor.setKeyboardHandler(\"ace/keyboard/\" + keyboardHandler);\n }\n });\n\n if (className) {\n this.refEditor.className += \" \" + className;\n }\n\n if (focus) {\n this.splitEditor.focus();\n }\n\n const sp = this.editor.env.split;\n sp.setOrientation(\n this.props.orientation === \"below\" ? sp.BELOW : sp.BESIDE\n );\n sp.resize(true);\n if (onLoad) {\n onLoad(sp);\n }\n }\n\n public componentDidUpdate(prevProps: ISplitEditorProps) {\n const oldProps = prevProps;\n const nextProps = this.props;\n\n const split = this.editor.env.split;\n\n if (nextProps.splits !== oldProps.splits) {\n split.setSplits(nextProps.splits);\n }\n\n if (nextProps.orientation !== oldProps.orientation) {\n split.setOrientation(\n nextProps.orientation === \"below\" ? split.BELOW : split.BESIDE\n );\n }\n\n split.forEach((editor: IAceEditorClass, index: number) => {\n if (nextProps.mode !== oldProps.mode) {\n editor.getSession().setMode(\"ace/mode/\" + nextProps.mode);\n }\n if (nextProps.keyboardHandler !== oldProps.keyboardHandler) {\n if (nextProps.keyboardHandler) {\n editor.setKeyboardHandler(\n \"ace/keyboard/\" + nextProps.keyboardHandler\n );\n } else {\n editor.setKeyboardHandler(null);\n }\n }\n if (nextProps.fontSize !== oldProps.fontSize) {\n editor.setFontSize(nextProps.fontSize as any);\n }\n if (nextProps.wrapEnabled !== oldProps.wrapEnabled) {\n editor.getSession().setUseWrapMode(nextProps.wrapEnabled);\n }\n if (nextProps.showPrintMargin !== oldProps.showPrintMargin) {\n editor.setShowPrintMargin(nextProps.showPrintMargin);\n }\n if (nextProps.showGutter !== oldProps.showGutter) {\n editor.renderer.setShowGutter(nextProps.showGutter);\n }\n\n for (let i = 0; i < editorOptions.length; i++) {\n const option = editorOptions[i];\n if (nextProps[option] !== oldProps[option]) {\n editor.setOption(option as any, nextProps[option]);\n }\n }\n if (!isEqual(nextProps.setOptions, oldProps.setOptions)) {\n this.handleOptions(nextProps, editor);\n }\n const nextValue = get(nextProps.value, index, \"\");\n if (editor.getValue() !== nextValue) {\n // editor.setValue is a synchronous function call, change event is emitted before setValue return.\n this.silent = true;\n const pos = (editor.session.selection as any).toJSON();\n editor.setValue(nextValue, nextProps.cursorStart);\n (editor.session.selection as any).fromJSON(pos);\n this.silent = false;\n }\n const newAnnotations = get(nextProps.annotations, index, []);\n const oldAnnotations = get(oldProps.annotations, index, []);\n if (!isEqual(newAnnotations, oldAnnotations)) {\n editor.getSession().setAnnotations(newAnnotations);\n }\n\n const newMarkers = get(nextProps.markers, index, []);\n const oldMarkers = get(oldProps.markers, index, []);\n if (!isEqual(newMarkers, oldMarkers) && Array.isArray(newMarkers)) {\n this.handleMarkers(newMarkers, editor);\n }\n });\n\n if (nextProps.className !== oldProps.className) {\n const appliedClasses = this.refEditor.className;\n const appliedClassesArray = appliedClasses.trim().split(\" \");\n const oldClassesArray = oldProps.className.trim().split(\" \");\n oldClassesArray.forEach(oldClass => {\n const index = appliedClassesArray.indexOf(oldClass);\n appliedClassesArray.splice(index, 1);\n });\n this.refEditor.className =\n \" \" + nextProps.className + \" \" + appliedClassesArray.join(\" \");\n }\n\n if (nextProps.theme !== oldProps.theme) {\n split.setTheme(\"ace/theme/\" + nextProps.theme);\n }\n\n if (nextProps.focus && !oldProps.focus) {\n this.splitEditor.focus();\n }\n if (\n nextProps.height !== this.props.height ||\n nextProps.width !== this.props.width\n ) {\n this.editor.resize();\n }\n }\n\n public componentWillUnmount() {\n this.editor.destroy();\n this.editor = null;\n }\n\n public onChange(event: any) {\n if (this.props.onChange && !this.silent) {\n const value: any = [];\n this.editor.env.split.forEach((editor: IAceEditorClass) => {\n value.push(editor.getValue());\n });\n this.props.onChange(value, event);\n }\n }\n\n public onSelectionChange(event: any) {\n if (this.props.onSelectionChange) {\n const value: any = [];\n this.editor.env.split.forEach((editor: IAceEditorClass) => {\n value.push(editor.getSelection());\n });\n this.props.onSelectionChange(value, event);\n }\n }\n public onCursorChange(event: any) {\n if (this.props.onCursorChange) {\n const value: any = [];\n this.editor.env.split.forEach((editor: IAceEditorClass) => {\n value.push(editor.getSelection());\n });\n this.props.onCursorChange(value, event);\n }\n }\n public onFocus(event: any) {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n }\n\n public onInput(event: any) {\n if (this.props.onInput) {\n this.props.onInput(event);\n }\n }\n\n public onBlur(event: any) {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n }\n\n public onCopy(text: string) {\n if (this.props.onCopy) {\n this.props.onCopy(text);\n }\n }\n\n public onPaste(text: string) {\n if (this.props.onPaste) {\n this.props.onPaste(text);\n }\n }\n\n public onScroll() {\n if (this.props.onScroll) {\n this.props.onScroll(this.editor);\n }\n }\n\n public handleOptions(props: ISplitEditorProps, editor: IAceEditorClass) {\n const setOptions = Object.keys(props.setOptions);\n for (let y = 0; y < setOptions.length; y++) {\n editor.setOption(setOptions[y] as any, props.setOptions[setOptions[y]]);\n }\n }\n\n public handleMarkers(markers: IMarker[], editor: IAceEditorClass) {\n // remove foreground markers\n let currentMarkers = editor.getSession().getMarkers(true);\n for (const i in currentMarkers) {\n if (currentMarkers.hasOwnProperty(i)) {\n editor.getSession().removeMarker(currentMarkers[i].id);\n }\n }\n // remove background markers\n currentMarkers = editor.getSession().getMarkers(false);\n for (const i in currentMarkers) {\n if (currentMarkers.hasOwnProperty(i)) {\n editor.getSession().removeMarker(currentMarkers[i].id);\n }\n }\n // add new markers\n markers.forEach(\n ({\n startRow,\n startCol,\n endRow,\n endCol,\n className,\n type,\n inFront = false\n }) => {\n const range = new Range(startRow, startCol, endRow, endCol);\n editor\n .getSession()\n .addMarker(range as any, className, type as any, inFront);\n }\n );\n }\n\n public updateRef(item: HTMLElement) {\n this.refEditor = item;\n }\n\n public render() {\n const { name, width, height, style } = this.props;\n const divStyle = { width, height, ...style };\n return
;\n }\n}\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e tag inside default button\n textStyle: _propTypes2.default.object,\n\n // Prevents any events from opening the popup\n // Adds the disabled prop to the button and adjusts the styling as well\n disabled: _propTypes2.default.bool,\n\n // Named component to wrap button (eg. div)\n ComponentClass: _propTypes2.default.string,\n\n // Show a loading indicator\n showLoadingDialog: _propTypes2.default.func,\n // Hide the loading indicator\n hideLoadingDialog: _propTypes2.default.func,\n\n // Run this method when the scrupt fails to load. Will run if the internet\n // connection is offline when attemting to load the script.\n onScriptError: _propTypes2.default.func,\n\n // Runs when the script tag is created, but before it is added to the DOM\n onScriptTagCreated: _propTypes2.default.func,\n\n // By default, any time the React component is updated, it will call\n // StripeCheckout.configure, which may result in additional XHR calls to the\n // stripe API. If you know the first configuration is all you need, you\n // can set this to false. Subsequent updates will affect the StripeCheckout.open\n // (e.g. different prices)\n reconfigureOnUpdate: _propTypes2.default.bool,\n\n // =====================================================\n // Required by stripe\n // see Stripe docs for more info:\n // https://stripe.com/docs/checkout#integration-custom\n // =====================================================\n\n // Your publishable key (test or live).\n // can't use \"key\" as a prop in react, so have to change the keyname\n stripeKey: _propTypes2.default.string.isRequired,\n\n // The callback to invoke when the Checkout process is complete.\n // function(token)\n // token is the token object created.\n // token.id can be used to create a charge or customer.\n // token.email contains the email address entered by the user.\n token: _propTypes2.default.func.isRequired,\n\n // ==========================\n // Highly Recommended Options\n // ==========================\n\n // Name of the company or website.\n name: _propTypes2.default.string,\n\n // A description of the product or service being purchased.\n description: _propTypes2.default.string,\n\n // A relative URL pointing to a square image of your brand or product. The\n // recommended minimum size is 128x128px. The recommended image types are\n // .gif, .jpeg, and .png.\n image: _propTypes2.default.string,\n\n // The amount (in cents) that's shown to the user. Note that you will still\n // have to explicitly include it when you create a charge using the API.\n amount: _propTypes2.default.number,\n\n // Specify auto to display Checkout in the user's preferred language, if\n // available. English will be used by default.\n //\n // https://stripe.com/docs/checkout#supported-languages\n // for more info.\n locale: _propTypes2.default.oneOf(['auto', // (Default) Automatically chosen by checkout\n 'zh', // Simplified Chinese\n 'da', // Danish\n 'nl', // Dutch\n 'en', // English\n 'fr', // French\n 'de', // German\n 'it', // Italian\n 'ja', // Japanease\n 'no', // Norwegian\n 'es', // Spanish\n 'sv']),\n\n // ==============\n // Optional Props\n // ==============\n\n // The currency of the amount (3-letter ISO code). The default is USD.\n currency: _propTypes2.default.oneOf(['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', // eslint-disable-line comma-spacing\n 'BDT', 'BGN', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BWP', 'BZD', 'CAD', 'CDF', // eslint-disable-line comma-spacing\n 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EEK', // eslint-disable-line comma-spacing\n 'EGP', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', // eslint-disable-line comma-spacing\n 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', 'ILS', 'INR', 'ISK', 'JMD', 'JPY', 'KES', // eslint-disable-line comma-spacing\n 'KGS', 'KHR', 'KMF', 'KRW', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LTL', // eslint-disable-line comma-spacing\n 'LVL', 'MAD', 'MDL', 'MGA', 'MKD', 'MNT', 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', // eslint-disable-line comma-spacing\n 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'PAB', 'PEN', 'PGK', 'PHP', // eslint-disable-line comma-spacing\n 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SEK', // eslint-disable-line comma-spacing\n 'SGD', 'SHP', 'SLL', 'SOS', 'SRD', 'STD', 'SVC', 'SZL', 'THB', 'TJS', 'TOP', 'TRY', // eslint-disable-line comma-spacing\n 'TTD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'UYU', 'UZS', 'VND', 'VUV', 'WST', 'XAF', // eslint-disable-line comma-spacing\n 'XCD', 'XOF', 'XPF', 'YER', 'ZAR', 'ZMW']),\n\n // The label of the payment button in the Checkout form (e.g. “Subscribe”,\n // “Pay {{amount}}”, etc.). If you include {{amount}}, it will be replaced\n // by the provided amount. Otherwise, the amount will be appended to the\n // end of your label.\n panelLabel: _propTypes2.default.string,\n\n // Specify whether Checkout should validate the billing ZIP code (true or\n // false)\n zipCode: _propTypes2.default.bool,\n\n // Specify whether Checkout should collect the user's billing address\n // (true or false). The default is false.\n billingAddress: _propTypes2.default.bool,\n\n // Specify whether Checkout should collect the user's shipping address\n // (true or false). The default is false.\n shippingAddress: _propTypes2.default.bool,\n\n // Specify whether Checkout should validate the billing ZIP code (true or\n // false). The default is false.\n email: _propTypes2.default.string,\n\n // Specify whether to include the option to \"Remember Me\" for future\n // purchases (true or false). The default is true.\n allowRememberMe: _propTypes2.default.bool,\n\n // Specify whether to accept Bitcoin in Checkout. The default is false.\n bitcoin: _propTypes2.default.bool,\n\n // Specify whether to accept Alipay ('auto', true, or false). The default\n // is false.\n alipay: _propTypes2.default.oneOf(['auto', true, false]),\n\n // Specify if you need reusable access to the customer's Alipay account\n // (true or false). The default is false.\n alipayReusable: _propTypes2.default.bool,\n\n // function() The callback to invoke when Checkout is opened (not supported\n // in IE6 and IE7).\n opened: _propTypes2.default.func,\n\n // function() The callback to invoke when Checkout is closed (not supported\n // in IE6 and IE7).\n closed: _propTypes2.default.func\n};\nReactStripeCheckout._isMounted = false;\nexports.default = ReactStripeCheckout;\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","function Agent() {\n this._defaults = [];\n}\n\n[\n 'use',\n 'on',\n 'once',\n 'set',\n 'query',\n 'type',\n 'accept',\n 'auth',\n 'withCredentials',\n 'sortQuery',\n 'retry',\n 'ok',\n 'redirects',\n 'timeout',\n 'buffer',\n 'serialize',\n 'parse',\n 'ca',\n 'key',\n 'pfx',\n 'cert',\n 'disableTLSCerts'\n].forEach((fn) => {\n // Default setting for all requests from this agent\n Agent.prototype[fn] = function (...args) {\n this._defaults.push({ fn, args });\n return this;\n };\n});\n\nAgent.prototype._setDefaults = function (req) {\n this._defaults.forEach((def) => {\n req[def.fn](...def.args);\n });\n};\n\nmodule.exports = Agent;\n","/**\n * Root reference for iframes.\n */\n\nlet root;\nif (typeof window !== 'undefined') {\n // Browser window\n root = window;\n} else if (typeof self === 'undefined') {\n // Other environments\n console.warn(\n 'Using browser-only version of superagent in non-browser environment'\n );\n root = this;\n} else {\n // Web Worker\n root = self;\n}\n\nconst Emitter = require('component-emitter');\nconst safeStringify = require('fast-safe-stringify');\nconst qs = require('qs');\nconst RequestBase = require('./request-base');\nconst isObject = require('./is-object');\nconst ResponseBase = require('./response-base');\nconst Agent = require('./agent-base');\n\n/**\n * Noop.\n */\n\nfunction noop() {}\n\n/**\n * Expose `request`.\n */\n\nmodule.exports = function (method, url) {\n // callback\n if (typeof url === 'function') {\n return new exports.Request('GET', method).end(url);\n }\n\n // url first\n if (arguments.length === 1) {\n return new exports.Request('GET', method);\n }\n\n return new exports.Request(method, url);\n};\n\nexports = module.exports;\n\nconst request = exports;\n\nexports.Request = Request;\n\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = () => {\n if (\n root.XMLHttpRequest &&\n (!root.location ||\n root.location.protocol !== 'file:' ||\n !root.ActiveXObject)\n ) {\n return new XMLHttpRequest();\n }\n\n try {\n return new ActiveXObject('Microsoft.XMLHTTP');\n } catch {}\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.6.0');\n } catch {}\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.3.0');\n } catch {}\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP');\n } catch {}\n\n throw new Error('Browser-only version of superagent could not find XHR');\n};\n\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\nconst trim = ''.trim ? (s) => s.trim() : (s) => s.replace(/(^\\s*|\\s*$)/g, '');\n\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(obj) {\n if (!isObject(obj)) return obj;\n const pairs = [];\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key))\n pushEncodedKeyValuePair(pairs, key, obj[key]);\n }\n\n return pairs.join('&');\n}\n\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\nfunction pushEncodedKeyValuePair(pairs, key, val) {\n if (val === undefined) return;\n if (val === null) {\n pairs.push(encodeURI(key));\n return;\n }\n\n if (Array.isArray(val)) {\n val.forEach((v) => {\n pushEncodedKeyValuePair(pairs, key, v);\n });\n } else if (isObject(val)) {\n for (const subkey in val) {\n if (Object.prototype.hasOwnProperty.call(val, subkey))\n pushEncodedKeyValuePair(pairs, `${key}[${subkey}]`, val[subkey]);\n }\n } else {\n pairs.push(encodeURI(key) + '=' + encodeURIComponent(val));\n }\n}\n\n/**\n * Expose serialization method.\n */\n\nrequest.serializeObject = serialize;\n\n/**\n * Parse the given x-www-form-urlencoded `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseString(str) {\n const obj = {};\n const pairs = str.split('&');\n let pair;\n let pos;\n\n for (let i = 0, len = pairs.length; i < len; ++i) {\n pair = pairs[i];\n pos = pair.indexOf('=');\n if (pos === -1) {\n obj[decodeURIComponent(pair)] = '';\n } else {\n obj[decodeURIComponent(pair.slice(0, pos))] = decodeURIComponent(\n pair.slice(pos + 1)\n );\n }\n }\n\n return obj;\n}\n\n/**\n * Expose parser.\n */\n\nrequest.parseString = parseString;\n\n/**\n * Default MIME type map.\n *\n * superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n html: 'text/html',\n json: 'application/json',\n xml: 'text/xml',\n urlencoded: 'application/x-www-form-urlencoded',\n form: 'application/x-www-form-urlencoded',\n 'form-data': 'application/x-www-form-urlencoded'\n};\n\n/**\n * Default serialization map.\n *\n * superagent.serialize['application/xml'] = function(obj){\n * return 'generated xml here';\n * };\n *\n */\n\nrequest.serialize = {\n 'application/x-www-form-urlencoded': qs.stringify,\n 'application/json': safeStringify\n};\n\n/**\n * Default parsers.\n *\n * superagent.parse['application/xml'] = function(str){\n * return { object parsed from str };\n * };\n *\n */\n\nrequest.parse = {\n 'application/x-www-form-urlencoded': parseString,\n 'application/json': JSON.parse\n};\n\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(str) {\n const lines = str.split(/\\r?\\n/);\n const fields = {};\n let index;\n let line;\n let field;\n let val;\n\n for (let i = 0, len = lines.length; i < len; ++i) {\n line = lines[i];\n index = line.indexOf(':');\n if (index === -1) {\n // could be empty line, just skip it\n continue;\n }\n\n field = line.slice(0, index).toLowerCase();\n val = trim(line.slice(index + 1));\n fields[field] = val;\n }\n\n return fields;\n}\n\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\nfunction isJSON(mime) {\n // should match /json or +json\n // but not /json-seq\n return /[/+]json($|[^-\\w])/i.test(mime);\n}\n\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n * - set flags (.ok, .error, etc)\n * - parse header\n *\n * Examples:\n *\n * Aliasing `superagent` as `request` is nice:\n *\n * request = superagent;\n *\n * We can use the promise-like API, or pass callbacks:\n *\n * request.get('/').end(function(res){});\n * request.get('/', function(res){});\n *\n * Sending data can be chained:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' })\n * .end(function(res){});\n *\n * Or passed to `.send()`:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' }, function(res){});\n *\n * Or passed to `.post()`:\n *\n * request\n * .post('/user', { name: 'tj' })\n * .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n * request\n * .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\nfunction Response(req) {\n this.req = req;\n this.xhr = this.req.xhr;\n // responseText is accessible only if responseType is '' or 'text' and on older browsers\n this.text =\n (this.req.method !== 'HEAD' &&\n (this.xhr.responseType === '' || this.xhr.responseType === 'text')) ||\n typeof this.xhr.responseType === 'undefined'\n ? this.xhr.responseText\n : null;\n this.statusText = this.req.xhr.statusText;\n let { status } = this.xhr;\n // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n if (status === 1223) {\n status = 204;\n }\n\n this._setStatusProperties(status);\n this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n this.header = this.headers;\n // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n // getResponseHeader still works. so we get content-type even if getting\n // other headers fails.\n this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n this._setHeaderProperties(this.header);\n\n if (this.text === null && req._responseType) {\n this.body = this.xhr.response;\n } else {\n this.body =\n this.req.method === 'HEAD'\n ? null\n : this._parseBody(this.text ? this.text : this.xhr.response);\n }\n}\n\n// eslint-disable-next-line new-cap\nResponseBase(Response.prototype);\n\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype._parseBody = function (str) {\n let parse = request.parse[this.type];\n if (this.req._parser) {\n return this.req._parser(this, str);\n }\n\n if (!parse && isJSON(this.type)) {\n parse = request.parse['application/json'];\n }\n\n return parse && str && (str.length > 0 || str instanceof Object)\n ? parse(str)\n : null;\n};\n\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\nResponse.prototype.toError = function () {\n const { req } = this;\n const { method } = req;\n const { url } = req;\n\n const msg = `cannot ${method} ${url} (${this.status})`;\n const err = new Error(msg);\n err.status = this.status;\n err.method = method;\n err.url = url;\n\n return err;\n};\n\n/**\n * Expose `Response`.\n */\n\nrequest.Response = Response;\n\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n const self = this;\n this._query = this._query || [];\n this.method = method;\n this.url = url;\n this.header = {}; // preserves header name case\n this._header = {}; // coerces header names to lowercase\n this.on('end', () => {\n let err = null;\n let res = null;\n\n try {\n res = new Response(self);\n } catch (err_) {\n err = new Error('Parser is unable to parse the response');\n err.parse = true;\n err.original = err_;\n // issue #675: return the raw response if the response parsing fails\n if (self.xhr) {\n // ie9 doesn't have 'response' property\n err.rawResponse =\n typeof self.xhr.responseType === 'undefined'\n ? self.xhr.responseText\n : self.xhr.response;\n // issue #876: return the http status code if the response parsing fails\n err.status = self.xhr.status ? self.xhr.status : null;\n err.statusCode = err.status; // backwards-compat only\n } else {\n err.rawResponse = null;\n err.status = null;\n }\n\n return self.callback(err);\n }\n\n self.emit('response', res);\n\n let new_err;\n try {\n if (!self._isResponseOK(res)) {\n new_err = new Error(\n res.statusText || res.text || 'Unsuccessful HTTP response'\n );\n }\n } catch (err_) {\n new_err = err_; // ok() callback can throw\n }\n\n // #1000 don't catch errors from the callback to avoid double calling it\n if (new_err) {\n new_err.original = err;\n new_err.response = res;\n new_err.status = res.status;\n self.callback(new_err, res);\n } else {\n self.callback(null, res);\n }\n });\n}\n\n/**\n * Mixin `Emitter` and `RequestBase`.\n */\n\n// eslint-disable-next-line new-cap\nEmitter(Request.prototype);\n// eslint-disable-next-line new-cap\nRequestBase(Request.prototype);\n\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.xml = 'application/xml';\n *\n * request.post('/')\n * .type('xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * request.post('/')\n * .type('application/xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function (type) {\n this.set('Content-Type', request.types[type] || type);\n return this;\n};\n\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.json = 'application/json';\n *\n * request.get('/agent')\n * .accept('json')\n * .end(callback);\n *\n * request.get('/agent')\n * .accept('application/json')\n * .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.accept = function (type) {\n this.set('Accept', request.types[type] || type);\n return this;\n};\n\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} [pass] optional in case of using 'bearer' as type\n * @param {Object} options with 'type' property 'auto', 'basic' or 'bearer' (default 'basic')\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.auth = function (user, pass, options) {\n if (arguments.length === 1) pass = '';\n if (typeof pass === 'object' && pass !== null) {\n // pass is optional and can be replaced with options\n options = pass;\n pass = '';\n }\n\n if (!options) {\n options = {\n type: typeof btoa === 'function' ? 'basic' : 'auto'\n };\n }\n\n const encoder = (string) => {\n if (typeof btoa === 'function') {\n return btoa(string);\n }\n\n throw new Error('Cannot use basic auth, btoa is not a function');\n };\n\n return this._auth(user, pass, options, encoder);\n};\n\n/**\n * Add query-string `val`.\n *\n * Examples:\n *\n * request.get('/shoes')\n * .query('size=10')\n * .query({ color: 'blue' })\n *\n * @param {Object|String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.query = function (val) {\n if (typeof val !== 'string') val = serialize(val);\n if (val) this._query.push(val);\n return this;\n};\n\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `options` (or filename).\n *\n * ``` js\n * request.post('/upload')\n * .attach('content', new Blob(['hey!'], { type: \"text/html\"}))\n * .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String|Object} options\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.attach = function (field, file, options) {\n if (file) {\n if (this._data) {\n throw new Error(\"superagent can't mix .send() and .attach()\");\n }\n\n this._getFormData().append(field, file, options || file.name);\n }\n\n return this;\n};\n\nRequest.prototype._getFormData = function () {\n if (!this._formData) {\n this._formData = new root.FormData();\n }\n\n return this._formData;\n};\n\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\nRequest.prototype.callback = function (err, res) {\n if (this._shouldRetry(err, res)) {\n return this._retry();\n }\n\n const fn = this._callback;\n this.clearTimeout();\n\n if (err) {\n if (this._maxRetries) err.retries = this._retries - 1;\n this.emit('error', err);\n }\n\n fn(err, res);\n};\n\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\nRequest.prototype.crossDomainError = function () {\n const err = new Error(\n 'Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.'\n );\n err.crossDomain = true;\n\n err.status = this.status;\n err.method = this.method;\n err.url = this.url;\n\n this.callback(err);\n};\n\n// This only warns, because the request is still likely to work\nRequest.prototype.agent = function () {\n console.warn('This is not supported in browser version of superagent');\n return this;\n};\n\nRequest.prototype.ca = Request.prototype.agent;\nRequest.prototype.buffer = Request.prototype.ca;\n\n// This throws, because it can't send/receive data as expected\nRequest.prototype.write = () => {\n throw new Error(\n 'Streaming is not supported in browser version of superagent'\n );\n};\n\nRequest.prototype.pipe = Request.prototype.write;\n\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * @param {Object} obj host object\n * @return {Boolean} is a host object\n * @api private\n */\nRequest.prototype._isHost = function (obj) {\n // Native objects stringify to [object File], [object Blob], [object FormData], etc.\n return (\n obj &&\n typeof obj === 'object' &&\n !Array.isArray(obj) &&\n Object.prototype.toString.call(obj) !== '[object Object]'\n );\n};\n\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.end = function (fn) {\n if (this._endCalled) {\n console.warn(\n 'Warning: .end() was called twice. This is not supported in superagent'\n );\n }\n\n this._endCalled = true;\n\n // store callback\n this._callback = fn || noop;\n\n // querystring\n this._finalizeQueryString();\n\n this._end();\n};\n\nRequest.prototype._setUploadTimeout = function () {\n const self = this;\n\n // upload timeout it's wokrs only if deadline timeout is off\n if (this._uploadTimeout && !this._uploadTimeoutTimer) {\n this._uploadTimeoutTimer = setTimeout(() => {\n self._timeoutError(\n 'Upload timeout of ',\n self._uploadTimeout,\n 'ETIMEDOUT'\n );\n }, this._uploadTimeout);\n }\n};\n\n// eslint-disable-next-line complexity\nRequest.prototype._end = function () {\n if (this._aborted)\n return this.callback(\n new Error('The request has been aborted even before .end() was called')\n );\n\n const self = this;\n this.xhr = request.getXHR();\n const { xhr } = this;\n let data = this._formData || this._data;\n\n this._setTimeouts();\n\n // state change\n xhr.onreadystatechange = () => {\n const { readyState } = xhr;\n if (readyState >= 2 && self._responseTimeoutTimer) {\n clearTimeout(self._responseTimeoutTimer);\n }\n\n if (readyState !== 4) {\n return;\n }\n\n // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n // result in the error \"Could not complete the operation due to error c00c023f\"\n let status;\n try {\n status = xhr.status;\n } catch {\n status = 0;\n }\n\n if (!status) {\n if (self.timedout || self._aborted) return;\n return self.crossDomainError();\n }\n\n self.emit('end');\n };\n\n // progress\n const handleProgress = (direction, e) => {\n if (e.total > 0) {\n e.percent = (e.loaded / e.total) * 100;\n\n if (e.percent === 100) {\n clearTimeout(self._uploadTimeoutTimer);\n }\n }\n\n e.direction = direction;\n self.emit('progress', e);\n };\n\n if (this.hasListeners('progress')) {\n try {\n xhr.addEventListener('progress', handleProgress.bind(null, 'download'));\n if (xhr.upload) {\n xhr.upload.addEventListener(\n 'progress',\n handleProgress.bind(null, 'upload')\n );\n }\n } catch {\n // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n // Reported here:\n // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n }\n }\n\n if (xhr.upload) {\n this._setUploadTimeout();\n }\n\n // initiate request\n try {\n if (this.username && this.password) {\n xhr.open(this.method, this.url, true, this.username, this.password);\n } else {\n xhr.open(this.method, this.url, true);\n }\n } catch (err) {\n // see #1149\n return this.callback(err);\n }\n\n // CORS\n if (this._withCredentials) xhr.withCredentials = true;\n\n // body\n if (\n !this._formData &&\n this.method !== 'GET' &&\n this.method !== 'HEAD' &&\n typeof data !== 'string' &&\n !this._isHost(data)\n ) {\n // serialize stuff\n const contentType = this._header['content-type'];\n let serialize =\n this._serializer ||\n request.serialize[contentType ? contentType.split(';')[0] : ''];\n if (!serialize && isJSON(contentType)) {\n serialize = request.serialize['application/json'];\n }\n\n if (serialize) data = serialize(data);\n }\n\n // set header fields\n for (const field in this.header) {\n if (this.header[field] === null) continue;\n\n if (Object.prototype.hasOwnProperty.call(this.header, field))\n xhr.setRequestHeader(field, this.header[field]);\n }\n\n if (this._responseType) {\n xhr.responseType = this._responseType;\n }\n\n // send stuff\n this.emit('request', this);\n\n // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n // We need null here if data is undefined\n xhr.send(typeof data === 'undefined' ? null : data);\n};\n\nrequest.agent = () => new Agent();\n\n['GET', 'POST', 'OPTIONS', 'PATCH', 'PUT', 'DELETE'].forEach((method) => {\n Agent.prototype[method.toLowerCase()] = function (url, fn) {\n const req = new request.Request(method, url);\n this._setDefaults(req);\n if (fn) {\n req.end(fn);\n }\n\n return req;\n };\n});\n\nAgent.prototype.del = Agent.prototype.delete;\n\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.get = (url, data, fn) => {\n const req = request('GET', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) req.query(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.head = (url, data, fn) => {\n const req = request('HEAD', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) req.query(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * OPTIONS query to `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.options = (url, data, fn) => {\n const req = request('OPTIONS', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * DELETE `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nfunction del(url, data, fn) {\n const req = request('DELETE', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n}\n\nrequest.del = del;\nrequest.delete = del;\n\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.patch = (url, data, fn) => {\n const req = request('PATCH', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.post = (url, data, fn) => {\n const req = request('POST', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.put = (url, data, fn) => {\n const req = request('PUT', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n","/**\n * Check if `obj` is an object.\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n\nmodule.exports = isObject;\n","/**\n * Module of mixed-in functions shared between node and client code\n */\nconst isObject = require('./is-object');\n\n/**\n * Expose `RequestBase`.\n */\n\nmodule.exports = RequestBase;\n\n/**\n * Initialize a new `RequestBase`.\n *\n * @api public\n */\n\nfunction RequestBase(object) {\n if (object) return mixin(object);\n}\n\n/**\n * Mixin the prototype properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(object) {\n for (const key in RequestBase.prototype) {\n if (Object.prototype.hasOwnProperty.call(RequestBase.prototype, key))\n object[key] = RequestBase.prototype[key];\n }\n\n return object;\n}\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.clearTimeout = function () {\n clearTimeout(this._timer);\n clearTimeout(this._responseTimeoutTimer);\n clearTimeout(this._uploadTimeoutTimer);\n delete this._timer;\n delete this._responseTimeoutTimer;\n delete this._uploadTimeoutTimer;\n return this;\n};\n\n/**\n * Override default response body parser\n *\n * This function will be called to convert incoming data into request.body\n *\n * @param {Function}\n * @api public\n */\n\nRequestBase.prototype.parse = function (fn) {\n this._parser = fn;\n return this;\n};\n\n/**\n * Set format of binary response body.\n * In browser valid formats are 'blob' and 'arraybuffer',\n * which return Blob and ArrayBuffer, respectively.\n *\n * In Node all values result in Buffer.\n *\n * Examples:\n *\n * req.get('/')\n * .responseType('blob')\n * .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.responseType = function (value) {\n this._responseType = value;\n return this;\n};\n\n/**\n * Override default request body serializer\n *\n * This function will be called to convert data set via .send or .attach into payload to send\n *\n * @param {Function}\n * @api public\n */\n\nRequestBase.prototype.serialize = function (fn) {\n this._serializer = fn;\n return this;\n};\n\n/**\n * Set timeouts.\n *\n * - response timeout is time between sending request and receiving the first byte of the response. Includes DNS and connection time.\n * - deadline is the time from start of the request to receiving response body in full. If the deadline is too short large files may not load at all on slow connections.\n * - upload is the time since last bit of data was sent or received. This timeout works only if deadline timeout is off\n *\n * Value of 0 or false means no timeout.\n *\n * @param {Number|Object} ms or {response, deadline}\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.timeout = function (options) {\n if (!options || typeof options !== 'object') {\n this._timeout = options;\n this._responseTimeout = 0;\n this._uploadTimeout = 0;\n return this;\n }\n\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option)) {\n switch (option) {\n case 'deadline':\n this._timeout = options.deadline;\n break;\n case 'response':\n this._responseTimeout = options.response;\n break;\n case 'upload':\n this._uploadTimeout = options.upload;\n break;\n default:\n console.warn('Unknown timeout option', option);\n }\n }\n }\n\n return this;\n};\n\n/**\n * Set number of retry attempts on error.\n *\n * Failed requests will be retried 'count' times if timeout or err.code >= 500.\n *\n * @param {Number} count\n * @param {Function} [fn]\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.retry = function (count, fn) {\n // Default to 1 if no count passed or true\n if (arguments.length === 0 || count === true) count = 1;\n if (count <= 0) count = 0;\n this._maxRetries = count;\n this._retries = 0;\n this._retryCallback = fn;\n return this;\n};\n\n//\n// NOTE: we do not include ESOCKETTIMEDOUT because that is from `request` package\n// \n//\n// NOTE: we do not include EADDRINFO because it was removed from libuv in 2014\n// \n// \n//\n//\n// TODO: expose these as configurable defaults\n//\nconst ERROR_CODES = new Set([\n 'ETIMEDOUT',\n 'ECONNRESET',\n 'EADDRINUSE',\n 'ECONNREFUSED',\n 'EPIPE',\n 'ENOTFOUND',\n 'ENETUNREACH',\n 'EAI_AGAIN'\n]);\n\nconst STATUS_CODES = new Set([\n 408,\n 413,\n 429,\n 500,\n 502,\n 503,\n 504,\n 521,\n 522,\n 524\n]);\n\n// TODO: we would need to make this easily configurable before adding it in (e.g. some might want to add POST)\n// const METHODS = new Set(['GET', 'PUT', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE']);\n\n/**\n * Determine if a request should be retried.\n * (Inspired by https://github.com/sindresorhus/got#retry)\n *\n * @param {Error} err an error\n * @param {Response} [res] response\n * @returns {Boolean} if segment should be retried\n */\nRequestBase.prototype._shouldRetry = function (err, res) {\n if (!this._maxRetries || this._retries++ >= this._maxRetries) {\n return false;\n }\n\n if (this._retryCallback) {\n try {\n const override = this._retryCallback(err, res);\n if (override === true) return true;\n if (override === false) return false;\n // undefined falls back to defaults\n } catch (err_) {\n console.error(err_);\n }\n }\n\n // TODO: we would need to make this easily configurable before adding it in (e.g. some might want to add POST)\n /*\n if (\n this.req &&\n this.req.method &&\n !METHODS.has(this.req.method.toUpperCase())\n )\n return false;\n */\n if (res && res.status && STATUS_CODES.has(res.status)) return true;\n if (err) {\n if (err.code && ERROR_CODES.has(err.code)) return true;\n // Superagent timeout\n if (err.timeout && err.code === 'ECONNABORTED') return true;\n if (err.crossDomain) return true;\n }\n\n return false;\n};\n\n/**\n * Retry request\n *\n * @return {Request} for chaining\n * @api private\n */\n\nRequestBase.prototype._retry = function () {\n this.clearTimeout();\n\n // node\n if (this.req) {\n this.req = null;\n this.req = this.request();\n }\n\n this._aborted = false;\n this.timedout = false;\n this.timedoutError = null;\n\n return this._end();\n};\n\n/**\n * Promise support\n *\n * @param {Function} resolve\n * @param {Function} [reject]\n * @return {Request}\n */\n\nRequestBase.prototype.then = function (resolve, reject) {\n if (!this._fullfilledPromise) {\n const self = this;\n if (this._endCalled) {\n console.warn(\n 'Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises'\n );\n }\n\n this._fullfilledPromise = new Promise((resolve, reject) => {\n self.on('abort', () => {\n if (this._maxRetries && this._maxRetries > this._retries) {\n return;\n }\n\n if (this.timedout && this.timedoutError) {\n reject(this.timedoutError);\n return;\n }\n\n const err = new Error('Aborted');\n err.code = 'ABORTED';\n err.status = this.status;\n err.method = this.method;\n err.url = this.url;\n reject(err);\n });\n self.end((err, res) => {\n if (err) reject(err);\n else resolve(res);\n });\n });\n }\n\n return this._fullfilledPromise.then(resolve, reject);\n};\n\nRequestBase.prototype.catch = function (cb) {\n return this.then(undefined, cb);\n};\n\n/**\n * Allow for extension\n */\n\nRequestBase.prototype.use = function (fn) {\n fn(this);\n return this;\n};\n\nRequestBase.prototype.ok = function (cb) {\n if (typeof cb !== 'function') throw new Error('Callback required');\n this._okCallback = cb;\n return this;\n};\n\nRequestBase.prototype._isResponseOK = function (res) {\n if (!res) {\n return false;\n }\n\n if (this._okCallback) {\n return this._okCallback(res);\n }\n\n return res.status >= 200 && res.status < 300;\n};\n\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nRequestBase.prototype.get = function (field) {\n return this._header[field.toLowerCase()];\n};\n\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\nRequestBase.prototype.getHeader = RequestBase.prototype.get;\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.set = function (field, value) {\n if (isObject(field)) {\n for (const key in field) {\n if (Object.prototype.hasOwnProperty.call(field, key))\n this.set(key, field[key]);\n }\n\n return this;\n }\n\n this._header[field.toLowerCase()] = value;\n this.header[field] = value;\n return this;\n};\n\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field field name\n */\nRequestBase.prototype.unset = function (field) {\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n\n/**\n * Write the field `name` and `val`, or multiple fields with one object\n * for \"multipart/form-data\" request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n *\n * request.post('/upload')\n * .field({ foo: 'bar', baz: 'qux' })\n * .end(callback);\n * ```\n *\n * @param {String|Object} name name of field\n * @param {String|Blob|File|Buffer|fs.ReadStream} val value of field\n * @return {Request} for chaining\n * @api public\n */\nRequestBase.prototype.field = function (name, value) {\n // name should be either a string or an object.\n if (name === null || undefined === name) {\n throw new Error('.field(name, val) name can not be empty');\n }\n\n if (this._data) {\n throw new Error(\n \".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()\"\n );\n }\n\n if (isObject(name)) {\n for (const key in name) {\n if (Object.prototype.hasOwnProperty.call(name, key))\n this.field(key, name[key]);\n }\n\n return this;\n }\n\n if (Array.isArray(value)) {\n for (const i in value) {\n if (Object.prototype.hasOwnProperty.call(value, i))\n this.field(name, value[i]);\n }\n\n return this;\n }\n\n // val should be defined now\n if (value === null || undefined === value) {\n throw new Error('.field(name, val) val can not be empty');\n }\n\n if (typeof value === 'boolean') {\n value = String(value);\n }\n\n this._getFormData().append(name, value);\n return this;\n};\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request} request\n * @api public\n */\nRequestBase.prototype.abort = function () {\n if (this._aborted) {\n return this;\n }\n\n this._aborted = true;\n if (this.xhr) this.xhr.abort(); // browser\n if (this.req) this.req.abort(); // node\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\nRequestBase.prototype._auth = function (user, pass, options, base64Encoder) {\n switch (options.type) {\n case 'basic':\n this.set('Authorization', `Basic ${base64Encoder(`${user}:${pass}`)}`);\n break;\n\n case 'auto':\n this.username = user;\n this.password = pass;\n break;\n\n case 'bearer': // usage would be .auth(accessToken, { type: 'bearer' })\n this.set('Authorization', `Bearer ${user}`);\n break;\n default:\n break;\n }\n\n return this;\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\nRequestBase.prototype.withCredentials = function (on) {\n // This is browser-only functionality. Node side is no-op.\n if (on === undefined) on = true;\n this._withCredentials = on;\n return this;\n};\n\n/**\n * Set the max redirects to `n`. Does nothing in browser XHR implementation.\n *\n * @param {Number} n\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.redirects = function (n) {\n this._maxRedirects = n;\n return this;\n};\n\n/**\n * Maximum size of buffered response body, in bytes. Counts uncompressed size.\n * Default 200MB.\n *\n * @param {Number} n number of bytes\n * @return {Request} for chaining\n */\nRequestBase.prototype.maxResponseSize = function (n) {\n if (typeof n !== 'number') {\n throw new TypeError('Invalid argument');\n }\n\n this._maxResponseSize = n;\n return this;\n};\n\n/**\n * Convert to a plain javascript object (not JSON string) of scalar properties.\n * Note as this method is designed to return a useful non-this value,\n * it cannot be chained.\n *\n * @return {Object} describing method, url, and data of this request\n * @api public\n */\n\nRequestBase.prototype.toJSON = function () {\n return {\n method: this.method,\n url: this.url,\n data: this._data,\n headers: this._header\n };\n};\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\n// eslint-disable-next-line complexity\nRequestBase.prototype.send = function (data) {\n const isObject_ = isObject(data);\n let type = this._header['content-type'];\n\n if (this._formData) {\n throw new Error(\n \".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()\"\n );\n }\n\n if (isObject_ && !this._data) {\n if (Array.isArray(data)) {\n this._data = [];\n } else if (!this._isHost(data)) {\n this._data = {};\n }\n } else if (data && this._data && this._isHost(this._data)) {\n throw new Error(\"Can't merge these send calls\");\n }\n\n // merge\n if (isObject_ && isObject(this._data)) {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key))\n this._data[key] = data[key];\n }\n } else if (typeof data === 'string') {\n // default to x-www-form-urlencoded\n if (!type) this.type('form');\n type = this._header['content-type'];\n if (type) type = type.toLowerCase().trim();\n if (type === 'application/x-www-form-urlencoded') {\n this._data = this._data ? `${this._data}&${data}` : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!isObject_ || this._isHost(data)) {\n return this;\n }\n\n // default to json\n if (!type) this.type('json');\n return this;\n};\n\n/**\n * Sort `querystring` by the sort function\n *\n *\n * Examples:\n *\n * // default order\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery()\n * .end(callback)\n *\n * // customized sort function\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery(function(a, b){\n * return a.length - b.length;\n * })\n * .end(callback)\n *\n *\n * @param {Function} sort\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.sortQuery = function (sort) {\n // _sort default to true but otherwise can be a function or boolean\n this._sort = typeof sort === 'undefined' ? true : sort;\n return this;\n};\n\n/**\n * Compose querystring to append to req.url\n *\n * @api private\n */\nRequestBase.prototype._finalizeQueryString = function () {\n const query = this._query.join('&');\n if (query) {\n this.url += (this.url.includes('?') ? '&' : '?') + query;\n }\n\n this._query.length = 0; // Makes the call idempotent\n\n if (this._sort) {\n const index = this.url.indexOf('?');\n if (index >= 0) {\n const queryArray = this.url.slice(index + 1).split('&');\n if (typeof this._sort === 'function') {\n queryArray.sort(this._sort);\n } else {\n queryArray.sort();\n }\n\n this.url = this.url.slice(0, index) + '?' + queryArray.join('&');\n }\n }\n};\n\n// For backwards compat only\nRequestBase.prototype._appendQueryString = () => {\n console.warn('Unsupported');\n};\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequestBase.prototype._timeoutError = function (reason, timeout, errno) {\n if (this._aborted) {\n return;\n }\n\n const err = new Error(`${reason + timeout}ms exceeded`);\n err.timeout = timeout;\n err.code = 'ECONNABORTED';\n err.errno = errno;\n this.timedout = true;\n this.timedoutError = err;\n this.abort();\n this.callback(err);\n};\n\nRequestBase.prototype._setTimeouts = function () {\n const self = this;\n\n // deadline\n if (this._timeout && !this._timer) {\n this._timer = setTimeout(() => {\n self._timeoutError('Timeout of ', self._timeout, 'ETIME');\n }, this._timeout);\n }\n\n // response timeout\n if (this._responseTimeout && !this._responseTimeoutTimer) {\n this._responseTimeoutTimer = setTimeout(() => {\n self._timeoutError(\n 'Response timeout of ',\n self._responseTimeout,\n 'ETIMEDOUT'\n );\n }, this._responseTimeout);\n }\n};\n","/**\n * Module dependencies.\n */\n\nconst utils = require('./utils');\n\n/**\n * Expose `ResponseBase`.\n */\n\nmodule.exports = ResponseBase;\n\n/**\n * Initialize a new `ResponseBase`.\n *\n * @api public\n */\n\nfunction ResponseBase(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the prototype properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (const key in ResponseBase.prototype) {\n if (Object.prototype.hasOwnProperty.call(ResponseBase.prototype, key))\n obj[key] = ResponseBase.prototype[key];\n }\n\n return obj;\n}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponseBase.prototype.get = function (field) {\n return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\nResponseBase.prototype._setHeaderProperties = function (header) {\n // TODO: moar!\n // TODO: make this a util\n\n // content-type\n const ct = header['content-type'] || '';\n this.type = utils.type(ct);\n\n // params\n const params = utils.params(ct);\n for (const key in params) {\n if (Object.prototype.hasOwnProperty.call(params, key))\n this[key] = params[key];\n }\n\n this.links = {};\n\n // links\n try {\n if (header.link) {\n this.links = utils.parseLinks(header.link);\n }\n } catch {\n // ignore\n }\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponseBase.prototype._setStatusProperties = function (status) {\n const type = (status / 100) | 0;\n\n // status / class\n this.statusCode = status;\n this.status = this.statusCode;\n this.statusType = type;\n\n // basics\n this.info = type === 1;\n this.ok = type === 2;\n this.redirect = type === 3;\n this.clientError = type === 4;\n this.serverError = type === 5;\n this.error = type === 4 || type === 5 ? this.toError() : false;\n\n // sugar\n this.created = status === 201;\n this.accepted = status === 202;\n this.noContent = status === 204;\n this.badRequest = status === 400;\n this.unauthorized = status === 401;\n this.notAcceptable = status === 406;\n this.forbidden = status === 403;\n this.notFound = status === 404;\n this.unprocessableEntity = status === 422;\n};\n","/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nexports.type = (str) => str.split(/ *; */).shift();\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nexports.params = (val) => {\n const obj = {};\n for (const str of val.split(/ *; */)) {\n const parts = str.split(/ *= */);\n const key = parts.shift();\n const val = parts.shift();\n\n if (key && val) obj[key] = val;\n }\n\n return obj;\n};\n\n/**\n * Parse Link header fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nexports.parseLinks = (val) => {\n const obj = {};\n for (const str of val.split(/ *, */)) {\n const parts = str.split(/ *; */);\n const url = parts[0].slice(1, -1);\n const rel = parts[1].split(/ *= */)[1].slice(1, -1);\n obj[rel] = url;\n }\n\n return obj;\n};\n\n/**\n * Strip content related fields from `header`.\n *\n * @param {Object} header\n * @return {Object} header\n * @api private\n */\n\nexports.cleanHeader = (header, changesOrigin) => {\n delete header['content-type'];\n delete header['content-length'];\n delete header['transfer-encoding'];\n delete header.host;\n // secuirty\n if (changesOrigin) {\n delete header.authorization;\n delete header.cookie;\n }\n\n return header;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","/*!\n * Chart.js v3.7.0\n * https://www.chartjs.org\n * (c) 2021 Chart.js Contributors\n * Released under the MIT License\n */\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst emptyString = '';\nconst dot = '.';\nfunction indexOfDotOrLength(key, start) {\n const idx = key.indexOf(dot, start);\n return idx === -1 ? key.length : idx;\n}\nfunction resolveObjectKey(obj, key) {\n if (key === emptyString) {\n return obj;\n }\n let pos = 0;\n let idx = indexOfDotOrLength(key, pos);\n while (obj && idx > pos) {\n obj = obj[key.substr(pos, idx - pos)];\n pos = idx + 1;\n idx = indexOfDotOrLength(key, pos);\n }\n return obj;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.1.9\n * https://github.com/kurkle/color#readme\n * (c) 2020 Jukka Kurkela\n * Released under the MIT License\n */\nconst map = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = '0123456789ABCDEF';\nconst h1 = (b) => hex[b & 0xF];\nconst h2 = (b) => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = (b) => (((b & 0xF0) >> 4) === (b & 0xF));\nfunction isShort(v) {\n\treturn eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\n}\nfunction hexParse(str) {\n\tvar len = str.length;\n\tvar ret;\n\tif (str[0] === '#') {\n\t\tif (len === 4 || len === 5) {\n\t\t\tret = {\n\t\t\t\tr: 255 & map[str[1]] * 17,\n\t\t\t\tg: 255 & map[str[2]] * 17,\n\t\t\t\tb: 255 & map[str[3]] * 17,\n\t\t\t\ta: len === 5 ? map[str[4]] * 17 : 255\n\t\t\t};\n\t\t} else if (len === 7 || len === 9) {\n\t\t\tret = {\n\t\t\t\tr: map[str[1]] << 4 | map[str[2]],\n\t\t\t\tg: map[str[3]] << 4 | map[str[4]],\n\t\t\t\tb: map[str[5]] << 4 | map[str[6]],\n\t\t\t\ta: len === 9 ? (map[str[7]] << 4 | map[str[8]]) : 255\n\t\t\t};\n\t\t}\n\t}\n\treturn ret;\n}\nfunction hexString(v) {\n\tvar f = isShort(v) ? h1 : h2;\n\treturn v\n\t\t? '#' + f(v.r) + f(v.g) + f(v.b) + (v.a < 255 ? f(v.a) : '')\n\t\t: v;\n}\nfunction round(v) {\n\treturn v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n\treturn lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n\treturn lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n\treturn lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n\treturn lim(round(v * 100), 0, 100);\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n\tconst m = RGB_RE.exec(str);\n\tlet a = 255;\n\tlet r, g, b;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[7] !== r) {\n\t\tconst v = +m[7];\n\t\ta = 255 & (m[8] ? p2b(v) : v * 255);\n\t}\n\tr = +m[1];\n\tg = +m[3];\n\tb = +m[5];\n\tr = 255 & (m[2] ? p2b(r) : r);\n\tg = 255 & (m[4] ? p2b(g) : g);\n\tb = 255 & (m[6] ? p2b(b) : b);\n\treturn {\n\t\tr: r,\n\t\tg: g,\n\t\tb: b,\n\t\ta: a\n\t};\n}\nfunction rgbString(v) {\n\treturn v && (\n\t\tv.a < 255\n\t\t\t? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n\t\t\t: `rgb(${v.r}, ${v.g}, ${v.b})`\n\t);\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n\tconst a = s * Math.min(l, 1 - l);\n\tconst f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n\treturn [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n\tconst f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n\treturn [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n\tconst rgb = hsl2rgbn(h, 1, 0.5);\n\tlet i;\n\tif (w + b > 1) {\n\t\ti = 1 / (w + b);\n\t\tw *= i;\n\t\tb *= i;\n\t}\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] *= 1 - w - b;\n\t\trgb[i] += w;\n\t}\n\treturn rgb;\n}\nfunction rgb2hsl(v) {\n\tconst range = 255;\n\tconst r = v.r / range;\n\tconst g = v.g / range;\n\tconst b = v.b / range;\n\tconst max = Math.max(r, g, b);\n\tconst min = Math.min(r, g, b);\n\tconst l = (max + min) / 2;\n\tlet h, s, d;\n\tif (max !== min) {\n\t\td = max - min;\n\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\t\th = max === r\n\t\t\t? ((g - b) / d) + (g < b ? 6 : 0)\n\t\t\t: max === g\n\t\t\t\t? (b - r) / d + 2\n\t\t\t\t: (r - g) / d + 4;\n\t\th = h * 60 + 0.5;\n\t}\n\treturn [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n\treturn (\n\t\tArray.isArray(a)\n\t\t\t? f(a[0], a[1], a[2])\n\t\t\t: f(a, b, c)\n\t).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n\treturn calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n\treturn calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n\treturn calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n\treturn (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n\tconst m = HUE_RE.exec(str);\n\tlet a = 255;\n\tlet v;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[5] !== v) {\n\t\ta = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n\t}\n\tconst h = hue(+m[2]);\n\tconst p1 = +m[3] / 100;\n\tconst p2 = +m[4] / 100;\n\tif (m[1] === 'hwb') {\n\t\tv = hwb2rgb(h, p1, p2);\n\t} else if (m[1] === 'hsv') {\n\t\tv = hsv2rgb(h, p1, p2);\n\t} else {\n\t\tv = hsl2rgb(h, p1, p2);\n\t}\n\treturn {\n\t\tr: v[0],\n\t\tg: v[1],\n\t\tb: v[2],\n\t\ta: a\n\t};\n}\nfunction rotate(v, deg) {\n\tvar h = rgb2hsl(v);\n\th[0] = hue(h[0] + deg);\n\th = hsl2rgb(h);\n\tv.r = h[0];\n\tv.g = h[1];\n\tv.b = h[2];\n}\nfunction hslString(v) {\n\tif (!v) {\n\t\treturn;\n\t}\n\tconst a = rgb2hsl(v);\n\tconst h = a[0];\n\tconst s = n2p(a[1]);\n\tconst l = n2p(a[2]);\n\treturn v.a < 255\n\t\t? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n\t\t: `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map$1 = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n\tconst unpacked = {};\n\tconst keys = Object.keys(names);\n\tconst tkeys = Object.keys(map$1);\n\tlet i, j, k, ok, nk;\n\tfor (i = 0; i < keys.length; i++) {\n\t\tok = nk = keys[i];\n\t\tfor (j = 0; j < tkeys.length; j++) {\n\t\t\tk = tkeys[j];\n\t\t\tnk = nk.replace(k, map$1[k]);\n\t\t}\n\t\tk = parseInt(names[ok], 16);\n\t\tunpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n\t}\n\treturn unpacked;\n}\nlet names$1;\nfunction nameParse(str) {\n\tif (!names$1) {\n\t\tnames$1 = unpack();\n\t\tnames$1.transparent = [0, 0, 0, 0];\n\t}\n\tconst a = names$1[str.toLowerCase()];\n\treturn a && {\n\t\tr: a[0],\n\t\tg: a[1],\n\t\tb: a[2],\n\t\ta: a.length === 4 ? a[3] : 255\n\t};\n}\nfunction modHSL(v, i, ratio) {\n\tif (v) {\n\t\tlet tmp = rgb2hsl(v);\n\t\ttmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n\t\ttmp = hsl2rgb(tmp);\n\t\tv.r = tmp[0];\n\t\tv.g = tmp[1];\n\t\tv.b = tmp[2];\n\t}\n}\nfunction clone(v, proto) {\n\treturn v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n\tvar v = {r: 0, g: 0, b: 0, a: 255};\n\tif (Array.isArray(input)) {\n\t\tif (input.length >= 3) {\n\t\t\tv = {r: input[0], g: input[1], b: input[2], a: 255};\n\t\t\tif (input.length > 3) {\n\t\t\t\tv.a = n2b(input[3]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tv = clone(input, {r: 0, g: 0, b: 0, a: 1});\n\t\tv.a = n2b(v.a);\n\t}\n\treturn v;\n}\nfunction functionParse(str) {\n\tif (str.charAt(0) === 'r') {\n\t\treturn rgbParse(str);\n\t}\n\treturn hueParse(str);\n}\nclass Color {\n\tconstructor(input) {\n\t\tif (input instanceof Color) {\n\t\t\treturn input;\n\t\t}\n\t\tconst type = typeof input;\n\t\tlet v;\n\t\tif (type === 'object') {\n\t\t\tv = fromObject(input);\n\t\t} else if (type === 'string') {\n\t\t\tv = hexParse(input) || nameParse(input) || functionParse(input);\n\t\t}\n\t\tthis._rgb = v;\n\t\tthis._valid = !!v;\n\t}\n\tget valid() {\n\t\treturn this._valid;\n\t}\n\tget rgb() {\n\t\tvar v = clone(this._rgb);\n\t\tif (v) {\n\t\t\tv.a = b2n(v.a);\n\t\t}\n\t\treturn v;\n\t}\n\tset rgb(obj) {\n\t\tthis._rgb = fromObject(obj);\n\t}\n\trgbString() {\n\t\treturn this._valid ? rgbString(this._rgb) : this._rgb;\n\t}\n\thexString() {\n\t\treturn this._valid ? hexString(this._rgb) : this._rgb;\n\t}\n\thslString() {\n\t\treturn this._valid ? hslString(this._rgb) : this._rgb;\n\t}\n\tmix(color, weight) {\n\t\tconst me = this;\n\t\tif (color) {\n\t\t\tconst c1 = me.rgb;\n\t\t\tconst c2 = color.rgb;\n\t\t\tlet w2;\n\t\t\tconst p = weight === w2 ? 0.5 : weight;\n\t\t\tconst w = 2 * p - 1;\n\t\t\tconst a = c1.a - c2.a;\n\t\t\tconst w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\t\tw2 = 1 - w1;\n\t\t\tc1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n\t\t\tc1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n\t\t\tc1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n\t\t\tc1.a = p * c1.a + (1 - p) * c2.a;\n\t\t\tme.rgb = c1;\n\t\t}\n\t\treturn me;\n\t}\n\tclone() {\n\t\treturn new Color(this.rgb);\n\t}\n\talpha(a) {\n\t\tthis._rgb.a = n2b(a);\n\t\treturn this;\n\t}\n\tclearer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 - ratio;\n\t\treturn this;\n\t}\n\tgreyscale() {\n\t\tconst rgb = this._rgb;\n\t\tconst val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n\t\trgb.r = rgb.g = rgb.b = val;\n\t\treturn this;\n\t}\n\topaquer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 + ratio;\n\t\treturn this;\n\t}\n\tnegate() {\n\t\tconst v = this._rgb;\n\t\tv.r = 255 - v.r;\n\t\tv.g = 255 - v.g;\n\t\tv.b = 255 - v.b;\n\t\treturn this;\n\t}\n\tlighten(ratio) {\n\t\tmodHSL(this._rgb, 2, ratio);\n\t\treturn this;\n\t}\n\tdarken(ratio) {\n\t\tmodHSL(this._rgb, 2, -ratio);\n\t\treturn this;\n\t}\n\tsaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, ratio);\n\t\treturn this;\n\t}\n\tdesaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, -ratio);\n\t\treturn this;\n\t}\n\trotate(deg) {\n\t\trotate(this._rgb, deg);\n\t\treturn this;\n\t}\n}\nfunction index_esm(input) {\n\treturn new Color(input);\n}\n\nconst isPatternOrGradient = (value) => value instanceof CanvasGradient || value instanceof CanvasPattern;\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n let type, xOffset, yOffset, size, cornerRadius;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n ctx.arc(x, y, radius, 0, TAU);\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n ctx.rect(x - size, y - size, 2 * size, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(evt, canvas) {\n const e = evt.native || evt;\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _toLeftRightCenter as $, _rlookupByKey as A, getAngleFromPoint as B, toPadding as C, each as D, getMaximumSize as E, _getParentNode as F, readUsedSize as G, HALF_PI as H, throttled as I, supportsEventListenerOptions as J, _isDomSupported as K, log10 as L, _factorize as M, finiteOrDefault as N, callback as O, PI as P, _addGrace as Q, toDegrees as R, _measureText as S, TAU as T, _int16Range as U, _alignPixel as V, clipArea as W, renderText as X, unclipArea as Y, toFont as Z, _arrayUnique as _, resolve as a, _angleDiff as a$, _alignStartEnd as a0, overrides as a1, merge as a2, _capitalize as a3, descriptors as a4, isFunction as a5, _attachContext as a6, _createResolver as a7, _descriptors as a8, mergeIf as a9, restoreTextDirection as aA, noop as aB, distanceBetweenPoints as aC, _setMinAndMaxByKey as aD, niceNum as aE, almostWhole as aF, almostEquals as aG, _decimalPlaces as aH, _longestText as aI, _filterBetween as aJ, _lookup as aK, getHoverColor as aL, clone$1 as aM, _merger as aN, _mergerIf as aO, _deprecated as aP, toFontString as aQ, splineCurve as aR, splineCurveMonotone as aS, getStyle as aT, fontString as aU, toLineHeight as aV, PITAU as aW, INFINITY as aX, RAD_PER_DEG as aY, QUARTER_PI as aZ, TWO_THIRDS_PI as a_, uid as aa, debounce as ab, retinaScale as ac, clearCanvas as ad, setsEqual as ae, _elementsEqual as af, _isClickEvent as ag, _isBetween as ah, _readValueToProps as ai, _updateBezierControlPoints as aj, _computeSegments as ak, _boundSegments as al, _steppedInterpolation as am, _bezierInterpolation as an, _pointInLine as ao, _steppedLineTo as ap, _bezierCurveTo as aq, drawPoint as ar, addRoundedRectPath as as, toTRBL as at, toTRBLCorners as au, _boundSegment as av, _normalizeAngle as aw, getRtlAdapter as ax, overrideTextDirection as ay, _textX as az, isArray as b, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, isNumber as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _limitValue as w, _lookupByKey as x, getRelativePosition as y, _isPointInArea as z };\n","/*!\n * Chart.js v3.7.0\n * https://www.chartjs.org\n * (c) 2021 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as isNumber, w as _limitValue, x as _lookupByKey, y as getRelativePosition$1, z as _isPointInArea, A as _rlookupByKey, B as getAngleFromPoint, C as toPadding, D as each, E as getMaximumSize, F as _getParentNode, G as readUsedSize, I as throttled, J as supportsEventListenerOptions, K as _isDomSupported, L as log10, M as _factorize, N as finiteOrDefault, O as callback, Q as _addGrace, R as toDegrees, S as _measureText, U as _int16Range, V as _alignPixel, W as clipArea, X as renderText, Y as unclipArea, Z as toFont, $ as _toLeftRightCenter, a0 as _alignStartEnd, a1 as overrides, a2 as merge, a3 as _capitalize, a4 as descriptors, a5 as isFunction, a6 as _attachContext, a7 as _createResolver, a8 as _descriptors, a9 as mergeIf, aa as uid, ab as debounce, ac as retinaScale, ad as clearCanvas, ae as setsEqual, af as _elementsEqual, ag as _isClickEvent, ah as _isBetween, ai as _readValueToProps, aj as _updateBezierControlPoints, ak as _computeSegments, al as _boundSegments, am as _steppedInterpolation, an as _bezierInterpolation, ao as _pointInLine, ap as _steppedLineTo, aq as _bezierCurveTo, ar as drawPoint, as as addRoundedRectPath, at as toTRBL, au as toTRBLCorners, av as _boundSegment, aw as _normalizeAngle, ax as getRtlAdapter, ay as overrideTextDirection, az as _textX, aA as restoreTextDirection, aB as noop, aC as distanceBetweenPoints, aD as _setMinAndMaxByKey, aE as niceNum, aF as almostWhole, aG as almostEquals, aH as _decimalPlaces, aI as _longestText, aJ as _filterBetween, aK as _lookup } from './chunks/helpers.segment.js';\nexport { d as defaults } from './chunks/helpers.segment.js';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const metasets = iScale.getMatchingVisibleMetas(this._type);\n const stacked = iScale.options.stacked;\n const ilen = metasets.length;\n const stacks = [];\n let i, item;\n for (i = 0; i < ilen; ++i) {\n item = metasets[i];\n if (!item.controller.options.grouped) {\n continue;\n }\n if (typeof dataIndex !== 'undefined') {\n const val = item.controller.getParsed(dataIndex)[\n item.controller._cachedMeta.vScale.axis\n ];\n if (isNullOrUndef(val) || isNaN(val)) {\n continue;\n }\n }\n if (stacked === false || stacks.indexOf(item.stack) === -1 ||\n\t\t\t\t(stacked === undefined && item.stack === undefined)) {\n stacks.push(item.stack);\n }\n if (item.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\nfunction getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max)).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const dataset = this.getDataset();\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(dataset.data[i]) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const dataset = this.getDataset();\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(dataset.data[index]) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const dataset = this.getDataset();\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, dataset.data[i]);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass ScatterController extends LineController {\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction getRelativePosition(e, chart) {\n if ('native' in e) {\n return {\n x: e.x,\n y: e.y\n };\n }\n return getRelativePosition$1(e, chart);\n}\nfunction evaluateAllVisibleItems(chart, handler) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n let index, data, element;\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n ({index, data} = metasets[i]);\n for (let j = 0, jlen = data.length; j < jlen; ++j) {\n element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction optimizedEvaluateItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition) {\n const items = [];\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n optimizedEvaluateItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = _isPointInArea(center, chart.chartArea, chart._minPadding);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition) {\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition);\n}\nfunction getAxisItems(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const items = [];\n const axis = options.axis;\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateAllVisibleItems(chart, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n intersectsItem = true;\n }\n });\n if (options.intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition)\n : getNearestItems(chart, position, axis, false, useFinalPosition);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition) :\n getNearestItems(chart, position, axis, false, useFinalPosition);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getIntersectItems(chart, position, axis, useFinalPosition);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition);\n },\n x(chart, e, options, useFinalPosition) {\n return getAxisItems(chart, e, {axis: 'x', intersect: options.intersect}, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n return getAxisItems(chart, e, {axis: 'y', intersect: options.intersect}, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition$1(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = grid.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n if (isHorizontal) {\n x = pixel;\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n }\n }\n return plugins;\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, plugins, options, all) {\n const result = [];\n const context = chart.getContext();\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, plugin, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, plugin, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n return config.createResolver(scopes, context, [''], {scriptable: false, indexable: false, allKeys: true});\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.7.0\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: _isPointInArea(e, this.chartArea, this._minPadding)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (meta.type !== 'line') {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\nfunction decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n if (fill[0] === '-' || fill[0] === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n let target = null;\n let horizontal;\n if (fill === 'start') {\n target = scale.bottom;\n } else if (fill === 'end') {\n target = scale.top;\n } else if (isObject(fill)) {\n target = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n target = scale.getBasePixel();\n }\n if (isNumberFinite(target)) {\n horizontal = scale.isHorizontal();\n return {\n x: horizontal ? target : null,\n y: horizontal ? null : target\n };\n }\n return null;\n}\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const target = [];\n const start = options.reverse ? scale.max : scale.min;\n const end = options.reverse ? scale.min : scale.max;\n let i, center, value;\n if (fill === 'start') {\n value = start;\n } else if (fill === 'end') {\n value = end;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n if (options.grid.circular) {\n center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\nfunction getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return createBoundaryLine(boundary, line);\n}\nfunction createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _clip(ctx, target, clipY) {\n ctx.beginPath();\n target.path(ctx);\n ctx.lineTo(target.last().x, clipY);\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = findSegmentEnd(start, end, points);\n const bounds = getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\nfunction _fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n _clip(ctx, target, area.top);\n _fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n _clip(ctx, target, area.bottom);\n }\n _fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction drawfill(ctx, source, area) {\n const target = getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nvar plugin_filler = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw) {\n drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (source) {\n drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!source || source.fill === false || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxWidth * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if (type === 'mousemove' && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = labelColors.borderWidth || 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n if (tooltip) {\n tooltip.draw(chart.ctx);\n }\n chart.notifyPlugins('afterTooltipDraw', args);\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: plugin_filler,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n ctx.fillRect(left - padding.left, top - padding.top, right - left + padding.width, bottom - top + padding.height);\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, plugin_filler as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","/*!\n * chartjs-adapter-moment v1.0.0\n * https://www.chartjs.org\n * (c) 2021 chartjs-adapter-moment Contributors\n * Released under the MIT license\n */\nimport moment from 'moment';\nimport { _adapters } from 'chart.js';\n\nconst FORMATS = {\n datetime: 'MMM D, YYYY, h:mm:ss a',\n millisecond: 'h:mm:ss.SSS a',\n second: 'h:mm:ss a',\n minute: 'h:mm a',\n hour: 'hA',\n day: 'MMM D',\n week: 'll',\n month: 'MMM YYYY',\n quarter: '[Q]Q - YYYY',\n year: 'YYYY'\n};\n\n_adapters._date.override(typeof moment === 'function' ? {\n _id: 'moment', // DEBUG ONLY\n\n formats: function() {\n return FORMATS;\n },\n\n parse: function(value, format) {\n if (typeof value === 'string' && typeof format === 'string') {\n value = moment(value, format);\n } else if (!(value instanceof moment)) {\n value = moment(value);\n }\n return value.isValid() ? value.valueOf() : null;\n },\n\n format: function(time, format) {\n return moment(time).format(format);\n },\n\n add: function(time, amount, unit) {\n return moment(time).add(amount, unit).valueOf();\n },\n\n diff: function(max, min, unit) {\n return moment(max).diff(moment(min), unit);\n },\n\n startOf: function(time, unit, weekday) {\n time = moment(time);\n if (unit === 'isoWeek') {\n weekday = Math.trunc(Math.min(Math.max(0, weekday), 6));\n return time.isoWeekday(weekday).startOf('day').valueOf();\n }\n return time.startOf(unit).valueOf();\n },\n\n endOf: function(time, unit) {\n return moment(time).endOf(unit).valueOf();\n }\n} : {});\n","/*\n * Copyright 2018 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** Alignment along the horizontal axis. */\nexport const Alignment = {\n CENTER: \"center\" as \"center\",\n LEFT: \"left\" as \"left\",\n RIGHT: \"right\" as \"right\",\n};\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Alignment = typeof Alignment[keyof typeof Alignment];\n","/*\n * Copyright 2018 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// tslint:disable:object-literal-sort-keys\nexport const Elevation = {\n ZERO: 0 as 0,\n ONE: 1 as 1,\n TWO: 2 as 2,\n THREE: 3 as 3,\n FOUR: 4 as 4,\n};\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Elevation = typeof Elevation[keyof typeof Elevation];\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// tslint:disable:object-literal-sort-keys\n\n/**\n * The four basic intents.\n */\nexport const Intent = {\n NONE: \"none\" as \"none\",\n PRIMARY: \"primary\" as \"primary\",\n SUCCESS: \"success\" as \"success\",\n WARNING: \"warning\" as \"warning\",\n DANGER: \"danger\" as \"danger\",\n};\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Intent = typeof Intent[keyof typeof Intent];\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const Position = {\n BOTTOM: \"bottom\" as \"bottom\",\n BOTTOM_LEFT: \"bottom-left\" as \"bottom-left\",\n BOTTOM_RIGHT: \"bottom-right\" as \"bottom-right\",\n LEFT: \"left\" as \"left\",\n LEFT_BOTTOM: \"left-bottom\" as \"left-bottom\",\n LEFT_TOP: \"left-top\" as \"left-top\",\n RIGHT: \"right\" as \"right\",\n RIGHT_BOTTOM: \"right-bottom\" as \"right-bottom\",\n RIGHT_TOP: \"right-top\" as \"right-top\",\n TOP: \"top\" as \"top\",\n TOP_LEFT: \"top-left\" as \"top-left\",\n TOP_RIGHT: \"top-right\" as \"top-right\",\n};\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Position = typeof Position[keyof typeof Position];\n\nexport function isPositionHorizontal(position: Position) {\n /* istanbul ignore next */\n return (\n position === Position.TOP ||\n position === Position.TOP_LEFT ||\n position === Position.TOP_RIGHT ||\n position === Position.BOTTOM ||\n position === Position.BOTTOM_LEFT ||\n position === Position.BOTTOM_RIGHT\n );\n}\n\nexport function isPositionVertical(position: Position) {\n /* istanbul ignore next */\n return (\n position === Position.LEFT ||\n position === Position.LEFT_TOP ||\n position === Position.LEFT_BOTTOM ||\n position === Position.RIGHT ||\n position === Position.RIGHT_TOP ||\n position === Position.RIGHT_BOTTOM\n );\n}\n\nexport function getPositionIgnoreAngles(position: Position) {\n if (position === Position.TOP || position === Position.TOP_LEFT || position === Position.TOP_RIGHT) {\n return Position.TOP;\n } else if (\n position === Position.BOTTOM ||\n position === Position.BOTTOM_LEFT ||\n position === Position.BOTTOM_RIGHT\n ) {\n return Position.BOTTOM;\n } else if (position === Position.LEFT || position === Position.LEFT_TOP || position === Position.LEFT_BOTTOM) {\n return Position.LEFT;\n } else {\n return Position.RIGHT;\n }\n}\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Alignment } from \"./alignment\";\nimport { Elevation } from \"./elevation\";\nimport { Intent } from \"./intent\";\nimport { Position } from \"./position\";\n\nconst NS = process.env.BLUEPRINT_NAMESPACE || process.env.REACT_APP_BLUEPRINT_NAMESPACE || \"bp3\";\n\n// modifiers\nexport const ACTIVE = `${NS}-active`;\nexport const ALIGN_LEFT = `${NS}-align-left`;\nexport const ALIGN_RIGHT = `${NS}-align-right`;\nexport const DARK = `${NS}-dark`;\nexport const DISABLED = `${NS}-disabled`;\nexport const FILL = `${NS}-fill`;\nexport const FIXED = `${NS}-fixed`;\nexport const FIXED_TOP = `${NS}-fixed-top`;\nexport const INLINE = `${NS}-inline`;\nexport const INTERACTIVE = `${NS}-interactive`;\nexport const LARGE = `${NS}-large`;\nexport const LOADING = `${NS}-loading`;\nexport const MINIMAL = `${NS}-minimal`;\nexport const OUTLINED = `${NS}-outlined`;\nexport const MULTILINE = `${NS}-multiline`;\nexport const ROUND = `${NS}-round`;\nexport const SMALL = `${NS}-small`;\nexport const VERTICAL = `${NS}-vertical`;\nexport const POSITION_TOP = positionClass(Position.TOP);\nexport const POSITION_BOTTOM = positionClass(Position.BOTTOM);\nexport const POSITION_LEFT = positionClass(Position.LEFT);\nexport const POSITION_RIGHT = positionClass(Position.RIGHT);\n\nexport const ELEVATION_0 = elevationClass(Elevation.ZERO);\nexport const ELEVATION_1 = elevationClass(Elevation.ONE);\nexport const ELEVATION_2 = elevationClass(Elevation.TWO);\nexport const ELEVATION_3 = elevationClass(Elevation.THREE);\nexport const ELEVATION_4 = elevationClass(Elevation.FOUR);\n\nexport const INTENT_PRIMARY = intentClass(Intent.PRIMARY)!;\nexport const INTENT_SUCCESS = intentClass(Intent.SUCCESS)!;\nexport const INTENT_WARNING = intentClass(Intent.WARNING)!;\nexport const INTENT_DANGER = intentClass(Intent.DANGER)!;\n\nexport const FOCUS_DISABLED = `${NS}-focus-disabled`;\n\n// text utilities\nexport const UI_TEXT = `${NS}-ui-text`;\nexport const RUNNING_TEXT = `${NS}-running-text`;\nexport const MONOSPACE_TEXT = `${NS}-monospace-text`;\nexport const TEXT_LARGE = `${NS}-text-large`;\nexport const TEXT_SMALL = `${NS}-text-small`;\nexport const TEXT_MUTED = `${NS}-text-muted`;\nexport const TEXT_DISABLED = `${NS}-text-disabled`;\nexport const TEXT_OVERFLOW_ELLIPSIS = `${NS}-text-overflow-ellipsis`;\n\n// textual elements\nexport const BLOCKQUOTE = `${NS}-blockquote`;\nexport const CODE = `${NS}-code`;\nexport const CODE_BLOCK = `${NS}-code-block`;\nexport const HEADING = `${NS}-heading`;\nexport const LIST = `${NS}-list`;\nexport const LIST_UNSTYLED = `${NS}-list-unstyled`;\nexport const RTL = `${NS}-rtl`;\n\n// layout utilities\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block */\nexport const FIXED_POSITIONING_CONTAINING_BLOCK = `${NS}-fixed-positioning-containing-block`;\n\n// components\nexport const ALERT = `${NS}-alert`;\nexport const ALERT_BODY = `${ALERT}-body`;\nexport const ALERT_CONTENTS = `${ALERT}-contents`;\nexport const ALERT_FOOTER = `${ALERT}-footer`;\n\nexport const BREADCRUMB = `${NS}-breadcrumb`;\nexport const BREADCRUMB_CURRENT = `${BREADCRUMB}-current`;\nexport const BREADCRUMBS = `${BREADCRUMB}s`;\nexport const BREADCRUMBS_COLLAPSED = `${BREADCRUMB}s-collapsed`;\n\nexport const BUTTON = `${NS}-button`;\nexport const BUTTON_GROUP = `${BUTTON}-group`;\nexport const BUTTON_SPINNER = `${BUTTON}-spinner`;\nexport const BUTTON_TEXT = `${BUTTON}-text`;\n\nexport const CALLOUT = `${NS}-callout`;\nexport const CALLOUT_ICON = `${CALLOUT}-icon`;\n\nexport const CARD = `${NS}-card`;\n\nexport const COLLAPSE = `${NS}-collapse`;\nexport const COLLAPSE_BODY = `${COLLAPSE}-body`;\n\nexport const COLLAPSIBLE_LIST = `${NS}-collapse-list`;\n\nexport const CONTEXT_MENU = `${NS}-context-menu`;\nexport const CONTEXT_MENU_POPOVER_TARGET = `${CONTEXT_MENU}-popover-target`;\n\nexport const CONTROL_GROUP = `${NS}-control-group`;\n\nexport const DIALOG = `${NS}-dialog`;\nexport const DIALOG_CONTAINER = `${DIALOG}-container`;\nexport const DIALOG_BODY = `${DIALOG}-body`;\nexport const DIALOG_CLOSE_BUTTON = `${DIALOG}-close-button`;\nexport const DIALOG_FOOTER = `${DIALOG}-footer`;\nexport const DIALOG_FOOTER_ACTIONS = `${DIALOG}-footer-actions`;\nexport const DIALOG_HEADER = `${DIALOG}-header`;\n\nexport const DIALOG_STEP = `${NS}-dialog-step`;\nexport const DIALOG_STEP_CONTAINER = `${DIALOG_STEP}-container`;\nexport const DIALOG_STEP_TITLE = `${DIALOG_STEP}-title`;\nexport const DIALOG_STEP_ICON = `${DIALOG_STEP}-icon`;\nexport const DIALOG_STEP_VIEWED = `${DIALOG_STEP}-viewed`;\n\nexport const DIVIDER = `${NS}-divider`;\n\nexport const DRAWER = `${NS}-drawer`;\nexport const DRAWER_BODY = `${DRAWER}-body`;\nexport const DRAWER_FOOTER = `${DRAWER}-footer`;\nexport const DRAWER_HEADER = `${DRAWER}-header`;\n\nexport const EDITABLE_TEXT = `${NS}-editable-text`;\nexport const EDITABLE_TEXT_CONTENT = `${EDITABLE_TEXT}-content`;\nexport const EDITABLE_TEXT_EDITING = `${EDITABLE_TEXT}-editing`;\nexport const EDITABLE_TEXT_INPUT = `${EDITABLE_TEXT}-input`;\nexport const EDITABLE_TEXT_PLACEHOLDER = `${EDITABLE_TEXT}-placeholder`;\n\nexport const FLEX_EXPANDER = `${NS}-flex-expander`;\n\nexport const HTML_SELECT = `${NS}-html-select`;\n/** @deprecated prefer `` component */\nexport const SELECT = `${NS}-select`;\n\nexport const HTML_TABLE = `${NS}-html-table`;\nexport const HTML_TABLE_BORDERED = `${HTML_TABLE}-bordered`;\nexport const HTML_TABLE_CONDENSED = `${HTML_TABLE}-condensed`;\nexport const HTML_TABLE_STRIPED = `${HTML_TABLE}-striped`;\n\nexport const INPUT = `${NS}-input`;\nexport const INPUT_GHOST = `${INPUT}-ghost`;\nexport const INPUT_GROUP = `${INPUT}-group`;\nexport const INPUT_LEFT_CONTAINER = `${INPUT}-left-container`;\nexport const INPUT_ACTION = `${INPUT}-action`;\n\nexport const CONTROL = `${NS}-control`;\nexport const CONTROL_INDICATOR = `${CONTROL}-indicator`;\nexport const CONTROL_INDICATOR_CHILD = `${CONTROL_INDICATOR}-child`;\nexport const CHECKBOX = `${NS}-checkbox`;\nexport const RADIO = `${NS}-radio`;\nexport const SWITCH = `${NS}-switch`;\nexport const SWITCH_INNER_TEXT = `${SWITCH}-inner-text`;\nexport const FILE_INPUT = `${NS}-file-input`;\nexport const FILE_INPUT_HAS_SELECTION = `${NS}-file-input-has-selection`;\nexport const FILE_UPLOAD_INPUT = `${NS}-file-upload-input`;\nexport const FILE_UPLOAD_INPUT_CUSTOM_TEXT = `${NS}-file-upload-input-custom-text`;\n\nexport const KEY = `${NS}-key`;\nexport const KEY_COMBO = `${KEY}-combo`;\nexport const MODIFIER_KEY = `${NS}-modifier-key`;\n\nexport const HOTKEY = `${NS}-hotkey`;\nexport const HOTKEY_LABEL = `${HOTKEY}-label`;\nexport const HOTKEY_COLUMN = `${HOTKEY}-column`;\nexport const HOTKEY_DIALOG = `${HOTKEY}-dialog`;\n\nexport const LABEL = `${NS}-label`;\nexport const FORM_GROUP = `${NS}-form-group`;\nexport const FORM_CONTENT = `${NS}-form-content`;\nexport const FORM_HELPER_TEXT = `${NS}-form-helper-text`;\n\nexport const MENU = `${NS}-menu`;\nexport const MENU_ITEM = `${MENU}-item`;\nexport const MENU_ITEM_LABEL = `${MENU_ITEM}-label`;\nexport const MENU_SUBMENU = `${NS}-submenu`;\nexport const MENU_DIVIDER = `${MENU}-divider`;\nexport const MENU_HEADER = `${MENU}-header`;\n\nexport const MULTISTEP_DIALOG = `${NS}-multistep-dialog`;\nexport const MULTISTEP_DIALOG_PANELS = `${MULTISTEP_DIALOG}-panels`;\nexport const MULTISTEP_DIALOG_LEFT_PANEL = `${MULTISTEP_DIALOG}-left-panel`;\nexport const MULTISTEP_DIALOG_RIGHT_PANEL = `${MULTISTEP_DIALOG}-right-panel`;\nexport const MULTISTEP_DIALOG_FOOTER = `${MULTISTEP_DIALOG}-footer`;\n\nexport const NAVBAR = `${NS}-navbar`;\nexport const NAVBAR_GROUP = `${NAVBAR}-group`;\nexport const NAVBAR_HEADING = `${NAVBAR}-heading`;\nexport const NAVBAR_DIVIDER = `${NAVBAR}-divider`;\n\nexport const NON_IDEAL_STATE = `${NS}-non-ideal-state`;\nexport const NON_IDEAL_STATE_VISUAL = `${NON_IDEAL_STATE}-visual`;\n\nexport const NUMERIC_INPUT = `${NS}-numeric-input`;\n\nexport const OVERFLOW_LIST = `${NS}-overflow-list`;\nexport const OVERFLOW_LIST_SPACER = `${OVERFLOW_LIST}-spacer`;\n\nexport const OVERLAY = `${NS}-overlay`;\nexport const OVERLAY_BACKDROP = `${OVERLAY}-backdrop`;\nexport const OVERLAY_CONTAINER = `${OVERLAY}-container`;\nexport const OVERLAY_CONTENT = `${OVERLAY}-content`;\nexport const OVERLAY_INLINE = `${OVERLAY}-inline`;\nexport const OVERLAY_OPEN = `${OVERLAY}-open`;\nexport const OVERLAY_SCROLL_CONTAINER = `${OVERLAY}-scroll-container`;\n\nexport const PANEL_STACK = `${NS}-panel-stack`;\nexport const PANEL_STACK_HEADER = `${PANEL_STACK}-header`;\nexport const PANEL_STACK_HEADER_BACK = `${PANEL_STACK}-header-back`;\nexport const PANEL_STACK_VIEW = `${PANEL_STACK}-view`;\n\nexport const PANEL_STACK2 = `${NS}-panel-stack2`;\nexport const PANEL_STACK2_HEADER = `${PANEL_STACK}-header`;\nexport const PANEL_STACK2_HEADER_BACK = `${PANEL_STACK}-header-back`;\nexport const PANEL_STACK2_VIEW = `${PANEL_STACK}-view`;\n\nexport const POPOVER = `${NS}-popover`;\nexport const POPOVER_ARROW = `${POPOVER}-arrow`;\nexport const POPOVER_BACKDROP = `${POPOVER}-backdrop`;\nexport const POPOVER_CAPTURING_DISMISS = `${POPOVER}-capturing-dismiss`;\nexport const POPOVER_CONTENT = `${POPOVER}-content`;\nexport const POPOVER_CONTENT_SIZING = `${POPOVER_CONTENT}-sizing`;\nexport const POPOVER_DISMISS = `${POPOVER}-dismiss`;\nexport const POPOVER_DISMISS_OVERRIDE = `${POPOVER_DISMISS}-override`;\nexport const POPOVER_OPEN = `${POPOVER}-open`;\nexport const POPOVER_TARGET = `${POPOVER}-target`;\nexport const POPOVER_WRAPPER = `${POPOVER}-wrapper`;\nexport const TRANSITION_CONTAINER = `${NS}-transition-container`;\n\nexport const PROGRESS_BAR = `${NS}-progress-bar`;\nexport const PROGRESS_METER = `${NS}-progress-meter`;\nexport const PROGRESS_NO_STRIPES = `${NS}-no-stripes`;\nexport const PROGRESS_NO_ANIMATION = `${NS}-no-animation`;\n\nexport const PORTAL = `${NS}-portal`;\n\nexport const SKELETON = `${NS}-skeleton`;\n\nexport const SLIDER = `${NS}-slider`;\nexport const SLIDER_AXIS = `${SLIDER}-axis`;\nexport const SLIDER_HANDLE = `${SLIDER}-handle`;\nexport const SLIDER_LABEL = `${SLIDER}-label`;\nexport const SLIDER_TRACK = `${SLIDER}-track`;\nexport const SLIDER_PROGRESS = `${SLIDER}-progress`;\nexport const START = `${NS}-start`;\nexport const END = `${NS}-end`;\n\nexport const SPINNER = `${NS}-spinner`;\nexport const SPINNER_ANIMATION = `${SPINNER}-animation`;\nexport const SPINNER_HEAD = `${SPINNER}-head`;\nexport const SPINNER_NO_SPIN = `${NS}-no-spin`;\nexport const SPINNER_TRACK = `${SPINNER}-track`;\n\nexport const TAB = `${NS}-tab`;\nexport const TAB_INDICATOR = `${TAB}-indicator`;\nexport const TAB_INDICATOR_WRAPPER = `${TAB_INDICATOR}-wrapper`;\nexport const TAB_LIST = `${TAB}-list`;\nexport const TAB_PANEL = `${TAB}-panel`;\nexport const TABS = `${TAB}s`;\n\nexport const TAG = `${NS}-tag`;\nexport const TAG_REMOVE = `${TAG}-remove`;\n\nexport const TAG_INPUT = `${NS}-tag-input`;\nexport const TAG_INPUT_ICON = `${TAG_INPUT}-icon`;\nexport const TAG_INPUT_VALUES = `${TAG_INPUT}-values`;\n\nexport const TOAST = `${NS}-toast`;\nexport const TOAST_CONTAINER = `${TOAST}-container`;\nexport const TOAST_MESSAGE = `${TOAST}-message`;\n\nexport const TOOLTIP = `${NS}-tooltip`;\nexport const TOOLTIP_INDICATOR = `${TOOLTIP}-indicator`;\n\nexport const TREE = `${NS}-tree`;\nexport const TREE_NODE = `${NS}-tree-node`;\nexport const TREE_NODE_CARET = `${TREE_NODE}-caret`;\nexport const TREE_NODE_CARET_CLOSED = `${TREE_NODE_CARET}-closed`;\nexport const TREE_NODE_CARET_NONE = `${TREE_NODE_CARET}-none`;\nexport const TREE_NODE_CARET_OPEN = `${TREE_NODE_CARET}-open`;\nexport const TREE_NODE_CONTENT = `${TREE_NODE}-content`;\nexport const TREE_NODE_EXPANDED = `${TREE_NODE}-expanded`;\nexport const TREE_NODE_ICON = `${TREE_NODE}-icon`;\nexport const TREE_NODE_LABEL = `${TREE_NODE}-label`;\nexport const TREE_NODE_LIST = `${TREE_NODE}-list`;\nexport const TREE_NODE_SECONDARY_LABEL = `${TREE_NODE}-secondary-label`;\nexport const TREE_NODE_SELECTED = `${TREE_NODE}-selected`;\nexport const TREE_ROOT = `${NS}-tree-root`;\n\nexport const ICON = `${NS}-icon`;\n/** @deprecated use components and iconName prop APIs instead */\nexport const ICON_STANDARD = `${ICON}-standard`;\n/** @deprecated use components and iconName prop APIs instead */\nexport const ICON_LARGE = `${ICON}-large`;\n\n/**\n * Returns the namespace prefix for all Blueprint CSS classes.\n * Customize this namespace at build time with the `process.env.BLUEPRINT_NAMESPACE` environment variable.\n */\nexport function getClassNamespace() {\n return NS;\n}\n\n/** Return CSS class for alignment. */\nexport function alignmentClass(alignment: Alignment | undefined) {\n switch (alignment) {\n case Alignment.LEFT:\n return ALIGN_LEFT;\n case Alignment.RIGHT:\n return ALIGN_RIGHT;\n default:\n return undefined;\n }\n}\n\nexport function elevationClass(elevation: Elevation): string;\nexport function elevationClass(elevation: undefined): undefined;\nexport function elevationClass(elevation: Elevation | undefined): string | undefined;\nexport function elevationClass(elevation: Elevation | undefined) {\n if (elevation === undefined) {\n return undefined;\n }\n return `${NS}-elevation-${elevation}`;\n}\n\n/**\n * Returns CSS class for icon name.\n *\n * @deprecated These CSS classes rely on Blueprint's icon fonts, which are a legacy feature and will be\n * removed the next major version (4.x). Use the `` React component and `iconName` string enum prop\n * APIs instead – they render SVGs, which do not suffer from the blurriness of icon fonts and have\n * equivalent browser support.\n */\nexport function iconClass(iconName: string): string;\nexport function iconClass(iconName: undefined): undefined;\nexport function iconClass(iconName: string | undefined): string | undefined;\nexport function iconClass(iconName: string | undefined) {\n if (iconName == null) {\n return undefined;\n }\n return iconName.indexOf(`${NS}-icon-`) === 0 ? iconName : `${NS}-icon-${iconName}`;\n}\n\n/** Return CSS class for intent. */\nexport function intentClass(intent: Intent): string;\nexport function intentClass(intent: typeof Intent.NONE | undefined): undefined;\nexport function intentClass(intent: Intent | undefined): Intent | undefined;\nexport function intentClass(intent: Intent | undefined) {\n if (intent == null || intent === Intent.NONE) {\n return undefined;\n }\n return `${NS}-intent-${intent.toLowerCase()}`;\n}\n\nexport function positionClass(position: Position): string;\nexport function positionClass(position: undefined): undefined;\nexport function positionClass(position: Position | undefined): string | undefined;\nexport function positionClass(position: Position | undefined) {\n if (position === undefined) {\n return undefined;\n }\n return `${NS}-position-${position}`;\n}\n","/*\n * Copyright 2016 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst TAB_KEY_CODE = 9;\n\n/* istanbul ignore next */\n\n/**\n * A nifty little class that maintains event handlers to add a class to the container element\n * when entering \"mouse mode\" (on a `mousedown` event) and remove it when entering \"keyboard mode\"\n * (on a `tab` key `keydown` event).\n */\nexport class InteractionModeEngine {\n private isRunning = false;\n\n constructor(private container: Element, private className: string) {}\n\n /** Returns whether the engine is currently running. */\n public isActive() {\n return this.isRunning;\n }\n\n /** Enable behavior which applies the given className when in mouse mode. */\n public start() {\n this.container.addEventListener(\"mousedown\", this.handleMouseDown);\n this.isRunning = true;\n }\n\n /** Disable interaction mode behavior and remove className from container. */\n public stop() {\n this.reset();\n this.isRunning = false;\n }\n\n private reset() {\n this.container.classList.remove(this.className);\n // HACKHACK: see https://github.com/palantir/blueprint/issues/4342\n this.container.removeEventListener(\"keydown\", this.handleKeyDown as EventListener);\n this.container.removeEventListener(\"mousedown\", this.handleMouseDown);\n }\n\n private handleKeyDown = (e: KeyboardEvent) => {\n // HACKHACK: https://github.com/palantir/blueprint/issues/4165\n // eslint-disable-next-line deprecation/deprecation\n if (e.which === TAB_KEY_CODE) {\n this.reset();\n this.container.addEventListener(\"mousedown\", this.handleMouseDown);\n }\n };\n\n private handleMouseDown = () => {\n this.reset();\n this.container.classList.add(this.className);\n // HACKHACK: see https://github.com/palantir/blueprint/issues/4342\n this.container.addEventListener(\"keydown\", this.handleKeyDown as EventListener);\n };\n}\n","/*\n * Copyright 2016 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FOCUS_DISABLED } from \"../common/classes\";\nimport { InteractionModeEngine } from \"../common/interactionMode\";\n\n/* istanbul ignore next */\nconst fakeFocusEngine = {\n isActive: () => true,\n start: () => true,\n stop: () => true,\n};\n\nconst focusEngine =\n typeof document !== \"undefined\"\n ? new InteractionModeEngine(document.documentElement, FOCUS_DISABLED)\n : fakeFocusEngine;\n\nexport const FocusStyleManager = {\n alwaysShowFocus: () => focusEngine.stop(),\n isActive: () => focusEngine.isActive(),\n onlyShowFocusOnTabs: () => focusEngine.start(),\n};\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? prefix + \": \" + provided : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNameContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(Context).match;\n\n return path ? matchPath(location.pathname, path) : match;\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const method = replace ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as React from \"react\";\n\nimport { IconName } from \"@blueprintjs/icons\";\n\nimport { Intent } from \"./intent\";\nimport { IRef } from \"./refs\";\n\nexport const DISPLAYNAME_PREFIX = \"Blueprint3\";\n\n/**\n * Alias for all valid HTML props for `
` element.\n * Does not include React's `ref` or `key`.\n */\nexport type HTMLDivProps = React.HTMLAttributes;\n\n/**\n * Alias for all valid HTML props for `` element.\n * Does not include React's `ref` or `key`.\n */\nexport type HTMLInputProps = React.InputHTMLAttributes;\n\n/**\n * Alias for a `JSX.Element` or a value that renders nothing.\n *\n * In React, `boolean`, `null`, and `undefined` do not produce any output.\n */\nexport type MaybeElement = JSX.Element | false | null | undefined;\n\n/**\n * A shared base interface for all Blueprint component props.\n *\n * @deprecated use Props\n */\nexport interface IProps {\n /** A space-delimited list of class names to pass along to a child element. */\n className?: string;\n}\n// eslint-disable-next-line deprecation/deprecation\nexport type Props = IProps;\n\n/** @deprecated use IntentProps */\nexport interface IIntentProps {\n /** Visual intent color to apply to element. */\n intent?: Intent;\n}\n// eslint-disable-next-line deprecation/deprecation\nexport type IntentProps = IIntentProps;\n\n/**\n * Interface for a clickable action, such as a button or menu item.\n * These props can be spready directly to a `
\n );\n }\n}\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport * as React from \"react\";\n\nimport * as Classes from \"../../common/classes\";\nimport { DISPLAYNAME_PREFIX, Props } from \"../../common/props\";\nimport { H6 } from \"../html/html\";\n\n// eslint-disable-next-line deprecation/deprecation\nexport type MenuDividerProps = IMenuDividerProps;\n/** @deprecated use MenuDividerProps */\nexport interface IMenuDividerProps extends Props {\n /** This component does not support children. */\n children?: never;\n\n /** Optional header title. */\n title?: React.ReactNode;\n}\n\nexport class MenuDivider extends React.Component {\n public static displayName = `${DISPLAYNAME_PREFIX}.MenuDivider`;\n\n public render() {\n const { className, title } = this.props;\n if (title == null) {\n // simple divider\n return
  • ;\n } else {\n // section header with title\n return (\n
  • \n
    {title}
    \n
  • \n );\n }\n }\n}\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport createContext from '@hypnosphi/create-react-context';\nexport var ManagerReferenceNodeContext = createContext();\nexport var ManagerReferenceNodeSetterContext = createContext();\n\nvar Manager =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Manager, _React$Component);\n\n function Manager() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"referenceNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setReferenceNode\", function (newReferenceNode) {\n if (newReferenceNode && _this.referenceNode !== newReferenceNode) {\n _this.referenceNode = newReferenceNode;\n\n _this.forceUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = Manager.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.referenceNode = null;\n };\n\n _proto.render = function render() {\n return React.createElement(ManagerReferenceNodeContext.Provider, {\n value: this.referenceNode\n }, React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: this.setReferenceNode\n }, this.props.children));\n };\n\n return Manager;\n}(React.Component);\n\nexport { Manager as default };","/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Does a shallow equality check of two objects by comparing the reference\n * equality of each value.\n */\n\nexport var shallowEqual = function shallowEqual(objA, objB) {\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n\n if (bKeys.length !== aKeys.length) {\n return false;\n }\n\n for (var i = 0; i < bKeys.length; i++) {\n var key = aKeys[i];\n\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === \"function\") {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport warning from 'warning';\nimport { ManagerReferenceNodeSetterContext } from './Manager';\nimport { safeInvoke, unwrapArray, setRef } from './utils';\n\nvar InnerReference =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerReference, _React$Component);\n\n function InnerReference() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"refHandler\", function (node) {\n setRef(_this.props.innerRef, node);\n safeInvoke(_this.props.setReferenceNode, node);\n });\n\n return _this;\n }\n\n var _proto = InnerReference.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n };\n\n _proto.render = function render() {\n warning(Boolean(this.props.setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n return unwrapArray(this.props.children)({\n ref: this.refHandler\n });\n };\n\n return InnerReference;\n}(React.Component);\n\nexport default function Reference(props) {\n return React.createElement(ManagerReferenceNodeSetterContext.Consumer, null, function (setReferenceNode) {\n return React.createElement(InnerReference, _extends({\n setReferenceNode: setReferenceNode\n }, props));\n });\n}","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`]) +\n parseFloat(styles[`border${sideB}Width`])\n );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE(10)\n ? (parseInt(html[`offset${axis}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n : 0 \n );\n}\n\nexport default function getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n else {\n rect = element.getBoundingClientRect();\n }\n }\n catch(e){}\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n const width =\n sizes.width || element.clientWidth || result.width;\n const height =\n sizes.height || element.clientHeight || result.height;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if(fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n const parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport' ) {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(popper.ownerDocument);\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n const isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
    \n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference,\n this.options.positionFixed\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n\n data.offsets.popper.position = this.options.positionFixed\n ? 'fixed'\n : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n const offsets = getRoundedOffsets(\n data,\n window.devicePixelRatio < 2 || !isFirefox\n );\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
    \n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
    \n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
    \n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement,\n data.positionFixed\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n const flippedVariationByRef =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n // flips variation if popper content overflows boundaries\n const flippedVariationByContent =\n !!options.flipVariationsByContent &&\n ((isVertical && variation === 'start' && overflowsRight) ||\n (isVertical && variation === 'end' && overflowsLeft) ||\n (!isVertical && variation === 'start' && overflowsBottom) ||\n (!isVertical && variation === 'end' && overflowsTop));\n\n const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
    \n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
    \n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
    \n * It will read the variation of the `placement` property.
    \n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
    \n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
    \n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
    \n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
    \n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
    \n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false,\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n const transformProp = getSupportedPropertyName('transform');\n const popperStyles = data.instance.popper.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = popperStyles;\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement,\n data.positionFixed\n );\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side =\n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n const { popper, reference } = data.offsets;\n const { round, floor } = Math;\n const noRound = v => v;\n \n const referenceWidth = round(reference.width);\n const popperWidth = round(popper.width);\n \n const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n const isVariation = data.placement.indexOf('-') !== -1;\n const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n const horizontalToInteger = !shouldRound\n ? noRound\n : isVertical || isVariation || sameWidthParity\n ? round\n : floor;\n const verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(\n bothOddWidth && !isVariation && shouldRound\n ? popper.left - 1\n : popper.left\n ),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right),\n };\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
    \n * These can be overridden using the `options` argument of Popper.js.
    \n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
    \n * By default, it is set to no-op.
    \n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
    \n * By default, it is set to no-op.
    \n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
    \n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport deepEqual from \"deep-equal\";\nimport * as React from 'react';\nimport PopperJS from 'popper.js';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef, shallowEqual } from './utils';\nvar initialStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n opacity: 0,\n pointerEvents: 'none'\n};\nvar initialArrowStyle = {};\nexport var InnerPopper =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerPopper, _React$Component);\n\n function InnerPopper() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n data: undefined,\n placement: undefined\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperInstance\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"arrowNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setPopperNode\", function (popperNode) {\n if (!popperNode || _this.popperNode === popperNode) return;\n setRef(_this.props.innerRef, popperNode);\n _this.popperNode = popperNode;\n\n _this.updatePopperInstance();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setArrowNode\", function (arrowNode) {\n _this.arrowNode = arrowNode;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updateStateModifier\", {\n enabled: true,\n order: 900,\n fn: function fn(data) {\n var placement = data.placement;\n\n _this.setState({\n data: data,\n placement: placement\n });\n\n return data;\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptions\", function () {\n return {\n placement: _this.props.placement,\n eventsEnabled: _this.props.eventsEnabled,\n positionFixed: _this.props.positionFixed,\n modifiers: _extends({}, _this.props.modifiers, {\n arrow: _extends({}, _this.props.modifiers && _this.props.modifiers.arrow, {\n enabled: !!_this.arrowNode,\n element: _this.arrowNode\n }),\n applyStyle: {\n enabled: false\n },\n updateStateModifier: _this.updateStateModifier\n })\n };\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperStyle\", function () {\n return !_this.popperNode || !_this.state.data ? initialStyle : _extends({\n position: _this.state.data.offsets.popper.position\n }, _this.state.data.styles);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperPlacement\", function () {\n return !_this.state.data ? undefined : _this.state.placement;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getArrowStyle\", function () {\n return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOutOfBoundariesState\", function () {\n return _this.state.data ? _this.state.data.hide : undefined;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"destroyPopperInstance\", function () {\n if (!_this.popperInstance) return;\n\n _this.popperInstance.destroy();\n\n _this.popperInstance = null;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updatePopperInstance\", function () {\n _this.destroyPopperInstance();\n\n var _assertThisInitialize = _assertThisInitialized(_assertThisInitialized(_this)),\n popperNode = _assertThisInitialize.popperNode;\n\n var referenceElement = _this.props.referenceElement;\n if (!referenceElement || !popperNode) return;\n _this.popperInstance = new PopperJS(referenceElement, popperNode, _this.getOptions());\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scheduleUpdate\", function () {\n if (_this.popperInstance) {\n _this.popperInstance.scheduleUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = InnerPopper.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // If the Popper.js options have changed, update the instance (destroy + create)\n if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed || !deepEqual(this.props.modifiers, prevProps.modifiers, {\n strict: true\n })) {\n // develop only check that modifiers isn't being updated needlessly\n if (process.env.NODE_ENV === \"development\") {\n if (this.props.modifiers !== prevProps.modifiers && this.props.modifiers != null && prevProps.modifiers != null && shallowEqual(this.props.modifiers, prevProps.modifiers)) {\n console.warn(\"'modifiers' prop reference updated even though all values appear the same.\\nConsider memoizing the 'modifiers' object to avoid needless rendering.\");\n }\n }\n\n this.updatePopperInstance();\n } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {\n this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();\n } // A placement difference in state means popper determined a new placement\n // apart from the props value. By the time the popper element is rendered with\n // the new position Popper has already measured it, if the place change triggers\n // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n\n\n if (prevState.placement !== this.state.placement) {\n this.scheduleUpdate();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n this.destroyPopperInstance();\n };\n\n _proto.render = function render() {\n return unwrapArray(this.props.children)({\n ref: this.setPopperNode,\n style: this.getPopperStyle(),\n placement: this.getPopperPlacement(),\n outOfBoundaries: this.getOutOfBoundariesState(),\n scheduleUpdate: this.scheduleUpdate,\n arrowProps: {\n ref: this.setArrowNode,\n style: this.getArrowStyle()\n }\n });\n };\n\n return InnerPopper;\n}(React.Component);\n\n_defineProperty(InnerPopper, \"defaultProps\", {\n placement: 'bottom',\n eventsEnabled: true,\n referenceElement: undefined,\n positionFixed: false\n});\n\nvar placements = PopperJS.placements;\nexport { placements };\nexport default function Popper(_ref) {\n var referenceElement = _ref.referenceElement,\n props = _objectWithoutPropertiesLoose(_ref, [\"referenceElement\"]);\n\n return React.createElement(ManagerReferenceNodeContext.Consumer, null, function (referenceNode) {\n return React.createElement(InnerPopper, _extends({\n referenceElement: referenceElement !== undefined ? referenceElement : referenceNode\n }, props));\n });\n}","/*\n * Copyright 2020 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isFunction } from \"./functionUtils\";\n\nexport function elementIsOrContains(element: HTMLElement, testElement: HTMLElement) {\n return element === testElement || element.contains(testElement);\n}\n\n/**\n * Throttle an event on an EventTarget by wrapping it in a\n * `requestAnimationFrame` call. Returns the event handler that was bound to\n * given eventName so you can clean up after yourself.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/Events/scroll\n */\nexport function throttleEvent(target: EventTarget, eventName: string, newEventName: string) {\n const throttledFunc = throttleImpl((event: Event) => {\n target.dispatchEvent(new CustomEvent(newEventName, event));\n });\n target.addEventListener(eventName, throttledFunc);\n return throttledFunc;\n}\n\nexport interface IThrottledReactEventOptions {\n preventDefault?: boolean;\n}\n\n/**\n * Throttle a callback by wrapping it in a `requestAnimationFrame` call. Returns\n * the throttled function.\n *\n * @see https://www.html5rocks.com/en/tutorials/speed/animations/\n */\nexport function throttleReactEventCallback(\n callback: (event: E, ...otherArgs: any[]) => any,\n options: IThrottledReactEventOptions = {},\n) {\n const throttledFunc = throttleImpl(\n callback,\n (event2: E) => {\n if (options.preventDefault) {\n event2.preventDefault();\n }\n },\n // prevent React from reclaiming the event object before we reference it\n (event2: E) => event2.persist(),\n );\n return throttledFunc;\n}\n\n/**\n * Throttle a method by wrapping it in a `requestAnimationFrame` call. Returns\n * the throttled function.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function throttle(method: T): T {\n return throttleImpl(method);\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction throttleImpl(\n onAnimationFrameRequested: T,\n onBeforeIsRunningCheck?: T,\n onAfterIsRunningCheck?: T,\n) {\n let isRunning = false;\n const func = (...args: any[]) => {\n // don't use safeInvoke, because we might have more than its max number\n // of typed params\n if (isFunction(onBeforeIsRunningCheck)) {\n onBeforeIsRunningCheck(...args);\n }\n\n if (isRunning) {\n return;\n }\n isRunning = true;\n\n if (isFunction(onAfterIsRunningCheck)) {\n onAfterIsRunningCheck(...args);\n }\n\n requestAnimationFrame(() => {\n onAnimationFrameRequested(...args);\n isRunning = false;\n });\n };\n return (func as any) as T;\n}\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","/*\n * Copyright 2018 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as React from \"react\";\nimport { findDOMNode } from \"react-dom\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport ResizeObserver from \"resize-observer-polyfill\";\n\nimport { AbstractPureComponent2 } from \"../../common\";\nimport { DISPLAYNAME_PREFIX } from \"../../common/props\";\nimport { ResizeEntry } from \"./resizeObserverTypes\";\n\n// eslint-disable-next-line deprecation/deprecation\nexport type ResizeSensorProps = IResizeSensorProps;\n/** @deprecated use ResizeSensorProps */\nexport interface IResizeSensorProps {\n /**\n * Callback invoked when the wrapped element resizes.\n *\n * The `entries` array contains an entry for each observed element. In the\n * default case (no `observeParents`), the array will contain only one\n * element: the single child of the `ResizeSensor`.\n *\n * Note that this method is called _asynchronously_ after a resize is\n * detected and typically it will be called no more than once per frame.\n */\n onResize: (entries: ResizeEntry[]) => void;\n\n /**\n * If `true`, all parent DOM elements of the container will also be\n * observed for size changes. The array of entries passed to `onResize`\n * will now contain an entry for each parent element up to the root of the\n * document.\n *\n * Only enable this prop if a parent element resizes in a way that does\n * not also cause the child element to resize.\n *\n * @default false\n */\n observeParents?: boolean;\n}\n\n/** `ResizeSensor` requires a single DOM element child and will error otherwise. */\n@polyfill\nexport class ResizeSensor extends AbstractPureComponent2 {\n public static displayName = `${DISPLAYNAME_PREFIX}.ResizeSensor`;\n\n private element: Element | null = null;\n\n private observer = new ResizeObserver(entries => this.props.onResize?.(entries));\n\n public render() {\n // pass-through render of single child\n return React.Children.only(this.props.children);\n }\n\n public componentDidMount() {\n this.observeElement();\n }\n\n public componentDidUpdate(prevProps: ResizeSensorProps) {\n this.observeElement(this.props.observeParents !== prevProps.observeParents);\n }\n\n public componentWillUnmount() {\n this.observer.disconnect();\n }\n\n /**\n * Observe the DOM element, if defined and different from the currently\n * observed element. Pass `force` argument to skip element checks and always\n * re-observe.\n */\n private observeElement(force = false) {\n const element = this.getElement();\n if (!(element instanceof Element)) {\n // stop everything if not defined\n this.observer.disconnect();\n return;\n }\n\n if (element === this.element && !force) {\n // quit if given same element -- nothing to update (unless forced)\n return;\n } else {\n // clear observer list if new element\n this.observer.disconnect();\n // remember element reference for next time\n this.element = element;\n }\n\n // observer callback is invoked immediately when observing new elements\n this.observer.observe(element);\n\n if (this.props.observeParents) {\n let parent = element.parentElement;\n while (parent != null) {\n this.observer.observe(parent);\n parent = parent.parentElement;\n }\n }\n }\n\n private getElement() {\n try {\n // using findDOMNode for two reasons:\n // 1. cloning to insert a ref is unwieldy and not performant.\n // 2. ensure that we resolve to an actual DOM node (instead of any JSX ref instance).\n // HACKHACK: see https://github.com/palantir/blueprint/issues/3979\n /* eslint-disable-next-line react/no-find-dom-node */\n return findDOMNode(this);\n } catch {\n // swallow error if findDOMNode is run on unmounted component.\n return null;\n }\n }\n}\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport * as React from \"react\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Classes } from \"../../common\";\nimport { DISPLAYNAME_PREFIX, IntentProps } from \"../../common/props\";\n// eslint-disable-next-line import/no-cycle\nimport { Popover, PopoverInteractionKind } from \"../popover/popover\";\nimport { IPopoverSharedProps } from \"../popover/popoverSharedProps\";\n\n// eslint-disable-next-line deprecation/deprecation\nexport type TooltipProps = ITooltipProps;\n/** @deprecated use TooltipProps */\nexport interface ITooltipProps extends IPopoverSharedProps, IntentProps {\n /**\n * The content that will be displayed inside of the tooltip.\n */\n content: JSX.Element | string;\n\n /**\n * The amount of time in milliseconds the tooltip should remain open after\n * the user hovers off the trigger. The timer is canceled if the user mouses\n * over the target before it expires.\n *\n * @default 0\n */\n hoverCloseDelay?: number;\n\n /**\n * The amount of time in milliseconds the tooltip should wait before opening\n * after the user hovers over the trigger. The timer is canceled if the user\n * mouses away from the target before it expires.\n *\n * @default 100\n */\n hoverOpenDelay?: number;\n\n /**\n * The kind of hover interaction that triggers the display of the tooltip.\n * Tooltips do not support click interactions.\n *\n * @default PopoverInteractionKind.HOVER_TARGET_ONLY\n */\n interactionKind?: typeof PopoverInteractionKind.HOVER | typeof PopoverInteractionKind.HOVER_TARGET_ONLY;\n\n /**\n * Indicates how long (in milliseconds) the tooltip's appear/disappear\n * transition takes. This is used by React `CSSTransition` to know when a\n * transition completes and must match the duration of the animation in CSS.\n * Only set this prop if you override Blueprint's default transitions with\n * new transitions of a different length.\n *\n * @default 100\n */\n transitionDuration?: number;\n}\n\n/** @deprecated use { Tooltip2 } from \"@blueprintjs/popover2\" */\n@polyfill\nexport class Tooltip extends AbstractPureComponent2 {\n public static displayName = `${DISPLAYNAME_PREFIX}.Tooltip`;\n\n public static defaultProps: Partial = {\n hoverCloseDelay: 0,\n hoverOpenDelay: 100,\n minimal: false,\n transitionDuration: 100,\n };\n\n // eslint-disable-next-line deprecation/deprecation\n private popover: Popover | null = null;\n\n public render() {\n const { children, intent, popoverClassName, ...restProps } = this.props;\n const classes = classNames(\n Classes.TOOLTIP,\n { [Classes.MINIMAL]: this.props.minimal },\n Classes.intentClass(intent),\n popoverClassName,\n );\n\n return (\n /* eslint-disable deprecation/deprecation */\n (this.popover = ref)}\n >\n {children}\n \n );\n }\n\n public reposition() {\n if (this.popover != null) {\n this.popover.reposition();\n }\n }\n}\n","/*\n * Copyright 2017 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport PopperJS from \"popper.js\";\n\n// Popper placement utils\n// ======================\n\n/** Converts a full placement to one of the four positions by stripping text after the `-`. */\nexport function getPosition(placement: PopperJS.Placement) {\n return placement.split(\"-\")[0] as PopperJS.Position;\n}\n\n/** Returns true if position is left or right. */\nexport function isVerticalPosition(side: PopperJS.Position) {\n return [\"left\", \"right\"].indexOf(side) !== -1;\n}\n\n/** Returns the opposite position. */\nexport function getOppositePosition(side: PopperJS.Position) {\n switch (side) {\n case \"top\":\n return \"bottom\";\n case \"left\":\n return \"right\";\n case \"bottom\":\n return \"top\";\n default:\n return \"left\";\n }\n}\n\n/** Returns the CSS alignment keyword corresponding to given placement. */\nexport function getAlignment(placement: PopperJS.Placement) {\n const align = placement.split(\"-\")[1] as \"start\" | \"end\" | undefined;\n switch (align) {\n case \"start\":\n return \"left\";\n case \"end\":\n return \"right\";\n default:\n return \"center\";\n }\n}\n\n// Popper modifiers\n// ================\n\n/** Modifier helper function to compute popper transform-origin based on arrow position */\nexport function getTransformOrigin(data: PopperJS.Data) {\n const position = getPosition(data.placement);\n if (data.arrowElement == null) {\n return isVerticalPosition(position)\n ? `${getOppositePosition(position)} ${getAlignment(position)}`\n : `${getAlignment(position)} ${getOppositePosition(position)}`;\n } else {\n const arrowSizeShift = data.arrowElement.clientHeight / 2;\n const { arrow } = data.offsets;\n // can use keyword for dimension without the arrow, to ease computation burden.\n // move origin by half arrow's height to keep it centered.\n return isVerticalPosition(position)\n ? `${getOppositePosition(position)} ${arrow.top + arrowSizeShift}px`\n : `${arrow.left + arrowSizeShift}px ${getOppositePosition(position)}`;\n }\n}\n\n// additional space between arrow and edge of target\nconst ARROW_SPACING = 4;\n\n/** Popper modifier that offsets popper and arrow so arrow points out of the correct side */\nexport const arrowOffsetModifier: PopperJS.ModifierFn = data => {\n if (data.arrowElement == null) {\n return data;\n }\n // our arrows have equal width and height\n const arrowSize = data.arrowElement.clientWidth;\n // this logic borrowed from original Popper arrow modifier itself\n const position = getPosition(data.placement);\n const isVertical = isVerticalPosition(position);\n const len = isVertical ? \"width\" : \"height\";\n const offsetSide = isVertical ? \"left\" : \"top\";\n\n const arrowOffsetSize = Math.round(arrowSize / 2 / Math.sqrt(2));\n // offset popover by arrow size, offset arrow in the opposite direction\n if (position === \"top\" || position === \"left\") {\n // the \"up & back\" directions require negative popper offsets\n data.offsets.popper[offsetSide] -= arrowOffsetSize + ARROW_SPACING;\n // can only use left/top on arrow so gotta get clever with 100% + X\n data.offsets.arrow[offsetSide] = data.offsets.popper[len] - arrowSize + arrowOffsetSize;\n } else {\n data.offsets.popper[offsetSide] += arrowOffsetSize + ARROW_SPACING;\n data.offsets.arrow[offsetSide] = -arrowOffsetSize;\n }\n return data;\n};\n","/*\n * Copyright 2017 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Placement } from \"popper.js\";\nimport * as React from \"react\";\nimport { PopperArrowProps } from \"react-popper\";\n\nimport * as Classes from \"../../common/classes\";\nimport { DISPLAYNAME_PREFIX } from \"../../common/props\";\nimport { getPosition } from \"./popperUtils\";\n\n// these paths come from the Core Kit Sketch file\n// https://github.com/palantir/blueprint/blob/develop/resources/sketch/Core%20Kit.sketch\nconst SVG_SHADOW_PATH =\n \"M8.11 6.302c1.015-.936 1.887-2.922 1.887-4.297v26c0-1.378\" +\n \"-.868-3.357-1.888-4.297L.925 17.09c-1.237-1.14-1.233-3.034 0-4.17L8.11 6.302z\";\nconst SVG_ARROW_PATH =\n \"M8.787 7.036c1.22-1.125 2.21-3.376 2.21-5.03V0v30-2.005\" +\n \"c0-1.654-.983-3.9-2.21-5.03l-7.183-6.616c-.81-.746-.802-1.96 0-2.7l7.183-6.614z\";\n\n/** Modifier helper function to compute arrow rotate() transform */\nfunction getArrowAngle(placement?: Placement) {\n if (placement == null) {\n return 0;\n }\n // can only be top/left/bottom/right - auto is resolved internally\n switch (getPosition(placement)) {\n case \"top\":\n return -90;\n case \"left\":\n return 180;\n case \"bottom\":\n return 90;\n default:\n return 0;\n }\n}\n\nexport interface IPopoverArrowProps {\n arrowProps: PopperArrowProps;\n placement: Placement;\n}\n\nexport const PopoverArrow: React.FunctionComponent = ({\n arrowProps: { ref, style },\n placement,\n}) => (\n
    \n \n \n \n \n
    \n);\nPopoverArrow.displayName = `${DISPLAYNAME_PREFIX}.PopoverArrow`;\n","/*\n * Copyright 2017 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Placement } from \"popper.js\";\n\nimport { Position } from \"../../common/position\";\nimport { PopoverPosition } from \"./popoverSharedProps\";\n\n/**\n * Convert a position to a placement.\n *\n * @param position the position to convert\n */\nexport function positionToPlacement(position: PopoverPosition): Placement {\n /* istanbul ignore next */\n switch (position) {\n case Position.TOP_LEFT:\n return \"top-start\";\n case Position.TOP:\n return \"top\";\n case Position.TOP_RIGHT:\n return \"top-end\";\n case Position.RIGHT_TOP:\n return \"right-start\";\n case Position.RIGHT:\n return \"right\";\n case Position.RIGHT_BOTTOM:\n return \"right-end\";\n case Position.BOTTOM_RIGHT:\n return \"bottom-end\";\n case Position.BOTTOM:\n return \"bottom\";\n case Position.BOTTOM_LEFT:\n return \"bottom-start\";\n case Position.LEFT_BOTTOM:\n return \"left-end\";\n case Position.LEFT:\n return \"left\";\n case Position.LEFT_TOP:\n return \"left-start\";\n case \"auto\":\n case \"auto-start\":\n case \"auto-end\":\n // Return the string unchanged.\n return position;\n default:\n return assertNever(position);\n }\n}\n\n/* istanbul ignore next */\nfunction assertNever(x: never): never {\n throw new Error(\"Unexpected position: \" + x);\n}\n","/*\n * Copyright 2017 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport { ModifierFn } from \"popper.js\";\nimport * as React from \"react\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { Manager, Popper, PopperChildrenProps, Reference, ReferenceChildrenProps } from \"react-popper\";\n\nimport { AbstractPureComponent2, Classes, IRef, refHandler, setRef } from \"../../common\";\nimport * as Errors from \"../../common/errors\";\nimport { DISPLAYNAME_PREFIX, HTMLDivProps } from \"../../common/props\";\nimport * as Utils from \"../../common/utils\";\nimport { Overlay } from \"../overlay/overlay\";\nimport { ResizeSensor } from \"../resize-sensor/resizeSensor\";\n// eslint-disable-next-line import/no-cycle\nimport { Tooltip } from \"../tooltip/tooltip\";\nimport { PopoverArrow } from \"./popoverArrow\";\nimport { positionToPlacement } from \"./popoverMigrationUtils\";\nimport { IPopoverSharedProps, PopperModifiers } from \"./popoverSharedProps\";\nimport { arrowOffsetModifier, getTransformOrigin } from \"./popperUtils\";\n\nexport const PopoverInteractionKind = {\n CLICK: \"click\" as \"click\",\n CLICK_TARGET_ONLY: \"click-target\" as \"click-target\",\n HOVER: \"hover\" as \"hover\",\n HOVER_TARGET_ONLY: \"hover-target\" as \"hover-target\",\n};\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type PopoverInteractionKind = typeof PopoverInteractionKind[keyof typeof PopoverInteractionKind];\n\nexport interface IPopoverProps extends IPopoverSharedProps {\n /** HTML props for the backdrop element. Can be combined with `backdropClassName`. */\n backdropProps?: React.HTMLProps;\n\n /**\n * The content displayed inside the popover. This can instead be provided as\n * the _second_ element in `children` (first is `target`).\n */\n content?: string | JSX.Element;\n\n /**\n * Whether the wrapper and target should take up the full width of their container.\n * Note that supplying `true` for this prop will force `targetTagName=\"div\"` and\n * `wrapperTagName=\"div\"`.\n */\n fill?: boolean;\n\n /**\n * The kind of interaction that triggers the display of the popover.\n *\n * @default PopoverInteractionKind.CLICK\n */\n interactionKind?: PopoverInteractionKind;\n\n /**\n * Enables an invisible overlay beneath the popover that captures clicks and\n * prevents interaction with the rest of the document until the popover is\n * closed. This prop is only available when `interactionKind` is\n * `PopoverInteractionKind.CLICK`. When popovers with backdrop are opened,\n * they become focused.\n *\n * @default false\n */\n hasBackdrop?: boolean;\n\n /**\n * Ref supplied to the `Classes.POPOVER` element.\n */\n popoverRef?: IRef;\n\n /**\n * The target to which the popover content is attached. This can instead be\n * provided as the _first_ element in `children`.\n */\n target?: string | JSX.Element;\n}\n\nexport interface IPopoverState {\n transformOrigin: string;\n isOpen: boolean;\n hasDarkParent: boolean;\n}\n\n/** @deprecated use { Popover2 } from \"@blueprintjs/popover2\" */\n@polyfill\nexport class Popover extends AbstractPureComponent2 {\n public static displayName = `${DISPLAYNAME_PREFIX}.Popover`;\n\n // eslint-disable-next-line deprecation/deprecation\n private popoverRef = Utils.createReactRef();\n\n public static defaultProps: IPopoverProps = {\n boundary: \"scrollParent\",\n captureDismiss: false,\n defaultIsOpen: false,\n disabled: false,\n fill: false,\n hasBackdrop: false,\n hoverCloseDelay: 300,\n hoverOpenDelay: 150,\n inheritDarkTheme: true,\n interactionKind: PopoverInteractionKind.CLICK,\n minimal: false,\n modifiers: {},\n openOnTargetFocus: true,\n // N.B. we don't set a default for `placement` or `position` here because that would trigger\n // a warning in validateProps if the other prop is specified by a user of this component\n targetTagName: \"span\",\n transitionDuration: 300,\n usePortal: true,\n wrapperTagName: \"span\",\n };\n\n /**\n * DOM element that contains the popover.\n * When `usePortal={true}`, this element will be portaled outside the usual DOM flow,\n * so this reference can be very useful for testing.\n */\n public popoverElement: HTMLElement | null = null;\n\n /** DOM element that contains the target. */\n public targetElement: HTMLElement | null = null;\n\n public state: IPopoverState = {\n hasDarkParent: false,\n isOpen: this.getIsOpen(this.props),\n transformOrigin: \"\",\n };\n\n private cancelOpenTimeout?: () => void;\n\n // a flag that lets us detect mouse movement between the target and popover,\n // now that mouseleave is triggered when you cross the gap between the two.\n private isMouseInTargetOrPopover = false;\n\n // a flag that indicates whether the target previously lost focus to another\n // element on the same page.\n private lostFocusOnSamePage = true;\n\n // Reference to the Poppper.scheduleUpdate() function, this changes every time the popper is mounted\n private popperScheduleUpdate?: () => void;\n\n private handlePopoverRef: IRef = refHandler(this, \"popoverElement\", this.props.popoverRef);\n\n private handleTargetRef = (ref: HTMLElement | null) => (this.targetElement = ref);\n\n public render() {\n // rename wrapper tag to begin with uppercase letter so it's recognized\n // as JSX component instead of intrinsic element. but because of its\n // type, tsc actually recognizes that it is _any_ intrinsic element, so\n // it can typecheck the HTML props!!\n const { className, disabled, fill, placement, position = \"auto\" } = this.props;\n const { isOpen } = this.state;\n let { wrapperTagName } = this.props;\n if (fill) {\n wrapperTagName = \"div\";\n }\n\n const isContentEmpty = Utils.ensureElement(this.understandChildren().content) == null;\n // need to do this check in render(), because `isOpen` is derived from\n // state, and state can't necessarily be accessed in validateProps.\n if (isContentEmpty && !disabled && isOpen !== false && !Utils.isNodeEnv(\"production\")) {\n console.warn(Errors.POPOVER_WARN_EMPTY_CONTENT);\n }\n\n const wrapperClasses = classNames(Classes.POPOVER_WRAPPER, className, {\n [Classes.FILL]: fill,\n });\n\n const wrapper = React.createElement(\n wrapperTagName!,\n { className: wrapperClasses },\n {this.renderTarget},\n \n \n {this.renderPopover}\n \n ,\n );\n\n return {wrapper};\n }\n\n public componentDidMount() {\n this.updateDarkParent();\n }\n\n public componentDidUpdate(prevProps: IPopoverProps, prevState: IPopoverState) {\n super.componentDidUpdate(prevProps, prevState);\n\n if (prevProps.popoverRef !== this.props.popoverRef) {\n setRef(prevProps.popoverRef, null);\n this.handlePopoverRef = refHandler(this, \"popoverElement\", this.props.popoverRef);\n setRef(this.props.popoverRef, this.popoverElement);\n }\n\n this.updateDarkParent();\n\n const nextIsOpen = this.getIsOpen(this.props);\n\n if (this.props.isOpen != null && nextIsOpen !== this.state.isOpen) {\n this.setOpenState(nextIsOpen);\n // tricky: setOpenState calls setState only if this.props.isOpen is\n // not controlled, so we need to invoke setState manually here.\n this.setState({ isOpen: nextIsOpen });\n } else if (this.props.disabled && this.state.isOpen && this.props.isOpen == null) {\n // special case: close an uncontrolled popover when disabled is set to true\n this.setOpenState(false);\n }\n }\n\n /**\n * Instance method to instruct the `Popover` to recompute its position.\n *\n * This method should only be used if you are updating the target in a way\n * that does not cause it to re-render, such as changing its _position_\n * without changing its _size_ (since `Popover` already repositions when it\n * detects a resize).\n */\n public reposition = () => this.popperScheduleUpdate?.();\n\n protected validateProps(props: IPopoverProps & { children?: React.ReactNode }) {\n if (props.isOpen == null && props.onInteraction != null) {\n console.warn(Errors.POPOVER_WARN_UNCONTROLLED_ONINTERACTION);\n }\n if (props.hasBackdrop && !props.usePortal) {\n console.warn(Errors.POPOVER_WARN_HAS_BACKDROP_INLINE);\n }\n if (props.hasBackdrop && props.interactionKind !== PopoverInteractionKind.CLICK) {\n console.error(Errors.POPOVER_HAS_BACKDROP_INTERACTION);\n }\n if (props.placement !== undefined && props.position !== undefined) {\n console.warn(Errors.POPOVER_WARN_PLACEMENT_AND_POSITION_MUTEX);\n }\n\n const childrenCount = React.Children.count(props.children);\n const hasContentProp = props.content !== undefined;\n const hasTargetProp = props.target !== undefined;\n\n if (childrenCount === 0 && !hasTargetProp) {\n console.error(Errors.POPOVER_REQUIRES_TARGET);\n }\n if (childrenCount > 2) {\n console.warn(Errors.POPOVER_WARN_TOO_MANY_CHILDREN);\n }\n if (childrenCount > 0 && hasTargetProp) {\n console.warn(Errors.POPOVER_WARN_DOUBLE_TARGET);\n }\n if (childrenCount === 2 && hasContentProp) {\n console.warn(Errors.POPOVER_WARN_DOUBLE_CONTENT);\n }\n }\n\n private updateDarkParent() {\n if (this.props.usePortal && this.state.isOpen) {\n const hasDarkParent = this.targetElement != null && this.targetElement.closest(`.${Classes.DARK}`) != null;\n this.setState({ hasDarkParent });\n }\n }\n\n private renderPopover = (popperProps: PopperChildrenProps) => {\n const { usePortal, interactionKind } = this.props;\n const { transformOrigin } = this.state;\n\n // Need to update our reference to this on every render as it will change.\n this.popperScheduleUpdate = popperProps.scheduleUpdate;\n\n const popoverHandlers: HTMLDivProps = {\n // always check popover clicks for dismiss class\n onClick: this.handlePopoverClick,\n };\n if (\n interactionKind === PopoverInteractionKind.HOVER ||\n (!usePortal && interactionKind === PopoverInteractionKind.HOVER_TARGET_ONLY)\n ) {\n popoverHandlers.onMouseEnter = this.handleMouseEnter;\n popoverHandlers.onMouseLeave = this.handleMouseLeave;\n }\n\n const popoverClasses = classNames(\n Classes.POPOVER,\n {\n [Classes.DARK]: this.props.inheritDarkTheme && this.state.hasDarkParent,\n [Classes.MINIMAL]: this.props.minimal,\n [Classes.POPOVER_CAPTURING_DISMISS]: this.props.captureDismiss,\n },\n this.props.popoverClassName,\n );\n\n return (\n
    \n \n \n {this.isArrowEnabled() && (\n \n )}\n
    {this.understandChildren().content}
    \n
    \n \n
    \n );\n };\n\n private renderTarget = (referenceProps: ReferenceChildrenProps) => {\n const { fill, openOnTargetFocus, targetClassName, targetProps = {} } = this.props;\n const { isOpen } = this.state;\n const isControlled = this.isControlled();\n const isHoverInteractionKind = this.isHoverInteractionKind();\n let { targetTagName } = this.props;\n if (fill) {\n targetTagName = \"div\";\n }\n\n const finalTargetProps: React.HTMLProps = isHoverInteractionKind\n ? {\n // HOVER handlers\n onBlur: this.handleTargetBlur,\n onFocus: this.handleTargetFocus,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n }\n : {\n // CLICK needs only one handler\n onClick: this.handleTargetClick,\n };\n finalTargetProps.className = classNames(\n Classes.POPOVER_TARGET,\n { [Classes.POPOVER_OPEN]: isOpen },\n targetProps.className,\n targetClassName,\n );\n finalTargetProps.ref = referenceProps.ref;\n\n const rawTarget = Utils.ensureElement(this.understandChildren().target);\n\n if (rawTarget === undefined) {\n return null;\n }\n\n const rawTabIndex = rawTarget.props.tabIndex;\n // ensure target is focusable if relevant prop enabled\n const tabIndex = rawTabIndex == null && openOnTargetFocus && isHoverInteractionKind ? 0 : rawTabIndex;\n const clonedTarget: JSX.Element = React.cloneElement(rawTarget, {\n className: classNames(rawTarget.props.className, {\n // this class is mainly useful for button targets; we should only apply it for uncontrolled popovers\n // when they are opened by a user interaction\n [Classes.ACTIVE]: isOpen && !isControlled && !isHoverInteractionKind,\n }),\n // force disable single Tooltip child when popover is open (BLUEPRINT-552)\n /* eslint-disable-next-line deprecation/deprecation */\n disabled: isOpen && Utils.isElementOfType(rawTarget, Tooltip) ? true : rawTarget.props.disabled,\n tabIndex,\n });\n const target = React.createElement(\n targetTagName!,\n {\n ...targetProps,\n ...finalTargetProps,\n },\n clonedTarget,\n );\n\n return {target};\n };\n\n // content and target can be specified as props or as children. this method\n // normalizes the two approaches, preferring child over prop.\n private understandChildren() {\n const { children, content: contentProp, target: targetProp } = this.props;\n // #validateProps asserts that 1 <= children.length <= 2 so content is optional\n const [targetChild, contentChild] = React.Children.toArray(children);\n return {\n content: contentChild == null ? contentProp : contentChild,\n target: targetChild == null ? targetProp : targetChild,\n };\n }\n\n private isControlled = () => this.props.isOpen !== undefined;\n\n private getIsOpen(props: IPopoverProps) {\n // disabled popovers should never be allowed to open.\n if (props.disabled) {\n return false;\n } else if (props.isOpen != null) {\n return props.isOpen;\n } else {\n return props.defaultIsOpen!;\n }\n }\n\n private getPopperModifiers(): PopperModifiers {\n const { boundary, modifiers } = this.props;\n const { flip = {}, preventOverflow = {} } = modifiers!;\n return {\n ...modifiers,\n arrowOffset: {\n enabled: this.isArrowEnabled(),\n fn: arrowOffsetModifier,\n order: 510,\n },\n flip: { boundariesElement: boundary, ...flip },\n preventOverflow: { boundariesElement: boundary, ...preventOverflow },\n updatePopoverState: {\n enabled: true,\n fn: this.updatePopoverState,\n order: 900,\n },\n };\n }\n\n private handleTargetFocus = (e: React.FocusEvent) => {\n if (this.props.openOnTargetFocus && this.isHoverInteractionKind()) {\n if (e.relatedTarget == null && !this.lostFocusOnSamePage) {\n // ignore this focus event -- the target was already focused but the page itself\n // lost focus (e.g. due to switching tabs).\n return;\n }\n this.handleMouseEnter((e as unknown) as React.MouseEvent);\n }\n this.props.targetProps?.onFocus?.(e);\n };\n\n private handleTargetBlur = (e: React.FocusEvent) => {\n if (this.props.openOnTargetFocus && this.isHoverInteractionKind()) {\n // if the next element to receive focus is within the popover, we'll want to leave the\n // popover open. e.relatedTarget ought to tell us the next element to receive focus, but if the user just\n // clicked on an element which is not focusable (either by default or with a tabIndex attribute),\n // it won't be set. So, we filter those out here and assume that a click handler somewhere else will\n // close the popover if necessary.\n if (e.relatedTarget != null && !this.isElementInPopover(e.relatedTarget as HTMLElement)) {\n this.handleMouseLeave((e as unknown) as React.MouseEvent);\n }\n }\n this.lostFocusOnSamePage = e.relatedTarget != null;\n this.props.targetProps?.onBlur?.(e);\n };\n\n private handleMouseEnter = (e: React.MouseEvent) => {\n this.isMouseInTargetOrPopover = true;\n\n // if we're entering the popover, and the mode is set to be HOVER_TARGET_ONLY, we want to manually\n // trigger the mouse leave event, as hovering over the popover shouldn't count.\n if (\n !this.props.usePortal &&\n this.isElementInPopover(e.target as Element) &&\n this.props.interactionKind === PopoverInteractionKind.HOVER_TARGET_ONLY &&\n !this.props.openOnTargetFocus\n ) {\n this.handleMouseLeave(e);\n } else if (!this.props.disabled) {\n // only begin opening popover when it is enabled\n this.setOpenState(true, e, this.props.hoverOpenDelay);\n }\n this.props.targetProps?.onMouseEnter?.(e);\n };\n\n private handleMouseLeave = (e: React.MouseEvent) => {\n this.isMouseInTargetOrPopover = false;\n\n // wait until the event queue is flushed, because we want to leave the\n // popover open if the mouse entered the popover immediately after\n // leaving the target (or vice versa).\n this.setTimeout(() => {\n if (this.isMouseInTargetOrPopover) {\n return;\n }\n // user-configurable closing delay is helpful when moving mouse from target to popover\n this.setOpenState(false, e, this.props.hoverCloseDelay);\n });\n this.props.targetProps?.onMouseLeave?.(e);\n };\n\n private handlePopoverClick = (e: React.MouseEvent) => {\n const eventTarget = e.target as HTMLElement;\n const eventPopover = eventTarget.closest(`.${Classes.POPOVER}`);\n const isEventFromSelf = eventPopover === this.popoverRef.current;\n const isEventPopoverCapturing = eventPopover?.classList.contains(Classes.POPOVER_CAPTURING_DISMISS);\n // an OVERRIDE inside a DISMISS does not dismiss, and a DISMISS inside an OVERRIDE will dismiss.\n const dismissElement = eventTarget.closest(`.${Classes.POPOVER_DISMISS}, .${Classes.POPOVER_DISMISS_OVERRIDE}`);\n const shouldDismiss = dismissElement != null && dismissElement.classList.contains(Classes.POPOVER_DISMISS);\n const isDisabled = eventTarget.closest(`:disabled, .${Classes.DISABLED}`) != null;\n if (shouldDismiss && !isDisabled && (!isEventPopoverCapturing || isEventFromSelf)) {\n this.setOpenState(false, e);\n }\n };\n\n private handleOverlayClose = (e?: React.SyntheticEvent) => {\n if (this.targetElement === null || e === undefined) {\n return;\n }\n\n const eventTarget = e.target as HTMLElement;\n // if click was in target, target event listener will handle things, so don't close\n if (!Utils.elementIsOrContains(this.targetElement, eventTarget) || e.nativeEvent instanceof KeyboardEvent) {\n this.setOpenState(false, e);\n }\n };\n\n private handleTargetClick = (e: React.MouseEvent) => {\n // ensure click did not originate from within inline popover before closing\n if (!this.props.disabled && !this.isElementInPopover(e.target as HTMLElement)) {\n if (this.props.isOpen == null) {\n this.setState(prevState => ({ isOpen: !prevState.isOpen }));\n } else {\n this.setOpenState(!this.props.isOpen, e);\n }\n }\n this.props.targetProps?.onClick?.(e);\n };\n\n // a wrapper around setState({isOpen}) that will call props.onInteraction instead when in controlled mode.\n // starts a timeout to delay changing the state if a non-zero duration is provided.\n private setOpenState(isOpen: boolean, e?: React.SyntheticEvent, timeout?: number) {\n // cancel any existing timeout because we have new state\n this.cancelOpenTimeout?.();\n if (timeout !== undefined && timeout > 0) {\n this.cancelOpenTimeout = this.setTimeout(() => this.setOpenState(isOpen, e), timeout);\n } else {\n if (this.props.isOpen == null) {\n this.setState({ isOpen });\n } else {\n this.props.onInteraction?.(isOpen, e);\n }\n if (!isOpen) {\n // non-null assertion because the only time `e` is undefined is when in controlled mode\n // or the rare special case in uncontrolled mode when the `disabled` flag is toggled true\n this.props.onClose?.(e!);\n }\n }\n }\n\n private isArrowEnabled() {\n const { minimal, modifiers } = this.props;\n // omitting `arrow` from `modifiers` uses Popper default, which does show an arrow.\n return !minimal && (modifiers?.arrow == null || modifiers.arrow.enabled);\n }\n\n private isElementInPopover(element: Element) {\n return this.popoverElement?.contains(element);\n }\n\n private isHoverInteractionKind() {\n return (\n this.props.interactionKind === PopoverInteractionKind.HOVER ||\n this.props.interactionKind === PopoverInteractionKind.HOVER_TARGET_ONLY\n );\n }\n\n /** Popper modifier that updates React state (for style properties) based on latest data. */\n private updatePopoverState: ModifierFn = data => {\n // always set string; let shouldComponentUpdate determine if update is necessary\n this.setState({ transformOrigin: getTransformOrigin(data) });\n return data;\n };\n}\n","/*\n * Copyright 2017 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport * as React from \"react\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Classes } from \"../../common\";\nimport { DISPLAYNAME_PREFIX, Props } from \"../../common/props\";\n\n// eslint-disable-next-line deprecation/deprecation\nexport type TextProps = ITextProps;\n/** @deprecated use TextProps */\nexport interface ITextProps extends Props {\n /**\n * Indicates that this component should be truncated with an ellipsis if it overflows its container.\n * The `title` attribute will also be added when content overflows to show the full text of the children on hover.\n *\n * @default false\n */\n ellipsize?: boolean;\n\n /**\n * HTML tag name to use for rendered element.\n *\n * @default \"div\"\n */\n tagName?: keyof JSX.IntrinsicElements;\n\n /**\n * HTML title of the element\n */\n title?: string;\n}\n\nexport interface ITextState {\n textContent: string;\n isContentOverflowing: boolean;\n}\n\n@polyfill\nexport class Text extends AbstractPureComponent2 {\n public static displayName = `${DISPLAYNAME_PREFIX}.Text`;\n\n public static defaultProps: Partial = {\n ellipsize: false,\n tagName: \"div\",\n };\n\n public state: ITextState = {\n isContentOverflowing: false,\n textContent: \"\",\n };\n\n private textRef: HTMLElement | null = null;\n\n public componentDidMount() {\n this.update();\n }\n\n public componentDidUpdate() {\n this.update();\n }\n\n public render() {\n const classes = classNames(\n {\n [Classes.TEXT_OVERFLOW_ELLIPSIS]: this.props.ellipsize,\n },\n this.props.className,\n );\n const { children, tagName, title } = this.props;\n\n return React.createElement(\n tagName!,\n {\n className: classes,\n ref: (ref: HTMLElement | null) => (this.textRef = ref),\n title: title ?? (this.state.isContentOverflowing ? this.state.textContent : undefined),\n },\n children,\n );\n }\n\n private update() {\n if (this.textRef?.textContent == null) {\n return;\n }\n const newState = {\n isContentOverflowing: this.props.ellipsize! && this.textRef.scrollWidth > this.textRef.clientWidth,\n textContent: this.textRef.textContent,\n };\n this.setState(newState);\n }\n}\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport { Modifiers } from \"popper.js\";\nimport * as React from \"react\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Classes, Position } from \"../../common\";\nimport { DISPLAYNAME_PREFIX, ActionProps, LinkProps } from \"../../common/props\";\nimport { Icon } from \"../icon/icon\";\nimport { IPopoverProps, Popover, PopoverInteractionKind } from \"../popover/popover\";\nimport { Text } from \"../text/text\";\n// this cyclic import can be removed in v4.0 (https://github.com/palantir/blueprint/issues/3829)\n// eslint-disable-next-line import/no-cycle\nimport { Menu } from \"./menu\";\n\n// eslint-disable-next-line deprecation/deprecation\nexport type MenuItemProps = IMenuItemProps;\n/** @deprecated use MenuItemProps */\nexport interface IMenuItemProps extends ActionProps, LinkProps {\n // override from IActionProps to make it required\n /** Item text, required for usability. */\n text: React.ReactNode;\n\n /** Whether this menu item should appear with an active state. */\n active?: boolean;\n\n /**\n * Children of this component will be rendered in a __submenu__ that appears when hovering or\n * clicking on this menu item.\n *\n * Use `text` prop for the content of the menu item itself.\n */\n children?: React.ReactNode;\n\n /**\n * Whether this menu item is non-interactive. Enabling this prop will ignore `href`, `tabIndex`,\n * and mouse event handlers (in particular click, down, enter, leave).\n */\n disabled?: boolean;\n\n /**\n * Right-aligned label text content, useful for displaying hotkeys.\n *\n * This prop actually supports JSX elements, but TypeScript will throw an error because\n * `HTMLAttributes` only allows strings. Use `labelElement` to supply a JSX element in TypeScript.\n */\n label?: string;\n\n /**\n * A space-delimited list of class names to pass along to the right-aligned label wrapper element.\n */\n labelClassName?: string;\n\n /**\n * Right-aligned label content, useful for displaying hotkeys.\n */\n labelElement?: React.ReactNode;\n\n /**\n * Whether the text should be allowed to wrap to multiple lines.\n * If `false`, text will be truncated with an ellipsis when it reaches `max-width`.\n *\n * @default false\n */\n multiline?: boolean;\n\n /**\n * Props to spread to `Popover`. Note that `content` and `minimal` cannot be\n * changed and `usePortal` defaults to `false` so all submenus will live in\n * the same container.\n */\n popoverProps?: Partial;\n\n /**\n * Whether an enabled item without a submenu should automatically close its parent popover when clicked.\n *\n * @default true\n */\n shouldDismissPopover?: boolean;\n\n /**\n * Name of the HTML tag that wraps the MenuItem.\n *\n * @default \"a\"\n */\n tagName?: keyof JSX.IntrinsicElements;\n\n /**\n * A space-delimited list of class names to pass along to the text wrapper element.\n */\n textClassName?: string;\n\n /**\n * HTML title to be passed to the component\n */\n htmlTitle?: string;\n}\n\n@polyfill\nexport class MenuItem extends AbstractPureComponent2> {\n public static defaultProps: MenuItemProps = {\n disabled: false,\n multiline: false,\n popoverProps: {},\n shouldDismissPopover: true,\n text: \"\",\n };\n\n public static displayName = `${DISPLAYNAME_PREFIX}.MenuItem`;\n\n public render() {\n const {\n active,\n className,\n children,\n disabled,\n icon,\n intent,\n labelClassName,\n labelElement,\n multiline,\n popoverProps,\n shouldDismissPopover,\n text,\n textClassName,\n tagName = \"a\",\n htmlTitle,\n ...htmlProps\n } = this.props;\n const hasSubmenu = children != null;\n\n const intentClass = Classes.intentClass(intent);\n const anchorClasses = classNames(\n Classes.MENU_ITEM,\n intentClass,\n {\n [Classes.ACTIVE]: active,\n [Classes.INTENT_PRIMARY]: active && intentClass == null,\n [Classes.DISABLED]: disabled,\n // prevent popover from closing when clicking on submenu trigger or disabled item\n [Classes.POPOVER_DISMISS]: shouldDismissPopover && !disabled && !hasSubmenu,\n },\n className,\n );\n\n const target = React.createElement(\n tagName,\n {\n ...htmlProps,\n ...(disabled ? DISABLED_PROPS : {}),\n className: anchorClasses,\n },\n ,\n \n {text}\n ,\n this.maybeRenderLabel(labelElement),\n hasSubmenu ? : undefined,\n );\n\n const liClasses = classNames({ [Classes.MENU_SUBMENU]: hasSubmenu });\n return
  • {this.maybeRenderPopover(target, children)}
  • ;\n }\n\n private maybeRenderLabel(labelElement?: React.ReactNode) {\n const { label, labelClassName } = this.props;\n if (label == null && labelElement == null) {\n return null;\n }\n return (\n \n {label}\n {labelElement}\n \n );\n }\n\n private maybeRenderPopover(target: JSX.Element, children?: React.ReactNode) {\n if (children == null) {\n return target;\n }\n const { disabled, popoverProps } = this.props;\n return (\n /* eslint-disable-next-line deprecation/deprecation */\n {children}}\n minimal={true}\n popoverClassName={classNames(Classes.MENU_SUBMENU, popoverProps?.popoverClassName)}\n target={target}\n />\n );\n }\n}\n\nconst SUBMENU_POPOVER_MODIFIERS: Modifiers = {\n // 20px padding - scrollbar width + a bit\n flip: { boundariesElement: \"viewport\", padding: 20 },\n // shift popover up 5px so MenuItems align\n offset: { offset: -5 },\n preventOverflow: { boundariesElement: \"viewport\", padding: 20 },\n};\n\n// props to ignore when disabled\nconst DISABLED_PROPS: React.AnchorHTMLAttributes = {\n href: undefined,\n onClick: undefined,\n onMouseDown: undefined,\n onMouseEnter: undefined,\n onMouseLeave: undefined,\n tabIndex: -1,\n};\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport * as React from \"react\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Classes, IRef } from \"../../common\";\nimport { DISPLAYNAME_PREFIX, Props } from \"../../common/props\";\nimport { MenuDivider } from \"./menuDivider\";\n// this cyclic import can be removed in v4.0 (https://github.com/palantir/blueprint/issues/3829)\n// eslint-disable-next-line import/no-cycle\nimport { MenuItem } from \"./menuItem\";\n\n// eslint-disable-next-line deprecation/deprecation\nexport type MenuProps = IMenuProps;\n/** @deprecated use MenuProps */\nexport interface IMenuProps extends Props, React.HTMLAttributes {\n /** Whether the menu items in this menu should use a large appearance. */\n large?: boolean;\n\n /** Ref handler that receives the HTML `
      ` element backing this component. */\n ulRef?: IRef;\n}\n\n@polyfill\nexport class Menu extends AbstractPureComponent2 {\n public static displayName = `${DISPLAYNAME_PREFIX}.Menu`;\n\n /** @deprecated use MenuDivider */\n public static Divider = MenuDivider;\n\n /** @deprecated use MenuItem*/\n public static Item = MenuItem;\n\n public render() {\n const { className, children, large, ulRef, ...htmlProps } = this.props;\n const classes = classNames(Classes.MENU, { [Classes.LARGE]: large }, className);\n return (\n
        \n {children}\n
      \n );\n }\n}\n","/*\n * Copyright 2017 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport * as React from \"react\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Alignment, Classes } from \"../../common\";\nimport { DISPLAYNAME_PREFIX, HTMLDivProps, Props } from \"../../common/props\";\n\n// eslint-disable-next-line deprecation/deprecation\nexport type ButtonGroupProps = IButtonGroupProps;\n/** @deprecated use ButtonGroupProps */\nexport interface IButtonGroupProps extends Props, HTMLDivProps {\n /**\n * Text alignment within button. By default, icons and text will be centered\n * within the button. Passing `\"left\"` or `\"right\"` will align the button\n * text to that side and push `icon` and `rightIcon` to either edge. Passing\n * `\"center\"` will center the text and icons together.\n */\n alignText?: Alignment;\n\n /**\n * Whether the button group should take up the full width of its container.\n *\n * @default false\n */\n fill?: boolean;\n\n /**\n * Whether the child buttons should appear with minimal styling.\n *\n * @default false\n */\n minimal?: boolean;\n\n /**\n * Whether the child buttons should appear with large styling.\n *\n * @default false\n */\n large?: boolean;\n\n /**\n * Whether the button group should appear with vertical styling.\n *\n * @default false\n */\n vertical?: boolean;\n}\n\n// this component is simple enough that tests would be purely tautological.\n/* istanbul ignore next */\n@polyfill\nexport class ButtonGroup extends AbstractPureComponent2 {\n public static displayName = `${DISPLAYNAME_PREFIX}.ButtonGroup`;\n\n public render() {\n const { alignText, className, fill, minimal, large, vertical, ...htmlProps } = this.props;\n const buttonGroupClasses = classNames(\n Classes.BUTTON_GROUP,\n {\n [Classes.FILL]: fill,\n [Classes.LARGE]: large,\n [Classes.MINIMAL]: minimal,\n [Classes.VERTICAL]: vertical,\n },\n Classes.alignmentClass(alignText),\n className,\n );\n return (\n
      \n {this.props.children}\n
      \n );\n }\n}\n","/*\n * Copyright 2016 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport * as React from \"react\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Classes } from \"../../common\";\nimport { DISPLAYNAME_PREFIX, ActionProps, IntentProps, LinkProps, Props, MaybeElement } from \"../../common/props\";\nimport { ButtonGroup } from \"../button/buttonGroup\";\nimport { AnchorButton, Button } from \"../button/buttons\";\nimport { Icon, IconName } from \"../icon/icon\";\n\nexport type ToastProps = IToastProps;\nexport interface IToastProps extends Props, IntentProps {\n /**\n * Action rendered as a minimal `AnchorButton`. The toast is dismissed automatically when the\n * user clicks the action button. Note that the `intent` prop is ignored (the action button\n * cannot have its own intent color that might conflict with the toast's intent). Omit this\n * prop to omit the action button.\n */\n action?: ActionProps & LinkProps;\n\n /** Name of a Blueprint UI icon (or an icon element) to render before the message. */\n icon?: IconName | MaybeElement;\n\n /** Message to display in the body of the toast. */\n message: React.ReactNode;\n\n /**\n * Callback invoked when the toast is dismissed, either by the user or by the timeout.\n * The value of the argument indicates whether the toast was closed because the timeout expired.\n */\n onDismiss?: (didTimeoutExpire: boolean) => void;\n\n /**\n * Milliseconds to wait before automatically dismissing toast.\n * Providing a value less than or equal to 0 will disable the timeout (this is discouraged).\n *\n * @default 5000\n */\n timeout?: number;\n}\n\n@polyfill\nexport class Toast extends AbstractPureComponent2 {\n public static defaultProps: IToastProps = {\n className: \"\",\n message: \"\",\n timeout: 5000,\n };\n\n public static displayName = `${DISPLAYNAME_PREFIX}.Toast`;\n\n public render(): JSX.Element {\n const { className, icon, intent, message } = this.props;\n return (\n \n \n {message}\n \n {this.maybeRenderActionButton()}\n
    \n );\n }\n\n public componentDidMount() {\n this.startTimeout();\n }\n\n public componentDidUpdate(prevProps: IToastProps) {\n if (prevProps.timeout !== this.props.timeout) {\n if (this.props.timeout! > 0) {\n this.startTimeout();\n } else {\n this.clearTimeouts();\n }\n }\n }\n\n public componentWillUnmount() {\n this.clearTimeouts();\n }\n\n private maybeRenderActionButton() {\n const { action } = this.props;\n if (action == null) {\n return undefined;\n } else {\n return ;\n }\n }\n\n private handleActionClick = (e: React.MouseEvent) => {\n this.props.action?.onClick?.(e);\n this.triggerDismiss(false);\n };\n\n private handleCloseClick = () => this.triggerDismiss(false);\n\n private triggerDismiss(didTimeoutExpire: boolean) {\n this.clearTimeouts();\n this.props.onDismiss?.(didTimeoutExpire);\n }\n\n private startTimeout = () => {\n this.clearTimeouts();\n if (this.props.timeout! > 0) {\n this.setTimeout(() => this.triggerDismiss(true), this.props.timeout);\n }\n };\n}\n","/*\n * Copyright 2016 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Classes, Position } from \"../../common\";\nimport { TOASTER_CREATE_NULL, TOASTER_MAX_TOASTS_INVALID, TOASTER_WARN_INLINE } from \"../../common/errors\";\nimport { ESCAPE } from \"../../common/keys\";\nimport { DISPLAYNAME_PREFIX, Props } from \"../../common/props\";\nimport { isNodeEnv } from \"../../common/utils\";\nimport { Overlay } from \"../overlay/overlay\";\nimport { IToastProps, Toast } from \"./toast\";\n\nexport type IToastOptions = IToastProps & { key: string };\nexport type ToasterPosition =\n | typeof Position.TOP\n | typeof Position.TOP_LEFT\n | typeof Position.TOP_RIGHT\n | typeof Position.BOTTOM\n | typeof Position.BOTTOM_LEFT\n | typeof Position.BOTTOM_RIGHT;\n\n/** Instance methods available on a `` component instance. */\nexport interface IToaster {\n /**\n * Shows a new toast to the user, or updates an existing toast corresponding to the provided key (optional).\n *\n * Returns the unique key of the toast.\n */\n show(props: IToastProps, key?: string): string;\n\n /** Dismiss the given toast instantly. */\n dismiss(key: string): void;\n\n /** Dismiss all toasts instantly. */\n clear(): void;\n\n /** Returns the props for all current toasts. */\n getToasts(): IToastOptions[];\n}\n\n/**\n * Props supported by the `` component.\n * These props can be passed as an argument to the static `Toaster.create(props?, container?)` method.\n */\nexport interface IToasterProps extends Props {\n /**\n * Whether a toast should acquire application focus when it first opens.\n * This is disabled by default so that toasts do not interrupt the user's flow.\n * Note that `enforceFocus` is always disabled for `Toaster`s.\n *\n * @default false\n */\n autoFocus?: boolean;\n\n /**\n * Whether pressing the `esc` key should clear all active toasts.\n *\n * @default true\n */\n canEscapeKeyClear?: boolean;\n\n /**\n * Whether the toaster should be rendered into a new element attached to `document.body`.\n * If `false`, then positioning will be relative to the parent element.\n *\n * This prop is ignored by `Toaster.create()` as that method always appends a new element\n * to the container.\n *\n * @default true\n */\n usePortal?: boolean;\n\n /**\n * Position of `Toaster` within its container.\n *\n * @default Position.TOP\n */\n position?: ToasterPosition;\n\n /**\n * The maximum number of active toasts that can be displayed at once.\n *\n * When the limit is about to be exceeded, the oldest active toast is removed.\n *\n * @default undefined\n */\n maxToasts?: number;\n}\n\nexport interface IToasterState {\n toasts: IToastOptions[];\n}\n\n@polyfill\nexport class Toaster extends AbstractPureComponent2 implements IToaster {\n public static displayName = `${DISPLAYNAME_PREFIX}.Toaster`;\n\n public static defaultProps: IToasterProps = {\n autoFocus: false,\n canEscapeKeyClear: true,\n position: Position.TOP,\n usePortal: true,\n };\n\n /**\n * Create a new `Toaster` instance that can be shared around your application.\n * The `Toaster` will be rendered into a new element appended to the given container.\n */\n public static create(props?: IToasterProps, container = document.body): IToaster {\n if (props != null && props.usePortal != null && !isNodeEnv(\"production\")) {\n console.warn(TOASTER_WARN_INLINE);\n }\n const containerElement = document.createElement(\"div\");\n container.appendChild(containerElement);\n const toaster = ReactDOM.render(\n ,\n containerElement,\n ) as Toaster;\n if (toaster == null) {\n throw new Error(TOASTER_CREATE_NULL);\n }\n return toaster;\n }\n\n public state: IToasterState = {\n toasts: [],\n };\n\n // auto-incrementing identifier for un-keyed toasts\n private toastId = 0;\n\n public show(props: IToastProps, key?: string) {\n if (this.props.maxToasts) {\n // check if active number of toasts are at the maxToasts limit\n this.dismissIfAtLimit();\n }\n const options = this.createToastOptions(props, key);\n if (key === undefined || this.isNewToastKey(key)) {\n this.setState(prevState => ({\n toasts: [options, ...prevState.toasts],\n }));\n } else {\n this.setState(prevState => ({\n toasts: prevState.toasts.map(t => (t.key === key ? options : t)),\n }));\n }\n return options.key;\n }\n\n public dismiss(key: string, timeoutExpired = false) {\n this.setState(({ toasts }) => ({\n toasts: toasts.filter(t => {\n const matchesKey = t.key === key;\n if (matchesKey) {\n t.onDismiss?.(timeoutExpired);\n }\n return !matchesKey;\n }),\n }));\n }\n\n public clear() {\n this.state.toasts.forEach(t => t.onDismiss?.(false));\n this.setState({ toasts: [] });\n }\n\n public getToasts() {\n return this.state.toasts;\n }\n\n public render() {\n const classes = classNames(Classes.TOAST_CONTAINER, this.getPositionClasses(), this.props.className);\n return (\n 0 || this.props.children != null}\n onClose={this.handleClose}\n // $pt-transition-duration * 3 + $pt-transition-duration / 2\n transitionDuration={350}\n transitionName={Classes.TOAST}\n usePortal={this.props.usePortal}\n >\n {this.state.toasts.map(this.renderToast, this)}\n {this.props.children}\n \n );\n }\n\n protected validateProps({ maxToasts }: IToasterProps) {\n // maximum number of toasts should not be a number less than 1\n if (maxToasts !== undefined && maxToasts < 1) {\n throw new Error(TOASTER_MAX_TOASTS_INVALID);\n }\n }\n\n private isNewToastKey(key: string) {\n return this.state.toasts.every(toast => toast.key !== key);\n }\n\n private dismissIfAtLimit() {\n if (this.state.toasts.length === this.props.maxToasts) {\n // dismiss the oldest toast to stay within the maxToasts limit\n this.dismiss(this.state.toasts[this.state.toasts.length - 1].key!);\n }\n }\n\n private renderToast = (toast: IToastOptions) => {\n return ;\n };\n\n private createToastOptions(props: IToastProps, key = `toast-${this.toastId++}`) {\n // clone the object before adding the key prop to avoid leaking the mutation\n return { ...props, key };\n }\n\n private getPositionClasses() {\n const positions = this.props.position!.split(\"-\");\n // NOTE that there is no -center class because that's the default style\n return [\n ...positions.map(p => `${Classes.TOAST_CONTAINER}-${p.toLowerCase()}`),\n `${Classes.TOAST_CONTAINER}-${this.props.usePortal ? \"in-portal\" : \"inline\"}`,\n ];\n }\n\n private getDismissHandler = (toast: IToastOptions) => (timeoutExpired: boolean) => {\n this.dismiss(toast.key, timeoutExpired);\n };\n\n private handleClose = (e: React.SyntheticEvent) => {\n // NOTE that `e` isn't always a KeyboardEvent but that's the only type we care about\n // HACKHACK: https://github.com/palantir/blueprint/issues/4165\n /* eslint-disable-next-line deprecation/deprecation */\n if ((e as React.KeyboardEvent).which === ESCAPE) {\n this.clear();\n }\n };\n}\n\nexport const OverlayToaster = Toaster;\nexport type OverlayToasterProps = IToasterProps;\n","/// \nimport * as SuperAgent from 'superagent';\nimport * as Blueprint from '@blueprintjs/core';\n\nlet toaster: Blueprint.IToaster;\n\nexport function success(message: string, timeout?: number): string {\n\tif (timeout === undefined) {\n\t\ttimeout = 5000;\n\t}\n\n\treturn toaster.show({\n\t\tintent: Blueprint.Intent.SUCCESS,\n\t\tmessage: message,\n\t\ttimeout: timeout,\n\t});\n}\n\nexport function info(message: string, timeout?: number): string {\n\tif (timeout === undefined) {\n\t\ttimeout = 5000;\n\t}\n\n\treturn toaster.show({\n\t\tintent: Blueprint.Intent.PRIMARY,\n\t\tmessage: message,\n\t\ttimeout: timeout,\n\t});\n}\n\nexport function warning(message: string, timeout?: number): string {\n\tif (timeout === undefined) {\n\t\ttimeout = 5000;\n\t}\n\n\treturn toaster.show({\n\t\tintent: Blueprint.Intent.WARNING,\n\t\tmessage: message,\n\t\ttimeout: timeout,\n\t});\n}\n\nexport function error(message: string, timeout?: number): string {\n\tif (timeout === undefined) {\n\t\ttimeout = 5000;\n\t}\n\n\treturn toaster.show({\n\t\tintent: Blueprint.Intent.DANGER,\n\t\tmessage: message,\n\t\ttimeout: timeout,\n\t});\n}\n\nexport function errorRes(res: SuperAgent.Response, message: string,\n\t\t\t\t\t\t\t\t\t\t\t\t timeout?: number): string {\n\tif (timeout === undefined) {\n\t\ttimeout = 5000;\n\t}\n\n\ttry {\n\t\tmessage = res.body.error_msg || message;\n\t} catch(err) {\n\t}\n\n\treturn toaster.show({\n\t\tintent: Blueprint.Intent.DANGER,\n\t\tmessage: message,\n\t\ttimeout: timeout,\n\t});\n}\n\nexport function dismiss(key: string) {\n\ttoaster.dismiss(key);\n}\n\nexport function init() {\n\tif (toaster) {\n\t\treturn;\n\t}\n\n\tif (Blueprint.Toaster) {\n\t\ttoaster = Blueprint.Toaster.create({\n\t\t\tposition: Blueprint.Position.BOTTOM,\n\t\t}, document.getElementById('toaster'));\n\t} else {\n\t\tconsole.error('Failed to load toaster')\n\t}\n}\n","/// \nimport * as SuperAgent from 'superagent';\nimport * as Theme from './Theme';\n\nexport let token = '';\n\nexport function load(): Promise {\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/csrf')\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\ttoken = res.body.token;\n\n\t\t\t\tif (res.body.theme === 'light') {\n\t\t\t\t\tTheme.light();\n\t\t\t\t} else {\n\t\t\t\t\tTheme.dark();\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n","/// \nimport * as SuperAgent from 'superagent';\nimport * as Alert from './Alert';\nimport * as Csrf from './Csrf';\n\nexport interface Callback {\n\t(): void;\n}\n\nlet callbacks: Set = new Set();\nexport let theme = 'dark';\n\nexport function save(): Promise {\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/theme')\n\t\t\t.send({\n\t\t\t\ttheme: theme,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to save theme');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function light(): void {\n\ttheme = 'light';\n\tdocument.body.className = '';\n\tcallbacks.forEach((callback: Callback): void => {\n\t\tcallback();\n\t});\n}\n\nexport function dark(): void {\n\ttheme = 'dark';\n\tdocument.body.className = 'bp3-dark';\n\tcallbacks.forEach((callback: Callback): void => {\n\t\tcallback();\n\t});\n}\n\nexport function toggle(): void {\n\tif (theme === 'light') {\n\t\tdark();\n\t} else {\n\t\tlight();\n\t}\n}\n\nexport function editorTheme(): string {\n\tif (theme === \"light\") {\n\t\treturn \"eclipse\";\n\t} else {\n\t\treturn \"dracula\";\n\t}\n}\n\nexport function chartColor1(): string {\n\tif (theme === \"light\") {\n\t\treturn 'rgba(0, 0, 0, 0.9)';\n\t} else {\n\t\treturn 'rgba(255, 255, 255, 1)';\n\t}\n}\n\nexport function chartColor2(): string {\n\tif (theme === \"light\") {\n\t\treturn 'rgba(0, 0, 0, 0.2)';\n\t} else {\n\t\treturn 'rgba(255, 255, 255, 0.2)';\n\t}\n}\n\nexport function chartColor3(): string {\n\tif (theme === \"light\") {\n\t\treturn '#6f6f6f';\n\t} else {\n\t\treturn '#e5e5e5';\n\t}\n}\n\nexport function addChangeListener(callback: Callback): void {\n\tcallbacks.add(callback);\n}\n\nexport function removeChangeListener(callback: () => void): void {\n\tcallbacks.delete(callback);\n}\n","/// \nimport * as Flux from 'flux';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass Dispatcher extends Flux.Dispatcher {}\nexport default new Dispatcher();\n","/// \nimport * as Events from 'events';\n\nexport default class EventEmitter extends Events.EventEmitter {\n\temitDefer(event: string | symbol, ...args: any[]): void {\n\t\tsetTimeout((): void => {\n\t\t\tthis.emit(event, ...args);\n\t\t});\n\t}\n}\n","/// \nexport const SYNC = 'subscription.sync';\nexport const CHANGE = 'subscription.change';\n\nexport interface Subscription {\n\tactive?: boolean;\n\tstatus?: string;\n\tplan?: string;\n\tquantity?: number;\n\tamount?: number;\n\tperiod_end?: string;\n\ttrial_end?: string;\n\tcancel_at_period_end?: boolean;\n\tbalance?: number;\n\turl_key?: string;\n}\n\nexport type SubscriptionRo = Readonly;\n\nexport interface SubscriptionDispatch {\n\ttype: string;\n\tdata?: Subscription;\n}\n","/// \nexport const CHANGE = 'change';\n\nexport interface Dispatch {\n\ttype: string;\n\tdata?: any;\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as SubscriptionTypes from '../types/SubscriptionTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass SubscriptionStore extends EventEmitter {\n\t_subscription: SubscriptionTypes.SubscriptionRo;\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget subscription(): SubscriptionTypes.SubscriptionRo {\n\t\treturn this._subscription;\n\t}\n\n\tget subscriptionM(): SubscriptionTypes.Subscription {\n\t\tif (this._subscription) {\n\t\t\treturn {\n\t\t\t\t...this._subscription,\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_sync(subscription: SubscriptionTypes.Subscription): void {\n\t\tthis._subscription = Object.freeze(subscription);\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: SubscriptionTypes.SubscriptionDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase SubscriptionTypes.SYNC:\n\t\t\t\tthis._sync(action.data);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new SubscriptionStore();\n","/// \nexport const ADD = 'loading.add';\nexport const DONE = 'loading.done';\n\nexport interface LoadingDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as LoadingTypes from '../types/LoadingTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass LoadingStore extends EventEmitter {\n\t_loaders: Set = new Set();\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget loading(): boolean {\n\t\treturn !!this._loaders.size;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_add(id: string): void {\n\t\tthis._loaders.add(id);\n\t\tthis.emitChange();\n\t}\n\n\t_done(id: string): void {\n\t\tthis._loaders.delete(id);\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: LoadingTypes.LoadingDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase LoadingTypes.ADD:\n\t\t\t\tthis._add(action.data.id);\n\t\t\t\tbreak;\n\n\t\t\tcase LoadingTypes.DONE:\n\t\t\t\tthis._done(action.data.id);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new LoadingStore();\n","/// \nimport * as React from 'react';\nimport LoadingStore from '../stores/LoadingStore';\n\ninterface Props {\n\tstyle?: React.CSSProperties;\n\tsize?: string;\n\tintent?: string;\n}\n\ninterface State {\n\tloading: boolean;\n}\n\nconst css = {\n\tprogress: {\n\t\twidth: '100%',\n\t\theight: '4px',\n\t\tborderRadius: 0,\n\t} as React.CSSProperties,\n\tprogressBar: {\n\t\twidth: '50%',\n\t\tborderRadius: 0,\n\t} as React.CSSProperties,\n};\n\nexport default class LoadingBar extends React.Component {\n\tconstructor(props: Props, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tloading: LoadingStore.loading,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tLoadingStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tLoadingStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\tloading: LoadingStore.loading,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet progress: JSX.Element;\n\n\t\tif (!this.state.loading) {\n\t\t\tprogress =
    ;\n\t\t} else {\n\t\t\tlet className = 'bp3-progress-bar bp3-no-stripes bp3-no-animation ';\n\t\t\tif (this.props.intent) {\n\t\t\t\tclassName += ' bp3-intent-' + this.props.intent;\n\t\t\t}\n\n\t\t\tprogress =
    \n\t\t\t\t\n\t\t\t
    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t{progress}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as Flux from 'flux';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass EventDispatcher extends Flux.Dispatcher {}\nexport default new EventDispatcher();\n","/// \nexport function uuid(): string {\n\treturn (+new Date() + Math.floor(Math.random() * 999999)).toString(36);\n}\n\nexport function random(min: number, max: number): number {\n\treturn Math.round(Math.random() * (max - min) + min);\n}\n\nexport function zeroPad(num: number, width: number): string {\n\tif (num < Math.pow(10, width)) {\n\t\treturn ('0'.repeat(width - 1) + num).slice(-width);\n\t}\n\treturn num.toString();\n}\n\nexport function capitalize(str: string): string {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport function formatAmount(amount: number): string {\n\tif (!amount) {\n\t\treturn '-';\n\t}\n\treturn '$' + (amount / 100).toFixed(2);\n}\n\nexport function formatBytes(bytes: number, decimals: number): string {\n\tif (!bytes) {\n\t\treturn '0B';\n\t}\telse if (bytes < 1024) {\n\t\treturn bytes + 'B';\n\t} else if (bytes < 1048576) {\n\t\treturn Math.round(bytes / 1024).toFixed(decimals) + 'KB';\n\t} else if (bytes < 1073741824) {\n\t\treturn (bytes / 1048576).toFixed(decimals) + 'MB';\n\t} else if (bytes < 1099511627776) {\n\t\treturn (bytes / 1073741824).toFixed(decimals) + 'GB';\n\t} else {\n\t\treturn (bytes / 1099511627776).toFixed(decimals) + 'TB';\n\t}\n}\n\nexport function formatMs(ms: number): string {\n\tif (ms < 1000) {\n\t\treturn ms + 'ms';\n\t} else {\n\t\treturn (ms / 1000) + 's';\n\t}\n}\n\nexport function formatUptime(time: number): string {\n\tlet days = Math.floor(time / 86400);\n\ttime -= days * 86400;\n\tlet hours = Math.floor(time / 3600);\n\ttime -= hours * 3600;\n\tlet minutes = Math.floor(time / 60);\n\ttime -= minutes * 60;\n\treturn days + 'd ' + hours + 'h ' + minutes + 'm ' + time + 's';\n}\n\nexport function formatDate(dateStr: string): string {\n\tif (!dateStr || dateStr === '0001-01-01T00:00:00Z') {\n\t\treturn '';\n\t}\n\n\tlet date = new Date(dateStr);\n\tlet str = '';\n\n\tlet hours = date.getHours();\n\tlet period = 'AM';\n\n\tif (hours > 12) {\n\t\tperiod = 'PM';\n\t\thours -= 12;\n\t} else if (hours === 0) {\n\t\thours = 12;\n\t}\n\n\tlet day;\n\tswitch (date.getDay()) {\n\t\tcase 0:\n\t\t\tday = 'Sun';\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tday = 'Mon';\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tday = 'Tue';\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tday = 'Wed';\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tday = 'Thu';\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tday = 'Fri';\n\t\t\tbreak;\n\t\tcase 6:\n\t\t\tday = 'Sat';\n\t\t\tbreak;\n\t}\n\n\tlet month;\n\tswitch (date.getMonth()) {\n\t\tcase 0:\n\t\t\tmonth = 'Jan';\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tmonth = 'Feb';\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tmonth = 'Mar';\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tmonth = 'Apr';\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tmonth = 'May';\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tmonth = 'Jun';\n\t\t\tbreak;\n\t\tcase 6:\n\t\t\tmonth = 'Jul';\n\t\t\tbreak;\n\t\tcase 7:\n\t\t\tmonth = 'Aug';\n\t\t\tbreak;\n\t\tcase 8:\n\t\t\tmonth = 'Sep';\n\t\t\tbreak;\n\t\tcase 9:\n\t\t\tmonth = 'Oct';\n\t\t\tbreak;\n\t\tcase 10:\n\t\t\tmonth = 'Nov';\n\t\t\tbreak;\n\t\tcase 11:\n\t\t\tmonth = 'Dec';\n\t\t\tbreak;\n\t}\n\n\tstr += day + ' ';\n\tstr += date.getDate() + ' ';\n\tstr += month + ' ';\n\tstr += date.getFullYear() + ', ';\n\tstr += hours + ':';\n\tstr += zeroPad(date.getMinutes(), 2) + ':';\n\tstr += zeroPad(date.getSeconds(), 2) + ' ';\n\tstr += period;\n\n\treturn str;\n}\n\nexport function formatDateShort(dateStr: string): string {\n\tif (!dateStr || dateStr === '0001-01-01T00:00:00Z') {\n\t\treturn '';\n\t}\n\n\tlet date = new Date(dateStr);\n\tlet curDate = new Date();\n\n\tlet month;\n\tswitch (date.getMonth()) {\n\t\tcase 0:\n\t\t\tmonth = 'Jan';\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tmonth = 'Feb';\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tmonth = 'Mar';\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tmonth = 'Apr';\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tmonth = 'May';\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tmonth = 'Jun';\n\t\t\tbreak;\n\t\tcase 6:\n\t\t\tmonth = 'Jul';\n\t\t\tbreak;\n\t\tcase 7:\n\t\t\tmonth = 'Aug';\n\t\t\tbreak;\n\t\tcase 8:\n\t\t\tmonth = 'Sep';\n\t\t\tbreak;\n\t\tcase 9:\n\t\t\tmonth = 'Oct';\n\t\t\tbreak;\n\t\tcase 10:\n\t\t\tmonth = 'Nov';\n\t\t\tbreak;\n\t\tcase 11:\n\t\t\tmonth = 'Dec';\n\t\t\tbreak;\n\t}\n\n\tlet str = month + ' ' + date.getDate();\n\n\tif (date.getFullYear() !== curDate.getFullYear()) {\n\t\tstr += ' ' + date.getFullYear();\n\t}\n\n\treturn str;\n}\n\nexport function formatDateShortTime(dateStr: string): string {\n\tif (!dateStr || dateStr === '0001-01-01T00:00:00Z') {\n\t\treturn '';\n\t}\n\n\tlet date = new Date(dateStr);\n\tlet curDate = new Date();\n\n\tlet month;\n\tswitch (date.getMonth()) {\n\t\tcase 0:\n\t\t\tmonth = 'Jan';\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tmonth = 'Feb';\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tmonth = 'Mar';\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tmonth = 'Apr';\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tmonth = 'May';\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tmonth = 'Jun';\n\t\t\tbreak;\n\t\tcase 6:\n\t\t\tmonth = 'Jul';\n\t\t\tbreak;\n\t\tcase 7:\n\t\t\tmonth = 'Aug';\n\t\t\tbreak;\n\t\tcase 8:\n\t\t\tmonth = 'Sep';\n\t\t\tbreak;\n\t\tcase 9:\n\t\t\tmonth = 'Oct';\n\t\t\tbreak;\n\t\tcase 10:\n\t\t\tmonth = 'Nov';\n\t\t\tbreak;\n\t\tcase 11:\n\t\t\tmonth = 'Dec';\n\t\t\tbreak;\n\t}\n\n\tlet str = month + ' ' + date.getDate();\n\n\tif (date.getFullYear() !== curDate.getFullYear()) {\n\t\tstr += ' ' + date.getFullYear();\n\t} else if (date.getMonth() === curDate.getMonth() &&\n\t\t\tdate.getDate() === curDate.getDate()) {\n\t\tlet hours = date.getHours();\n\t\tlet period = 'AM';\n\n\t\tif (hours > 12) {\n\t\t\tperiod = 'PM';\n\t\t\thours -= 12;\n\t\t} else if (hours === 0) {\n\t\t\thours = 12;\n\t\t}\n\n\t\tstr = hours + ':';\n\t\tstr += zeroPad(date.getMinutes(), 2) + ':';\n\t\tstr += zeroPad(date.getSeconds(), 2) + ' ';\n\t\tstr += period;\n\t}\n\n\treturn str;\n}\n","/// \nimport Dispatcher from './dispatcher/Dispatcher';\nimport * as LoadingTypes from './types/LoadingTypes';\nimport * as MiscUtils from './utils/MiscUtils';\n\nexport default class Loader {\n\t_id: string;\n\n\tconstructor() {\n\t\tthis._id = MiscUtils.uuid();\n\t}\n\n\tloading(): Loader {\n\t\tDispatcher.dispatch({\n\t\t\ttype: LoadingTypes.ADD,\n\t\t\tdata: {\n\t\t\t\tid: this._id,\n\t\t\t},\n\t\t});\n\t\treturn this;\n\t}\n\n\tdone(): Loader {\n\t\tDispatcher.dispatch({\n\t\t\ttype: LoadingTypes.DONE,\n\t\t\tdata: {\n\t\t\t\tid: this._id,\n\t\t\t},\n\t\t});\n\t\treturn this;\n\t}\n}\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as SubscriptionTypes from '../types/SubscriptionTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\n\nexport function sync(update: boolean): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/subscription' + (update ? '/update' : ''))\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to sync subscription');\n\t\t\t\t\treject(err);\n\n\t\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\t\ttype: SubscriptionTypes.SYNC,\n\t\t\t\t\t\tdata: {},\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: SubscriptionTypes.SYNC,\n\t\t\t\t\tdata: res.body,\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function activate(license: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/subscription')\n\t\t\t.send({\n\t\t\t\tlicense: license,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to activate subscription');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: SubscriptionTypes.SYNC,\n\t\t\t\t\tdata: res.body,\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function checkout(plan: string, card: string,\n\t\temail: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('https://app.pritunl.com/subscription')\n\t\t\t.send({\n\t\t\t\tplan: plan,\n\t\t\t\tcard: card,\n\t\t\t\temail: email,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve('');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to checkout');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(res.body.msg);\n\n\t\t\t\tsync(true);\n\t\t\t});\n\t});\n}\n\nexport function payment(key: string, plan: string, card: string,\n\t\temail: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('https://app.pritunl.com/subscription')\n\t\t\t.send({\n\t\t\t\tkey: key,\n\t\t\t\tplan: plan,\n\t\t\t\tcard: card,\n\t\t\t\temail: email,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to update payment');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\n\t\t\t\tsync(true);\n\t\t\t});\n\t});\n}\n\nexport function cancel(key: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('https://app.pritunl.com/subscription')\n\t\t\t.send({\n\t\t\t\tkey: key,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to cancel subscription');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\n\t\t\t\tsync(true);\n\t\t\t});\n\t});\n}\n\nEventDispatcher.register((action: SubscriptionTypes.SubscriptionDispatch) => {\n\tswitch (action.type) {\n\t\tcase SubscriptionTypes.CHANGE:\n\t\t\tsync(false);\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as MobileDetect from 'mobile-detect';\n\nlet md = new MobileDetect(window.navigator.userAgent);\n\nexport const mobile = !!md.mobile();\n\nexport const loadDelay = 700;\n\nexport const u2fErrorCodes: {[index: number]: string} = {\n\t0: 'ok',\n\t1: 'other',\n\t2: 'bad request',\n\t3: 'configuration unsupported',\n\t4: 'device ineligible',\n\t5: 'timed out',\n};\n\nexport const sessionTypes: {[key: string]: string} = {\n\tadmin: 'Admin',\n\tproxy: 'Service',\n\tuser: 'User',\n};\n\nexport const operatingSystems: {[key: string]: string} = {\n\tlinux: 'Linux',\n\tmacos_1010: 'macOS 10.10',\n\tmacos_1011: 'macOS 10.11',\n\tmacos_1012: 'macOS 10.12',\n\tmacos_1013: 'macOS 10.13',\n\tmacos_1014: 'macOS 10.14',\n\tmacos_1015: 'macOS 10.15',\n\tmacos11: 'macOS 11',\n\tmacos12: 'macOS 12',\n\tmacos13: 'macOS 13',\n\tmacos14: 'macOS 14',\n\twindows_xp: 'Windows XP',\n\twindows_7: 'Windows 7',\n\twindows_vista: 'Windows Vista',\n\twindows_8: 'Windows 8',\n\twindows_10: 'Windows 10',\n\twindows_11: 'Windows 11',\n\tchrome_os: 'Chrome OS',\n\tios_8: 'iOS 8',\n\tios_9: 'iOS 9',\n\tios_10: 'iOS 10',\n\tios_11: 'iOS 11',\n\tios_12: 'iOS 12',\n\tios_13: 'iOS 13',\n\tios_14: 'iOS 14',\n\tios_15: 'iOS 15',\n\tios_16: 'iOS 16',\n\tios_17: 'iOS 17',\n\tios_18: 'iOS 18',\n\tandroid_4: 'Android KitKat 4.4',\n\tandroid_5: 'Android Lollipop 5',\n\tandroid_6: 'Android Marshmallow 6',\n\tandroid_7: 'Android Nougat 7',\n\tandroid_8: 'Android Oreo 8',\n\tandroid_9: 'Android Pie 9',\n\tandroid_10: 'Android 10',\n\tandroid_11: 'Android 11',\n\tandroid_12: 'Android 12',\n\tandroid_13: 'Android 13',\n\tandroid_14: 'Android 14',\n\tblackberry_10: 'Blackerry 10',\n\twindows_phone: 'Windows Phone',\n\tfirefox_os: 'Firefox OS',\n\tkindle: 'Kindle',\n};\n\nexport const browsers: {[key: string]: string} = {\n\tchrome: 'Chrome',\n\tchrome_mobile: 'Chrome Mobile',\n\tsafari: 'Safari',\n\tsafari_mobile: 'Safari Mobile',\n\tfirefox: 'Firefox',\n\tfirefox_mobile: 'Firefox Mobile',\n\tedge: 'Microsoft Edge',\n\tinternet_explorer: 'Internet Explorer',\n\tinternet_explorer_mobile: 'Internet Explorer Mobile',\n\topera: 'Opera',\n\topera_mobile: 'Opera Mobile',\n};\n\nexport const locations: {[key: string]: string} = {\n\tUS: 'United States',\n\tUS_AL: 'Alabama, US',\n\tUS_AK: 'Alaska, US',\n\tUS_AZ: 'Arizona, US',\n\tUS_AR: 'Arkansas, US',\n\tUS_CA: 'California, US',\n\tUS_CO: 'Colorado, US',\n\tUS_CT: 'Connecticut, US',\n\tUS_DE: 'Delaware, US',\n\tUS_FL: 'Florida, US',\n\tUS_GA: 'Georgia, US',\n\tUS_HI: 'Hawaii, US',\n\tUS_ID: 'Idaho, US',\n\tUS_IL: 'Illinois, US',\n\tUS_IN: 'Indiana, US',\n\tUS_IA: 'Iowa, US',\n\tUS_KS: 'Kansas, US',\n\tUS_KY: 'Kentucky, US',\n\tUS_LA: 'Louisiana, US',\n\tUS_ME: 'Maine, US',\n\tUS_MD: 'Maryland, US',\n\tUS_MA: 'Massachusetts, US',\n\tUS_MI: 'Michigan, US',\n\tUS_MN: 'Minnesota, US',\n\tUS_MS: 'Mississippi, US',\n\tUS_MO: 'Missouri, US',\n\tUS_MT: 'Montana, US',\n\tUS_NE: 'Nebraska, US',\n\tUS_NV: 'Nevada, US',\n\tUS_NH: 'New Hampshire, US',\n\tUS_NJ: 'New Jersey, US',\n\tUS_NM: 'New Mexico, US',\n\tUS_NY: 'New York, US',\n\tUS_NC: 'North Carolina, US',\n\tUS_ND: 'North Dakota, US',\n\tUS_OH: 'Ohio, US',\n\tUS_OK: 'Oklahoma, US',\n\tUS_OR: 'Oregon, US',\n\tUS_PA: 'Pennsylvania, US',\n\tUS_RI: 'Rhode Island, US',\n\tUS_SC: 'South Carolina, US',\n\tUS_SD: 'South Dakota, US',\n\tUS_TN: 'Tennessee, US',\n\tUS_TX: 'Texas, US',\n\tUS_UT: 'Utah, US',\n\tUS_VT: 'Vermont, US',\n\tUS_VA: 'Virginia, US',\n\tUS_WA: 'Washington, US',\n\tUS_DC: 'Washington DC, US',\n\tUS_WV: 'West Virginia, US',\n\tUS_WI: 'Wisconsin, US',\n\tUS_WY: 'Wyoming, US',\n\tAF: 'Afghanistan',\n\tAX: 'Åland Islands',\n\tAL: 'Albania',\n\tDZ: 'Algeria',\n\tAS: 'American Samoa',\n\tAD: 'Andorra',\n\tAO: 'Angola',\n\tAI: 'Anguilla',\n\tAQ: 'Antarctica',\n\tAG: 'Antigua and Barbuda',\n\tAR: 'Argentina',\n\tAM: 'Armenia',\n\tAW: 'Aruba',\n\tAU: 'Australia',\n\tAT: 'Austria',\n\tAZ: 'Azerbaijan',\n\tBS: 'Bahamas',\n\tBH: 'Bahrain',\n\tBD: 'Bangladesh',\n\tBB: 'Barbados',\n\tBY: 'Belarus',\n\tBE: 'Belgium',\n\tBZ: 'Belize',\n\tBJ: 'Benin',\n\tBM: 'Bermuda',\n\tBT: 'Bhutan',\n\tBO: 'Bolivia',\n\tBQ: 'Bonaire',\n\tBA: 'Bosnia and Herzegovina',\n\tBW: 'Botswana',\n\tBV: 'Bouvet Island',\n\tBR: 'Brazil',\n\tIO: 'British Indian Ocean Territory',\n\tBN: 'Brunei Darussalam',\n\tBG: 'Bulgaria',\n\tBF: 'Burkina Faso',\n\tBI: 'Burundi',\n\tCV: 'Cabo Verde',\n\tKH: 'Cambodia',\n\tCM: 'Cameroon',\n\tCA: 'Canada',\n\tKY: 'Cayman Islands',\n\tCF: 'Central African Republic',\n\tTD: 'Chad',\n\tCL: 'Chile',\n\tCN: 'China',\n\tCX: 'Christmas Island',\n\tCC: 'Cocos Islands',\n\tCO: 'Colombia',\n\tKM: 'Comoros',\n\tCG: 'Congo',\n\tCD: 'Congo Democratic Republic',\n\tCK: 'Cook Islands',\n\tCR: 'Costa Rica',\n\tCI: 'Côte dIvoire',\n\tHR: 'Croatia',\n\tCU: 'Cuba',\n\tCW: 'Curaçao',\n\tCY: 'Cyprus',\n\tCZ: 'Czechia',\n\tDK: 'Denmark',\n\tDJ: 'Djibouti',\n\tDM: 'Dominica',\n\tDO: 'Dominican Republic',\n\tEC: 'Ecuador',\n\tEG: 'Egypt',\n\tSV: 'El Salvador',\n\tGQ: 'Equatorial Guinea',\n\tER: 'Eritrea',\n\tEE: 'Estonia',\n\tET: 'Ethiopia',\n\tFK: 'Falkland Islands',\n\tFO: 'Faroe Islands',\n\tFJ: 'Fiji',\n\tFI: 'Finland',\n\tFR: 'France',\n\tGF: 'French Guiana',\n\tPF: 'French Polynesia',\n\tTF: 'French Southern Territories',\n\tGA: 'Gabon',\n\tGM: 'Gambia',\n\tGE: 'Georgia',\n\tDE: 'Germany',\n\tGH: 'Ghana',\n\tGI: 'Gibraltar',\n\tGR: 'Greece',\n\tGL: 'Greenland',\n\tGD: 'Grenada',\n\tGP: 'Guadeloupe',\n\tGU: 'Guam',\n\tGT: 'Guatemala',\n\tGG: 'Guernsey',\n\tGN: 'Guinea',\n\tGW: 'Guinea-Bissau',\n\tGY: 'Guyana',\n\tHT: 'Haiti',\n\tHM: 'Heard Island and McDonald Islands',\n\tVA: 'Holy See',\n\tHN: 'Honduras',\n\tHK: 'Hong Kong',\n\tHU: 'Hungary',\n\tIS: 'Iceland',\n\tIN: 'India',\n\tID: 'Indonesia',\n\tIR: 'Iran',\n\tIQ: 'Iraq',\n\tIE: 'Ireland',\n\tIM: 'Isle of Man',\n\tIL: 'Israel',\n\tIT: 'Italy',\n\tJM: 'Jamaica',\n\tJP: 'Japan',\n\tJE: 'Jersey',\n\tJO: 'Jordan',\n\tKZ: 'Kazakhstan',\n\tKE: 'Kenya',\n\tKI: 'Kiribati',\n\tKP: 'North Korea',\n\tKR: 'South Korea',\n\tKW: 'Kuwait',\n\tKG: 'Kyrgyzstan',\n\tLA: 'Lao Peoples',\n\tLV: 'Latvia',\n\tLB: 'Lebanon',\n\tLS: 'Lesotho',\n\tLR: 'Liberia',\n\tLY: 'Libya',\n\tLI: 'Liechtenstein',\n\tLT: 'Lithuania',\n\tLU: 'Luxembourg',\n\tMO: 'Macao',\n\tMK: 'Macedonia',\n\tMG: 'Madagascar',\n\tMW: 'Malawi',\n\tMY: 'Malaysia',\n\tMV: 'Maldives',\n\tML: 'Mali',\n\tMT: 'Malta',\n\tMH: 'Marshall Islands',\n\tMQ: 'Martinique',\n\tMR: 'Mauritania',\n\tMU: 'Mauritius',\n\tYT: 'Mayotte',\n\tMX: 'Mexico',\n\tFM: 'Micronesia',\n\tMD: 'Moldova',\n\tMC: 'Monaco',\n\tMN: 'Mongolia',\n\tME: 'Montenegro',\n\tMS: 'Montserrat',\n\tMA: 'Morocco',\n\tMZ: 'Mozambique',\n\tMM: 'Myanmar',\n\tNA: 'Namibia',\n\tNR: 'Nauru',\n\tNP: 'Nepal',\n\tNL: 'Netherlands',\n\tNC: 'New Caledonia',\n\tNZ: 'New Zealand',\n\tNI: 'Nicaragua',\n\tNE: 'Niger',\n\tNG: 'Nigeria',\n\tNU: 'Niue',\n\tNF: 'Norfolk Island',\n\tMP: 'Northern Mariana Islands',\n\tNO: 'Norway',\n\tOM: 'Oman',\n\tPK: 'Pakistan',\n\tPW: 'Palau',\n\tPS: 'Palestine, State of',\n\tPA: 'Panama',\n\tPG: 'Papua New Guinea',\n\tPY: 'Paraguay',\n\tPE: 'Peru',\n\tPH: 'Philippines',\n\tPN: 'Pitcairn',\n\tPL: 'Poland',\n\tPT: 'Portugal',\n\tPR: 'Puerto Rico',\n\tQA: 'Qatar',\n\tRE: 'Réunion',\n\tRO: 'Romania',\n\tRU: 'Russian Federation',\n\tRW: 'Rwanda',\n\tBL: 'Saint Barthélemy',\n\tSH: 'Saint Helena',\n\tKN: 'Saint Kitts and Nevis',\n\tLC: 'Saint Lucia',\n\tMF: 'Saint Martin',\n\tPM: 'Saint Pierre and Miquelon',\n\tVC: 'Saint Vincent and the Grenadines',\n\tWS: 'Samoa',\n\tSM: 'San Marino',\n\tST: 'Sao Tome and Principe',\n\tSA: 'Saudi Arabia',\n\tSN: 'Senegal',\n\tRS: 'Serbia',\n\tSC: 'Seychelles',\n\tSL: 'Sierra Leone',\n\tSG: 'Singapore',\n\tSX: 'Sint Maarten',\n\tSK: 'Slovakia',\n\tSI: 'Slovenia',\n\tSB: 'Solomon Islands',\n\tSO: 'Somalia',\n\tZA: 'South Africa',\n\tGS: 'South Georgia and the South Sandwich Islands',\n\tSS: 'South Sudan',\n\tES: 'Spain',\n\tLK: 'Sri Lanka',\n\tSD: 'Sudan',\n\tSR: 'Suriname',\n\tSJ: 'Svalbard and Jan Mayen',\n\tSZ: 'Swaziland',\n\tSE: 'Sweden',\n\tCH: 'Switzerland',\n\tSY: 'Syrian Arab Republic',\n\tTW: 'Taiwan',\n\tTJ: 'Tajikistan',\n\tTZ: 'Tanzania',\n\tTH: 'Thailand',\n\tTL: 'Timor-Leste',\n\tTG: 'Togo',\n\tTK: 'Tokelau',\n\tTO: 'Tonga',\n\tTT: 'Trinidad and Tobago',\n\tTN: 'Tunisia',\n\tTR: 'Turkey',\n\tTM: 'Turkmenistan',\n\tTC: 'Turks and Caicos Islands',\n\tTV: 'Tuvalu',\n\tUG: 'Uganda',\n\tUA: 'Ukraine',\n\tAE: 'United Arab Emirates',\n\tGB: 'United Kingdom',\n\tUM: 'United States Minor Outlying Islands',\n\tUY: 'Uruguay',\n\tUZ: 'Uzbekistan',\n\tVU: 'Vanuatu',\n\tVE: 'Venezuela',\n\tVN: 'Viet Nam',\n\tVG: 'British Virgin Islands',\n\tVI: 'US Virgin Islands',\n\tWF: 'Wallis and Futuna',\n\tEH: 'Western Sahara',\n\tYE: 'Yemen',\n\tZM: 'Zambia',\n\tZW: 'Zimbabwe',\n};\n","/// \nimport * as React from 'react';\nimport * as Blueprint from '@blueprintjs/core';\nimport * as Constants from '../Constants';\nimport * as MiscUtils from '../utils/MiscUtils';\n\ninterface Props {\n\tstyle?: React.CSSProperties;\n\tgrouped?: boolean;\n\tclassName?: string;\n\tdialogClassName?: string;\n\thidden?: boolean;\n\tprogressClassName?: string;\n\tlabel?: string;\n\tdialogLabel?: string;\n\tconfirmMsg?: string;\n\tconfirmInput?: boolean;\n\titems?: string[];\n\tdisabled?: boolean;\n\tsafe?: boolean;\n\tonConfirm?: () => void;\n}\n\ninterface State {\n\tinput: string;\n\tdialog: boolean;\n\tconfirm: number;\n\tconfirming: string;\n}\n\nconst css = {\n\tbox: {\n\t\tdisplay: 'inline-flex',\n\t\tverticalAlign: 'middle',\n\t} as React.CSSProperties,\n\tactionProgress: {\n\t\tposition: 'absolute',\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\tborderRadius: 0,\n\t\tborderBottomLeftRadius: '3px',\n\t\tborderBottomRightRadius: '3px',\n\t\twidth: '100%',\n\t\theight: '4px',\n\t} as React.CSSProperties,\n\tsquareActionProgress: {\n\t\tposition: 'absolute',\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\tborderRadius: 0,\n\t\tborderBottomLeftRadius: '1px',\n\t\tborderBottomRightRadius: '3px',\n\t\twidth: '100%',\n\t\theight: '4px',\n\t} as React.CSSProperties,\n\tdialog: {\n\t\twidth: '340px',\n\t\tposition: 'absolute',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '220px',\n\t\tmargin: '18px 0 0 0',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n};\n\nexport default class ConfirmButton extends React.Component {\n\tconstructor(props: Props, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tinput: '',\n\t\t\tdialog: false,\n\t\t\tconfirm: 0,\n\t\t\tconfirming: null,\n\t\t};\n\t}\n\n\topenDialog = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdialog: true,\n\t\t});\n\t}\n\n\tcloseDialog = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdialog: false,\n\t\t});\n\t}\n\n\tcloseDialogConfirm = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdialog: false,\n\t\t});\n\t\tif (this.props.onConfirm) {\n\t\t\tthis.props.onConfirm();\n\t\t}\n\t}\n\n\tconfirm = (evt: React.MouseEvent<{}>): void => {\n\t\tlet confirmId = MiscUtils.uuid();\n\n\t\tif (evt.shiftKey) {\n\t\t\tif (this.props.onConfirm) {\n\t\t\t\tthis.props.onConfirm();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tconfirming: confirmId,\n\t\t});\n\n\t\tlet i = 10;\n\t\tlet id = setInterval(() => {\n\t\t\tif (i > 100) {\n\t\t\t\tclearInterval(id);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (this.state.confirming === confirmId) {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\tconfirm: 0,\n\t\t\t\t\t\t\tconfirming: null,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (this.props.onConfirm) {\n\t\t\t\t\t\t\tthis.props.onConfirm();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, 250);\n\t\t\t\treturn;\n\t\t\t} else if (!this.state.confirming) {\n\t\t\t\tclearInterval(id);\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tconfirm: 0,\n\t\t\t\t\tconfirming: null,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (i % 10 === 0) {\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tconfirm: i / 10,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\ti += 2;\n\t\t}, 8);\n\t}\n\n\tclearConfirm = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tconfirm: 0,\n\t\t\tconfirming: null,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet dialog = Constants.mobile || this.props.safe;\n\n\t\tlet style = {\n\t\t\t...this.props.style,\n\t\t};\n\t\tstyle.position = 'relative';\n\n\t\tlet className = this.props.className || '';\n\t\tif (!this.props.label) {\n\t\t\tclassName += ' bp3-button-empty';\n\t\t}\n\n\t\tlet dialogClassName = this.props.dialogClassName ||\n\t\t\tthis.props.className || '';\n\t\tif (!this.props.label && !this.props.dialogLabel) {\n\t\t\tdialogClassName += ' bp3-button-empty';\n\t\t}\n\n\t\tlet confirmInput: JSX.Element;\n\t\tif (this.props.confirmInput) {\n\t\t\tconfirmInput = \n\t\t\t\tEnter \"delete\" to confirm:\n\t\t\t\t {\n\t\t\t\t\t\tif (evt.key === \"Enter\" && this.state.input === 'delete') {\n\t\t\t\t\t\t\tthis.closeDialogConfirm();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={(evt): void => {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\tinput: evt.target.value,\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t;\n\t\t}\n\n\t\tif (dialog) {\n\t\t\tlet confirmMsg = this.props.confirmMsg ? this.props.confirmMsg :\n\t\t\t\t'Confirm ' + (this.props.label || '');\n\t\t\tlet itemsList: JSX.Element;\n\t\t\tif (this.props.items) {\n\t\t\t\tlet items: JSX.Element[] = [];\n\t\t\t\tfor (let item of this.props.items) {\n\t\t\t\t\titems.push(
  • {item}
  • );\n\t\t\t\t}\n\t\t\t\titemsList =
      {items}
    ;\n\t\t\t}\n\n\t\t\treturn
    \n\t\t\t\t\n\t\t\t\t\t{this.props.label}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t{confirmMsg}\n\t\t\t\t\t\t{itemsList}\n\t\t\t\t\t\t{confirmInput}\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\tCancel\n\t\t\t\t\t\t\t{this.props.dialogLabel || this.props.label}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t} else {\n\t\t\tlet confirmElem: JSX.Element;\n\n\t\t\tif (this.state.confirming) {\n\t\t\t\tlet confirmStyle = {\n\t\t\t\t\twidth: this.state.confirm * 10 + '%',\n\t\t\t\t\tbackgroundColor: style.color,\n\t\t\t\t\tborderRadius: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t};\n\n\t\t\t\tlet progressStyle: React.CSSProperties;\n\t\t\t\tif (this.props.grouped) {\n\t\t\t\t\tprogressStyle = css.squareActionProgress;\n\t\t\t\t} else {\n\t\t\t\t\tprogressStyle = css.actionProgress;\n\t\t\t\t}\n\n\t\t\t\tconfirmElem = \n\t\t\t\t\t
    \n\t\t\t\t
    ;\n\t\t\t}\n\n\t\t\treturn \n\t\t\t\t{this.props.label}\n\t\t\t\t{confirmElem}\n\t\t\t;\n\t\t}\n\t}\n}\n","/// \nimport * as React from 'react';\nimport ReactStripeCheckout from 'react-stripe-checkout';\nimport * as SubscriptionActions from '../actions/SubscriptionActions';\nimport * as SubscriptionTypes from '../types/SubscriptionTypes';\nimport SubscriptionStore from '../stores/SubscriptionStore';\nimport * as Alert from '../Alert';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport ConfirmButton from './ConfirmButton';\n\ninterface State {\n\tsubscription: SubscriptionTypes.SubscriptionRo;\n\tupdate: boolean;\n\tmessage: string;\n\tlicense: string;\n\tdisabled: boolean;\n}\n\nconst css = {\n\tcard: {\n\t\tpadding: '10px',\n\t\tminWidth: '310px',\n\t\tmaxWidth: '350px',\n\t\twidth: 'calc(100% - 20px)',\n\t\tmargin: '30px auto',\n\t} as React.CSSProperties,\n\tcard2: {\n\t\tpadding: '5px',\n\t\tminWidth: '310px',\n\t\tmaxWidth: '380px',\n\t\twidth: 'calc(100% - 20px)',\n\t\tmargin: '30px auto',\n\t} as React.CSSProperties,\n\tstatus: {\n\t\twidth: '180px',\n\t\tmargin: '20px auto',\n\t\tfontSize: '16px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '2px 0',\n\t} as React.CSSProperties,\n\tmessage: {\n\t\tmargin: '0 0 10px 0',\n\t} as React.CSSProperties,\n\tlicense: {\n\t\twidth: '100%',\n\t\theight: '130px',\n\t\tmargin: '0 0 10px 0',\n\t\tresize: 'none',\n\t\tfontFamily: '\"Lucida Console\", Monaco, monospace',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\twidth: '150px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tbutton2: {\n\t\twidth: '160px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tbutton3: {\n\t\twidth: '195px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmargin: '0 auto',\n\t} as React.CSSProperties,\n};\n\nexport default class Subscription extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tsubscription: SubscriptionStore.subscription,\n\t\t\tupdate: false,\n\t\t\tmessage: '',\n\t\t\tlicense: '',\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tSubscriptionStore.addChangeListener(this.onChange);\n\t\tif (!this.state.subscription.active) {\n\t\t\tSubscriptionActions.sync(true);\n\t\t}\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tSubscriptionStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tsubscription: SubscriptionStore.subscription,\n\t\t});\n\t}\n\n\tupdate(): JSX.Element {\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t{this.state.message}\n\t\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\tlicense: evt.target.value,\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tupdate: false,\n\t\t\t\t\t\t\t\tlicense: '',\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>Cancel\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tSubscriptionActions.activate(\n\t\t\t\t\t\t\t\tthis.state.license,\n\t\t\t\t\t\t\t).then((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\tupdate: false,\n\t\t\t\t\t\t\t\t\tlicense: '',\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>Update License\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n\n\tactivate(): JSX.Element {\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t{this.state.message}\n\t\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\tlicense: evt.target.value,\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tSubscriptionActions.activate(\n\t\t\t\t\t\t\t\tthis.state.license,\n\t\t\t\t\t\t\t).then((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>Activate License\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tSubscriptionActions.checkout(\n\t\t\t\t\t\t\t\t'zero',\n\t\t\t\t\t\t\t\ttoken.id,\n\t\t\t\t\t\t\t\ttoken.email,\n\t\t\t\t\t\t\t).then((message: string): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonScriptError={(err): void => {\n\t\t\t\t\t\t\tAlert.error('Failed to load Stripe Checkout');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tstripeKey=\"pk_live_plmoOl3lS3k5dMNQViZWGfVR\"\n\t\t\t\t\t>\n\t\t\t\t\t\tSubscribe\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n\n\treactivate(): JSX.Element {\n\t\tlet sub = this.state.subscription;\n\t\tlet canceling = sub.cancel_at_period_end || sub.status === 'canceled';\n\t\tlet status = sub.cancel_at_period_end ? 'canceled' : sub.status;\n\t\tlet periodEnd = MiscUtils.formatDateShort(sub.period_end);\n\t\tlet trialEnd = MiscUtils.formatDateShort(sub.trial_end);\n\n\t\tlet balance: string;\n\t\tlet balanceLabel: string;\n\t\tif (sub.balance < 0) {\n\t\t\tbalance = MiscUtils.formatAmount(sub.balance * -1);\n\t\t\tbalanceLabel = 'Credit';\n\t\t} else {\n\t\t\tbalance = MiscUtils.formatAmount(sub.balance);\n\t\t\tbalanceLabel = 'Balance';\n\t\t}\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t{this.state.message}\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Status:
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{MiscUtils.capitalize(status)}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Plan:
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{MiscUtils.capitalize(sub.plan)}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Amount:
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{MiscUtils.formatAmount(sub.amount)}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Quantity:
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{sub.quantity}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t
    {balanceLabel}:
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{balance}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{canceling ? 'Ends' : 'Renew'}:\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{periodEnd}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t
    Trial Ends:
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{trialEnd}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tSubscriptionActions.cancel(\n\t\t\t\t\t\t\t\tthis.state.subscription.url_key,\n\t\t\t\t\t\t\t).then((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tSubscriptionActions.payment(\n\t\t\t\t\t\t\t\tthis.state.subscription.url_key,\n\t\t\t\t\t\t\t\t'zero',\n\t\t\t\t\t\t\t\ttoken.id,\n\t\t\t\t\t\t\t\ttoken.email,\n\t\t\t\t\t\t\t).then((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonScriptError={(err): void => {\n\t\t\t\t\t\t\tAlert.error('Failed to load Stripe Checkout');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tstripeKey=\"pk_live_plmoOl3lS3k5dMNQViZWGfVR\"\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{canceling ? 'Reactivate Subscription' : 'Update Payment'}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tSubscriptionActions.activate('').then((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tupdate: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>Update License\n\t\t\t\t
    \n\t\t\t\n\t\t;\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.state.update) {\n\t\t\treturn this.update();\n\t\t} else if (this.state.subscription.status) {\n\t\t\treturn this.reactivate();\n\t\t} else {\n\t\t\treturn this.activate();\n\t\t}\n\t}\n}\n","/// \nexport const SYNC = 'user.sync';\nexport const TRAVERSE = 'user.traverse';\nexport const FILTER = 'user.filter';\nexport const LOAD = 'user.load';\nexport const UNLOAD = 'user.unload';\nexport const CHANGE = 'user.change';\n\nexport interface User {\n\tid: string;\n\ttype?: string;\n\tusername?: string;\n\tpassword?: string;\n\ttoken?: string;\n\tsecret?: string;\n\tlast_active?: string;\n\troles?: string[];\n\tadministrator?: string;\n\tgenerate_secret?: boolean;\n\tdisabled?: boolean;\n\tactive_until?: string;\n\tpermissions?: string[];\n}\n\nexport interface Filter {\n\tid?: string;\n\tusername?: string;\n\ttype?: string;\n\tadministrator?: boolean;\n\tdisabled?: boolean;\n\trole?: string;\n}\n\nexport type Users = User[];\n\nexport type UserRo = Readonly;\nexport type UsersRo = ReadonlyArray;\n\nexport interface UserDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tuser?: User;\n\t\tusers?: Users;\n\t\tpage?: number;\n\t\tpageCount?: number;\n\t\tfilter?: Filter;\n\t\tcount?: number;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as UserTypes from '../types/UserTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass UsersStore extends EventEmitter {\n\t_users: UserTypes.UsersRo = Object.freeze([]);\n\t_page: number;\n\t_pageCount: number;\n\t_filter: UserTypes.Filter = null;\n\t_count: number;\n\t_map: {[key: string]: number} = {};\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget users(): UserTypes.UsersRo {\n\t\treturn this._users;\n\t}\n\n\tget usersM(): UserTypes.Users {\n\t\tlet users: UserTypes.Users = [];\n\t\tthis._users.forEach((user: UserTypes.UserRo): void => {\n\t\t\tusers.push({\n\t\t\t\t...user,\n\t\t\t});\n\t\t});\n\t\treturn users;\n\t}\n\n\tget page(): number {\n\t\treturn this._page || 0;\n\t}\n\n\tget pageCount(): number {\n\t\treturn this._pageCount || 50;\n\t}\n\n\tget pages(): number {\n\t\treturn Math.ceil(this.count / this.pageCount);\n\t}\n\n\tget filter(): UserTypes.Filter {\n\t\treturn this._filter;\n\t}\n\n\tget count(): number {\n\t\treturn this._count || 0;\n\t}\n\n\tuser(id: string): UserTypes.UserRo {\n\t\tlet i = this._map[id];\n\t\tif (i === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._users[i];\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_traverse(page: number): void {\n\t\tthis._page = Math.min(this.pages, page);\n\t}\n\n\t_filterCallback(filter: UserTypes.Filter): void {\n\t\tif ((this._filter !== null && filter === null) ||\n\t\t\t\t(this._filter === {} && filter !== null) || (\n\t\t\t\tfilter && this._filter && (\n\t\t\t\t\tfilter.type !== this._filter.type ||\n\t\t\t\t\tfilter.administrator !== this._filter.administrator ||\n\t\t\t\t\tfilter.disabled !== this._filter.disabled ||\n\t\t\t\t\tfilter.role !== this._filter.role\n\t\t\t\t))) {\n\t\t\tthis._traverse(0);\n\t\t}\n\t\tthis._filter = filter;\n\t\tthis.emitChange();\n\t}\n\n\t_sync(users: UserTypes.User[], count: number): void {\n\t\tthis._map = {};\n\t\tfor (let i = 0; i < users.length; i++) {\n\t\t\tusers[i] = Object.freeze(users[i]);\n\t\t\tthis._map[users[i].id] = i;\n\t\t}\n\n\t\tthis._count = count;\n\t\tthis._users = Object.freeze(users);\n\t\tthis._page = Math.min(this.pages, this.page);\n\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: UserTypes.UserDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase UserTypes.TRAVERSE:\n\t\t\t\tthis._traverse(action.data.page);\n\t\t\t\tbreak;\n\n\t\t\tcase UserTypes.FILTER:\n\t\t\t\tthis._filterCallback(action.data.filter);\n\t\t\t\tbreak;\n\n\t\t\tcase UserTypes.SYNC:\n\t\t\t\tthis._sync(action.data.users, action.data.count);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new UsersStore();\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as UserTypes from '../types/UserTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass UserStore extends EventEmitter {\n\t_user: UserTypes.UserRo;\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget user(): UserTypes.UserRo {\n\t\treturn this._user;\n\t}\n\n\tget userM(): UserTypes.User {\n\t\tif (this._user) {\n\t\t\treturn {\n\t\t\t\t...this._user,\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_load(user: UserTypes.User): void {\n\t\tthis._user = Object.freeze(user);\n\t\tthis.emitChange();\n\t}\n\n\t_unload(): void {\n\t\tthis._user = null;\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: UserTypes.UserDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase UserTypes.LOAD:\n\t\t\t\tthis._load(action.data.user);\n\t\t\t\tbreak;\n\t\t\tcase UserTypes.UNLOAD:\n\t\t\t\tthis._unload();\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new UserStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as UserTypes from '../types/UserTypes';\nimport UserStore from '../stores/UserStore';\nimport UsersStore from '../stores/UsersStore';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\n\nexport function load(userId: string): Promise {\n\tif (!userId) {\n\t\tlet user: UserTypes.User = {\n\t\t\tid: null,\n\t\t\ttype: 'local',\n\t\t\troles: [],\n\t\t\tpermissions: [],\n\t\t};\n\n\t\tDispatcher.dispatch({\n\t\t\ttype: UserTypes.LOAD,\n\t\t\tdata: {\n\t\t\t\tuser: user,\n\t\t\t},\n\t\t});\n\n\t\treturn Promise.resolve();\n\t}\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/user/' + userId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load user');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: UserTypes.LOAD,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tuser: res.body,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function reload(): Promise {\n\treturn load(UserStore.user ? UserStore.user.id : null);\n}\n\nexport function unload(): void {\n\tDispatcher.dispatch({\n\t\ttype: UserTypes.UNLOAD,\n\t});\n}\n\nexport function sync(): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/user')\n\t\t\t.query({\n\t\t\t\t...UsersStore.filter,\n\t\t\t\tpage: UsersStore.page,\n\t\t\t\tpage_count: UsersStore.pageCount,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load users');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: UserTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tusers: res.body.users,\n\t\t\t\t\t\tcount: res.body.count,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function traverse(page: number): Promise {\n\tDispatcher.dispatch({\n\t\ttype: UserTypes.TRAVERSE,\n\t\tdata: {\n\t\t\tpage: page,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function filter(filt: UserTypes.Filter): Promise {\n\tDispatcher.dispatch({\n\t\ttype: UserTypes.FILTER,\n\t\tdata: {\n\t\t\tfilter: filt,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function commit(user: UserTypes.User): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/user/' + user.id)\n\t\t\t.send(user)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to save user');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: UserTypes.LOAD,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tuser: res.body,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function create(user: UserTypes.User): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/user')\n\t\t\t.send(user)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to create user');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function remove(userIds: string[]): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/user')\n\t\t\t.send(userIds)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete users');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nEventDispatcher.register((action: UserTypes.UserDispatch) => {\n\tswitch (action.type) {\n\t\tcase UserTypes.CHANGE:\n\t\t\tsync();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as AgentTypes from './AgentTypes';\n\nexport const SYNC = 'audit.sync';\nexport const TRAVERSE = 'audit.traverse';\nexport const CHANGE = 'audit.change';\n\nexport interface Audit {\n\tid: string;\n\tuser?: string;\n\ttimestamp?: string;\n\ttype?: string;\n\tfields?: {[key: string]: string};\n\tagent?: AgentTypes.Agent;\n}\n\nexport type Audits = Audit[];\n\nexport type AuditRo = Readonly;\nexport type AuditsRo = ReadonlyArray;\n\nexport interface AuditDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tuserId?: string;\n\t\taudit?: Audit;\n\t\taudits?: Audits;\n\t\tpage?: number;\n\t\tcount?: number;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as AuditTypes from '../types/AuditTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass AuditsStore extends EventEmitter {\n\t_userId: string;\n\t_audits: AuditTypes.AuditsRo = Object.freeze([]);\n\t_page: number;\n\t_pageCount: number;\n\t_count: number;\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget userId(): string {\n\t\treturn this._userId;\n\t}\n\n\tget audits(): AuditTypes.AuditsRo {\n\t\treturn this._audits;\n\t}\n\n\tget auditsM(): AuditTypes.Audits {\n\t\tlet audits: AuditTypes.Audits = [];\n\t\tthis._audits.forEach((audit: AuditTypes.AuditRo): void => {\n\t\t\taudits.push({\n\t\t\t\t...audit,\n\t\t\t});\n\t\t});\n\t\treturn audits;\n\t}\n\n\tget page(): number {\n\t\treturn this._page || 0;\n\t}\n\n\tget pageCount(): number {\n\t\treturn this._pageCount || 10;\n\t}\n\n\tget pages(): number {\n\t\treturn Math.ceil(this.count / this.pageCount);\n\t}\n\n\tget count(): number {\n\t\treturn this._count || 0;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_traverse(page: number): void {\n\t\tthis._page = Math.min(this.pages, page);\n\t}\n\n\t_sync(userId: string, audits: AuditTypes.Audit[], count: number): void {\n\t\tthis._userId = userId;\n\n\t\tfor (let i = 0; i < audits.length; i++) {\n\t\t\taudits[i] = Object.freeze(audits[i]);\n\t\t}\n\n\t\tthis._count = count;\n\t\tthis._audits = Object.freeze(audits);\n\t\tthis._page = Math.min(this.pages, this.page);\n\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: AuditTypes.AuditDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase AuditTypes.TRAVERSE:\n\t\t\t\tthis._traverse(action.data.page);\n\t\t\t\tbreak;\n\n\t\t\tcase AuditTypes.SYNC:\n\t\t\t\tthis._sync(action.data.userId, action.data.audits, action.data.count);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new AuditsStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as AuditTypes from '../types/AuditTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport AuditsStore from '../stores/AuditsStore';\n\nlet syncId: string;\n\nexport function load(userId: string): Promise {\n\tif (!userId) {\n\t\treturn Promise.resolve();\n\t}\n\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/audit/' + userId)\n\t\t\t.query({\n\t\t\t\tpage: AuditsStore.page,\n\t\t\t\tpage_count: AuditsStore.pageCount,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load audits');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: AuditTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tuserId: userId,\n\t\t\t\t\t\taudits: res.body.audits,\n\t\t\t\t\t\tcount: res.body.count,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function reload(): Promise {\n\treturn load(AuditsStore.userId);\n}\n\nexport function traverse(page: number): Promise {\n\tDispatcher.dispatch({\n\t\ttype: AuditTypes.TRAVERSE,\n\t\tdata: {\n\t\t\tpage: page,\n\t\t},\n\t});\n\n\treturn reload();\n}\n\nEventDispatcher.register((action: AuditTypes.AuditDispatch) => {\n\tswitch (action.type) {\n\t\tcase AuditTypes.CHANGE:\n\t\t\treload();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as React from 'react';\nimport * as ReactRouter from 'react-router-dom';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport * as UserTypes from '../types/UserTypes';\n\ninterface Props {\n\tuser: UserTypes.UserRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n}\n\nconst css = {\n\tcard: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '2px 0 0 0',\n\t\tpaddingTop: '3px',\n\t\tminHeight: '18px',\n\t} as React.CSSProperties,\n\tname: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t} as React.CSSProperties,\n\ttype: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '9px',\n\t} as React.CSSProperties,\n\tlastActivity: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '9px',\n\t\twhiteSpace: 'nowrap',\n\t} as React.CSSProperties,\n\troles: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '0 8px 8px 8px',\n\t} as React.CSSProperties,\n\ttag: {\n\t\tmargin: '8px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\tnameLink: {\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n};\n\nexport default class User extends React.Component {\n\trender(): JSX.Element {\n\t\tlet user = this.props.user;\n\t\tlet roles: JSX.Element[] = [];\n\n\t\tfor (let role of user.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet cardStyle = {\n\t\t\t...css.card,\n\t\t};\n\t\tif (user.disabled) {\n\t\t\tcardStyle.opacity = 0.6;\n\t\t}\n\n\t\tlet userType: string;\n\t\tswitch (user.type) {\n\t\t\tcase 'local':\n\t\t\t\tuserType = 'Local';\n\t\t\t\tbreak;\n\t\t\tcase 'google':\n\t\t\t\tuserType = 'Google';\n\t\t\t\tbreak;\n\t\t\tcase 'onelogin':\n\t\t\t\tuserType = 'OneLogin';\n\t\t\t\tbreak;\n\t\t\tcase 'okta':\n\t\t\t\tuserType = 'Okta';\n\t\t\t\tbreak;\n\t\t\tcase 'authzero':\n\t\t\t\tuserType = 'Auth0';\n\t\t\t\tbreak;\n\t\t\tcase 'azure':\n\t\t\t\tuserType = 'Azure';\n\t\t\t\tbreak;\n\t\t\tcase 'api':\n\t\t\t\tuserType = 'API';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tuserType = user.type;\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{user.username}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{userType}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{MiscUtils.formatDateShortTime(user.last_active) || 'Inactive'}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\tadmin\n\t\t\t\t\n\t\t\t\t{roles}\n\t\t\t
    \n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\n\ntype OnChange = (val: string) => void;\n\ninterface Props {\n\tstyle: React.CSSProperties;\n\tplaceholder: string;\n\tvalue: string;\n\tonChange: OnChange;\n}\n\nexport default class SearchInput extends React.Component {\n\trender(): JSX.Element {\n\t\treturn
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.props.onChange(evt.target.value);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\n\ntype OnToggle = () => void;\n\ninterface Props {\n\tstyle?: React.CSSProperties;\n\tlabel: string;\n\tchecked: boolean;\n\tonToggle: OnToggle;\n}\n\nexport default class SwitchNull extends React.Component {\n\trender(): JSX.Element {\n\t\tlet style: React.CSSProperties = {\n\t\t\t...this.props.style,\n\t\t};\n\n\t\tif (this.props.checked === null || this.props.checked === undefined) {\n\t\t\tstyle.opacity = 0.5;\n\t\t}\n\n\t\treturn ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as UserTypes from '../types/UserTypes';\nimport SearchInput from './SearchInput';\nimport SwitchNull from './SwitchNull';\n\ninterface Props {\n\tfilter: UserTypes.Filter;\n\tonFilter: (filter: UserTypes.Filter) => void;\n}\n\nconst css = {\n\tfilters: {\n\t\tmargin: '-15px 0 5px 0',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '200px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\twidth: '150px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\ttype: {\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tcheck: {\n\t\tmargin: '12px 5px 8px 5px',\n\t} as React.CSSProperties,\n};\n\nexport default class UsersFilter extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tmenu: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.filter === null) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.username = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.username;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.role = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.role;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tlet val = evt.target.value;\n\n\t\t\t\t\t\tif (val === 'any') {\n\t\t\t\t\t\t\tdelete filter.type;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfilter.type = val;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (filter.administrator === undefined) {\n\t\t\t\t\t\tfilter.administrator = true;\n\t\t\t\t\t} else if (filter.administrator === true) {\n\t\t\t\t\t\tfilter.administrator = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.administrator;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (filter.disabled === undefined) {\n\t\t\t\t\t\tfilter.disabled = true;\n\t\t\t\t\t} else if (filter.disabled === true) {\n\t\t\t\t\t\tfilter.disabled = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.disabled;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\n\ninterface Props {\n\twide?: boolean;\n}\n\nconst css = {\n\tpage: {\n\t\tmargin: '0 auto',\n\t\tpadding: '30px 20px',\n\t\tminWidth: '200px',\n\t\tmaxWidth: '1100px',\n\t} as React.CSSProperties,\n\tpageWide: {\n\t\tmargin: '0 auto',\n\t\tpadding: '30px 20px',\n\t\tminWidth: '200px',\n\t\tmaxWidth: '1250px',\n\t} as React.CSSProperties,\n};\n\nexport default class Page extends React.Component {\n\trender(): JSX.Element {\n\t\treturn
    \n\t\t\t{this.props.children}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\n\ninterface Props {\n\tlabel?: string;\n}\n\nconst css = {\n\theader: {\n\t\tfontSize: '24px',\n\t\tpaddingBottom: '8px',\n\t\tmarginBottom: '20px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\tmargin: 0,\n\t} as React.CSSProperties,\n};\n\nexport default class PageHeader extends React.Component {\n\trender(): JSX.Element {\n\t\tlet label: JSX.Element;\n\t\tif (this.props.label) {\n\t\t\tlabel =

    {this.props.label}

    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t{label}\n\t\t\t{this.props.children}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport UsersStore from '../stores/UsersStore';\nimport * as UserActions from '../actions/UserActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class Users extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: UsersStore.page,\n\t\t\tpageCount: UsersStore.pageCount,\n\t\t\tpages: UsersStore.pages,\n\t\t\tcount: UsersStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tUsersStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tUsersStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: UsersStore.page,\n\t\t\tpageCount: UsersStore.pageCount,\n\t\t\tpages: UsersStore.pages,\n\t\t\tcount: UsersStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tUserActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tUserActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tUserActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tUserActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tUserActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ReactRouter from 'react-router-dom';\nimport * as UserTypes from '../types/UserTypes';\nimport UsersStore from '../stores/UsersStore';\nimport * as UserActions from '../actions/UserActions';\nimport * as AuditActions from '../actions/AuditActions';\nimport User from './User';\nimport UsersFilter from './UsersFilter';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\nimport UsersPage from './UsersPage';\nimport ConfirmButton from './ConfirmButton';\n\ninterface Selected {\n\t[key: string]: boolean;\n}\n\ninterface State {\n\tusers: UserTypes.UsersRo;\n\tfilter: UserTypes.Filter;\n\tselected: Selected;\n\tlastSelected: string;\n\tdisabled: boolean;\n}\n\nconst css = {\n\tusers: {\n\t\twidth: '100%',\n\t\tmarginTop: '-5px',\n\t\tdisplay: 'table',\n\t\tborderSpacing: '0 5px',\n\t} as React.CSSProperties,\n\tusersBox: {\n\t\twidth: '100%',\n\t\toverflowY: 'auto',\n\t} as React.CSSProperties,\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n};\n\nexport default class Users extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tusers: UsersStore.users,\n\t\t\tfilter: UsersStore.filter,\n\t\t\tselected: {},\n\t\t\tlastSelected: null,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tget selected(): boolean {\n\t\tfor (let key in this.state.selected) {\n\t\t\tif (this.state.selected[key]) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tcomponentDidMount(): void {\n\t\tUsersStore.addChangeListener(this.onChange);\n\t\tAuditActions.traverse(0);\n\t\tUserActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tUsersStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tlet users = UsersStore.users;\n\t\tlet selected: Selected = {};\n\t\tlet curSelected = this.state.selected;\n\n\t\tusers.forEach((user: UserTypes.User): void => {\n\t\t\tif (curSelected[user.id]) {\n\t\t\t\tselected[user.id] = true;\n\t\t\t}\n\t\t});\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tusers: users,\n\t\t\tfilter: UsersStore.filter,\n\t\t\tselected: selected,\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tUserActions.remove(Object.keys(this.state.selected)).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tselected: {},\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet usersDom: JSX.Element[] = [];\n\n\t\tthis.state.users.forEach((user: UserTypes.UserRo): void => {\n\t\t\tusersDom.push( {\n\t\t\t\t\tlet selected = {\n\t\t\t\t\t\t...this.state.selected,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (shift) {\n\t\t\t\t\t\tlet users = this.state.users;\n\t\t\t\t\t\tlet start: number;\n\t\t\t\t\t\tlet end: number;\n\n\t\t\t\t\t\tfor (let i = 0; i < users.length; i++) {\n\t\t\t\t\t\t\tlet usr = users[i];\n\n\t\t\t\t\t\t\tif (usr.id === user.id) {\n\t\t\t\t\t\t\t\tstart = i;\n\t\t\t\t\t\t\t} else if (usr.id === this.state.lastSelected) {\n\t\t\t\t\t\t\t\tend = i;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (start !== undefined && end !== undefined) {\n\t\t\t\t\t\t\tif (start > end) {\n\t\t\t\t\t\t\t\tend = [start, start = end][0];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor (let i = start; i <= end; i++) {\n\t\t\t\t\t\t\t\tselected[users[i].id] = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tlastSelected: user.id,\n\t\t\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (selected[user.id]) {\n\t\t\t\t\t\tdelete selected[user.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselected[user.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tlastSelected: user.id,\n\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>);\n\t\t});\n\n\t\tlet filterClass = 'bp3-button bp3-intent-primary bp3-icon-filter ';\n\t\tif (this.state.filter) {\n\t\t\tfilterClass += 'bp3-active';\n\t\t}\n\n\t\tlet selectedNames: string[] = [];\n\t\tfor (let userId of Object.keys(this.state.selected)) {\n\t\t\tlet user = UsersStore.user(userId);\n\t\t\tif (user) {\n\t\t\t\tselectedNames.push(user.username || userId);\n\t\t\t} else {\n\t\t\t\tselectedNames.push(userId);\n\t\t\t}\n\t\t}\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Users

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (this.state.filter === null) {\n\t\t\t\t\t\t\t\t\tUserActions.filter({});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tUserActions.filter(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFilters\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tNew\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tUserActions.filter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{usersDom}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tselected: {},\n\t\t\t\t\t\tlastSelected: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as AgentTypes from './AgentTypes';\n\nexport const SYNC = 'session.sync';\nexport const CHANGE = 'session.change';\nexport const SHOW_REMOVED = 'session.show_removed';\n\nexport interface Session {\n\tid: string;\n\ttype?: string;\n\tuser?: string;\n\ttimestamp?: string;\n\tlast_active?: string;\n\tremoved?: boolean;\n\tagent?: AgentTypes.Agent;\n}\n\nexport type Sessions = Session[];\n\nexport type SessionRo = Readonly;\nexport type SessionsRo = ReadonlyArray;\n\nexport interface SessionDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tuserId?: string;\n\t\tsession?: Session;\n\t\tsessions?: Sessions;\n\t\tshowRemoved?: boolean;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as SessionTypes from '../types/SessionTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass SessionsStore extends EventEmitter {\n\t_userId: string;\n\t_showRemoved: boolean;\n\t_sessions: SessionTypes.SessionsRo = Object.freeze([]);\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget userId(): string {\n\t\treturn this._userId;\n\t}\n\n\tget sessions(): SessionTypes.SessionsRo {\n\t\treturn this._sessions;\n\t}\n\n\tget sessionsM(): SessionTypes.Sessions {\n\t\tlet sessions: SessionTypes.Sessions = [];\n\t\tthis._sessions.forEach((session: SessionTypes.SessionRo): void => {\n\t\t\tsessions.push({\n\t\t\t\t...session,\n\t\t\t});\n\t\t});\n\t\treturn sessions;\n\t}\n\n\tget showRemoved(): boolean {\n\t\treturn this._showRemoved;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_sync(userId: string, sessions: SessionTypes.Session[]): void {\n\t\tthis._userId = userId;\n\n\t\tfor (let i = 0; i < sessions.length; i++) {\n\t\t\tsessions[i] = Object.freeze(sessions[i]);\n\t\t}\n\n\t\tthis._sessions = Object.freeze(sessions);\n\t\tthis.emitChange();\n\t}\n\n\t_setShowRemoved(state: boolean): void {\n\t\tthis._showRemoved = state;\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: SessionTypes.SessionDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase SessionTypes.SYNC:\n\t\t\t\tthis._sync(action.data.userId, action.data.sessions);\n\t\t\t\tbreak;\n\t\t\tcase SessionTypes.SHOW_REMOVED:\n\t\t\t\tthis._setShowRemoved(action.data.showRemoved);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new SessionsStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as SessionTypes from '../types/SessionTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport SessionsStore from '../stores/SessionsStore';\n\nlet syncId: string;\n\nexport function _load(userId: string): Promise {\n\tif (!userId) {\n\t\treturn Promise.resolve();\n\t}\n\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/session/' + userId)\n\t\t\t.query({\n\t\t\t\tshow_removed: SessionsStore.showRemoved,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load sessions');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: SessionTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tuserId: userId,\n\t\t\t\t\t\tsessions: res.body,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function load(userId: string): Promise {\n\tDispatcher.dispatch({\n\t\ttype: SessionTypes.SHOW_REMOVED,\n\t\tdata: {\n\t\t\tshowRemoved: false,\n\t\t},\n\t});\n\n\treturn _load(userId);\n}\n\nexport function reload(): Promise {\n\treturn _load(SessionsStore.userId);\n}\n\nexport function showRemoved(state: boolean): Promise {\n\tDispatcher.dispatch({\n\t\ttype: SessionTypes.SHOW_REMOVED,\n\t\tdata: {\n\t\t\tshowRemoved: state,\n\t\t},\n\t});\n\n\treturn reload();\n}\n\nexport function remove(sessionId: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/session/' + sessionId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete session');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nEventDispatcher.register((action: SessionTypes.SessionDispatch) => {\n\tswitch (action.type) {\n\t\tcase SessionTypes.CHANGE:\n\t\t\treload();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as React from 'react';\nimport * as Constants from '../Constants';\n\ninterface Props {\n\thidden: boolean;\n\ticonClass: string;\n\ttitle: string;\n\tdescription?: string;\n}\n\ninterface State {\n\tinitialized: boolean;\n}\n\nconst css = {\n\tstate: {\n\t\theight: 'auto',\n\t} as React.CSSProperties,\n};\n\nexport default class NonState extends React.Component {\n\ttimeout: number;\n\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tinitialized: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tthis.timeout = window.setTimeout((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tinitialized: true,\n\t\t\t});\n\t\t}, Constants.loadDelay);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tif (this.timeout) {\n\t\t\twindow.clearTimeout(this.timeout);\n\t\t}\n\t}\n\n\trender(): JSX.Element {\n\t\tlet description: JSX.Element;\n\t\tif (this.props.description) {\n\t\t\tdescription =
    \n\t\t\t\t{this.props.description}\n\t\t\t
    ;\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t

    {this.props.title}

    \n\t\t\t{description}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as AgentTypes from '../types/AgentTypes';\n\nexport function formatContinent(agent: AgentTypes.Agent): string {\n\treturn agent.continent && agent.continent_code ?\n\t\tagent.continent + ((agent.continent_code &&\n\t\tagent.continent_code !== 'XX') ? ' (' + agent.continent_code + ')' : '') :\n\t\tagent.continent || agent.continent_code || 'Unknown';\n}\n\nexport function formatLocation(agent: AgentTypes.Agent): string {\n\treturn ((agent.city && agent.city !== 'Unknown') ? agent.city + ', ' : '') +\n\t\t(agent.region || 'Unknown') +\n\t\t((agent.region_code && agent.region_code !== 'XX') ?\n\t\t\t' (' + agent.region_code + ')' : '');\n}\n\nexport function formatCountry(agent: AgentTypes.Agent): string {\n\treturn (agent.country || 'Unknown') +\n\t\t((agent.country_code && agent.country_code !== 'XX') ?\n\t\t\t' (' + agent.country_code + ')' : '');\n}\n\nexport function formatCoordinates(agent: AgentTypes.Agent): string {\n\treturn agent.latitude && agent.longitude ?\n\t\tagent.latitude + ', ' + agent.longitude : 'Unknown';\n}\n","/// \nimport * as React from 'react';\n\nexport interface Field {\n\tvalueClass?: string;\n\tlabel: string;\n\tvalue: string | number | string[];\n}\n\nexport interface Bar {\n\tprogressClass?: string;\n\tlabel: string;\n\tvalue: number;\n}\n\nexport interface Props {\n\tstyle?: React.CSSProperties;\n\thidden?: boolean;\n\tfields?: Field[];\n\tbars?: Bar[];\n}\n\nconst css = {\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tvalue: {\n\t\twordWrap: 'break-word',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n};\n\nexport default class PageInfo extends React.Component {\n\trender(): JSX.Element {\n\t\tlet fields: JSX.Element[] = [];\n\t\tlet bars: JSX.Element[] = [];\n\n\t\tfor (let field of this.props.fields || []) {\n\t\t\tif (field == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet value: string | JSX.Element[];\n\n\t\t\tif (typeof field.value === 'string') {\n\t\t\t\tvalue = field.value;\n\t\t\t} else if (typeof field.value === 'number') {\n\t\t\t\tvalue = field.value.toString();\n\t\t\t} else {\n\t\t\t\tvalue = [];\n\t\t\t\tfor (let i = 0; i < field.value.length; i++) {\n\t\t\t\t\tvalue.push(
    {field.value[i]}
    );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfields.push(\n\t\t\t\t
    \n\t\t\t\t\t{field.label}\n\t\t\t\t\t\n\t\t\t\t\t\t{value}\n\t\t\t\t\t
    \n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tfor (let bar of this.props.bars || []) {\n\t\t\tlet style: React.CSSProperties = {\n\t\t\t\twidth: (bar.value || 0) + '%',\n\t\t\t};\n\n\t\t\tbars.push(\n\t\t\t\t
    \n\t\t\t\t\t{bar.label}\n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet labelStyle: React.CSSProperties;\n\t\tif (this.props.style) {\n\t\t\tlabelStyle = {\n\t\t\t\t...css.label,\n\t\t\t\t...this.props.style,\n\t\t\t};\n\t\t} else {\n\t\t\tlabelStyle = css.label;\n\t\t}\n\n\t\treturn \n\t\t\t{fields}\n\t\t\t{bars}\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as SessionTypes from '../types/SessionTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport * as AgentUtils from '../utils/AgentUtils';\nimport * as Constants from '../Constants';\nimport * as SessionActions from '../actions/SessionActions';\nimport PageInfo from './PageInfo';\n\ninterface Props {\n\tsession: SessionTypes.SessionRo;\n}\n\ninterface State {\n\tdisabled: boolean;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tinfo: {\n\t\tmarginBottom: '-5px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '290px',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n};\n\nexport default class Session extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tSessionActions.remove(this.props.session.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet session = this.props.session;\n\t\tlet agent = session.agent || {};\n\n\t\tlet cardStyle = {\n\t\t\t...css.card,\n\t\t};\n\t\tif (session.removed) {\n\t\t\tcardStyle.opacity = 0.6;\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as SessionTypes from '../types/SessionTypes';\nimport SessionsStore from '../stores/SessionsStore';\nimport * as SessionActions from '../actions/SessionActions';\nimport NonState from './NonState';\nimport Session from './Session';\nimport PageHeader from './PageHeader';\n\ninterface Props {\n\tuserId: string;\n}\n\ninterface State {\n\tsessions: SessionTypes.SessionsRo;\n\tshowEnded: boolean;\n\tdisabled: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '15px 0 -5px 0',\n\t} as React.CSSProperties,\n};\n\nexport default class Sessions extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tsessions: SessionsStore.sessions,\n\t\t\tshowEnded: false,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tSessionsStore.addChangeListener(this.onChange);\n\t\tif (this.props.userId) {\n\t\t\tSessionActions.load(this.props.userId);\n\t\t}\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tSessionsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tsessions: SessionsStore.sessions,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tif (!this.props.userId) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet sessions: JSX.Element[] = [];\n\n\t\tthis.state.sessions.forEach((\n\t\t\t\tsession: SessionTypes.SessionRo): void => {\n\t\t\tif (session.removed && !this.state.showEnded) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsessions.push();\n\t\t});\n\n\t\treturn
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    User Sessions

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tshowEnded: !this.state.showEnded,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tSessionActions.showRemoved(!this.state.showEnded);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{(this.state.showEnded ? 'Hide' : 'Show') + ' ended sessions'}\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t{sessions}\n\t\t\t
    \n\t\t\t\n\t\t
    ;\n\t}\n}\n","export type Base64urlString = string;\n\nexport function base64urlToBuffer(\n baseurl64String: Base64urlString,\n): ArrayBuffer {\n // Base64url to Base64\n const padding = \"==\".slice(0, (4 - (baseurl64String.length % 4)) % 4);\n const base64String =\n baseurl64String.replace(/-/g, \"+\").replace(/_/g, \"/\") + padding;\n\n // Base64 to binary string\n const str = atob(base64String);\n\n // Binary string to buffer\n const buffer = new ArrayBuffer(str.length);\n const byteView = new Uint8Array(buffer);\n for (let i = 0; i < str.length; i++) {\n byteView[i] = str.charCodeAt(i);\n }\n return buffer;\n}\n\nexport function bufferToBase64url(buffer: ArrayBuffer): Base64urlString {\n // Buffer to binary string\n const byteView = new Uint8Array(buffer);\n let str = \"\";\n for (const charCode of byteView) {\n str += String.fromCharCode(charCode);\n }\n\n // Binary string to base64\n const base64String = btoa(str);\n\n // Base64 to base64url\n // We assume that the base64url string is well-formed.\n const base64urlString = base64String\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=/g, \"\");\n return base64urlString;\n}\n","// We export these values in order so that they can be used to deduplicate\n// schema definitions in minified JS code.\n\nimport { Schema, SchemaProperty } from \"./schema-format\";\n\n// TODO: Parcel isn't deduplicating these values.\nexport const copyValue = \"copy\";\nexport const convertValue = \"convert\";\n\nexport function convert(\n conversionFn: (v: From) => To,\n schema: Schema,\n input: any,\n): any {\n if (schema === copyValue) {\n return input;\n }\n if (schema === convertValue) {\n return conversionFn(input);\n }\n if (schema instanceof Array) {\n return input.map((v: any) => convert(conversionFn, schema[0], v));\n }\n if (schema instanceof Object) {\n const output: any = {};\n for (const [key, schemaField] of Object.entries(schema)) {\n if (schemaField.deriveFn) {\n const v = schemaField.deriveFn(input);\n if (v !== undefined) {\n input[key] = v;\n }\n }\n\n if (!(key in input)) {\n if (schemaField.required) {\n throw new Error(`Missing key: ${key}`);\n }\n continue;\n }\n // Fields can be null (rather than missing or `undefined`), e.g. the\n // `userHandle` field of the `AuthenticatorAssertionResponse`:\n // https://www.w3.org/TR/webauthn/#iface-authenticatorassertionresponse\n if (input[key] == null) {\n output[key] = null;\n continue;\n }\n output[key] = convert(\n conversionFn,\n schemaField.schema,\n input[key],\n );\n }\n return output;\n }\n}\n\nexport function derived(\n schema: Schema,\n deriveFn: (v: any) => any,\n): SchemaProperty {\n return {\n required: true,\n schema,\n deriveFn,\n };\n}\n\nexport function required(schema: Schema): SchemaProperty {\n return {\n required: true,\n schema,\n };\n}\n\nexport function optional(schema: Schema): SchemaProperty {\n return {\n required: false,\n schema,\n };\n}\n","import { Schema } from \"../schema-format\";\nimport {\n convertValue as convert,\n copyValue as copy,\n derived,\n optional,\n required,\n} from \"../convert\";\n\n// Shared by `create()` and `get()`.\n\nconst publicKeyCredentialDescriptorSchema: Schema = {\n type: required(copy),\n id: required(convert),\n transports: optional(copy),\n};\n\nconst simplifiedExtensionsSchema: Schema = {\n appid: optional(copy),\n appidExclude: optional(copy),\n credProps: optional(copy),\n};\n\nconst simplifiedClientExtensionResultsSchema = {\n appid: optional(copy),\n appidExclude: optional(copy),\n credProps: optional(copy),\n};\n\n// `navigator.create()` request\n\nexport const credentialCreationOptions: Schema = {\n publicKey: required({\n rp: required(copy),\n user: required({\n id: required(convert),\n name: required(copy),\n displayName: required(copy),\n }),\n\n challenge: required(convert),\n pubKeyCredParams: required(copy),\n\n timeout: optional(copy),\n excludeCredentials: optional([publicKeyCredentialDescriptorSchema]),\n authenticatorSelection: optional(copy),\n attestation: optional(copy),\n extensions: optional(simplifiedExtensionsSchema),\n }),\n signal: optional(copy),\n};\n\n// `navigator.create()` response\n\nexport const publicKeyCredentialWithAttestation: Schema = {\n type: required(copy),\n id: required(copy),\n rawId: required(convert),\n response: required({\n clientDataJSON: required(convert),\n attestationObject: required(convert),\n transports: derived(\n copy,\n (response: any) => response.getTransports?.() || [],\n ),\n }),\n clientExtensionResults: derived(\n simplifiedClientExtensionResultsSchema,\n (pkc: PublicKeyCredential) => pkc.getClientExtensionResults(),\n ),\n};\n\n// `navigator.get()` request\n\nexport const credentialRequestOptions: Schema = {\n mediation: optional(copy),\n publicKey: required({\n challenge: required(convert),\n timeout: optional(copy),\n rpId: optional(copy),\n allowCredentials: optional([publicKeyCredentialDescriptorSchema]),\n userVerification: optional(copy),\n extensions: optional(simplifiedExtensionsSchema),\n }),\n signal: optional(copy),\n};\n\n// `navigator.get()` response\n\nexport const publicKeyCredentialWithAssertion: Schema = {\n type: required(copy),\n id: required(copy),\n rawId: required(convert),\n response: required({\n clientDataJSON: required(convert),\n authenticatorData: required(convert),\n signature: required(convert),\n userHandle: required(convert),\n }),\n clientExtensionResults: derived(\n simplifiedClientExtensionResultsSchema,\n (pkc: PublicKeyCredential) => pkc.getClientExtensionResults(),\n ),\n};\n\nexport const schema: { [s: string]: Schema } = {\n credentialCreationOptions,\n publicKeyCredentialWithAttestation,\n credentialRequestOptions,\n publicKeyCredentialWithAssertion,\n};\n","import { base64urlToBuffer, bufferToBase64url } from \"../base64url\";\nimport { convert } from \"../convert\";\nimport {\n CredentialCreationOptionsJSON,\n CredentialRequestOptionsJSON,\n PublicKeyCredentialWithAssertionJSON,\n PublicKeyCredentialWithAttestationJSON,\n} from \"./json\";\nimport {\n credentialCreationOptions,\n credentialRequestOptions,\n publicKeyCredentialWithAssertion,\n publicKeyCredentialWithAttestation,\n} from \"./schema\";\n\nexport function createRequestFromJSON(\n requestJSON: CredentialCreationOptionsJSON,\n): CredentialCreationOptions {\n return convert(base64urlToBuffer, credentialCreationOptions, requestJSON);\n}\n\nexport function createResponseToJSON(\n credential: PublicKeyCredential,\n): PublicKeyCredentialWithAttestationJSON {\n return convert(\n bufferToBase64url,\n publicKeyCredentialWithAttestation,\n credential,\n );\n}\n\nexport async function create(\n requestJSON: CredentialCreationOptionsJSON,\n): Promise {\n const credential = (await navigator.credentials.create(\n createRequestFromJSON(requestJSON),\n )) as PublicKeyCredential;\n return createResponseToJSON(credential);\n}\n\nexport function getRequestFromJSON(\n requestJSON: CredentialRequestOptionsJSON,\n): CredentialRequestOptions {\n return convert(base64urlToBuffer, credentialRequestOptions, requestJSON);\n}\n\nexport function getResponseToJSON(\n credential: PublicKeyCredential,\n): PublicKeyCredentialWithAssertionJSON {\n return convert(\n bufferToBase64url,\n publicKeyCredentialWithAssertion,\n credential,\n );\n}\n\nexport async function get(\n requestJSON: CredentialRequestOptionsJSON,\n): Promise {\n const credential = (await navigator.credentials.get(\n getRequestFromJSON(requestJSON),\n )) as PublicKeyCredential;\n return getResponseToJSON(credential);\n}\n\ndeclare global {\n interface Window {\n PublicKeyCredential: PublicKeyCredential | undefined;\n }\n}\n","/// \nexport const SYNC = 'device.sync';\nexport const CHANGE = 'device.change';\n\nexport interface Device {\n\tid?: string;\n\tuser?: string;\n\tname?: string;\n\ttype?: string;\n\tmode?: string;\n\talert_levels?: number[];\n\ttimestamp?: string;\n\tdisabled?: boolean;\n\tactive_until?: string;\n\tnumber?: string;\n\tlast_active?: string;\n\twan_rp_id?: string;\n\tssh_public_key?: string;\n}\n\nexport type Devices = Device[];\n\nexport type DeviceRo = Readonly;\nexport type DevicesRo = ReadonlyArray;\n\nexport interface DeviceDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tuserId?: string;\n\t\tdevice?: Device;\n\t\tdevices?: Devices;\n\t\tshowRemoved?: boolean;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as DeviceTypes from '../types/DeviceTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass DevicesStore extends EventEmitter {\n\t_userId: string;\n\t_devices: DeviceTypes.DevicesRo = Object.freeze([]);\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget userId(): string {\n\t\treturn this._userId;\n\t}\n\n\tget devices(): DeviceTypes.DevicesRo {\n\t\treturn this._devices;\n\t}\n\n\tget devicesM(): DeviceTypes.Devices {\n\t\tlet devices: DeviceTypes.Devices = [];\n\t\tthis._devices.forEach((device: DeviceTypes.DeviceRo): void => {\n\t\t\tdevices.push({\n\t\t\t\t...device,\n\t\t\t});\n\t\t});\n\t\treturn devices;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_sync(userId: string, devices: DeviceTypes.Device[]): void {\n\t\tthis._userId = userId;\n\n\t\tfor (let i = 0; i < devices.length; i++) {\n\t\t\tdevices[i] = Object.freeze(devices[i]);\n\t\t}\n\n\t\tthis._devices = Object.freeze(devices);\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: DeviceTypes.DeviceDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase DeviceTypes.SYNC:\n\t\t\t\tthis._sync(action.data.userId, action.data.devices);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new DevicesStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as DeviceTypes from '../types/DeviceTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport DevicesStore from '../stores/DevicesStore';\n\nlet syncId: string;\n\nexport function load(userId: string): Promise {\n\tif (!userId) {\n\t\treturn Promise.resolve();\n\t}\n\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/device/' + userId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load devices');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: DeviceTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tuserId: userId,\n\t\t\t\t\t\tdevices: res.body,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function reload(): Promise {\n\treturn load(DevicesStore.userId);\n}\n\nexport function create(device: DeviceTypes.Device): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/device')\n\t\t\t.send(device)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to create device');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function testAlert(deviceId: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/device/' + deviceId + '/alert')\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to send test alert');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function commit(device: DeviceTypes.Device): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/device/' + device.id)\n\t\t\t.send(device)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to save device');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function remove(deviceId: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/device/' + deviceId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete device');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nEventDispatcher.register((action: DeviceTypes.DeviceDispatch) => {\n\tswitch (action.type) {\n\t\tcase DeviceTypes.CHANGE:\n\t\t\treload();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as React from 'react';\nimport * as Blueprint from '@blueprintjs/core';\n\ninterface Props {\n\ttitle: string;\n\tcontent: string;\n}\n\ninterface State {\n\tpopover: boolean;\n}\n\nconst css = {\n\tbox: {\n\t\tposition: 'relative',\n\t\tdisplay: 'inline',\n\t} as React.CSSProperties,\n\tcontent: {\n\t\tpadding: '20px',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tposition: 'absolute',\n\t\ttop: '-7px',\n\t\tleft: '-2px',\n\t\tpadding: '7px',\n\t\tbackground: 'none',\n\t\topacity: 0.3,\n\t} as React.CSSProperties,\n\tpopover: {\n\t\twidth: '230px',\n\t} as React.CSSProperties,\n\tpopoverTarget: {\n\t\ttop: '9px',\n\t\tleft: '18px',\n\t} as React.CSSProperties,\n\tdialog: {\n\t\tmaxWidth: '400px',\n\t\tmargin: '30px 20px',\n\t} as React.CSSProperties,\n};\n\nlet dialog = true;\n\nexport default class Help extends React.Component {\n\tconstructor(props: Props, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpopover: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tlet helpElm: JSX.Element;\n\t\tif (this.state.popover) {\n\t\t\tif (dialog) {\n\t\t\t\thelpElm = {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\tpopover: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t
    \n\t\t\t\t\t\t{this.props.content}\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tpopover: !this.state.popover,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>Close\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t;\n\t\t\t} else {\n\t\t\t\thelpElm = \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    {this.props.title}
    \n\t\t\t\t\t\t\t\t\t
    {this.props.content}
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t;\n\t\t\t}\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tpopover: !this.state.popover,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{helpElm}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport Help from './Help';\n\ninterface Props {\n\thidden?: boolean;\n\tdisabled?: boolean;\n\tlabel: string;\n\thelp: string;\n\tchecked: boolean;\n\tonToggle: () => void;\n}\n\nconst css = {\n\tlabel: {\n\t\tdisplay: 'inline-block',\n\t} as React.CSSProperties,\n};\n\nexport default class PageSwitch extends React.Component {\n\trender(): JSX.Element {\n\t\treturn ;\n\t}\n}\n","/// \nimport * as React from 'react';\n\ninterface Props {\n\tstyle?: React.CSSProperties;\n\tmessage: string;\n\tchanged: boolean;\n\tdisabled: boolean;\n\thidden?: boolean;\n\tlight?: boolean;\n\tonCancel: () => void;\n\tonSave: () => void;\n}\n\nconst css = {\n\tmessage: {\n\t\tmarginTop: '6px',\n\t} as React.CSSProperties,\n\tbox: {\n\t\tmarginTop: '15px',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmarginLeft: '10px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tflexShrink: 0,\n\t} as React.CSSProperties,\n};\n\nexport default class PageSave extends React.Component {\n\trender(): JSX.Element {\n\t\tlet style: React.CSSProperties = this.props.light ? null : css.box;\n\n\t\tif (this.props.style) {\n\t\t\tstyle = {\n\t\t\t\t...style,\n\t\t\t\t...this.props.style,\n\t\t\t};\n\t\t}\n\n\t\treturn \n\t\t\t{this.props.children}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\tCancel\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tSave\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport Help from './Help';\n\ninterface Props {\n\thidden?: boolean;\n\tdisabled?: boolean;\n\treadOnly?: boolean;\n\tautoSelect?: boolean;\n\tnarrow?: boolean;\n\tlabel: string;\n\thelp: string;\n\ttype: string;\n\tplaceholder: string;\n\tvalue: string | number;\n\tonChange?: (val: string) => void;\n}\n\nconst css = {\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tlabelNarrow: {\n\t\twidth: '100%',\n\t\tmaxWidth: '220px',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n};\n\nexport default class PageInput extends React.Component {\n\tautoSelect = (evt: React.MouseEvent): void => {\n\t\tevt.currentTarget.select();\n\t}\n\n\trender(): JSX.Element {\n\t\tlet value: any = this.props.value;\n\t\tvalue = isNaN(value) ? this.props.value || '' : this.props.value;\n\n\t\treturn \n\t\t\t{this.props.label}\n\t\t\t\n\t\t\t {\n\t\t\t\t\tif (this.props.onChange) {\n\t\t\t\t\t\tthis.props.onChange(evt.target.value);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as DeviceTypes from '../types/DeviceTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport * as DeviceActions from '../actions/DeviceActions';\nimport * as PageInfos from './PageInfo';\nimport PageInfo from './PageInfo';\nimport ConfirmButton from './ConfirmButton';\nimport * as Alert from '../Alert';\nimport PageSwitch from \"./PageSwitch\";\nimport PageSave from \"./PageSave\";\nimport PageInput from \"./PageInput\";\n\ninterface Props {\n\tdevice: DeviceTypes.DeviceRo;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\tdevice: DeviceTypes.Device;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tinfo: {\n\t\tmarginBottom: '-5px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\tmarginBottom: '11px',\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\tcontrolButton: {\n\t\tmarginRight: '10px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingTop: '10px',\n\t} as React.CSSProperties,\n};\n\nexport default class Device extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\tdevice: null,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet device: any;\n\n\t\tif (this.state.changed) {\n\t\t\tdevice = {\n\t\t\t\t...this.state.device,\n\t\t\t};\n\t\t} else {\n\t\t\tdevice = {\n\t\t\t\t...this.props.device,\n\t\t\t};\n\t\t}\n\n\t\tdevice[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tdevice: device,\n\t\t});\n\t}\n\n\ttoggleLevel(level: number) {\n\t\tlet device: any;\n\n\t\tif (this.state.changed) {\n\t\t\tdevice = {\n\t\t\t\t...this.state.device,\n\t\t\t};\n\t\t} else {\n\t\t\tdevice = {\n\t\t\t\t...this.props.device,\n\t\t\t};\n\t\t}\n\n\t\tlet levels: number[] = Object.assign([], (device.alert_levels || []));\n\t\tlet index = levels.indexOf(level);\n\n\t\tif (index !== -1) {\n\t\t\tlevels.splice(index, 1);\n\t\t} else {\n\t\t\tlevels.push(level);\n\t\t}\n\n\t\tdevice.alert_levels = levels;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tdevice: device,\n\t\t});\n\t}\n\n\tonTestAlert = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tDeviceActions.testAlert(this.props.device.id).then((): void => {\n\t\t\tAlert.success('Test alert sent');\n\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tDeviceActions.commit(this.state.device).then((): void => {\n\t\t\tAlert.success('Device name updated');\n\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t\tchanged: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tdevice: null,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tDeviceActions.remove(this.props.device.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet device: DeviceTypes.Device = this.state.device ||\n\t\t\tthis.props.device;\n\n\t\tlet isPhone: boolean = this.props.device.mode === 'phone';\n\n\t\tlet deviceType = 'Unknown';\n\t\tswitch (device.type) {\n\t\t\tcase 'webauthn':\n\t\t\t\tdeviceType = 'WebAuthn';\n\t\t\t\tbreak;\n\t\t\tcase 'u2f':\n\t\t\t\tdeviceType = 'U2F';\n\t\t\t\tbreak;\n\t\t\tcase 'smart_card':\n\t\t\t\tdeviceType = 'Smart Card';\n\t\t\t\tbreak;\n\t\t\tcase 'call':\n\t\t\t\tdeviceType = 'Call';\n\t\t\t\tbreak;\n\t\t\tcase 'message':\n\t\t\t\tdeviceType = 'SMS';\n\t\t\t\tbreak;\n\t\t}\n\n\t\tlet deviceMode = 'Unknown';\n\t\tswitch (device.mode) {\n\t\t\tcase 'secondary':\n\t\t\t\tdeviceMode = 'Secondary';\n\t\t\t\tbreak;\n\t\t\tcase 'ssh':\n\t\t\t\tdeviceMode = 'SSH';\n\t\t\t\tbreak;\n\t\t\tcase 'phone':\n\t\t\t\tdeviceMode = 'Phone';\n\t\t\t\tbreak;\n\t\t}\n\n\t\tlet deviceOther: PageInfos.Field;\n\t\tif (device.wan_rp_id) {\n\t\t\tdeviceOther = {\n\t\t\t\tlabel: 'WebAuthn Domain',\n\t\t\t\tvalue: device.wan_rp_id,\n\t\t\t};\n\t\t} else if (device.type === 'smart_card') {\n\t\t\tdeviceOther = {\n\t\t\t\tlabel: 'SSH Public Key',\n\t\t\t\tvalue: device.ssh_public_key,\n\t\t\t};\n\t\t} else if (device.type === 'call' || device.type === 'message') {\n\t\t\tdeviceOther = {\n\t\t\t\tlabel: 'Phone Number',\n\t\t\t\tvalue: device.number,\n\t\t\t};\n\t\t}\n\n\t\tlet alertIcon = 'bp3-icon-phone';\n\t\tif (device.type === 'message') {\n\t\t\talertIcon = 'bp3-icon-mobile-phone';\n\t\t}\n\n\t\tlet cardStyle = {\n\t\t\t...css.card,\n\t\t};\n\t\tif (device.disabled) {\n\t\t\tcardStyle.opacity = 0.6;\n\t\t}\n\n\t\tlet fields1: PageInfos.Field[];\n\t\tlet fields2: PageInfos.Field[];\n\n\t\tif (isPhone) {\n\t\t\tfields1 = [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'ID',\n\t\t\t\t\tvalue: device.id || 'None',\n\t\t\t\t},\n\t\t\t];\n\t\t\tfields2 = [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Type',\n\t\t\t\t\tvalue: deviceType,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Mode',\n\t\t\t\t\tvalue: deviceMode,\n\t\t\t\t},\n\t\t\t\tdeviceOther,\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Registered',\n\t\t\t\t\tvalue: MiscUtils.formatDate(device.timestamp) || 'Unknown',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Last Active',\n\t\t\t\t\tvalue: MiscUtils.formatDate(device.last_active) || 'Unknown',\n\t\t\t\t},\n\t\t\t];\n\t\t} else {\n\t\t\tfields1 = [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'ID',\n\t\t\t\t\tvalue: device.id || 'None',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Type',\n\t\t\t\t\tvalue: deviceType,\n\t\t\t\t},\n\t\t\t\tdeviceOther,\n\t\t\t];\n\t\t\tfields2 = [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Mode',\n\t\t\t\t\tvalue: deviceMode,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Registered',\n\t\t\t\t\tvalue: MiscUtils.formatDate(device.timestamp) || 'Unknown',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Last Active',\n\t\t\t\t\tvalue: MiscUtils.formatDate(device.last_active) || 'Unknown',\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\tlet testButton: JSX.Element;\n\t\tif (isPhone) {\n\t\t\ttestButton = {\n\t\t\t\t\tthis.onTestAlert();\n\t\t\t\t}}\n\t\t\t/>;\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggleLevel(1);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggleLevel(5);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggleLevel(10);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tdevice: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t>\n\t\t\t\t{testButton}\n\t\t\t\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as SuperAgent from 'superagent';\nimport * as WebAuthn from '@github/webauthn-json';\nimport * as DeviceTypes from '../types/DeviceTypes';\nimport DevicesStore from '../stores/DevicesStore';\nimport * as DeviceActions from '../actions/DeviceActions';\nimport * as Constants from \"../Constants\";\nimport NonState from './NonState';\nimport Device from './Device';\nimport PageHeader from './PageHeader';\nimport Loader from \"../Loader\";\nimport * as Csrf from \"../Csrf\";\nimport * as Alert from \"../Alert\";\n\ninterface Props {\n\tuserId: string;\n}\n\ninterface State {\n\tdevices: DeviceTypes.DevicesRo;\n\tdeviceType: string;\n\tdeviceName: string;\n\tdevicePubKey: string;\n\tdevicePhoneNumber: string;\n\tshowEnded: boolean;\n\tdisabled: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '15px 0 -5px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tmarginTop: '18px',\n\t} as React.CSSProperties,\n\tgroupBox: {\n\t} as React.CSSProperties,\n\tinputBox: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class Devices extends React.Component {\n\talertKey: string;\n\tu2fToken: string;\n\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdevices: DevicesStore.devices,\n\t\t\tdeviceName: '',\n\t\t\tdeviceType: '',\n\t\t\tdevicePubKey: '',\n\t\t\tdevicePhoneNumber: '',\n\t\t\tshowEnded: false,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tDevicesStore.addChangeListener(this.onChange);\n\t\tif (this.props.userId) {\n\t\t\tDeviceActions.load(this.props.userId);\n\t\t}\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tDevicesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdevices: DevicesStore.devices,\n\t\t});\n\t}\n\n\twanRegister = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\n\t\tlet loader = new Loader().loading();\n\n\t\tSuperAgent\n\t\t\t.get('/device/' + DevicesStore.userId + '/webauthn/register')\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to request device registration');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.wanCreate(res.body.token, res.body.options);\n\t\t\t});\n\t}\n\n\twanCreate = (token: string, options: any): void => {\n\t\tWebAuthn.create(options).then((cred: any): void => {\n\t\t\tcred.name = this.state.deviceName;\n\t\t\tcred.token = token;\n\t\t\tthis.wanRespond(cred);\n\t\t}).catch((err: any): void => {\n\t\t\tAlert.errorRes(err, 'Failed to register device');\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\twanRespond = (cred: any): void => {\n\t\tlet loader = new Loader().loading();\n\n\t\tSuperAgent\n\t\t\t.post('/device/' + DevicesStore.userId + '/webauthn/register')\n\t\t\t.send(cred)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tdeviceName: '',\n\t\t\t\t});\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to register device');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tAlert.success('Successfully registered device');\n\t\t\t});\n\t}\n\n\taddDevice = (): void => {\n\t\tif (this.state.deviceType === 'smart_card') {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: true,\n\t\t\t});\n\n\t\t\tDeviceActions.create({\n\t\t\t\tid: null,\n\t\t\t\tuser: this.props.userId,\n\t\t\t\tname: this.state.deviceName,\n\t\t\t\ttype: this.state.deviceType,\n\t\t\t\tmode: 'ssh',\n\t\t\t\tssh_public_key: this.state.devicePubKey,\n\t\t\t}).then((): void => {\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tdeviceName: '',\n\t\t\t\t\tdevicePubKey: '',\n\t\t\t\t\tdevicePhoneNumber: '',\n\t\t\t\t});\n\n\t\t\t\tAlert.success('Successfully registered device');\n\t\t\t}).catch((): void => {\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tdisabled: false,\n\t\t\t\t});\n\t\t\t});\n\t\t} else if (this.state.deviceType === 'phone_call' ||\n\t\t\tthis.state.deviceType === 'phone_message') {\n\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: true,\n\t\t\t});\n\n\t\t\tlet deviceTypes = this.state.deviceType.split('_');\n\t\t\tlet deviceMode = deviceTypes[0];\n\t\t\tlet deviceType = deviceTypes[1];\n\n\t\t\tDeviceActions.create({\n\t\t\t\tid: null,\n\t\t\t\tuser: this.props.userId,\n\t\t\t\tname: this.state.deviceName,\n\t\t\t\ttype: deviceType,\n\t\t\t\tmode: deviceMode,\n\t\t\t\tnumber: this.state.devicePhoneNumber,\n\t\t\t}).then((): void => {\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tdeviceName: '',\n\t\t\t\t\tdevicePubKey: '',\n\t\t\t\t\tdevicePhoneNumber: '',\n\t\t\t\t});\n\n\t\t\t\tAlert.success('Successfully registered device');\n\t\t\t}).catch((): void => {\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tdisabled: false,\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tthis.wanRegister();\n\t\t}\n\t}\n\n\trender(): JSX.Element {\n\t\tif (!this.props.userId) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet devices: JSX.Element[] = [];\n\n\t\tthis.state.devices.forEach((device: DeviceTypes.DeviceRo): void => {\n\t\t\tdevices.push();\n\t\t});\n\n\t\treturn
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    User Devices

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\tdeviceType: evt.target.value,\n\t\t\t\t\t\t\t\t\t\t\tdevicePubKey: '',\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\tdeviceName: evt.target.value,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonKeyPress={(evt): void => {\n\t\t\t\t\t\t\t\t\t\tif (this.state.deviceType !== 'smart_card' &&\n\t\t\t\t\t\t\t\t\t\t\t\tevt.key === 'Enter') {\n\t\t\t\t\t\t\t\t\t\t\tthis.addDevice();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\tdevicePubKey: evt.target.value,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonKeyPress={(evt): void => {\n\t\t\t\t\t\t\t\t\t\tif (evt.key === 'Enter') {\n\t\t\t\t\t\t\t\t\t\t\tthis.addDevice();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\tdevicePhoneNumber: evt.target.value,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonKeyPress={(evt): void => {\n\t\t\t\t\t\t\t\t\t\tif (evt.key === 'Enter') {\n\t\t\t\t\t\t\t\t\t\t\tthis.addDevice();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tAdd Device\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{devices}\n\t\t\t
    \n\t\t\t\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as AuditTypes from '../types/AuditTypes';\nimport * as Constants from '../Constants';\nimport * as AgentUtils from '../utils/AgentUtils';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport PageInfo from './PageInfo';\n\ninterface Props {\n\taudit: AuditTypes.AuditRo;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tinfo: {\n\t\tmarginBottom: '-5px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '290px',\n\t} as React.CSSProperties,\n};\n\nexport default class Audit extends React.Component {\n\trender(): JSX.Element {\n\t\tlet audit = this.props.audit;\n\t\tlet agent = audit.agent || {};\n\n\t\tlet fields: string[] = [];\n\t\tfor (let key in audit.fields) {\n\t\t\tif (!audit.fields.hasOwnProperty(key)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfields.push(key + ': ' + audit.fields[key]);\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport AuditsStore from '../stores/AuditsStore';\nimport * as AuditActions from '../actions/AuditActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class AuditsPage extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: AuditsStore.page,\n\t\t\tpageCount: AuditsStore.pageCount,\n\t\t\tpages: AuditsStore.pages,\n\t\t\tcount: AuditsStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tAuditsStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tAuditsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: AuditsStore.page,\n\t\t\tpageCount: AuditsStore.pageCount,\n\t\t\tpages: AuditsStore.pages,\n\t\t\tcount: AuditsStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tAuditActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tAuditActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tAuditActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tAuditActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tAuditActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as AuditTypes from '../types/AuditTypes';\nimport AuditsStore from '../stores/AuditsStore';\nimport * as AuditActions from '../actions/AuditActions';\nimport NonState from './NonState';\nimport Audit from './Audit';\nimport PageHeader from './PageHeader';\nimport AuditsPage from './AuditsPage';\n\ninterface Props {\n\tuserId: string;\n}\n\ninterface State {\n\taudits: AuditTypes.AuditsRo;\n\tdisabled: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '10px 0 0 0',\n\t} as React.CSSProperties,\n};\n\nexport default class Audits extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\taudits: AuditsStore.audits,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tAuditsStore.addChangeListener(this.onChange);\n\t\tif (this.props.userId) {\n\t\t\tAuditActions.load(this.props.userId);\n\t\t}\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tAuditsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\taudits: AuditsStore.audits,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tif (!this.props.userId) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet audits: JSX.Element[] = [];\n\n\t\tthis.state.audits.forEach((\n\t\t\t\taudit: AuditTypes.AuditRo): void => {\n\t\t\taudits.push();\n\t\t});\n\n\t\treturn
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    User Audit Events

    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t{audits}\n\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t
    ;\n\t}\n}\n","/// \nimport * as AgentTypes from './AgentTypes';\n\nexport const SYNC = 'sshcertificate.sync';\nexport const TRAVERSE = 'sshcertificate.traverse';\nexport const CHANGE = 'sshcertificate.change';\n\nexport interface Info {\n\tserial?: string;\n\texpires?: string;\n\tprincipals?: string[];\n\textensions?: string[];\n}\n\nexport interface Sshcertificate {\n\tid: string;\n\tuser_id?: string;\n\tauthority_ids?: string[];\n\ttimestamp?: string;\n\tagent?: AgentTypes.Agent;\n\tcertificates_info?: Info[];\n}\n\nexport type Sshcertificates = Sshcertificate[];\n\nexport type SshcertificateRo = Readonly;\nexport type SshcertificatesRo = ReadonlyArray;\n\nexport interface SshcertificateDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tuserId?: string;\n\t\tcertificate?: Sshcertificate;\n\t\tcertificates?: Sshcertificates;\n\t\tpage?: number;\n\t\tcount?: number;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as SshcertificateTypes from '../types/SshcertificateTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass SshcertificatesStore extends EventEmitter {\n\t_userId: string;\n\t_sshcertificates: SshcertificateTypes.SshcertificatesRo = Object.freeze([]);\n\t_page: number;\n\t_pageCount: number;\n\t_count: number;\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget userId(): string {\n\t\treturn this._userId;\n\t}\n\n\tget sshcertificates(): SshcertificateTypes.SshcertificatesRo {\n\t\treturn this._sshcertificates;\n\t}\n\n\tget sshcertificatesM(): SshcertificateTypes.Sshcertificates {\n\t\tlet sshcertificates: SshcertificateTypes.Sshcertificates = [];\n\t\tthis._sshcertificates.forEach((\n\t\t\t\tsshcertificate: SshcertificateTypes.SshcertificateRo): void => {\n\t\t\tsshcertificates.push({\n\t\t\t\t...sshcertificate,\n\t\t\t});\n\t\t});\n\t\treturn sshcertificates;\n\t}\n\n\tget page(): number {\n\t\treturn this._page || 0;\n\t}\n\n\tget pageCount(): number {\n\t\treturn this._pageCount || 10;\n\t}\n\n\tget pages(): number {\n\t\treturn Math.ceil(this.count / this.pageCount);\n\t}\n\n\tget count(): number {\n\t\treturn this._count || 0;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_traverse(page: number): void {\n\t\tthis._page = Math.min(this.pages, page);\n\t}\n\n\t_sync(userId: string, certs: SshcertificateTypes.Sshcertificate[],\n\t\t\tcount: number): void {\n\t\tthis._userId = userId;\n\n\t\tfor (let i = 0; i < certs.length; i++) {\n\t\t\tcerts[i] = Object.freeze(certs[i]);\n\t\t}\n\n\t\tthis._count = count;\n\t\tthis._sshcertificates = Object.freeze(certs);\n\t\tthis._page = Math.min(this.pages, this.page);\n\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: SshcertificateTypes.SshcertificateDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase SshcertificateTypes.TRAVERSE:\n\t\t\t\tthis._traverse(action.data.page);\n\t\t\t\tbreak;\n\n\t\t\tcase SshcertificateTypes.SYNC:\n\t\t\t\tthis._sync(action.data.userId, action.data.certificates,\n\t\t\t\t\taction.data.count);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new SshcertificatesStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as SshcertificateTypes from '../types/SshcertificateTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport SshcertificatesStore from '../stores/SshcertificatesStore';\n\nlet syncId: string;\n\nexport function load(userId: string): Promise {\n\tif (!userId) {\n\t\treturn Promise.resolve();\n\t}\n\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/sshcertificate/' + userId)\n\t\t\t.query({\n\t\t\t\tpage: SshcertificatesStore.page,\n\t\t\t\tpage_count: SshcertificatesStore.pageCount,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load SSH certificates');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: SshcertificateTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tuserId: userId,\n\t\t\t\t\t\tcertificates: res.body.certificates,\n\t\t\t\t\t\tcount: res.body.count,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function reload(): Promise {\n\treturn load(SshcertificatesStore.userId);\n}\n\nexport function traverse(page: number): Promise {\n\tDispatcher.dispatch({\n\t\ttype: SshcertificateTypes.TRAVERSE,\n\t\tdata: {\n\t\t\tpage: page,\n\t\t},\n\t});\n\n\treturn reload();\n}\n\nEventDispatcher.register((\n\t\taction: SshcertificateTypes.SshcertificateDispatch) => {\n\tswitch (action.type) {\n\t\tcase SshcertificateTypes.CHANGE:\n\t\t\treload();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as React from 'react';\nimport * as SshcertificateTypes from '../types/SshcertificateTypes';\nimport * as AgentUtils from '../utils/AgentUtils';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport PageInfo from './PageInfo';\n\ninterface Props {\n\tsshcertificate: SshcertificateTypes.SshcertificateRo;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tinfo: {\n\t\tmarginBottom: '-5px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '290px',\n\t} as React.CSSProperties,\n};\n\nexport default class Sshcertificate extends React.Component {\n\trender(): JSX.Element {\n\t\tlet sshcertificate = this.props.sshcertificate;\n\t\tlet agent = sshcertificate.agent || {};\n\n\t\tlet certsInfo: string[] = [];\n\t\tfor (let info of sshcertificate.certificates_info) {\n\t\t\tcertsInfo.push(info.serial + ': ' + MiscUtils.formatDateShortTime(\n\t\t\t\tinfo.expires));\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport SshcertificatesStore from '../stores/SshcertificatesStore';\nimport * as SshcertificateActions from '../actions/SshcertificateActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class SshcertificatesPage extends React.Component<\n\t\tProps, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: SshcertificatesStore.page,\n\t\t\tpageCount: SshcertificatesStore.pageCount,\n\t\t\tpages: SshcertificatesStore.pages,\n\t\t\tcount: SshcertificatesStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tSshcertificatesStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tSshcertificatesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: SshcertificatesStore.page,\n\t\t\tpageCount: SshcertificatesStore.pageCount,\n\t\t\tpages: SshcertificatesStore.pages,\n\t\t\tcount: SshcertificatesStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tSshcertificateActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tSshcertificateActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tSshcertificateActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tSshcertificateActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tSshcertificateActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as SshcertificateTypes from '../types/SshcertificateTypes';\nimport SshcertificatesStore from '../stores/SshcertificatesStore';\nimport * as SshcertificateActions from '../actions/SshcertificateActions';\nimport NonState from './NonState';\nimport Sshcertificate from './Sshcertificate';\nimport PageHeader from './PageHeader';\nimport SshcertificatesPage from './SshcertificatesPage';\n\ninterface Props {\n\tuserId: string;\n}\n\ninterface State {\n\tsshcertificates: SshcertificateTypes.SshcertificatesRo;\n\tdisabled: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '15px 0 0 0',\n\t} as React.CSSProperties,\n};\n\nexport default class Sshcertificates extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tsshcertificates: SshcertificatesStore.sshcertificates,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tSshcertificatesStore.addChangeListener(this.onChange);\n\t\tif (this.props.userId) {\n\t\t\tSshcertificateActions.load(this.props.userId);\n\t\t}\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tSshcertificatesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tsshcertificates: SshcertificatesStore.sshcertificates,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tif (!this.props.userId) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet sshcertificates: JSX.Element[] = [];\n\n\t\tthis.state.sshcertificates.forEach((\n\t\t\t\tsshcertificate: SshcertificateTypes.SshcertificateRo): void => {\n\t\t\tsshcertificates.push();\n\t\t});\n\n\t\treturn
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    User SSH Certificates

    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t{sshcertificates}\n\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\n\ninterface Props {\n\tclassName?: string;\n\thidden?: boolean;\n}\n\nconst css = {\n\tpanel: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tpadding: '0 10px',\n\t} as React.CSSProperties,\n};\n\nexport default class PagePanel extends React.Component {\n\trender(): JSX.Element {\n\t\treturn \n\t\t\t{this.props.children}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\n\nexport default class PageSplit extends React.Component<{}, {}> {\n\trender(): JSX.Element {\n\t\treturn
    \n\t\t\t{this.props.children}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport Help from './Help';\nimport ConfirmButton from './ConfirmButton';\n\ninterface Props {\n\tbuttonClass?: string;\n\thidden?: boolean;\n\tdisabled?: boolean;\n\tbuttonConfirm?: boolean;\n\tbuttonDisabled?: boolean;\n\treadOnly?: boolean;\n\tautoSelect?: boolean;\n\tlabel?: string;\n\tlabelTop?: boolean;\n\tlistStyle?: boolean;\n\thelp?: string;\n\ttype: string;\n\tplaceholder?: string;\n\tvalue: string;\n\tonChange?: (val: string) => void;\n\tonSubmit: () => void;\n}\n\nconst css = {\n\tgroup: {\n\t\tmarginBottom: '15px',\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tgroupList: {\n\t\tmarginTop: '5px',\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tgroupTop: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tinputBox: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n\tbuttonTop: {\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n};\n\nexport default class PageInputButton extends React.Component {\n\tautoSelect = (evt: React.MouseEvent): void => {\n\t\tevt.currentTarget.select();\n\t}\n\n\trender(): JSX.Element {\n\t\tlet buttonClass = 'bp3-button';\n\t\tif (this.props.buttonClass) {\n\t\t\tbuttonClass += ' ' + this.props.buttonClass;\n\t\t}\n\n\t\tlet buttonLabel = '';\n\t\tlet buttonStyle: React.CSSProperties;\n\t\tif (this.props.labelTop) {\n\t\t\tbuttonStyle = css.buttonTop;\n\t\t} else {\n\t\t\tbuttonLabel = this.props.label || '';\n\t\t}\n\n\t\tlet button: JSX.Element;\n\t\tif (this.props.buttonConfirm) {\n\t\t\tbutton = ;\n\t\t} else {\n\t\t\tbutton = {buttonLabel};\n\t\t}\n\n\t\tif (this.props.labelTop) {\n\t\t\treturn \n\t\t\t\t{this.props.label}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (this.props.onChange) {\n\t\t\t\t\t\t\t\t\tthis.props.onChange(evt.target.value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonKeyPress={(evt): void => {\n\t\t\t\t\t\t\t\tif (evt.key === 'Enter') {\n\t\t\t\t\t\t\t\t\tthis.props.onSubmit();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t{button}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t;\n\t\t} else {\n\t\t\treturn \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (this.props.onChange) {\n\t\t\t\t\t\t\t\tthis.props.onChange(evt.target.value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonKeyPress={(evt): void => {\n\t\t\t\t\t\t\tif (evt.key === 'Enter') {\n\t\t\t\t\t\t\t\tthis.props.onSubmit();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{button}\n\t\t\t\t
    \n\t\t\t
    ;\n\t\t}\n\t}\n}\n","/// \nimport * as React from 'react';\nimport Help from './Help';\n\ninterface Props {\n\thidden?: boolean;\n\tdisabled?: boolean;\n\tlabel: string;\n\thelp: string;\n\tvalue: string;\n\tonChange: (val: string) => void;\n}\n\nconst css = {\n\tlabel: {\n\t\tdisplay: 'inline-block',\n\t} as React.CSSProperties,\n};\n\nexport default class PageSelect extends React.Component {\n\trender(): JSX.Element {\n\t\treturn ;\n\t}\n}\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Classes } from \"@blueprintjs/core\";\n\nconst NS = Classes.getClassNamespace();\n\nexport const DATEINPUT = `${NS}-dateinput`;\nexport const DATEINPUT_POPOVER = `${DATEINPUT}-popover`;\n\nexport const DATEPICKER = `${NS}-datepicker`;\nexport const DATEPICKER_CAPTION = `${DATEPICKER}-caption`;\nexport const DATEPICKER_CAPTION_CARET = `${DATEPICKER_CAPTION}-caret`;\nexport const DATEPICKER_CAPTION_MEASURE = `${DATEPICKER_CAPTION}-measure`;\nexport const DATEPICKER_CAPTION_SELECT = `${DATEPICKER_CAPTION}-select`;\nexport const DATEPICKER_DAY = \"DayPicker-Day\";\nexport const DATEPICKER_DAY_DISABLED = `${DATEPICKER_DAY}--disabled`;\nexport const DATEPICKER_DAY_OUTSIDE = `${DATEPICKER_DAY}--outside`;\nexport const DATEPICKER_DAY_SELECTED = `${DATEPICKER_DAY}--selected`;\nexport const DATEPICKER_DAY_IS_TODAY = `${DATEPICKER_DAY}--isToday`;\nexport const DATEPICKER_DAY_WRAPPER = `${DATEPICKER}-day-wrapper`;\nexport const DATEPICKER_FOOTER = `${DATEPICKER}-footer`;\nexport const DATEPICKER_MONTH_SELECT = `${DATEPICKER}-month-select`;\nexport const DATEPICKER_YEAR_SELECT = `${DATEPICKER}-year-select`;\nexport const DATEPICKER_NAVBAR = `${DATEPICKER}-navbar`;\nexport const DATEPICKER_NAVBUTTON = `DayPicker-NavButton`;\nexport const DATEPICKER_TIMEPICKER_WRAPPER = `${DATEPICKER}-timepicker-wrapper`;\n\nexport const DATERANGEPICKER = `${NS}-daterangepicker`;\nexport const DATERANGEPICKER_CONTIGUOUS = `${DATERANGEPICKER}-contiguous`;\nexport const DATERANGEPICKER_SINGLE_MONTH = `${DATERANGEPICKER}-single-month`;\nexport const DATERANGEPICKER_DAY_SELECTED_RANGE = `${DATEPICKER_DAY}--selected-range`;\nexport const DATERANGEPICKER_DAY_HOVERED_RANGE = `${DATEPICKER_DAY}--hovered-range`;\nexport const DATERANGEPICKER_SHORTCUTS = `${DATERANGEPICKER}-shortcuts`;\nexport const DATERANGEPICKER_TIMEPICKERS = `${DATERANGEPICKER}-timepickers`;\n\nexport const DATETIMEPICKER = `${NS}-datetimepicker`;\n\nexport const TIMEPICKER = `${NS}-timepicker`;\nexport const TIMEPICKER_ARROW_BUTTON = `${TIMEPICKER}-arrow-button`;\nexport const TIMEPICKER_ARROW_ROW = `${TIMEPICKER}-arrow-row`;\nexport const TIMEPICKER_DIVIDER_TEXT = `${TIMEPICKER}-divider-text`;\nexport const TIMEPICKER_HOUR = `${TIMEPICKER}-hour`;\nexport const TIMEPICKER_INPUT = `${TIMEPICKER}-input`;\nexport const TIMEPICKER_INPUT_ROW = `${TIMEPICKER}-input-row`;\nexport const TIMEPICKER_MILLISECOND = `${TIMEPICKER}-millisecond`;\nexport const TIMEPICKER_MINUTE = `${TIMEPICKER}-minute`;\nexport const TIMEPICKER_SECOND = `${TIMEPICKER}-second`;\nexport const TIMEPICKER_AMPM_SELECT = `${TIMEPICKER}-ampm-select`;\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DateRange } from \"./dateRange\";\nimport { Months } from \"./months\";\n\nexport function isDateValid(date: Date | false | null): date is Date {\n return date instanceof Date && !isNaN(date.valueOf());\n}\n\nexport function areEqual(date1: Date, date2: Date) {\n if (date1 == null && date2 == null) {\n return true;\n } else if (date1 == null || date2 == null) {\n return false;\n } else {\n return date1.getTime() === date2.getTime();\n }\n}\n\nexport function areRangesEqual(dateRange1: DateRange, dateRange2: DateRange) {\n if (dateRange1 == null && dateRange2 == null) {\n return true;\n } else if (dateRange1 == null || dateRange2 == null) {\n return false;\n } else {\n const [start1, end1] = dateRange1;\n const [start2, end2] = dateRange2;\n const areStartsEqual = (start1 == null && start2 == null) || areSameDay(start1, start2);\n const areEndsEqual = (end1 == null && end2 == null) || areSameDay(end1, end2);\n return areStartsEqual && areEndsEqual;\n }\n}\n\nexport function areSameDay(date1: Date, date2: Date) {\n return areSameMonth(date1, date2) && date1.getDate() === date2.getDate();\n}\n\nexport function areSameMonth(date1: Date, date2: Date) {\n return (\n date1 != null &&\n date2 != null &&\n date1.getMonth() === date2.getMonth() &&\n date1.getFullYear() === date2.getFullYear()\n );\n}\n\nexport function areSameTime(date1: Date, date2: Date) {\n return (\n date1 != null &&\n date2 != null &&\n date1.getHours() === date2.getHours() &&\n date1.getMinutes() === date2.getMinutes() &&\n date1.getSeconds() === date2.getSeconds() &&\n date1.getMilliseconds() === date2.getMilliseconds()\n );\n}\n\nexport function clone(d: Date) {\n return new Date(d.getTime());\n}\n\nexport function isDayInRange(date: Date, dateRange: DateRange, exclusive = false) {\n if (date == null) {\n return false;\n }\n\n const day = clone(date);\n const start = clone(dateRange[0]);\n const end = clone(dateRange[1]);\n\n day.setHours(0, 0, 0, 0);\n start.setHours(0, 0, 0, 0);\n end.setHours(0, 0, 0, 0);\n\n return start <= day && day <= end && (!exclusive || (!areSameDay(start, day) && !areSameDay(day, end)));\n}\n\nexport function isDayRangeInRange(innerRange: DateRange, outerRange: DateRange) {\n return (\n (innerRange[0] == null || isDayInRange(innerRange[0], outerRange)) &&\n (innerRange[1] == null || isDayInRange(innerRange[1], outerRange))\n );\n}\n\nexport function isMonthInRange(date: Date, dateRange: DateRange) {\n if (date == null) {\n return false;\n }\n\n const day = clone(date);\n const start = clone(dateRange[0]);\n const end = clone(dateRange[1]);\n\n day.setDate(1);\n start.setDate(1);\n end.setDate(1);\n day.setHours(0, 0, 0, 0);\n start.setHours(0, 0, 0, 0);\n end.setHours(0, 0, 0, 0);\n\n return start <= day && day <= end;\n}\n\nexport const isTimeEqualOrGreaterThan = (time: Date, timeToCompare: Date) => time.getTime() >= timeToCompare.getTime();\nexport const isTimeEqualOrSmallerThan = (time: Date, timeToCompare: Date) => time.getTime() <= timeToCompare.getTime();\n\nexport function isTimeInRange(date: Date, minDate: Date, maxDate: Date): boolean {\n const time = getDateOnlyWithTime(date);\n const minTime = getDateOnlyWithTime(minDate);\n const maxTime = getDateOnlyWithTime(maxDate);\n\n const isTimeGreaterThanMinTime = isTimeEqualOrGreaterThan(time, minTime);\n const isTimeSmallerThanMaxTime = isTimeEqualOrSmallerThan(time, maxTime);\n\n if (isTimeEqualOrSmallerThan(maxTime, minTime)) {\n return isTimeGreaterThanMinTime || isTimeSmallerThanMaxTime;\n }\n\n return isTimeGreaterThanMinTime && isTimeSmallerThanMaxTime;\n}\n\nexport function getTimeInRange(time: Date, minTime: Date, maxTime: Date) {\n if (areSameTime(minTime, maxTime)) {\n return maxTime;\n } else if (isTimeInRange(time, minTime, maxTime)) {\n return time;\n } else if (isTimeSameOrAfter(time, maxTime)) {\n return maxTime;\n }\n\n return minTime;\n}\n\n/**\n * Returns true if the time part of `date` is later than or equal to the time\n * part of `dateToCompare`. The day, month, and year parts will not be compared.\n */\nexport function isTimeSameOrAfter(date: Date, dateToCompare: Date): boolean {\n const time = getDateOnlyWithTime(date);\n const timeToCompare = getDateOnlyWithTime(dateToCompare);\n\n return isTimeEqualOrGreaterThan(time, timeToCompare);\n}\n\n/**\n * @returns a Date at the exact time-wise midpoint between startDate and endDate\n */\nexport function getDateBetween(dateRange: DateRange) {\n const start = dateRange[0].getTime();\n const end = dateRange[1].getTime();\n const middle = start + (end - start) * 0.5;\n return new Date(middle);\n}\n\nexport function getDateTime(date: Date | null, time?: Date | null) {\n if (date == null) {\n return null;\n } else if (time == null) {\n // cannot use default argument because `null` is a common value in this package.\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0);\n } else {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n time.getHours(),\n time.getMinutes(),\n time.getSeconds(),\n time.getMilliseconds(),\n );\n }\n}\n\nexport function getDateOnlyWithTime(date: Date): Date {\n return new Date(0, 0, 0, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n}\n\nexport function getDatePreviousMonth(date: Date): Date {\n if (date.getMonth() === Months.JANUARY) {\n return new Date(date.getFullYear() - 1, Months.DECEMBER);\n } else {\n return new Date(date.getFullYear(), date.getMonth() - 1);\n }\n}\n\nexport function getDateNextMonth(date: Date): Date {\n if (date.getMonth() === Months.DECEMBER) {\n return new Date(date.getFullYear() + 1, Months.JANUARY);\n } else {\n return new Date(date.getFullYear(), date.getMonth() + 1);\n }\n}\n\nexport function convert24HourMeridiem(hour: number, toPm: boolean): number {\n if (hour < 0 || hour > 23) {\n throw new Error(`hour must be between [0,23] inclusive: got ${hour}`);\n }\n return toPm ? (hour % 12) + 12 : hour % 12;\n}\n\nexport function getIsPmFrom24Hour(hour: number): boolean {\n if (hour < 0 || hour > 23) {\n throw new Error(`hour must be between [0,23] inclusive: got ${hour}`);\n }\n return hour >= 12;\n}\n\nexport function get12HourFrom24Hour(hour: number): number {\n if (hour < 0 || hour > 23) {\n throw new Error(`hour must be between [0,23] inclusive: got ${hour}`);\n }\n const newHour = hour % 12;\n return newHour === 0 ? 12 : newHour;\n}\n\nexport function get24HourFrom12Hour(hour: number, isPm: boolean): number {\n if (hour < 1 || hour > 12) {\n throw new Error(`hour must be between [1,12] inclusive: got ${hour}`);\n }\n const newHour = hour === 12 ? 0 : hour;\n return isPm ? newHour + 12 : newHour;\n}\n\nexport function isToday(date: Date): boolean {\n return areSameDay(date, new Date());\n}\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst ns = \"[Blueprint]\";\n\nexport const DATEPICKER_DEFAULT_VALUE_INVALID =\n ns + ` defaultValue must be within minDate and maxDate bounds.`;\nexport const DATEPICKER_INITIAL_MONTH_INVALID =\n ns + ` initialMonth must be within minDate and maxDate bounds.`;\nexport const DATEPICKER_MAX_DATE_INVALID = ns + ` maxDate must be later than minDate.`;\nexport const DATEPICKER_VALUE_INVALID = ns + ` value prop must be within minDate and maxDate bounds.`;\n\nexport const DATERANGEPICKER_DEFAULT_VALUE_INVALID = DATEPICKER_DEFAULT_VALUE_INVALID.replace(\n \"DatePicker\",\n \"DateRangePicker\",\n);\nexport const DATERANGEPICKER_INITIAL_MONTH_INVALID = DATEPICKER_INITIAL_MONTH_INVALID.replace(\n \"DatePicker\",\n \"DateRangePicker\",\n);\nexport const DATERANGEPICKER_MAX_DATE_INVALID = DATEPICKER_MAX_DATE_INVALID.replace(\"DatePicker\", \"DateRangePicker\");\nexport const DATERANGEPICKER_VALUE_INVALID = DATEPICKER_VALUE_INVALID.replace(\"DatePicker\", \"DateRangePicker\");\nexport const DATERANGEPICKER_PREFERRED_BOUNDARY_TO_MODIFY_INVALID =\n \" preferredBoundaryToModify must be a valid Boundary if defined.\";\n\nexport const DATERANGEINPUT_NULL_VALUE =\n ns +\n ` value cannot be null. Pass undefined to clear the value and operate in` +\n \" uncontrolled mode, or pass [null, null] to clear the value and continue operating in controlled mode.\";\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Measure width in pixels of a string displayed with styles provided by `className`.\n * Should only be used if measuring can't be done with existing DOM elements.\n */\nexport function measureTextWidth(text: string, className = \"\", containerElement = document.body) {\n if (containerElement == null) {\n return 0;\n }\n const span = document.createElement(\"span\");\n span.classList.add(className);\n span.textContent = text;\n\n containerElement.appendChild(span);\n const spanWidth = span.offsetWidth;\n span.remove();\n\n return spanWidth;\n}\n\nexport function padWithZeroes(str: string, minLength: number) {\n if (str.length < minLength) {\n return `${stringRepeat(\"0\", minLength - str.length)}${str}`;\n } else {\n return str;\n }\n}\n\nfunction stringRepeat(str: string, numTimes: number) {\n return new Array(numTimes + 1).join(str);\n}\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as React from \"react\";\nimport { CaptionElementProps } from \"react-day-picker\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Divider, HTMLSelect, Icon, OptionProps } from \"@blueprintjs/core\";\n\nimport * as Classes from \"./common/classes\";\nimport { clone } from \"./common/dateUtils\";\nimport { measureTextWidth } from \"./common/utils\";\n\nexport interface IDatePickerCaptionProps extends CaptionElementProps {\n maxDate: Date;\n minDate: Date;\n onMonthChange?: (month: number) => void;\n onYearChange?: (year: number) => void;\n /** Callback invoked when the month or year `\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t{this.props.label}\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as NodeTypes from '../types/NodeTypes';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport * as CertificateTypes from '../types/CertificateTypes';\nimport * as NodeActions from '../actions/NodeActions';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport CertificatesStore from '../stores/CertificatesStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport ServicesStore from '../stores/ServicesStore';\nimport PageInput from './PageInput';\nimport PageSwitch from './PageSwitch';\nimport PageInputSwitch from './PageInputSwitch';\nimport PageSelectButton from './PageSelectButton';\nimport PageInfo from './PageInfo';\nimport PageSave from './PageSave';\nimport ConfirmButton from './ConfirmButton';\nimport Help from './Help';\n\ninterface Props {\n\tnode: NodeTypes.NodeRo;\n\tservices: ServiceTypes.ServicesRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tcertificates: CertificateTypes.CertificatesRo;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\tnode: NodeTypes.Node;\n\taddService: string;\n\taddCert: string;\n\taddAuthority: string;\n\tforwardedChecked: boolean;\n\tforwardedProtoChecked: boolean;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px 10px 0 10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tprotocol: {\n\t\tminWidth: '90px',\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n\tport: {\n\t\tminWidth: '120px',\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class Node extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\tnode: null,\n\t\t\taddService: null,\n\t\t\taddAuthority: null,\n\t\t\taddCert: null,\n\t\t\tforwardedChecked: false,\n\t\t\tforwardedProtoChecked: false,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet node: any;\n\n\t\tif (this.state.changed) {\n\t\t\tnode = {\n\t\t\t\t...this.state.node,\n\t\t\t};\n\t\t} else {\n\t\t\tnode = {\n\t\t\t\t...this.props.node,\n\t\t\t};\n\t\t}\n\n\t\tnode[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tnode: node,\n\t\t});\n\t}\n\n\ttoggleType(typ: string): void {\n\t\tlet node: NodeTypes.Node = this.state.node || this.props.node;\n\n\t\tlet vals = (node.type || '').split('_');\n\n\t\tlet i = vals.indexOf(typ);\n\t\tif (i === -1) {\n\t\t\tvals.push(typ);\n\t\t} else {\n\t\t\tvals.splice(i, 1);\n\t\t}\n\n\t\tvals = vals.filter((val): boolean => {\n\t\t\treturn !!val;\n\t\t});\n\n\t\tvals.sort();\n\n\t\tlet val = vals.join('_');\n\t\tif (val === '') {\n\t\t\tval = 'management';\n\t\t}\n\n\t\tthis.set('type', val);\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tNodeActions.commit(this.state.node).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tnode: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tNodeActions.remove(this.props.node.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddService = (): void => {\n\t\tlet node: NodeTypes.Node;\n\n\t\tif (!this.state.addService && !this.props.services.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet serviceId = this.state.addService || this.props.services[0].id;\n\n\t\tif (this.state.changed) {\n\t\t\tnode = {\n\t\t\t\t...this.state.node,\n\t\t\t};\n\t\t} else {\n\t\t\tnode = {\n\t\t\t\t...this.props.node,\n\t\t\t};\n\t\t}\n\n\t\tlet services = [\n\t\t\t...(node.services || []),\n\t\t];\n\n\t\tif (services.indexOf(serviceId) === -1) {\n\t\t\tservices.push(serviceId);\n\t\t}\n\n\t\tservices.sort();\n\n\t\tnode.services = services;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tnode: node,\n\t\t});\n\t}\n\n\tonRemoveService = (service: string): void => {\n\t\tlet node: NodeTypes.Node;\n\n\t\tif (this.state.changed) {\n\t\t\tnode = {\n\t\t\t\t...this.state.node,\n\t\t\t};\n\t\t} else {\n\t\t\tnode = {\n\t\t\t\t...this.props.node,\n\t\t\t};\n\t\t}\n\n\t\tlet services = [\n\t\t\t...(node.services || []),\n\t\t];\n\n\t\tlet i = services.indexOf(service);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tservices.splice(i, 1);\n\n\t\tnode.services = services;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tnode: node,\n\t\t});\n\t}\n\n\tonAddAuthority = (): void => {\n\t\tlet node: NodeTypes.Node;\n\n\t\tif (!this.state.addAuthority && !this.props.authorities.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet authorityId = this.state.addAuthority;\n\n\t\tif (!authorityId) {\n\t\t\tfor (let authority of this.props.authorities) {\n\t\t\t\tif (!authority.proxy_hosting) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tauthorityId = authority.id;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (this.state.changed) {\n\t\t\tnode = {\n\t\t\t\t...this.state.node,\n\t\t\t};\n\t\t} else {\n\t\t\tnode = {\n\t\t\t\t...this.props.node,\n\t\t\t};\n\t\t}\n\n\t\tlet authorities = [\n\t\t\t...(node.authorities || []),\n\t\t];\n\n\t\tif (authorities.indexOf(authorityId) === -1) {\n\t\t\tauthorities.push(authorityId);\n\t\t}\n\n\t\tauthorities.sort();\n\n\t\tnode.authorities = authorities;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tnode: node,\n\t\t});\n\t}\n\n\tonRemoveAuthority = (authority: string): void => {\n\t\tlet node: NodeTypes.Node;\n\n\t\tif (this.state.changed) {\n\t\t\tnode = {\n\t\t\t\t...this.state.node,\n\t\t\t};\n\t\t} else {\n\t\t\tnode = {\n\t\t\t\t...this.props.node,\n\t\t\t};\n\t\t}\n\n\t\tlet authorities = [\n\t\t\t...(node.authorities || []),\n\t\t];\n\n\t\tlet i = authorities.indexOf(authority);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tauthorities.splice(i, 1);\n\n\t\tnode.authorities = authorities;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tnode: node,\n\t\t});\n\t}\n\n\tonAddCert = (): void => {\n\t\tlet node: NodeTypes.Node;\n\n\t\tif (!this.state.addCert && !this.props.certificates.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet certId = this.state.addCert || this.props.certificates[0].id;\n\n\t\tif (this.state.changed) {\n\t\t\tnode = {\n\t\t\t\t...this.state.node,\n\t\t\t};\n\t\t} else {\n\t\t\tnode = {\n\t\t\t\t...this.props.node,\n\t\t\t};\n\t\t}\n\n\t\tlet certificates = [\n\t\t\t...(node.certificates || []),\n\t\t];\n\n\t\tif (certificates.indexOf(certId) === -1) {\n\t\t\tcertificates.push(certId);\n\t\t}\n\n\t\tcertificates.sort();\n\n\t\tnode.certificates = certificates;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tnode: node,\n\t\t});\n\t}\n\n\tonRemoveCert = (certId: string): void => {\n\t\tlet node: NodeTypes.Node;\n\n\t\tif (this.state.changed) {\n\t\t\tnode = {\n\t\t\t\t...this.state.node,\n\t\t\t};\n\t\t} else {\n\t\t\tnode = {\n\t\t\t\t...this.props.node,\n\t\t\t};\n\t\t}\n\n\t\tlet certificates = [\n\t\t\t...(node.certificates || []),\n\t\t];\n\n\t\tlet i = certificates.indexOf(certId);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tcertificates.splice(i, 1);\n\n\t\tnode.certificates = certificates;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tnode: node,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet node: NodeTypes.Node = this.state.node || this.props.node;\n\t\tlet active = node.requests_min !== 0 || node.memory !== 0 ||\n\t\t\t\tnode.load1 !== 0 || node.load5 !== 0 || node.load15 !== 0;\n\n\t\tlet services: JSX.Element[] = [];\n\t\tfor (let serviceId of (node.services || [])) {\n\t\t\tlet service = ServicesStore.serviceName(serviceId);\n\t\t\tif (!service) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tservices.push(\n\t\t\t\t\n\t\t\t\t\t{service.name}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveService(service.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet servicesSelect: JSX.Element[] = [];\n\t\tif (this.props.services.length) {\n\t\t\tfor (let service of this.props.services) {\n\t\t\t\tservicesSelect.push(\n\t\t\t\t\t,\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tservicesSelect.push();\n\t\t}\n\n\t\tlet authorities: JSX.Element[] = [];\n\t\tfor (let authorityId of (node.authorities || [])) {\n\t\t\tlet authority = AuthoritiesStore.authority(authorityId);\n\t\t\tif (!authority || !authority.proxy_hosting) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tauthorities.push(\n\t\t\t\t\n\t\t\t\t\t{authority.name}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveAuthority(authority.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet authoritiesSelect: JSX.Element[] = [];\n\t\tif (this.props.authorities.length) {\n\t\t\tfor (let authority of this.props.authorities) {\n\t\t\t\tif (!authority.proxy_hosting) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tauthoritiesSelect.push(\n\t\t\t\t\t{authority.name},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (!authoritiesSelect.length) {\n\t\t\tauthoritiesSelect.push();\n\t\t}\n\n\t\tlet certificates: JSX.Element[] = [];\n\t\tfor (let certId of (node.certificates || [])) {\n\t\t\tlet cert = CertificatesStore.certificate(certId);\n\t\t\tif (!cert) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcertificates.push(\n\t\t\t\t\n\t\t\t\t\t{cert.name}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveCert(cert.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet hasCertificates = false;\n\t\tlet certificatesSelect: JSX.Element[] = [];\n\t\tif (this.props.certificates.length) {\n\t\t\tfor (let certificate of this.props.certificates) {\n\t\t\t\thasCertificates = true;\n\n\t\t\t\tcertificatesSelect.push(\n\t\t\t\t\t,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (!hasCertificates) {\n\t\t\tcertificatesSelect = [\n\t\t\t\t,\n\t\t\t];\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggleType('management');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggleType('user');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggleType('proxy');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggleType('bastion');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('management_domain', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('user_domain', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('webauthn_domain', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('no_redirect_server', !node.no_redirect_server);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\tServices\n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{services}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddService: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddService}\n\t\t\t\t\t>\n\t\t\t\t\t\t{servicesSelect}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tAuthority Bastions\n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{authorities}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddAuthority: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddAuthority}\n\t\t\t\t\t>\n\t\t\t\t\t\t{authoritiesSelect}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tCertificates\n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{certificates}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddCert: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddCert}\n\t\t\t\t\t>\n\t\t\t\t\t\t{certificatesSelect}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet nde: NodeTypes.Node;\n\n\t\t\t\t\t\t\tif (this.state.changed) {\n\t\t\t\t\t\t\t\tnde = {\n\t\t\t\t\t\t\t\t\t...this.state.node,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnde = {\n\t\t\t\t\t\t\t\t\t...this.props.node,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tnde.forwarded_for_header = val;\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tchanged: true,\n\t\t\t\t\t\t\t\tforwardedChecked: state,\n\t\t\t\t\t\t\t\tnode: nde,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet nde: NodeTypes.Node;\n\n\t\t\t\t\t\t\tif (this.state.changed) {\n\t\t\t\t\t\t\t\tnde = {\n\t\t\t\t\t\t\t\t\t...this.state.node,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnde = {\n\t\t\t\t\t\t\t\t\t...this.props.node,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tnde.forwarded_proto_header = val;\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tchanged: true,\n\t\t\t\t\t\t\t\tforwardedProtoChecked: state,\n\t\t\t\t\t\t\t\tnode: nde,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tforwardedChecked: false,\n\t\t\t\t\t\tforwardedProtoChecked: false,\n\t\t\t\t\t\tnode: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as NodeTypes from '../types/NodeTypes';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport * as CertificateTypes from '../types/CertificateTypes';\nimport NodesStore from '../stores/NodesStore';\nimport ServicesStore from '../stores/ServicesStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport CertificatesStore from '../stores/CertificatesStore';\nimport * as NodeActions from '../actions/NodeActions';\nimport * as ServiceActions from '../actions/ServiceActions';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport * as CertificateActions from '../actions/CertificateActions';\nimport Node from './Node';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\n\ninterface State {\n\tnodes: NodeTypes.NodesRo;\n\tservices: ServiceTypes.ServicesRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tcertificates: CertificateTypes.CertificatesRo;\n\tdisabled: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n};\n\nexport default class Nodes extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tnodes: NodesStore.nodes,\n\t\t\tservices: ServicesStore.servicesName,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tcertificates: CertificatesStore.certificates,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tNodesStore.addChangeListener(this.onChange);\n\t\tServicesStore.addChangeListener(this.onChange);\n\t\tAuthoritiesStore.addChangeListener(this.onChange);\n\t\tCertificatesStore.addChangeListener(this.onChange);\n\t\tNodeActions.sync();\n\t\tServiceActions.syncNames();\n\t\tAuthorityActions.sync();\n\t\tCertificateActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tNodesStore.removeChangeListener(this.onChange);\n\t\tServicesStore.removeChangeListener(this.onChange);\n\t\tAuthoritiesStore.removeChangeListener(this.onChange);\n\t\tCertificatesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tnodes: NodesStore.nodes,\n\t\t\tservices: ServicesStore.servicesName,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tcertificates: CertificatesStore.certificates,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet nodesDom: JSX.Element[] = [];\n\n\t\tthis.state.nodes.forEach((node: NodeTypes.NodeRo): void => {\n\t\t\tnodesDom.push();\n\t\t});\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Nodes

    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t{nodesDom}\n\t\t\t
    \n\t\t;\n\t}\n}\n","/// \nexport const SYNC = 'policy.sync';\nexport const CHANGE = 'policy.change';\n\nexport interface Rule {\n\ttype?: string;\n\tdisable?: boolean;\n\tvalues?: string[];\n}\n\nexport interface Policy {\n\tid: string;\n\tname?: string;\n\tdisabled?: boolean;\n\tservices?: string[];\n\tauthorities?: string[];\n\troles?: string[];\n\trules?: {[key: string]: Rule};\n\tadmin_secondary?: string;\n\tuser_secondary?: string;\n\tproxy_secondary?: string;\n\tauthority_secondary?: string;\n\tadmin_device_secondary?: boolean;\n\tuser_device_secondary?: boolean;\n\tproxy_device_secondary?: boolean;\n\tauthority_device_secondary?: boolean;\n\tauthority_require_smart_card?: boolean;\n}\n\nexport type Policies = Policy[];\n\nexport type PolicyRo = Readonly;\nexport type PoliciesRo = ReadonlyArray;\n\nexport interface PolicyDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tpolicy?: Policy;\n\t\tpolicies?: Policies;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as PolicyTypes from '../types/PolicyTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass PoliciesStore extends EventEmitter {\n\t_policies: PolicyTypes.PoliciesRo = Object.freeze([]);\n\t_map: {[key: string]: number} = {};\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget policies(): PolicyTypes.PoliciesRo {\n\t\treturn this._policies;\n\t}\n\n\tget policiesM(): PolicyTypes.Policies {\n\t\tlet policies: PolicyTypes.Policies = [];\n\t\tthis._policies.forEach((\n\t\t\t\tpolicy: PolicyTypes.PolicyRo): void => {\n\t\t\tpolicies.push({\n\t\t\t\t...policy,\n\t\t\t});\n\t\t});\n\t\treturn policies;\n\t}\n\n\tpolicy(id: string): PolicyTypes.PolicyRo {\n\t\tlet i = this._map[id];\n\t\tif (i === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._policies[i];\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_sync(policies: PolicyTypes.Policy[]): void {\n\t\tthis._map = {};\n\t\tfor (let i = 0; i < policies.length; i++) {\n\t\t\tpolicies[i] = Object.freeze(policies[i]);\n\t\t\tthis._map[policies[i].id] = i;\n\t\t}\n\n\t\tthis._policies = Object.freeze(policies);\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: PolicyTypes.PolicyDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase PolicyTypes.SYNC:\n\t\t\t\tthis._sync(action.data.policies);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new PoliciesStore();\n","/// \nexport const SYNC = 'settings.sync';\nexport const CHANGE = 'settings.change';\n\nexport interface Provider {\n\tid?: string;\n\ttype?: string;\n\tlabel?: string;\n\tdefault_roles?: string[];\n\tauto_create?: boolean;\n\trole_management?: string;\n}\n\nexport interface AzureProvider extends Provider {\n\ttenant?: string;\n\tclient_id?: string;\n\tclient_secret?: string;\n}\n\nexport interface GoogleProvider extends Provider {\n\tdomain?: string;\n\tgoogle_key?: string;\n\tgoogle_email?: string;\n}\n\nexport interface SamlProvider extends Provider {\n\tissuer_url?: string;\n\tsaml_url?: string;\n\tsaml_cert?: string;\n}\n\nexport interface JumpCloudProvider extends Provider {\n\tissuer_url?: string;\n\tsaml_url?: string;\n\tsaml_cert?: string;\n\tjumpcloud_app_id?: string;\n\tjumpcloud_secret?: string;\n}\n\nexport type ProviderAny = Provider & AzureProvider & GoogleProvider &\n\tSamlProvider & JumpCloudProvider;\nexport type Providers = ProviderAny[];\n\nexport interface SecondaryProvider {\n\tid?: string;\n\ttype?: string;\n\tlabel?: string;\n\tname?: string;\n}\n\nexport interface DuoProvider extends SecondaryProvider {\n\tduo_hostname?: string;\n\tduo_key?: string;\n\tduo_secret?: string;\n\tpush_factor?: boolean;\n\tphone_factor?: boolean;\n\tpasscode_factor?: boolean;\n\tsms_factor?: boolean;\n}\n\nexport interface OneLoginProvider extends SecondaryProvider {\n\tone_login_region?: string;\n\tone_login_id?: string;\n\tone_login_secret?: string;\n\tpush_factor?: boolean;\n\tpasscode_factor?: boolean;\n}\n\nexport interface OktaProvider extends SecondaryProvider {\n\tokta_domain?: string;\n\tokta_token?: string;\n\tpush_factor?: boolean;\n\tpasscode_factor?: boolean;\n}\n\nexport type SecondaryProviderAny = SecondaryProvider & DuoProvider &\n\tOneLoginProvider & OktaProvider;\nexport type SecondaryProviders = SecondaryProviderAny[];\n\nexport interface Settings {\n\tauth_providers: Providers;\n\tauth_secondary_providers: SecondaryProviders;\n\tauth_admin_expire: number;\n\tauth_admin_max_duration: number;\n\tauth_proxy_expire: number;\n\tauth_proxy_max_duration: number;\n\tauth_user_expire: number;\n\tauth_user_max_duration: number;\n\telastic_address: string;\n\telastic_username: string;\n\telastic_password: string;\n\telastic_proxy_requests: boolean;\n}\n\nexport type SettingsRo = Readonly;\n\nexport interface SettingsDispatch {\n\ttype: string;\n\tdata?: Settings;\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as SettingsTypes from '../types/SettingsTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass SettingsStore extends EventEmitter {\n\t_settings: SettingsTypes.SettingsRo;\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget settings(): SettingsTypes.SettingsRo {\n\t\treturn this._settings;\n\t}\n\n\tget settingsM(): SettingsTypes.Settings {\n\t\tif (this._settings) {\n\t\t\treturn {\n\t\t\t\t...this._settings,\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_sync(settings: SettingsTypes.Settings): void {\n\t\tthis._settings = Object.freeze(settings);\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: SettingsTypes.SettingsDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase SettingsTypes.SYNC:\n\t\t\t\tthis._sync(action.data);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new SettingsStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as PolicyTypes from '../types/PolicyTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\n\nexport function sync(): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/policy')\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load policies');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: PolicyTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tpolicies: res.body,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function commit(cert: PolicyTypes.Policy): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/policy/' + cert.id)\n\t\t\t.send(cert)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to save policy');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function create(cert: PolicyTypes.Policy): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/policy')\n\t\t\t.send(cert)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to create policy');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function remove(certId: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/policy/' + certId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete policies');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nEventDispatcher.register((action: PolicyTypes.PolicyDispatch) => {\n\tswitch (action.type) {\n\t\tcase PolicyTypes.CHANGE:\n\t\t\tsync();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as SettingsTypes from '../types/SettingsTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\n\nexport function sync(): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/settings')\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to sync builds');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: SettingsTypes.SYNC,\n\t\t\t\t\tdata: res.body,\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function commit(\n\t\tsettings: SettingsTypes.Settings): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/settings')\n\t\t\t.send(settings)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to commit settings');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: SettingsTypes.SYNC,\n\t\t\t\t\tdata: res.body,\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nEventDispatcher.register((action: SettingsTypes.SettingsDispatch) => {\n\tswitch (action.type) {\n\t\tcase SettingsTypes.CHANGE:\n\t\t\tsync();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as React from 'react';\nimport * as PolicyTypes from '../types/PolicyTypes';\nimport * as Constants from '../Constants';\nimport PageSwitch from './PageSwitch';\nimport PageInputButton from './PageInputButton';\nimport PageSelectButton from './PageSelectButton';\nimport Help from './Help';\n\ninterface Props {\n\trule: PolicyTypes.Rule;\n\tonChange: (state: PolicyTypes.Rule) => void;\n}\n\ninterface State {\n\taddValue: string;\n}\n\nconst css = {\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n};\n\nexport default class PolicyRule extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\taddValue: '',\n\t\t};\n\t}\n\n\tclone(): PolicyTypes.Rule {\n\t\treturn {\n\t\t\t...this.props.rule,\n\t\t};\n\t}\n\n\tonAddValue = (value: string): void => {\n\t\tif (!value) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet rule = this.clone();\n\n\t\tlet values = [\n\t\t\t...rule.values,\n\t\t];\n\n\t\tif (values.indexOf(value) === -1) {\n\t\t\tvalues.push(value);\n\t\t}\n\n\t\tvalues.sort();\n\n\t\trule.values = values;\n\n\t\tthis.props.onChange(rule);\n\t}\n\n\tonRemoveValue(value: string): void {\n\t\tlet rule = this.clone();\n\n\t\tlet values = [\n\t\t\t...rule.values,\n\t\t];\n\n\t\tlet i = values.indexOf(value);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tvalues.splice(i, 1);\n\n\t\trule.values = values;\n\n\t\tthis.props.onChange(rule);\n\t}\n\n\trender(): JSX.Element {\n\t\tlet rule = this.props.rule;\n\t\tlet defaultOption: string;\n\n\t\tlet label: string;\n\t\tlet selectLabel: string;\n\t\tlet selectPlaceholder: string;\n\t\tlet options: {[key: string]: string};\n\t\tswitch (this.props.rule.type) {\n\t\t\tcase 'operating_system':\n\t\t\t\tlabel = 'Permitted Operating Systems';\n\t\t\t\tselectLabel = 'Operating system policies';\n\t\t\t\toptions = Constants.operatingSystems;\n\t\t\t\tbreak;\n\t\t\tcase 'browser':\n\t\t\t\tlabel = 'Permitted Browsers';\n\t\t\t\tselectLabel = 'Browser policies';\n\t\t\t\toptions = Constants.browsers;\n\t\t\t\tbreak;\n\t\t\tcase 'location':\n\t\t\t\tlabel = 'Permitted Locations';\n\t\t\t\tselectLabel = 'Location policies';\n\t\t\t\toptions = Constants.locations;\n\t\t\t\tbreak;\n\t\t\tcase 'whitelist_networks':\n\t\t\t\tlabel = 'Permitted Networks';\n\t\t\t\tselectLabel = 'Permitted network policies';\n\t\t\t\tselectPlaceholder = 'Add network';\n\t\t\t\tbreak;\n\t\t\tcase 'blacklist_networks':\n\t\t\t\tlabel = 'Blocked Networks';\n\t\t\t\tselectLabel = 'Blocked network policies';\n\t\t\t\tselectPlaceholder = 'Add network';\n\t\t\t\tbreak;\n\t\t}\n\n\t\tlet optionsSelect: JSX.Element[] = [];\n\t\tfor (let option in options) {\n\t\t\tif (!options.hasOwnProperty(option)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!defaultOption) {\n\t\t\t\tdefaultOption = option;\n\t\t\t}\n\n\t\t\toptionsSelect.push(\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet values: JSX.Element[] = [];\n\t\tfor (let value of rule.values || []) {\n\t\t\tvalues.push(\n\t\t\t\t\n\t\t\t\t\t{options ? options[value] || value : value}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveValue(value);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet inputElem: JSX.Element;\n\t\tif (options) {\n\t\t\tinputElem = {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\taddValue: val,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSubmit={(): void => {\n\t\t\t\t\tthis.onAddValue(this.state.addValue || defaultOption);\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{optionsSelect}\n\t\t\t;\n\t\t} else {\n\t\t\tinputElem = {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\taddValue: val,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSubmit={(): void => {\n\t\t\t\t\tthis.onAddValue(this.state.addValue);\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\taddValue: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>;\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.values = rule.values == null ? [] : null;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.disable = !state.disable;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t\n\t\t\t\t{label}\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t{values}\n\t\t\t\t
    \n\t\t\t\n\t\t\t{inputElem}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as PolicyTypes from '../types/PolicyTypes';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport * as SettingsTypes from '../types/SettingsTypes';\nimport * as PolicyActions from '../actions/PolicyActions';\nimport ServicesStore from '../stores/ServicesStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport PolicyRule from './PolicyRule';\nimport PageInput from './PageInput';\nimport PageSwitch from './PageSwitch';\nimport PageSelect from './PageSelect';\nimport PageSelectButton from './PageSelectButton';\nimport PageInputButton from './PageInputButton';\nimport PageInfo from './PageInfo';\nimport PageSave from './PageSave';\nimport ConfirmButton from './ConfirmButton';\nimport Help from './Help';\nimport * as Alert from '../Alert';\n\ninterface Props {\n\tpolicy: PolicyTypes.PolicyRo;\n\tservices: ServiceTypes.ServicesRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tproviders: SettingsTypes.SecondaryProviders;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\tpolicy: PolicyTypes.Policy;\n\taddService: string;\n\taddAuthority: string;\n\taddRole: string;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px 10px 0 10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tprotocol: {\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n\tport: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class Policy extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\tpolicy: null,\n\t\t\taddService: null,\n\t\t\taddAuthority: null,\n\t\t\taddRole: null,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet policy: any;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tpolicy[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\tsetRule(name: string, rule: PolicyTypes.Rule): void {\n\t\tlet policy: any;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tlet rules = {\n\t\t\t...policy.rules,\n\t\t};\n\n\t\tif (rule.values == null) {\n\t\t\tdelete rules[name];\n\t\t} else {\n\t\t\trules[name] = rule;\n\t\t}\n\n\t\tpolicy.rules = rules;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tPolicyActions.commit(this.state.policy).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tpolicy: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tPolicyActions.remove(this.props.policy.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddService = (): void => {\n\t\tlet policy: PolicyTypes.Policy;\n\n\t\tif (!this.state.addService && !this.props.services.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet serviceId = this.state.addService || this.props.services[0].id;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tlet services = [\n\t\t\t...policy.services,\n\t\t];\n\n\t\tif (services.indexOf(serviceId) === -1) {\n\t\t\tservices.push(serviceId);\n\t\t}\n\n\t\tservices.sort();\n\n\t\tpolicy.services = services;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\tonRemoveService = (service: string): void => {\n\t\tlet policy: PolicyTypes.Policy;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tlet services = [\n\t\t\t...policy.services,\n\t\t];\n\n\t\tlet i = services.indexOf(service);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tservices.splice(i, 1);\n\n\t\tpolicy.services = services;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\tonAddAuthority = (): void => {\n\t\tlet policy: PolicyTypes.Policy;\n\n\t\tif (!this.state.addAuthority && !this.props.authorities.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet authorityId = this.state.addAuthority ||\n\t\t\tthis.props.authorities[0].id;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tlet authorities = [\n\t\t\t...policy.authorities,\n\t\t];\n\n\t\tif (authorities.indexOf(authorityId) === -1) {\n\t\t\tauthorities.push(authorityId);\n\t\t}\n\n\t\tauthorities.sort();\n\n\t\tpolicy.authorities = authorities;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\tonRemoveAuthority = (authority: string): void => {\n\t\tlet policy: PolicyTypes.Policy;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tlet authorities = [\n\t\t\t...policy.authorities,\n\t\t];\n\n\t\tlet i = authorities.indexOf(authority);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tauthorities.splice(i, 1);\n\n\t\tpolicy.authorities = authorities;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\tonAddRole = (): void => {\n\t\tlet policy: PolicyTypes.Policy;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...policy.roles,\n\t\t];\n\n\t\tif (!this.state.addRole) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (roles.indexOf(this.state.addRole) === -1) {\n\t\t\troles.push(this.state.addRole);\n\t\t}\n\n\t\troles.sort();\n\n\t\tpolicy.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\tonRemoveRole(role: string): void {\n\t\tlet policy: PolicyTypes.Policy;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...policy.roles,\n\t\t];\n\n\t\tlet i = roles.indexOf(role);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\troles.splice(i, 1);\n\n\t\tpolicy.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet policy: PolicyTypes.Policy = this.state.policy ||\n\t\t\tthis.props.policy;\n\n\t\tlet services: JSX.Element[] = [];\n\t\tfor (let serviceId of policy.services || []) {\n\t\t\tlet service = ServicesStore.serviceName(serviceId);\n\t\t\tif (!service) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tservices.push(\n\t\t\t\t\n\t\t\t\t\t{service.name}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveService(service.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet servicesSelect: JSX.Element[] = [];\n\t\tif (this.props.services.length) {\n\t\t\tfor (let service of this.props.services) {\n\t\t\t\tservicesSelect.push(\n\t\t\t\t\t{service.name},\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tservicesSelect.push();\n\t\t}\n\n\t\tlet authorities: JSX.Element[] = [];\n\t\tfor (let authorityId of policy.authorities || []) {\n\t\t\tlet authority = AuthoritiesStore.authority(authorityId);\n\t\t\tif (!authority) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tauthorities.push(\n\t\t\t\t\n\t\t\t\t\t{authority.name}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveAuthority(authority.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet authoritiesSelect: JSX.Element[] = [];\n\t\tif (this.props.authorities.length) {\n\t\t\tfor (let authority of this.props.authorities) {\n\t\t\t\tauthoritiesSelect.push(\n\t\t\t\t\t{authority.name},\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tauthoritiesSelect.push();\n\t\t}\n\n\t\tlet roles: JSX.Element[] = [];\n\t\tfor (let role of policy.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveRole(role);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet operatingSystem = policy.rules.operating_system || {\n\t\t\ttype: 'operating_system',\n\t\t};\n\t\tlet browser = policy.rules.browser || {\n\t\t\ttype: 'browser',\n\t\t};\n\t\tlet location = policy.rules.location || {\n\t\t\ttype: 'location',\n\t\t};\n\t\tlet whitelistNetworks = policy.rules.whitelist_networks || {\n\t\t\ttype: 'whitelist_networks',\n\t\t};\n\t\tlet blacklistNetworks = policy.rules.blacklist_networks || {\n\t\t\ttype: 'blacklist_networks',\n\t\t};\n\n\t\tlet providerIds: string[] = [];\n\t\tlet adminProviders: JSX.Element[] = [];\n\t\tlet userProviders: JSX.Element[] = [];\n\t\tlet proxyProviders: JSX.Element[] = [];\n\t\tlet authorityProviders: JSX.Element[] = [];\n\t\tif (this.props.providers.length) {\n\t\t\tfor (let provider of this.props.providers) {\n\t\t\t\tproviderIds.push(provider.id);\n\t\t\t\tadminProviders.push({provider.name});\n\t\t\t\tuserProviders.push({provider.name});\n\t\t\t\tproxyProviders.push({provider.name});\n\t\t\t\tauthorityProviders.push({provider.name});\n\t\t\t}\n\t\t} else {\n\t\t\tadminProviders.push(None);\n\t\t\tuserProviders.push(None);\n\t\t\tproxyProviders.push(None);\n\t\t\tauthorityProviders.push(None);\n\t\t}\n\t\tlet adminProvider = policy.admin_secondary &&\n\t\t\tproviderIds.indexOf(policy.admin_secondary) !== -1;\n\t\tlet userProvider = policy.user_secondary &&\n\t\t\tproviderIds.indexOf(policy.user_secondary) !== -1;\n\t\tlet proxyProvider = policy.proxy_secondary &&\n\t\t\tproviderIds.indexOf(policy.proxy_secondary) !== -1;\n\t\tlet authorityProvider = policy.authority_secondary &&\n\t\t\tproviderIds.indexOf(policy.authority_secondary) !== -1;\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddRole}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\tServices\n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{services}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddService: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddService}\n\t\t\t\t\t>\n\t\t\t\t\t\t{servicesSelect}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tAuthorities\n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{authorities}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddAuthority: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddAuthority}\n\t\t\t\t\t>\n\t\t\t\t\t\t{authoritiesSelect}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (adminProvider) {\n\t\t\t\t\t\t\t\tthis.set('admin_secondary', null);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.props.providers.length === 0) {\n\t\t\t\t\t\t\t\t\tAlert.warning(\n\t\t\t\t\t\t\t\t\t\t'No two-factor authentication providers exist');\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.set('admin_secondary', this.props.providers[0].id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('admin_secondary', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{adminProviders}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (userProvider) {\n\t\t\t\t\t\t\t\tthis.set('user_secondary', null);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.props.providers.length === 0) {\n\t\t\t\t\t\t\t\t\tAlert.warning(\n\t\t\t\t\t\t\t\t\t\t'No two-factor authentication providers exist');\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.set('user_secondary', this.props.providers[0].id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('user_secondary', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{userProviders}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (proxyProvider) {\n\t\t\t\t\t\t\t\tthis.set('proxy_secondary', null);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.props.providers.length === 0) {\n\t\t\t\t\t\t\t\t\tAlert.warning(\n\t\t\t\t\t\t\t\t\t\t'No two-factor authentication providers exist');\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.set('proxy_secondary', this.props.providers[0].id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('proxy_secondary', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{proxyProviders}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (authorityProvider) {\n\t\t\t\t\t\t\t\tthis.set('authority_secondary', null);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.props.providers.length === 0) {\n\t\t\t\t\t\t\t\t\tAlert.warning(\n\t\t\t\t\t\t\t\t\t\t'No two-factor authentication providers exist');\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.set('authority_secondary', this.props.providers[0].id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('authority_secondary', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{authorityProviders}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('disabled', !policy.disabled)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setRule('whitelist_networks', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setRule('blacklist_networks', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setRule('location', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setRule('operating_system', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setRule('browser', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('admin_device_secondary',\n\t\t\t\t\t\t\t\t!policy.admin_device_secondary)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('user_device_secondary',\n\t\t\t\t\t\t\t\t!policy.user_device_secondary)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('proxy_device_secondary',\n\t\t\t\t\t\t\t\t!policy.proxy_device_secondary)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('authority_device_secondary',\n\t\t\t\t\t\t\t\t!policy.authority_device_secondary)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('authority_require_smart_card',\n\t\t\t\t\t\t\t\t!policy.authority_require_smart_card)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tpolicy: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as PolicyTypes from '../types/PolicyTypes';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport * as SettingsTypes from '../types/SettingsTypes';\nimport PoliciesStore from '../stores/PoliciesStore';\nimport ServicesStore from '../stores/ServicesStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport SettingsStore from '../stores/SettingsStore';\nimport * as PolicyActions from '../actions/PolicyActions';\nimport * as ServiceActions from '../actions/ServiceActions';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport * as SettingsActions from '../actions/SettingsActions';\nimport NonState from './NonState';\nimport Policy from './Policy';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\n\ninterface State {\n\tpolicies: PolicyTypes.PoliciesRo;\n\tservices: ServiceTypes.ServicesRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tproviders: SettingsTypes.SecondaryProviders;\n\tdisabled: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n};\n\nexport default class Policies extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpolicies: PoliciesStore.policies,\n\t\t\tservices: ServicesStore.servicesName,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tproviders: SettingsStore.settings ?\n\t\t\t\tSettingsStore.settings.auth_secondary_providers : [],\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tPoliciesStore.addChangeListener(this.onChange);\n\t\tServicesStore.addChangeListener(this.onChange);\n\t\tAuthoritiesStore.addChangeListener(this.onChange);\n\t\tSettingsStore.addChangeListener(this.onChange);\n\t\tPolicyActions.sync();\n\t\tServiceActions.syncNames();\n\t\tAuthorityActions.sync();\n\t\tSettingsActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tPoliciesStore.removeChangeListener(this.onChange);\n\t\tServicesStore.removeChangeListener(this.onChange);\n\t\tAuthoritiesStore.removeChangeListener(this.onChange);\n\t\tSettingsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpolicies: PoliciesStore.policies,\n\t\t\tservices: ServicesStore.servicesName,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tproviders: SettingsStore.settings ?\n\t\t\t\tSettingsStore.settings.auth_secondary_providers : [],\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet policiesDom: JSX.Element[] = [];\n\n\t\tthis.state.policies.forEach((policy: PolicyTypes.PolicyRo): void => {\n\t\t\tpoliciesDom.push();\n\t\t});\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Policies

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tPolicyActions.create(null).then((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>New\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t{policiesDom}\n\t\t\t
    \n\t\t\t\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as Blueprint from '@blueprintjs/core';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport Help from './Help';\nimport PageInput from './PageInput';\nimport PageInputButton from './PageInputButton';\nimport PageSwitch from './PageSwitch';\nimport PageSelect from './PageSelect';\nimport * as NodeTypes from \"../types/NodeTypes\";\n\ninterface Props {\n\thidden?: boolean;\n\tdisabled?: boolean;\n\tnodes: NodeTypes.NodesRo;\n\tauthority: AuthorityTypes.AuthorityRo;\n\tproxy: boolean;\n}\n\ninterface State {\n\tpopover: boolean;\n\troute53: boolean;\n\tawsAccessKey: string;\n\tawsSecretKey: string;\n\thostCertificate: boolean;\n\thostname: string;\n\tserver: string;\n\taddRole: string;\n\troles: string[];\n}\n\nconst css = {\n\tbox: {\n\t\tmarginBottom: '15px',\n\t} as React.CSSProperties,\n\tbutton: {\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\tcallout: {\n\t\tmarginBottom: '15px',\n\t} as React.CSSProperties,\n\tpopover: {\n\t\twidth: '230px',\n\t} as React.CSSProperties,\n\tpopoverTarget: {\n\t\ttop: '9px',\n\t\tleft: '18px',\n\t} as React.CSSProperties,\n\tdialog: {\n\t\tmaxWidth: '480px',\n\t\tmargin: '30px 20px',\n\t} as React.CSSProperties,\n\ttextarea: {\n\t\twidth: '100%',\n\t\tresize: 'none',\n\t\tfontSize: '12px',\n\t\tfontFamily: '\"Lucida Console\", Monaco, monospace',\n\t} as React.CSSProperties,\n};\n\nexport default class AuthorityDeploy extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpopover: false,\n\t\t\troute53: false,\n\t\t\tawsAccessKey: '',\n\t\t\tawsSecretKey: '',\n\t\t\thostCertificate: null,\n\t\t\thostname: '',\n\t\t\tserver: null,\n\t\t\taddRole: '',\n\t\t\troles: [],\n\t\t};\n\t}\n\n\tonAddRole = (): void => {\n\t\tlet roles = [\n\t\t\t...this.state.roles,\n\t\t];\n\n\t\tif (!this.state.addRole) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (roles.indexOf(this.state.addRole) === -1) {\n\t\t\troles.push(this.state.addRole);\n\t\t}\n\n\t\troles.sort();\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\taddRole: '',\n\t\t\troles: roles,\n\t\t});\n\t}\n\n\tonRemoveRole(role: string): void {\n\t\tlet roles = [\n\t\t\t...this.state.roles,\n\t\t];\n\n\t\tlet i = roles.indexOf(role);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\troles.splice(i, 1);\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\taddRole: '',\n\t\t\troles: roles,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet popoverElem: JSX.Element;\n\n\t\tif (this.state.popover) {\n\t\t\tlet content = '';\n\t\t\tlet callout = 'Use the startup script below to provision a ' +\n\t\t\t\t'Pritunl Zero host.';\n\t\t\tlet errorMsg = '';\n\t\t\tlet errorMsgElem: JSX.Element;\n\t\t\tlet hostCertificate = this.state.hostCertificate;\n\t\t\tlet hostCertificateDisabled = false;\n\t\t\tif (hostCertificate === null) {\n\t\t\t\thostCertificate = this.props.authority.host_certificates;\n\t\t\t}\n\n\t\t\tlet servers = new Set();\n\t\t\tlet serverDefault: string = null;\n\t\t\tlet serversElm: JSX.Element[] = [];\n\t\t\tif (this.props.nodes) {\n\t\t\t\tfor (let node of this.props.nodes) {\n\t\t\t\t\tif (node.user_domain) {\n\t\t\t\t\t\tservers.add(node.user_domain);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!this.props.authority.host_tokens.length || servers.size === 0) {\n\t\t\t\thostCertificate = false;\n\t\t\t\thostCertificateDisabled = true;\n\t\t\t}\n\n\t\t\tservers.forEach((server: string): void => {\n\t\t\t\tif (!serverDefault) {\n\t\t\t\t\tserverDefault = server;\n\t\t\t\t}\n\t\t\t\tserversElm.push();\n\t\t\t});\n\t\t\tif (servers.size === 1) {\n\t\t\t\tserversElm = [];\n\t\t\t}\n\n\t\t\tlet bastionUsername = '';\n\t\t\tlet bastionHostname = '';\n\t\t\tif (this.props.proxy) {\n\t\t\t\tlet bastionSplit = this.props.authority.host_proxy.split('@');\n\t\t\t\tif (bastionSplit.length === 2) {\n\t\t\t\t\tbastionUsername = this.props.authority.host_proxy.split('@')[0];\n\t\t\t\t\tif (bastionSplit[1].indexOf(\n\t\t\t\t\t\t\tthis.props.authority.host_domain) !== -1) {\n\t\t\t\t\t\tbastionHostname = bastionSplit[1].replace(\n\t\t\t\t\t\t\t'.' + this.props.authority.host_domain, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!bastionUsername) {\n\t\t\t\t\terrorMsg = 'Bastion host is missing username.';\n\t\t\t\t} else if (!bastionHostname) {\n\t\t\t\t\terrorMsg = 'Bastion hostname is not a subdomain of host domain.';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet epel = '';\n\t\t\tlet boto = '';\n\t\t\tlet route53 = '';\n\t\t\tif (this.state.route53 && hostCertificate) {\n\t\t\t\tepel = '\\nsudo yum -y install epel-release || ' +\n\t\t\t\t\t'sudo rpm -Uvh https://dl.fedoraproject.org/' +\n\t\t\t\t\t'pub/epel/epel-release-latest-7.noarch.rpm';\n\t\t\t\tboto = ' python2-boto3 python27-boto3';\n\t\t\t\tif (this.state.awsAccessKey) {\n\t\t\t\t\troute53 += '\\nsudo pritunl-ssh-host config aws-access-key ' +\n\t\t\t\t\t\tthis.state.awsAccessKey;\n\t\t\t\t}\n\t\t\t\tif (this.state.awsSecretKey) {\n\t\t\t\t\troute53 += '\\nsudo pritunl-ssh-host config aws-secret-key ' +\n\t\t\t\t\t\tthis.state.awsSecretKey;\n\t\t\t\t}\n\t\t\t\troute53 += '\\nsudo pritunl-ssh-host config route-53-zone ' +\n\t\t\t\t\tthis.props.authority.host_domain;\n\t\t\t}\n\n\t\t\tlet roles: JSX.Element[] = [];\n\t\t\tfor (let role of this.state.roles) {\n\t\t\t\troles.push(\n\t\t\t\t\t\n\t\t\t\t\t\t{role}\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.onRemoveRole(role);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    ,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (this.props.proxy) {\n\t\t\t\tcallout = 'Open port 9748 and use the startup script below to ' +\n\t\t\t\t\t'provision a Pritunl Zero host. Provisioning may take several ' +\n\t\t\t\t\t'minutes if the servers DNS record was created recently.';\n\t\t\t\tcontent = `#!/bin/bash\nsudo sed -i '/^TrustedUserCAKeys/d' /etc/ssh/sshd_config\nsudo sed -i '/^AuthorizedPrincipalsFile/d' /etc/ssh/sshd_config\nsudo tee -a /etc/ssh/sshd_config << EOF\n\nMatch User ${bastionUsername}\n\tAllowAgentForwarding no\n\tAllowTcpForwarding yes\n\tPermitOpen *:22\n\tGatewayPorts no\n\tX11Forwarding no\n\tPermitTunnel no\n\tForceCommand echo 'Pritunl Zero Bastion Host'\n\tTrustedUserCAKeys /etc/ssh/trusted\n\tAuthorizedPrincipalsFile /etc/ssh/principals\nMatch all\nEOF\nsudo tee /etc/ssh/principals << EOF\nbastion\nEOF\nsudo tee /etc/ssh/trusted << EOF\n${this.props.authority.public_key}\nEOF\n\nsudo tee -a /etc/yum.repos.d/pritunl.repo << EOF\n[pritunl]\nname=Pritunl Repository\nbaseurl=https://repo.pritunl.com/stable/yum/centos/7/\ngpgcheck=1\nenabled=1\nEOF\n\ngpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A\ngpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp\nsudo rpm --import key.tmp\nrm -f key.tmp${epel}\nsudo yum -y install pritunl-ssh-host${boto}\n${route53}\nsudo pritunl-ssh-host config add-token ${\n\tthis.props.authority.host_tokens.length ?\n\tthis.props.authority.host_tokens[0] : 'HOST_TOKEN_UNAVAILABLE'}\nsudo pritunl-ssh-host config hostname ${bastionHostname}\nsudo pritunl-ssh-host config server ${this.state.server || serverDefault}\nsudo useradd ${bastionUsername} || true\n\nsudo systemctl restart sshd || true\nsudo service sshd restart || true`;\n\t\t\t} else if (hostCertificate) {\n\t\t\t\tcallout = 'Open port 9748 and use the startup script below to ' +\n\t\t\t\t\t'provision a Pritunl Zero host. Provisioning may take several ' +\n\t\t\t\t\t'minutes if the servers DNS record was created recently.';\n\t\t\t\tcontent = `#!/bin/bash\nsudo sed -i '/^TrustedUserCAKeys/d' /etc/ssh/sshd_config\nsudo sed -i '/^AuthorizedPrincipalsFile/d' /etc/ssh/sshd_config\nsudo tee -a /etc/ssh/sshd_config << EOF\n\nTrustedUserCAKeys /etc/ssh/trusted\nAuthorizedPrincipalsFile /etc/ssh/principals\nEOF\nsudo tee /etc/ssh/principals << EOF\nemergency\n${this.state.roles.length ? this.state.roles.join('\\n') + '\\n' : ''}EOF\nsudo tee /etc/ssh/trusted << EOF\n${this.props.authority.public_key}\nEOF\n\nsudo tee -a /etc/yum.repos.d/pritunl.repo << EOF\n[pritunl]\nname=Pritunl Repository\nbaseurl=https://repo.pritunl.com/stable/yum/centos/7/\ngpgcheck=1\nenabled=1\nEOF\n\ngpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A\ngpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp\nsudo rpm --import key.tmp\nrm -f key.tmp${epel}\nsudo yum -y install pritunl-ssh-host${boto}\n${route53}\nsudo pritunl-ssh-host config add-token ${\n\tthis.props.authority.host_tokens.length ?\n\tthis.props.authority.host_tokens[0] : 'HOST_TOKEN_UNAVAILABLE'}\nsudo pritunl-ssh-host config hostname ${this.state.hostname}\nsudo pritunl-ssh-host config server ${this.state.server || serverDefault}\n\nsudo systemctl restart sshd || true\nsudo service sshd restart || true`;\n\t\t\t} else {\n\t\t\t\tcontent = `#!/bin/bash\nsudo sed -i '/^TrustedUserCAKeys/d' /etc/ssh/sshd_config\nsudo sed -i '/^AuthorizedPrincipalsFile/d' /etc/ssh/sshd_config\nsudo tee -a /etc/ssh/sshd_config << EOF\n\nTrustedUserCAKeys /etc/ssh/trusted\nAuthorizedPrincipalsFile /etc/ssh/principals\nEOF\nsudo tee /etc/ssh/principals << EOF\nemergency\n${this.state.roles.length ? this.state.roles.join('\\n') + '\\n' : ''}EOF\nsudo tee /etc/ssh/trusted << EOF\n${this.props.authority.public_key}\nEOF\n\nsudo systemctl restart sshd || true\nsudo service sshd restart || true`;\n\t\t\t}\n\n\t\t\tif (errorMsg) {\n\t\t\t\terrorMsgElem =
    \n\t\t\t\t\t\n\t\t\t\t\t\t{errorMsg}\n\t\t\t\t\t
    \n\t\t\t\t;\n\t\t\t}\n\n\t\t\tlet title = '';\n\t\t\tif (this.props.proxy) {\n\t\t\t\ttitle = 'Generate Bastion Deploy Script';\n\t\t\t} else {\n\t\t\t\ttitle = 'Generate Deploy Script';\n\t\t\t}\n\n\t\t\tpopoverElem = {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tpopover: false,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{errorMsgElem}\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\thostCertificate: !hostCertificate,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tserver: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{serversElm}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\thostname: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\troute53: !this.state.route53,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tawsAccessKey: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tawsSecretKey: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\tRoles\n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{roles}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddRole}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tevt.currentTarget.select();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tpopover: !this.state.popover,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>Close\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t;\n\t\t}\n\n\t\tlet buttonLabel = '';\n\t\tif (this.props.proxy) {\n\t\t\tbuttonLabel = 'Generate Bastion Deploy Script';\n\t\t} else {\n\t\t\tbuttonLabel = 'Generate Deploy Script';\n\t\t}\n\n\t\treturn ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport Help from './Help';\n\ninterface Props {\n\thidden?: boolean;\n\tdisabled?: boolean;\n\treadOnly?: boolean;\n\tlabel: string;\n\thelp: string;\n\tplaceholder: string;\n\trows: number;\n\ttabs: string[];\n\tvalues: string[];\n\tonChange: (tab: string, val: string) => void;\n}\n\ninterface State {\n\tactiveIndex: number;\n}\n\nconst css = {\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\ttextarea: {\n\t\twidth: '100%',\n\t\tresize: 'none',\n\t\tfontSize: '12px',\n\t\tfontFamily: '\"Lucida Console\", Monaco, monospace',\n\t} as React.CSSProperties,\n\ttab: {\n\t\tfontSize: '12px',\n\t\tlineHeight: '24px',\n\t\tuserSelect: 'none',\n\t} as React.CSSProperties,\n};\n\nexport default class PageTextAreaTab extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tactiveIndex: 0,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tlet activeIndex = this.state.activeIndex || 0;\n\n\t\tlet tabs: JSX.Element[] = [];\n\t\tfor (let i = 0; i < (this.props.tabs || []).length; i++) {\n\t\t\tlet tab = this.props.tabs[i];\n\t\t\tlet index = i;\n\n\t\t\ttabs.push(\n\t\t\t\t {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\tactiveIndex: index,\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t>{tab}\n\t\t\t);\n\t\t}\n\n\t\treturn \n\t\t\t{this.props.label}\n\t\t\t\n\t\t\t
    \n\t\t\t\t
      \n\t\t\t\t\t{tabs}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.props.onChange(\n\t\t\t\t\t\tthis.props.tabs[this.state.activeIndex],\n\t\t\t\t\t\tevt.target.value,\n\t\t\t\t\t);\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport * as NodeTypes from \"../types/NodeTypes\";\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport PageInput from './PageInput';\nimport PageSwitch from './PageSwitch';\nimport PageSelect from './PageSelect';\nimport PageInputButton from './PageInputButton';\nimport AuthorityDeploy from './AuthorityDeploy';\nimport PageTextAreaTab from './PageTextAreaTab';\nimport * as PageInfos from './PageInfo';\nimport PageInfo from './PageInfo';\nimport PageSave from './PageSave';\nimport ConfirmButton from './ConfirmButton';\nimport Help from './Help';\nimport * as MiscUtils from \"../utils/MiscUtils\";\nimport AuthoritiesStore from \"../stores/AuthoritiesStore\";\n\ninterface Props {\n\tnodes: NodeTypes.NodesRo;\n\tauthority: AuthorityTypes.AuthorityRo;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\tauthority: AuthorityTypes.Authority;\n\taddRole: string;\n\taddMatch: string;\n\taddSubnet: string;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px 10px 0 10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\thostname: {\n\t\tflex: '1',\n\t\tminWidth: '160px',\n\t} as React.CSSProperties,\n\tport: {\n\t\twidth: '60px',\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n};\n\nexport default class Authority extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\tauthority: null,\n\t\t\taddRole: null,\n\t\t\taddMatch: null,\n\t\t\taddSubnet: null,\n\t\t};\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tif (this.props.authority) {\n\t\t\tAuthorityActions.clearSecret(this.props.authority.id);\n\t\t}\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet authority: any;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tauthority[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\ttoggle(name: string): void {\n\t\tlet authority: any;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tauthority[name] = !authority[name];\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tAuthorityActions.commit(this.state.authority).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tauthority: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tAuthorityActions.remove(this.props.authority.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddRole = (): void => {\n\t\tlet authority: AuthorityTypes.Authority;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...authority.roles,\n\t\t];\n\n\t\tif (!this.state.addRole) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (roles.indexOf(this.state.addRole) === -1) {\n\t\t\troles.push(this.state.addRole);\n\t\t}\n\n\t\troles.sort();\n\n\t\tauthority.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\tonRemoveRole(role: string): void {\n\t\tlet authority: AuthorityTypes.Authority;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...authority.roles,\n\t\t];\n\n\t\tlet i = roles.indexOf(role);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\troles.splice(i, 1);\n\n\t\tauthority.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\tonAddMatch = (): void => {\n\t\tlet authority: AuthorityTypes.Authority;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tlet matches = [\n\t\t\t...(authority.host_matches || []),\n\t\t];\n\n\t\tif (!this.state.addMatch) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (matches.indexOf(this.state.addMatch) === -1) {\n\t\t\tmatches.push(this.state.addMatch);\n\t\t}\n\n\t\tmatches.sort();\n\n\t\tauthority.host_matches = matches;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddMatch: '',\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\tonRemoveMatch(match: string): void {\n\t\tlet authority: AuthorityTypes.Authority;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tlet matches = [\n\t\t\t...authority.host_matches,\n\t\t];\n\n\t\tlet i = matches.indexOf(match);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tmatches.splice(i, 1);\n\n\t\tauthority.host_matches = matches;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddMatch: '',\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\tonAddSubnet = (): void => {\n\t\tlet authority: AuthorityTypes.Authority;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tlet subnets = [\n\t\t\t...(authority.host_subnets || []),\n\t\t];\n\n\t\tif (!this.state.addSubnet) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (subnets.indexOf(this.state.addSubnet) === -1) {\n\t\t\tsubnets.push(this.state.addSubnet);\n\t\t}\n\n\t\tsubnets.sort();\n\n\t\tauthority.host_subnets = subnets;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddSubnet: '',\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\tonRemoveSubnet(subnet: string): void {\n\t\tlet authority: AuthorityTypes.Authority;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tlet subnets = [\n\t\t\t...authority.host_subnets,\n\t\t];\n\n\t\tlet i = subnets.indexOf(subnet);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tsubnets.splice(i, 1);\n\n\t\tauthority.host_subnets = subnets;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddSubnet: '',\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet authority: AuthorityTypes.Authority = this.state.authority ||\n\t\t\tthis.props.authority;\n\t\tlet info: AuthorityTypes.Info = authority.info || {};\n\t\tlet url: string = window.location.protocol + '//' +\n\t\t\twindow.location.host + '/ssh_public_key/' + authority.id;\n\t\tlet isHsm = authority.type === 'pritunl_hsm';\n\t\tlet hsmSecret = AuthoritiesStore.authoritySecret(authority.id);\n\n\t\tlet roles: JSX.Element[] = [];\n\t\tfor (let role of authority.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveRole(role);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet matches: JSX.Element[] = [];\n\t\tfor (let match of authority.host_matches || []) {\n\t\t\tmatches.push(\n\t\t\t\t\n\t\t\t\t\t{match}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveMatch(match);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet subnets: JSX.Element[] = [];\n\t\tfor (let subnet of authority.host_subnets || []) {\n\t\t\tsubnets.push(\n\t\t\t\t\n\t\t\t\t\t{subnet}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveSubnet(subnet);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet tokens: JSX.Element[] = [];\n\t\tfor (let token of this.props.authority.host_tokens || []) {\n\t\t\ttokens.push(\n\t\t\t\t {\n\t\t\t\t\t\tAuthorityActions.deleteToken(\n\t\t\t\t\t\t\t\tthis.props.authority.id, token).then((): void => {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\tlet fields: PageInfos.Field[] = [\n\t\t\t{\n\t\t\t\tlabel: 'ID',\n\t\t\t\tvalue: authority.id || 'None',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Algorithm',\n\t\t\t\tvalue: info.key_alg || 'None',\n\t\t\t},\n\t\t];\n\n\t\tif (authority.proxy_hosting) {\n\t\t\tfields.push({\n\t\t\t\tlabel: 'Bastion Host',\n\t\t\t\tvalue: this.props.authority.proxy_jump,\n\t\t\t});\n\t\t}\n\n\t\tif (isHsm) {\n\t\t\tlet hsmStatus = this.props.authority.hsm_status || 'disconnected';\n\n\t\t\tfields.push({\n\t\t\t\tvalueClass: hsmStatus === 'connected' ? '' : 'bp3-text-intent-danger',\n\t\t\t\tlabel: 'Status',\n\t\t\t\tvalue: hsmStatus.charAt(0).toUpperCase() + hsmStatus.substr(1),\n\t\t\t});\n\t\t\tfields.push({\n\t\t\t\tlabel: 'Timestamp',\n\t\t\t\tvalue: MiscUtils.formatDate(\n\t\t\t\t\tthis.props.authority.hsm_timestamp) || 'Inactive',\n\t\t\t});\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('type', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('key', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggle('host_certificates');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggle('strict_host_checking');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet authr: AuthorityTypes.Authority;\n\n\t\t\t\t\t\t\tif (this.state.changed) {\n\t\t\t\t\t\t\t\tauthr = {\n\t\t\t\t\t\t\t\t\t...this.state.authority,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tauthr = {\n\t\t\t\t\t\t\t\t\t...this.props.authority,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tauthr.host_domain = val;\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tchanged: true,\n\t\t\t\t\t\t\t\tauthority: authr,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggle('proxy_hosting');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('host_proxy', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('hsm_serial', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('hsm_generate_secret', !authority.hsm_generate_secret);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('expire', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('host_expire', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggle('match_roles');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddRole}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddMatch: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddMatch}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddSubnet: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddSubnet}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\tHost Tokens\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{tokens}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tAuthorityActions.createToken(\n\t\t\t\t\t\t\t\t\tthis.props.authority.id).then((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\tAdd Token\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tauthority: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport NodesStore from \"../stores/NodesStore\";\nimport * as NodeActions from \"../actions/NodeActions\";\nimport * as NodeTypes from \"../types/NodeTypes\";\nimport NonState from './NonState';\nimport Authority from './Authority';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\n\ninterface State {\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tnodes: NodeTypes.NodesRo;\n\tdisabled: boolean;\n\talgorithm: string;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 0',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tselect: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tselectFirst: {\n\t\twidth: '100%',\n\t\tborderTopLeftRadius: '3px',\n\t\tborderBottomLeftRadius: '3px',\n\t} as React.CSSProperties,\n\tselectInner: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tselectBox: {\n\t\tmargin: '8px 0 0 8px',\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class Authorities extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tnodes: NodesStore.nodes,\n\t\t\tdisabled: false,\n\t\t\talgorithm: '',\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tAuthoritiesStore.addChangeListener(this.onChange);\n\t\tNodesStore.addChangeListener(this.onChange);\n\t\tAuthorityActions.sync();\n\t\tNodeActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tAuthoritiesStore.removeChangeListener(this.onChange);\n\t\tNodesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tnodes: NodesStore.nodes,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet authoritiesDom: JSX.Element[] = [];\n\n\t\tthis.state.authorities.forEach((\n\t\t\t\tauthority: AuthorityTypes.AuthorityRo): void => {\n\t\t\tauthoritiesDom.push();\n\t\t});\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Authorities

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\talgorithm: evt.target.value,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tEC P384\n\t\t\t\t\t\t\t\t\t\tRSA 4096\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tAuthorityActions.create({\n\t\t\t\t\t\t\t\t\t\tid: null,\n\t\t\t\t\t\t\t\t\t\talgorithm: this.state.algorithm || 'ecp384',\n\t\t\t\t\t\t\t\t\t}).then((): void => {\n\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>New\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{authoritiesDom}\n\t\t\t
    \n\t\t\t\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\n\ninterface Props {\n\tdomain: string;\n\tonChange: (state: string) => void;\n\tonRemove: () => void;\n}\n\nconst css = {\n\tgroup: {\n\t\twidth: '100%',\n\t\tmaxWidth: '310px',\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\tdomain: {\n\t\twidth: '100%',\n\t\tborderRadius: '0 3px 3px 0',\n\t} as React.CSSProperties,\n\tdomainBox: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class CertificateDomain extends React.Component {\n\trender(): JSX.Element {\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tthis.props.onChange(evt.target.value);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.props.onRemove();\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport Help from './Help';\n\ninterface Props {\n\thidden?: boolean;\n\tdisabled?: boolean;\n\treadOnly?: boolean;\n\tlabel: string;\n\thelp: string;\n\tplaceholder: string;\n\trows: number;\n\tvalue: string;\n\tonChange: (val: string) => void;\n}\n\nconst css = {\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\ttextarea: {\n\t\twidth: '100%',\n\t\tresize: 'none',\n\t\tfontSize: '12px',\n\t\tfontFamily: '\"Lucida Console\", Monaco, monospace',\n\t} as React.CSSProperties,\n};\n\nexport default class PageTextArea extends React.Component {\n\trender(): JSX.Element {\n\t\treturn \n\t\t\t{this.props.label}\n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.props.onChange(evt.target.value);\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as CertificateTypes from '../types/CertificateTypes';\nimport * as CertificateActions from '../actions/CertificateActions';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport CertificateDomain from './CertificateDomain';\nimport PageInput from './PageInput';\nimport PageSelect from './PageSelect';\nimport PageInfo from './PageInfo';\nimport PageTextArea from './PageTextArea';\nimport PageSave from './PageSave';\nimport ConfirmButton from './ConfirmButton';\nimport Help from './Help';\n\ninterface Props {\n\tcertificate: CertificateTypes.CertificateRo;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\tcertificate: CertificateTypes.Certificate;\n\taddDomain: string;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px 10px 0 10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\tdomain: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n};\n\nexport default class Certificate extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\tcertificate: null,\n\t\t\taddDomain: null,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet certificate: any;\n\n\t\tif (this.state.changed) {\n\t\t\tcertificate = {\n\t\t\t\t...this.state.certificate,\n\t\t\t};\n\t\t} else {\n\t\t\tcertificate = {\n\t\t\t\t...this.props.certificate,\n\t\t\t};\n\t\t}\n\n\t\tcertificate[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tcertificate: certificate,\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tCertificateActions.commit(this.state.certificate).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tcertificate: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tCertificateActions.remove(this.props.certificate.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddDomain = (): void => {\n\t\tlet cert: CertificateTypes.Certificate;\n\n\t\tif (this.state.changed) {\n\t\t\tcert = {\n\t\t\t\t...this.state.certificate,\n\t\t\t};\n\t\t} else {\n\t\t\tcert = {\n\t\t\t\t...this.props.certificate,\n\t\t\t};\n\t\t}\n\n\t\tlet acmeDomains = [\n\t\t\t...cert.acme_domains,\n\t\t\t'',\n\t\t];\n\n\t\tcert.acme_domains = acmeDomains;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddDomain: '',\n\t\t\tcertificate: cert,\n\t\t});\n\t}\n\n\tonChangeDomain(i: number, state: string): void {\n\t\tlet cert: CertificateTypes.Certificate;\n\n\t\tif (this.state.changed) {\n\t\t\tcert = {\n\t\t\t\t...this.state.certificate,\n\t\t\t};\n\t\t} else {\n\t\t\tcert = {\n\t\t\t\t...this.props.certificate,\n\t\t\t};\n\t\t}\n\n\t\tlet acmeDomains = [\n\t\t\t...cert.acme_domains,\n\t\t];\n\n\t\tacmeDomains[i] = state;\n\n\t\tcert.acme_domains = acmeDomains;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tcertificate: cert,\n\t\t});\n\t}\n\n\tonRemoveDomain(i: number): void {\n\t\tlet cert: CertificateTypes.Certificate;\n\n\t\tif (this.state.changed) {\n\t\t\tcert = {\n\t\t\t\t...this.state.certificate,\n\t\t\t};\n\t\t} else {\n\t\t\tcert = {\n\t\t\t\t...this.props.certificate,\n\t\t\t};\n\t\t}\n\n\t\tlet acmeDomains = [\n\t\t\t...cert.acme_domains,\n\t\t];\n\n\t\tacmeDomains.splice(i, 1);\n\n\t\tcert.acme_domains = acmeDomains;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddDomain: '',\n\t\t\tcertificate: cert,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet cert: CertificateTypes.Certificate = this.state.certificate ||\n\t\t\tthis.props.certificate;\n\n\t\tlet info: CertificateTypes.Info = this.props.certificate.info || {};\n\n\t\tlet domains: JSX.Element[] = [];\n\t\tfor (let i = 0; i < cert.acme_domains.length; i++) {\n\t\t\tlet index = i;\n\n\t\t\tdomains.push(\n\t\t\t\t {\n\t\t\t\t\t\tthis.onChangeDomain(index, state);\n\t\t\t\t\t}}\n\t\t\t\t\tonRemove={(): void => {\n\t\t\t\t\t\tthis.onRemoveDomain(index);\n\t\t\t\t\t}}\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('key', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('certificate', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\tLetsEncrypt Domains\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tAdd Domain\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('type', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tcertificate: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as CertificateTypes from '../types/CertificateTypes';\nimport CertificatesStore from '../stores/CertificatesStore';\nimport * as CertificateActions from '../actions/CertificateActions';\nimport NonState from './NonState';\nimport Certificate from './Certificate';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\n\ninterface State {\n\tcertificates: CertificateTypes.CertificatesRo;\n\tdisabled: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n\tnoCerts: {\n\t\theight: 'auto',\n\t} as React.CSSProperties,\n};\n\nexport default class Certificates extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tcertificates: CertificatesStore.certificates,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tCertificatesStore.addChangeListener(this.onChange);\n\t\tCertificateActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tCertificatesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tcertificates: CertificatesStore.certificates,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet certsDom: JSX.Element[] = [];\n\n\t\tthis.state.certificates.forEach((\n\t\t\t\tcert: CertificateTypes.CertificateRo): void => {\n\t\t\tcertsDom.push();\n\t\t});\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Certificates

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tCertificateActions.create(null).then((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>New\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t{certsDom}\n\t\t\t
    \n\t\t\t\n\t\t;\n\t}\n}\n","/// \nimport * as ChartTypes from '../types/ChartTypes';\n\nexport const SYNC = 'endpoint.sync';\nexport const SYNC_NAMES = 'endpoint.sync_names';\nexport const TRAVERSE = 'endpoint.traverse';\nexport const FILTER = 'endpoint.filter';\nexport const CHANGE = 'endpoint.change';\n\nexport interface Endpoint {\n\tid: string;\n\tname?: string;\n\troles?: string[];\n\tclient_key?: ClientKey;\n\thas_client_key?: boolean;\n\treset_client_key?: boolean;\n\tdata?: EndpointData;\n\tinfo?: EndpointInfo;\n}\n\nexport interface EndpointInfo {\n\talerts?: {[key: string]: string};\n\tchecks?: {[key: string]: string};\n}\n\nexport interface EndpointData {\n\thostname?: string;\n\tuptime?: number;\n\tplatform?: string;\n\tpackage_updates?: number;\n\tvirtualization?: string;\n\tcpu_cores?: number;\n\tmem_total?: number;\n\tswap_total?: number;\n\thuge_total?: number;\n\tmd_stat?: MdState[];\n}\n\nexport interface MdState {\n\tname?: string;\n\tstate?: string;\n\tlevel?: string;\n\tfailed?: number;\n\tspare?: number;\n\ttotal?: number;\n}\n\nexport type LogData = string[];\n\nexport interface ClientKey {\n\tsecret?: string;\n}\n\nexport interface Filter {\n\tid?: string;\n\tname?: string;\n\trole?: string;\n}\n\nexport type Endpoints = Endpoint[];\n\nexport type EndpointRo = Readonly;\nexport type EndpointsRo = ReadonlyArray;\n\nexport interface EndpointDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tendpoint?: Endpoint;\n\t\tendpoints?: Endpoints;\n\t\tpage?: number;\n\t\tpageCount?: number;\n\t\tfilter?: Filter;\n\t\tcount?: number;\n\t};\n}\n\nexport interface SystemChart {\n\tcpu_usage?: ChartTypes.Points;\n\tmem_usage?: ChartTypes.Points;\n\tswap_usage?: ChartTypes.Points;\n\thuge_usage?: ChartTypes.Points;\n}\n\nexport interface LoadChart {\n\tload1?: ChartTypes.Points;\n\tload5?: ChartTypes.Points;\n\tload15?: ChartTypes.Points;\n}\n\nexport type DiskChart = {[key: string]: ChartTypes.Points};\n\nexport type DiskIoChart = {[key: string]: ChartTypes.Points};\n\nexport type NetworkChart = {[key: string]: ChartTypes.Points};\n\nexport type CheckChart = {[key: string]: ChartTypes.Points};\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as EndpointTypes from '../types/EndpointTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass EndpointsStore extends EventEmitter {\n\t_endpoints: EndpointTypes.EndpointsRo = Object.freeze([]);\n\t_page: number;\n\t_pageCount: number;\n\t_filter: EndpointTypes.Filter = null;\n\t_count: number;\n\t_map: {[key: string]: number} = {};\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget endpoints(): EndpointTypes.EndpointsRo {\n\t\treturn this._endpoints;\n\t}\n\n\tget endpointsM(): EndpointTypes.Endpoints {\n\t\tlet endpoints: EndpointTypes.Endpoints = [];\n\t\tthis._endpoints.forEach((endpoint: EndpointTypes.EndpointRo): void => {\n\t\t\tendpoints.push({\n\t\t\t\t...endpoint,\n\t\t\t});\n\t\t});\n\t\treturn endpoints;\n\t}\n\n\tget page(): number {\n\t\treturn this._page || 0;\n\t}\n\n\tget pageCount(): number {\n\t\treturn this._pageCount || 20;\n\t}\n\n\tget pages(): number {\n\t\treturn Math.ceil(this.count / this.pageCount);\n\t}\n\n\tget filter(): EndpointTypes.Filter {\n\t\treturn this._filter;\n\t}\n\n\tget count(): number {\n\t\treturn this._count || 0;\n\t}\n\n\tendpoint(id: string): EndpointTypes.EndpointRo {\n\t\tlet i = this._map[id];\n\t\tif (i === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._endpoints[i];\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_traverse(page: number): void {\n\t\tthis._page = Math.min(this.pages, page);\n\t}\n\n\t_filterCallback(filter: EndpointTypes.Filter): void {\n\t\tif ((this._filter !== null && filter === null) ||\n\t\t\t(this._filter === {} && filter !== null) || (\n\t\t\t\tfilter && this._filter && (\n\t\t\t\t\tfilter.name !== this._filter.name\n\t\t\t\t))) {\n\t\t\tthis._traverse(0);\n\t\t}\n\t\tthis._filter = filter;\n\t\tthis.emitChange();\n\t}\n\n\t_sync(endpoints: EndpointTypes.Endpoint[], count: number): void {\n\t\tthis._map = {};\n\t\tfor (let i = 0; i < endpoints.length; i++) {\n\t\t\tendpoints[i] = Object.freeze(endpoints[i]);\n\t\t\tthis._map[endpoints[i].id] = i;\n\t\t}\n\n\t\tthis._count = count;\n\t\tthis._endpoints = Object.freeze(endpoints);\n\t\tthis._page = Math.min(this.pages, this.page);\n\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: EndpointTypes.EndpointDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase EndpointTypes.TRAVERSE:\n\t\t\t\tthis._traverse(action.data.page);\n\t\t\t\tbreak;\n\n\t\t\tcase EndpointTypes.FILTER:\n\t\t\t\tthis._filterCallback(action.data.filter);\n\t\t\t\tbreak;\n\n\t\t\tcase EndpointTypes.SYNC:\n\t\t\t\tthis._sync(action.data.endpoints, action.data.count);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new EndpointsStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport EndpointsStore from '../stores/EndpointsStore';\nimport * as EndpointTypes from '../types/EndpointTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\nlet dataSyncReqs: {[key: string]: SuperAgent.Request} = {};\n\nexport function sync(): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/endpoint')\n\t\t\t.query({\n\t\t\t\t...EndpointsStore.filter,\n\t\t\t\tpage: EndpointsStore.page,\n\t\t\t\tpage_count: EndpointsStore.pageCount,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load endpoints');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: EndpointTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tendpoints: res.body.endpoints,\n\t\t\t\t\t\tcount: res.body.count,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function traverse(page: number): Promise {\n\tDispatcher.dispatch({\n\t\ttype: EndpointTypes.TRAVERSE,\n\t\tdata: {\n\t\t\tpage: page,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function filter(filt: EndpointTypes.Filter): Promise {\n\tDispatcher.dispatch({\n\t\ttype: EndpointTypes.FILTER,\n\t\tdata: {\n\t\t\tfilter: filt,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function commit(endpoint: EndpointTypes.Endpoint): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/endpoint/' + endpoint.id)\n\t\t\t.send(endpoint)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to save endpoint');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function create(endpoint: EndpointTypes.Endpoint): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/endpoint')\n\t\t\t.send(endpoint)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to create endpoint');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function remove(endpointId: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/endpoint/' + endpointId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete endpoints');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function removeMulti(endpointIds: string[]): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/endpoint')\n\t\t\t.send(endpointIds)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete endpoints');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function chart(endpointId: string, resource: string,\n\t\tperiod: number, interval: number): Promise {\n\tlet curDataSyncId = MiscUtils.uuid();\n\n\tlet loader = new Loader().loading();\n\n\t// TODO Duplicate requests for numbered resource\n\n\tresource = resource.replace(/[0-9]/g, '');\n\n\treturn new Promise((resolve, reject): void => {\n\t\tlet req = SuperAgent.get('/endpoint/' + endpointId + '/chart')\n\t\t\t.query({\n\t\t\t\tresource: resource,\n\t\t\t\tperiod: period.toString(),\n\t\t\t\tinterval: interval.toString(),\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.on('abort', () => {\n\t\t\t\tloader.done();\n\t\t\t\tresolve(null);\n\t\t\t});\n\t\tdataSyncReqs[curDataSyncId] = req;\n\n\t\treq.end((err: any, res: SuperAgent.Response): void => {\n\t\t\tdelete dataSyncReqs[curDataSyncId];\n\t\t\tloader.done();\n\n\t\t\tif (res && res.status === 401) {\n\t\t\t\twindow.location.href = '/login';\n\t\t\t\tresolve(null);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (err) {\n\t\t\t\tAlert.errorRes(res, 'Failed to load endpoint chart');\n\t\t\t\treject(err);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve(res.body);\n\t\t});\n\t});\n}\n\nexport function log(endpointId: string, resource: string): Promise {\n\tlet curDataSyncId = MiscUtils.uuid();\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tlet req = SuperAgent.get('/endpoint/' + endpointId + '/log')\n\t\t\t.query({\n\t\t\t\tresource: resource,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.on('abort', () => {\n\t\t\t\tloader.done();\n\t\t\t\tresolve(null);\n\t\t\t});\n\t\tdataSyncReqs[curDataSyncId] = req;\n\n\t\treq.end((err: any, res: SuperAgent.Response): void => {\n\t\t\tdelete dataSyncReqs[curDataSyncId];\n\t\t\tloader.done();\n\n\t\t\tif (res && res.status === 401) {\n\t\t\t\twindow.location.href = '/login';\n\t\t\t\tresolve(null);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (err) {\n\t\t\t\tAlert.errorRes(res, 'Failed to load endpoint log');\n\t\t\t\treject(err);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve(res.body);\n\t\t});\n\t});\n}\n\nexport function dataCancel(): void {\n\tfor (let [key, val] of Object.entries(dataSyncReqs)) {\n\t\tval.abort();\n\t}\n}\n\nEventDispatcher.register((action: EndpointTypes.EndpointDispatch) => {\n\tswitch (action.type) {\n\t\tcase EndpointTypes.CHANGE:\n\t\t\tsync();\n\t\t\tbreak;\n\t}\n});\n","/// \nexport const SYNC = 'check.sync';\nexport const SYNC_NAMES = 'check.sync_names';\nexport const TRAVERSE = 'check.traverse';\nexport const FILTER = 'check.filter';\nexport const CHANGE = 'check.change';\n\nexport interface Check {\n\tid: string;\n\tname?: string;\n\troles?: string[];\n\tfrequency?: number;\n\ttype?: string;\n\ttargets?: string[];\n\ttimeout?: number;\n\tstatus_code?: number;\n\theaders?: Header[];\n\tstates?: State[];\n}\n\nexport interface Header {\n\tkey?: string;\n\tvalue?: string;\n}\n\nexport interface State {\n\te?: string;\n\tt?: string;\n\tx?: string[];\n\tl?: string[];\n\tr?: string[];\n}\n\nexport interface Filter {\n\tid?: string;\n\tname?: string;\n\trole?: string;\n}\n\nexport type Checks = Check[];\n\nexport type CheckRo = Readonly;\nexport type ChecksRo = ReadonlyArray;\n\nexport interface CheckDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tcheck?: Check;\n\t\tchecks?: Checks;\n\t\tpage?: number;\n\t\tpageCount?: number;\n\t\tfilter?: Filter;\n\t\tcount?: number;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as CheckTypes from '../types/CheckTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass ChecksStore extends EventEmitter {\n\t_checks: CheckTypes.ChecksRo = Object.freeze([]);\n\t_page: number;\n\t_pageCount: number;\n\t_filter: CheckTypes.Filter = null;\n\t_count: number;\n\t_map: {[key: string]: number} = {};\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget checks(): CheckTypes.ChecksRo {\n\t\treturn this._checks;\n\t}\n\n\tget checksM(): CheckTypes.Checks {\n\t\tlet checks: CheckTypes.Checks = [];\n\t\tthis._checks.forEach((check: CheckTypes.CheckRo): void => {\n\t\t\tchecks.push({\n\t\t\t\t...check,\n\t\t\t});\n\t\t});\n\t\treturn checks;\n\t}\n\n\tget page(): number {\n\t\treturn this._page || 0;\n\t}\n\n\tget pageCount(): number {\n\t\treturn this._pageCount || 20;\n\t}\n\n\tget pages(): number {\n\t\treturn Math.ceil(this.count / this.pageCount);\n\t}\n\n\tget filter(): CheckTypes.Filter {\n\t\treturn this._filter;\n\t}\n\n\tget count(): number {\n\t\treturn this._count || 0;\n\t}\n\n\tcheck(id: string): CheckTypes.CheckRo {\n\t\tlet i = this._map[id];\n\t\tif (i === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._checks[i];\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_traverse(page: number): void {\n\t\tthis._page = Math.min(this.pages, page);\n\t}\n\n\t_filterCallback(filter: CheckTypes.Filter): void {\n\t\tif ((this._filter !== null && filter === null) ||\n\t\t\t(this._filter === {} && filter !== null) || (\n\t\t\t\tfilter && this._filter && (\n\t\t\t\t\tfilter.name !== this._filter.name\n\t\t\t\t))) {\n\t\t\tthis._traverse(0);\n\t\t}\n\t\tthis._filter = filter;\n\t\tthis.emitChange();\n\t}\n\n\t_sync(checks: CheckTypes.Check[], count: number): void {\n\t\tthis._map = {};\n\t\tfor (let i = 0; i < checks.length; i++) {\n\t\t\tchecks[i] = Object.freeze(checks[i]);\n\t\t\tthis._map[checks[i].id] = i;\n\t\t}\n\n\t\tthis._count = count;\n\t\tthis._checks = Object.freeze(checks);\n\t\tthis._page = Math.min(this.pages, this.page);\n\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: CheckTypes.CheckDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase CheckTypes.TRAVERSE:\n\t\t\t\tthis._traverse(action.data.page);\n\t\t\t\tbreak;\n\n\t\t\tcase CheckTypes.FILTER:\n\t\t\t\tthis._filterCallback(action.data.filter);\n\t\t\t\tbreak;\n\n\t\t\tcase CheckTypes.SYNC:\n\t\t\t\tthis._sync(action.data.checks, action.data.count);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new ChecksStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport ChecksStore from '../stores/ChecksStore';\nimport * as CheckTypes from '../types/CheckTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\nlet dataSyncReqs: {[key: string]: SuperAgent.Request} = {};\n\nexport function sync(): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/checks')\n\t\t\t.query({\n\t\t\t\t...ChecksStore.filter,\n\t\t\t\tpage: ChecksStore.page,\n\t\t\t\tpage_count: ChecksStore.pageCount,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load checks');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: CheckTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tchecks: res.body.checks,\n\t\t\t\t\t\tcount: res.body.count,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function traverse(page: number): Promise {\n\tDispatcher.dispatch({\n\t\ttype: CheckTypes.TRAVERSE,\n\t\tdata: {\n\t\t\tpage: page,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function filter(filt: CheckTypes.Filter): Promise {\n\tDispatcher.dispatch({\n\t\ttype: CheckTypes.FILTER,\n\t\tdata: {\n\t\t\tfilter: filt,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function commit(check: CheckTypes.Check): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/checks/' + check.id)\n\t\t\t.send(check)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to save check');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function create(check: CheckTypes.Check): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/checks')\n\t\t\t.send(check)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to create check');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function remove(checkId: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/checks/' + checkId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete checks');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function removeMulti(checkIds: string[]): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/checks')\n\t\t\t.send(checkIds)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete checks');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function chart(checkId: string, resource: string,\n\tperiod: number, interval: number): Promise {\n\tlet curDataSyncId = MiscUtils.uuid();\n\n\tlet loader = new Loader().loading();\n\n\tresource = resource.replace(/[0-9]/g, '');\n\n\treturn new Promise((resolve, reject): void => {\n\t\tlet req = SuperAgent.get('/checks/' + checkId + '/chart')\n\t\t\t.query({\n\t\t\t\tresource: resource,\n\t\t\t\tperiod: period.toString(),\n\t\t\t\tinterval: interval.toString(),\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.on('abort', () => {\n\t\t\t\tloader.done();\n\t\t\t\tresolve(null);\n\t\t\t});\n\t\tdataSyncReqs[curDataSyncId] = req;\n\n\t\treq.end((err: any, res: SuperAgent.Response): void => {\n\t\t\tdelete dataSyncReqs[curDataSyncId];\n\t\t\tloader.done();\n\n\t\t\tif (res && res.status === 401) {\n\t\t\t\twindow.location.href = '/login';\n\t\t\t\tresolve(null);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (err) {\n\t\t\t\tAlert.errorRes(res, 'Failed to load check chart');\n\t\t\t\treject(err);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve(res.body);\n\t\t});\n\t});\n}\n\nexport function log(checkId: string, resource: string): Promise {\n\tlet curDataSyncId = MiscUtils.uuid();\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tlet req = SuperAgent.get('/checks/' + checkId + '/log')\n\t\t\t.query({\n\t\t\t\tresource: resource,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.on('abort', () => {\n\t\t\t\tloader.done();\n\t\t\t\tresolve(null);\n\t\t\t});\n\t\tdataSyncReqs[curDataSyncId] = req;\n\n\t\treq.end((err: any, res: SuperAgent.Response): void => {\n\t\t\tdelete dataSyncReqs[curDataSyncId];\n\t\t\tloader.done();\n\n\t\t\tif (res && res.status === 401) {\n\t\t\t\twindow.location.href = '/login';\n\t\t\t\tresolve(null);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (err) {\n\t\t\t\tAlert.errorRes(res, 'Failed to load check log');\n\t\t\t\treject(err);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve(res.body);\n\t\t});\n\t});\n}\n\nexport function dataCancel(): void {\n\tfor (let [key, val] of Object.entries(dataSyncReqs)) {\n\t\tval.abort();\n\t}\n}\n\nEventDispatcher.register((action: CheckTypes.CheckDispatch) => {\n\tswitch (action.type) {\n\t\tcase CheckTypes.CHANGE:\n\t\t\tsync();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as EndpointTypes from '../types/EndpointTypes';\n\nexport interface Point {\n\tx: number;\n\ty: number;\n}\nexport type Points = Point[];\nexport type Chart = Points[];\n\nexport interface Dataset {\n\tlabel: string;\n}\nexport type Datasets = Dataset[];\n\nexport type ChartData = {[key: string]: Points};\n\nexport interface EndpointData {\n\thas_data: boolean;\n\tdata: ChartData;\n}\n\nexport interface Labels {\n\ttitle: string;\n\tresource_label: string;\n\tresource_type: string;\n\tresource_suffix: string;\n\tresource_fixed: number;\n\tresource_min: number;\n\tresource_max?: number;\n\thide_zero?: boolean;\n\tdatasets: Datasets;\n}\n\nexport function getChartLabels(resource: string, data: any): Labels {\n\tswitch (resource) {\n\t\tcase 'system':\n\t\t\treturn {\n\t\t\t\ttitle: 'System Usage',\n\t\t\t\tresource_label: 'Percent',\n\t\t\t\tresource_type: 'float',\n\t\t\t\tresource_suffix: '%',\n\t\t\t\tresource_fixed: 3,\n\t\t\t\tresource_min: 0,\n\t\t\t\tresource_max: 100,\n\t\t\t\tdatasets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'CPU Usage',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Memory Usage',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Swap Usage',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'HugePages Usage',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\tcase 'load':\n\t\t\treturn {\n\t\t\t\ttitle: 'Load Average',\n\t\t\t\tresource_label: 'Load',\n\t\t\t\tresource_type: 'float',\n\t\t\t\tresource_suffix: '',\n\t\t\t\tresource_fixed: 4,\n\t\t\t\tresource_min: 0,\n\t\t\t\tdatasets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Load1',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Load5',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Load15',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\tcase 'disk':\n\t\t\tlet diskData = data as EndpointTypes.DiskChart;\n\t\t\tlet diskDatasets: Datasets = [];\n\n\t\t\tfor (let key of Object.keys(diskData).sort()) {\n\t\t\t\tdiskDatasets.push({\n\t\t\t\t\tlabel: key,\n\t\t\t\t} as Dataset);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttitle: 'Disks',\n\t\t\t\tresource_label: 'Usage',\n\t\t\t\tresource_type: 'float',\n\t\t\t\tresource_suffix: '%',\n\t\t\t\tresource_fixed: 3,\n\t\t\t\tresource_min: 0,\n\t\t\t\tresource_max: 100,\n\t\t\t\thide_zero: true,\n\t\t\t\tdatasets: diskDatasets,\n\t\t\t};\n\t\tcase 'diskio0':\n\t\tcase 'diskio1':\n\t\t\tlet diskioData = data as EndpointTypes.NetworkChart;\n\t\t\tlet diskioDatasets: Datasets = [];\n\n\t\t\tfor (let key of Object.keys(diskioData).sort()) {\n\t\t\t\tlet keys = key.split('-');\n\t\t\t\tlet diskDevice = keys.slice(0, keys.length-1).join('-');\n\t\t\t\tlet dataType = keys[keys.length-1];\n\n\t\t\t\tlet label = '';\n\n\t\t\t\tif (resource === 'diskio0') {\n\t\t\t\t\tswitch (dataType) {\n\t\t\t\t\t\tcase 'br':\n\t\t\t\t\t\t\tlabel = 'Read';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'bw':\n\t\t\t\t\t\t\tlabel = 'Written';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tswitch (dataType) {\n\t\t\t\t\t\tcase 'tr':\n\t\t\t\t\t\t\tlabel = 'Read';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'tw':\n\t\t\t\t\t\t\tlabel = 'Write';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'ti':\n\t\t\t\t\t\t\tlabel = 'I/O';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdiskioDatasets.push({\n\t\t\t\t\tlabel: diskDevice + ' ' + label,\n\t\t\t\t} as Dataset);\n\t\t\t}\n\n\t\t\tif (resource === 'diskio0') {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: 'Disk I/O',\n\t\t\t\t\tresource_label: 'Activity',\n\t\t\t\t\tresource_type: 'bytes',\n\t\t\t\t\tresource_suffix: '',\n\t\t\t\t\tresource_fixed: 2,\n\t\t\t\t\tresource_min: 0,\n\t\t\t\t\thide_zero: true,\n\t\t\t\t\tdatasets: diskioDatasets,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: 'Disk I/O Wait',\n\t\t\t\t\tresource_label: 'Waiting',\n\t\t\t\t\tresource_type: 'milliseconds',\n\t\t\t\t\tresource_suffix: '',\n\t\t\t\t\tresource_fixed: 2,\n\t\t\t\t\tresource_min: 0,\n\t\t\t\t\thide_zero: true,\n\t\t\t\t\tdatasets: diskioDatasets,\n\t\t\t\t};\n\t\t\t}\n\t\tcase 'network':\n\t\t\tlet netData = data as EndpointTypes.NetworkChart;\n\t\t\tlet netDatasets: Datasets = [];\n\n\t\t\tfor (let key of Object.keys(netData).sort()) {\n\t\t\t\tlet keys = key.split('-');\n\t\t\t\tlet iface = keys.slice(0, keys.length-1).join('-');\n\t\t\t\tlet dataType = keys[keys.length-1];\n\n\t\t\t\tlet label = '';\n\t\t\t\tswitch (dataType) {\n\t\t\t\t\tcase 'bs':\n\t\t\t\t\t\tlabel = 'Transmitted';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'br':\n\t\t\t\t\t\tlabel = 'Received';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tlabel = 'Unknown';\n\t\t\t\t}\n\n\t\t\t\tnetDatasets.push({\n\t\t\t\t\tlabel: iface + ' ' + label,\n\t\t\t\t} as Dataset);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttitle: 'Network Traffic',\n\t\t\t\tresource_label: 'Traffic',\n\t\t\t\tresource_type: 'bytes',\n\t\t\t\tresource_suffix: '',\n\t\t\t\tresource_fixed: 2,\n\t\t\t\tresource_min: 0,\n\t\t\t\thide_zero: true,\n\t\t\t\tdatasets: netDatasets,\n\t\t\t};\n\t\tcase 'check0':\n\t\tcase 'check1':\n\t\tcase 'check2':\n\t\t\tlet checkData = data as EndpointTypes.CheckChart;\n\t\t\tlet checkDatasets: Datasets = [];\n\n\t\t\tfor (let key of Object.keys(checkData).sort()) {\n\t\t\t\tlet keys = key.split('-');\n\t\t\t\tlet diskDevice = keys.slice(0, keys.length-1).join('-');\n\t\t\t\tlet dataType = keys[keys.length-1];\n\n\t\t\t\tlet label = '';\n\n\t\t\t\tif (resource === 'check0') {\n\t\t\t\t\tswitch (dataType) {\n\t\t\t\t\t\tcase 'u':\n\t\t\t\t\t\t\tlabel = 'Up';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (resource === 'check1') {\n\t\t\t\t\tswitch (dataType) {\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tlabel = 'Down';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (resource === 'check2') {\n\t\t\t\t\tswitch (dataType) {\n\t\t\t\t\t\tcase 'p':\n\t\t\t\t\t\t\tlabel = 'Latency';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcheckDatasets.push({\n\t\t\t\t\tlabel: diskDevice + ' ' + label,\n\t\t\t\t} as Dataset);\n\t\t\t}\n\n\t\t\tif (resource === 'check0') {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: 'Targets Up',\n\t\t\t\t\tresource_label: 'Up',\n\t\t\t\t\tresource_type: '',\n\t\t\t\t\tresource_suffix: '',\n\t\t\t\t\tresource_fixed: 0,\n\t\t\t\t\tresource_min: 0,\n\t\t\t\t\tdatasets: checkDatasets,\n\t\t\t\t};\n\t\t\t} else if (resource === 'check1') {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: 'Targets Down',\n\t\t\t\t\tresource_label: 'Down',\n\t\t\t\t\tresource_type: '',\n\t\t\t\t\tresource_suffix: '',\n\t\t\t\t\tresource_fixed: 0,\n\t\t\t\t\tresource_min: 0,\n\t\t\t\t\tdatasets: checkDatasets,\n\t\t\t\t};\n\t\t\t} else if (resource === 'check2') {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: 'Average Latency',\n\t\t\t\t\tresource_label: 'Latency',\n\t\t\t\t\tresource_type: 'milliseconds',\n\t\t\t\t\tresource_suffix: '',\n\t\t\t\t\tresource_fixed: 0,\n\t\t\t\t\tresource_min: 0,\n\t\t\t\t\tdatasets: checkDatasets,\n\t\t\t\t};\n\t\t\t}\n\t}\n\treturn undefined;\n}\n\nexport function getChartData(resource: string, data: any): Chart {\n\tswitch (resource) {\n\t\tcase 'system':\n\t\t\treturn [\n\t\t\t\tdata.cpu_usage,\n\t\t\t\tdata.mem_usage,\n\t\t\t\tdata.swap_usage,\n\t\t\t\tdata.huge_usage,\n\t\t\t];\n\t\tcase 'load':\n\t\t\treturn [\n\t\t\t\tdata.load1,\n\t\t\t\tdata.load5,\n\t\t\t\tdata.load15,\n\t\t\t];\n\t\tcase 'disk':\n\t\t\tlet diskData = data as EndpointTypes.DiskChart;\n\t\t\tlet diskChart: Chart = [];\n\n\t\t\tfor (let key of Object.keys(diskData).sort()) {\n\t\t\t\tdiskChart.push(diskData[key]);\n\t\t\t}\n\n\t\t\treturn diskChart;\n\t\tcase 'diskio0':\n\t\tcase 'diskio1':\n\t\t\tlet diskioData = data as EndpointTypes.DiskIoChart;\n\t\t\tlet diskioChart: Chart = [];\n\n\t\t\tfor (let key of Object.keys(diskioData).sort()) {\n\t\t\t\tlet keys = key.split('-');\n\t\t\t\tlet dataType = keys[keys.length-1];\n\n\t\t\t\tif (resource === 'diskio0') {\n\t\t\t\t\tif (dataType === 'br' || dataType === 'bw') {\n\t\t\t\t\t\tdiskioChart.push(diskioData[key]);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (dataType === 'tr' || dataType === 'tw' || dataType === 'ti') {\n\t\t\t\t\t\tdiskioChart.push(diskioData[key]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn diskioChart;\n\t\tcase 'network':\n\t\t\tlet netData = data as EndpointTypes.NetworkChart;\n\t\t\tlet netChart: Chart = [];\n\n\t\t\tfor (let key of Object.keys(netData).sort()) {\n\t\t\t\tnetChart.push(netData[key]);\n\t\t\t}\n\n\t\t\treturn netChart;\n\t\tcase 'check0':\n\t\tcase 'check1':\n\t\tcase 'check2':\n\t\t\tlet checkData = data as EndpointTypes.CheckChart;\n\t\t\tlet checkChart: Chart = [];\n\n\t\t\tfor (let key of Object.keys(checkData).sort()) {\n\t\t\t\tlet keys = key.split('-');\n\t\t\t\tlet dataType = keys[keys.length-1];\n\n\t\t\t\tif (resource === 'check0') {\n\t\t\t\t\tif (dataType === 'u') {\n\t\t\t\t\t\tcheckChart.push(checkData[key]);\n\t\t\t\t\t}\n\t\t\t\t} else if (resource === 'check1') {\n\t\t\t\t\tif (dataType === 'd') {\n\t\t\t\t\t\tcheckChart.push(checkData[key]);\n\t\t\t\t\t}\n\t\t\t\t} else if (resource === 'check2') {\n\t\t\t\t\tif (dataType === 'p') {\n\t\t\t\t\t\tcheckChart.push(checkData[key]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn checkChart;\n\t}\n\n\treturn undefined;\n}\n","/// \nimport * as React from 'react';\nimport * as ChartJs from 'chart.js';\nimport * as CheckActions from '../actions/CheckActions';\nimport * as EndpointActions from '../actions/EndpointActions';\nimport * as ChartTypes from '../types/ChartTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport * as Theme from '../Theme';\n\ninterface Props {\n\tendpoint?: string;\n\tcheck?: string;\n\tresource: string;\n\tsync: number;\n\tperiod: number;\n\tinterval: number;\n\tleft: boolean;\n\tonLoading: () => void;\n\tonLoaded: () => void;\n\tgetBoxRect: () => DOMRect;\n}\n\ninterface State {\n\thidden: boolean;\n\tdisabled: boolean;\n}\n\n// const colors = [\n// \t'#d50000', // red\n// \t'#c51162', // pink\n// \t'#aa00ff', // purple\n// \t'#6200ea', // deep purple\n// \t'#304ffe', // indigo\n// \t'#2962ff', // blue\n// \t'#0091ea', // light blue\n// \t'#00b8d4', // cyan\n// \t'#00bfa5', // teal\n// \t'#00c853', // green\n// \t'#64dd17', // light green\n// \t'#aeea00', // lime\n// \t'#ffd600', // yellow\n// \t'#ffab00', // amber\n// \t'#ff6d00', // orange\n// \t'#dd2c00', // deep orange\n// \t'#5d4037', // brown\n// \t'#455a64', // blue grey\n// ];\n\nconst colors = [\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n];\n\nexport default class EndpointChart extends React.Component {\n\tdata: ChartTypes.ChartData;\n\tsync: number;\n\tperiod: number;\n\tinterval: number;\n\tchart: ChartJs.Chart;\n\tchartRef: React.RefObject;\n\tlabels: ChartTypes.Labels;\n\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\thidden: false,\n\t\t\tdisabled: false,\n\t\t};\n\t\tthis.chartRef = React.createRef();\n\t}\n\n\tticks = (axis: ChartJs.Scale) => {\n\t\tlet ticks = axis.ticks;\n\t\tlet newTicks: ChartJs.Tick[] = [];\n\t\tlet dataset = Object.values(this.data)[0];\n\t\tlet tickMod = 3600000; // 1 hour\n\t\tlet len = dataset.length;\n\n\t\tif (len) {\n\t\t\tlet first = dataset[0] as ChartJs.ScatterDataPoint;\n\t\t\tlet last = dataset[len-1] as ChartJs.ScatterDataPoint;\n\t\t\tlet range = last.x - first.x;\n\n\t\t\tif (range >= 2833920000) {\n\t\t\t\ttickMod = 604800000; // 7 day\n\t\t\t} else if (range >= 1451520000) {\n\t\t\t\ttickMod = 172800000; // 2 day\n\t\t\t} else if (range >= 611280000) {\n\t\t\t\ttickMod = 86400000; // 1 day\n\t\t\t} else if (range >= 276480000) {\n\t\t\t\ttickMod = 43200000; // 12 hours\n\t\t\t} else if (range >= 89280000) {\n\t\t\t\ttickMod = 21600000; // 6 hours\n\t\t\t} else {\n\t\t\t\ttickMod = 3600000; // 1 hours\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = 0; i < ticks.length; i++) {\n\t\t\tlet tick = ticks[i];\n\n\t\t\tif (tick.value % tickMod === 0) {\n\t\t\t\tnewTicks.push(tick);\n\t\t\t}\n\t\t}\n\n\t\taxis.ticks = newTicks;\n\t}\n\n\tconfig = (): ChartJs.ChartConfiguration => {\n\t\tthis.labels = ChartTypes.getChartLabels(this.props.resource, this.data);\n\t\tlet self = this;\n\n\t\tlet config = {\n\t\t\ttype: 'line',\n\t\t\toptions: {\n\t\t\t\tscales: {\n\t\t\t\t\tx: {\n\t\t\t\t\t\ttype: 'time',\n\t\t\t\t\t\ttitle: {\n\t\t\t\t\t\t\tdisplay: true,\n\t\t\t\t\t\t\ttext: 'Time',\n\t\t\t\t\t\t\tcolor: Theme.chartColor1(),\n\t\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\t\tfont: {\n\t\t\t\t\t\t\t\tweight: 'bold',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttime: {\n\t\t\t\t\t\t\tunit: 'minute',\n\t\t\t\t\t\t\tdisplayFormats: {\n\t\t\t\t\t\t\t\tminute: 'HH:mm',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tticks: {\n\t\t\t\t\t\t\tstepSize: 1,\n\t\t\t\t\t\t\tcount: 100,\n\t\t\t\t\t\t\tmaxTicksLimit: 100,\n\t\t\t\t\t\t\tcolor: Theme.chartColor1(),\n\t\t\t\t\t\t\tsource: 'data',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgrid: {\n\t\t\t\t\t\t\tcolor: Theme.chartColor2(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbeforeTickToLabelConversion: this.ticks,\n\t\t\t\t\t},\n\t\t\t\t\ty: {\n\t\t\t\t\t\tmin: this.labels.resource_min,\n\t\t\t\t\t\tmax: this.labels.resource_max,\n\t\t\t\t\t\toffset: false,\n\t\t\t\t\t\tbeginAtZero: true,\n\t\t\t\t\t\ttitle: {\n\t\t\t\t\t\t\tdisplay: true,\n\t\t\t\t\t\t\ttext: this.labels.resource_label,\n\t\t\t\t\t\t\tcolor: Theme.chartColor1(),\n\t\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\t\tfont: {\n\t\t\t\t\t\t\t\tweight: 'bold',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tticks: {\n\t\t\t\t\t\t\tcolor: Theme.chartColor1(),\n\t\t\t\t\t\t\tcallback: (val: number): number | string => {\n\t\t\t\t\t\t\t\tswitch (this.labels.resource_type) {\n\t\t\t\t\t\t\t\t\tcase 'bytes':\n\t\t\t\t\t\t\t\t\t\treturn MiscUtils.formatBytes(val, 0);\n\t\t\t\t\t\t\t\t\tcase 'milliseconds':\n\t\t\t\t\t\t\t\t\t\treturn MiscUtils.formatMs(val);\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\treturn val;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgrid: {\n\t\t\t\t\t\t\tcolor: Theme.chartColor2(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tplugins: {\n\t\t\t\t\ttitle: {\n\t\t\t\t\t\tdisplay: true,\n\t\t\t\t\t\ttext: this.labels.title,\n\t\t\t\t\t\tcolor: Theme.chartColor1(),\n\t\t\t\t\t\tpadding: 3,\n\t\t\t\t\t\tfont: {\n\t\t\t\t\t\t\tsize: 13,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\ttooltip: {\n\t\t\t\t\t\tenabled: false,\n\t\t\t\t\t\tmode: 'index',\n\t\t\t\t\t\tintersect: false,\n\t\t\t\t\t\tbackgroundColor: 'rgba(0, 0, 0, 0.7)',\n\t\t\t\t\t\texternal: (context): void => {\n\t\t\t\t\t\t\tlet toolElm = document.getElementById('chartjs-tooltip');\n\n\t\t\t\t\t\t\tif (!toolElm) {\n\t\t\t\t\t\t\t\ttoolElm = document.createElement('div');\n\t\t\t\t\t\t\t\ttoolElm.id = 'chartjs-tooltip';\n\t\t\t\t\t\t\t\ttoolElm.className = 'bp3-card';\n\t\t\t\t\t\t\t\ttoolElm.innerHTML = '
    ';\n\t\t\t\t\t\t\t\tdocument.body.appendChild(toolElm);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst model = context.tooltip;\n\t\t\t\t\t\t\tif (model.opacity === 0) {\n\t\t\t\t\t\t\t\ttoolElm.style.opacity = '0';\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfunction getBody(bodyItem: any) {\n\t\t\t\t\t\t\t\treturn bodyItem.lines;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet boxRect = this.props.getBoxRect()\n\t\t\t\t\t\t\tlet boxBottom = boxRect.bottom + window.pageYOffset\n\t\t\t\t\t\t\tlet boxTop = boxRect.top + window.pageYOffset + 130\n\n\t\t\t\t\t\t\tlet rowCount = 0;\n\t\t\t\t\t\t\tlet height = 0;\n\t\t\t\t\t\t\tif (model.body) {\n\t\t\t\t\t\t\t\tconst titleLines = model.title || [];\n\t\t\t\t\t\t\t\tconst bodyLines = model.body.map(getBody);\n\n\t\t\t\t\t\t\t\tlet innerHtml = '';\n\n\t\t\t\t\t\t\t\ttitleLines.forEach(function(title) {\n\t\t\t\t\t\t\t\t\tinnerHtml += '' + title + '';\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tinnerHtml += '';\n\n\t\t\t\t\t\t\t\tlet tableRows: string[] = [];\n\n\t\t\t\t\t\t\t\tbodyLines.forEach(function(body, i) {\n\t\t\t\t\t\t\t\t\tif (!body || !body.length) {\n\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tlet items = body[0].split(';')\n\t\t\t\t\t\t\t\t\tif (items.length < 2) {\n\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst colors = model.labelColors[i];\n\t\t\t\t\t\t\t\t\tlet style = 'background:' + colors.backgroundColor;\n\t\t\t\t\t\t\t\t\tstyle += '; border-color:' + colors.borderColor;\n\t\t\t\t\t\t\t\t\tconst span = '';\n\t\t\t\t\t\t\t\t\ttableRows.push('' + span + items[0] +\n\t\t\t\t\t\t\t\t\t\t'' + items[1] + '')\n\n\t\t\t\t\t\t\t\t\trowCount += 1\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\theight = 26.33 + (rowCount * 17.33);\n\n\t\t\t\t\t\t\t\tlet double = height > (boxRect.height - 130);\n\t\t\t\t\t\t\t\tlet curRow = '';\n\n\t\t\t\t\t\t\t\trowCount = 0\n\t\t\t\t\t\t\t\ttableRows.forEach(function(columns, i) {\n\t\t\t\t\t\t\t\t\tif (double && !curRow) {\n\t\t\t\t\t\t\t\t\t\tcurRow = columns\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tinnerHtml += '' + curRow + columns + '';\n\t\t\t\t\t\t\t\t\t\tcurRow = '';\n\t\t\t\t\t\t\t\t\t\trowCount += 1\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\tif (curRow) {\n\t\t\t\t\t\t\t\t\tinnerHtml += '' + curRow + '';\n\t\t\t\t\t\t\t\t\tcurRow = '';\n\t\t\t\t\t\t\t\t\trowCount += 1\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\theight = 26.33 + (rowCount * 17.33);\n\n\t\t\t\t\t\t\t\tinnerHtml += '';\n\n\t\t\t\t\t\t\t\tlet tableRoot = toolElm.querySelector('table');\n\t\t\t\t\t\t\t\ttableRoot.innerHTML = innerHtml;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttoolElm = document.getElementById('chartjs-tooltip');\n\t\t\t\t\t\t\tconst position = context.chart.canvas.getBoundingClientRect();\n\n\t\t\t\t\t\t\ttoolElm.style.opacity = '1';\n\t\t\t\t\t\t\ttoolElm.style.position = 'absolute';\n\n\t\t\t\t\t\t\tif (this.props.left) {\n\t\t\t\t\t\t\t\ttoolElm.style.right = \"\"\n\t\t\t\t\t\t\t\ttoolElm.style.left = (document.body.offsetWidth -\n\t\t\t\t\t\t\t\t\tposition.right + window.pageXOffset - 18) + 'px';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttoolElm.style.left = \"\"\n\t\t\t\t\t\t\t\ttoolElm.style.right = (document.body.offsetWidth -\n\t\t\t\t\t\t\t\t\tposition.left + window.pageXOffset + 3) + 'px';\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet toolTop = Math.round(position.top + (position.height / 2) -\n\t\t\t\t\t\t\t\t(height / 2) + window.pageYOffset);\n\n\t\t\t\t\t\t\tif (height > (boxRect.height - 130)) {\n\t\t\t\t\t\t\t\ttoolTop = Math.round(boxRect.top + (boxRect.height / 2) -\n\t\t\t\t\t\t\t\t\t(height / 2) + window.pageYOffset);\n\t\t\t\t\t\t\t} else if (toolTop < boxTop) {\n\t\t\t\t\t\t\t\ttoolTop = boxTop\n\t\t\t\t\t\t\t} else if ((toolTop + height) > boxBottom) {\n\t\t\t\t\t\t\t\t//toolTop -= (toolTop + height) - boxBottom\n\t\t\t\t\t\t\t\ttoolTop = boxBottom - height\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttoolElm.style.top = toolTop + 'px';\n\t\t\t\t\t\t\ttoolElm.style.pointerEvents = 'none';\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcallbacks: {\n\t\t\t\t\t\t\tlabel(item): string {\n\t\t\t\t\t\t\t\tlet raw = item.raw as any;\n\n\t\t\t\t\t\t\t\tif (self.labels.hide_zero && !raw.y) {\n\t\t\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet val = '';\n\t\t\t\t\t\t\t\tif (raw) {\n\t\t\t\t\t\t\t\t\tswitch (self.labels.resource_type) {\n\t\t\t\t\t\t\t\t\t\tcase 'bytes':\n\t\t\t\t\t\t\t\t\t\t\tval = MiscUtils.formatBytes(raw.y,\n\t\t\t\t\t\t\t\t\t\t\t\tself.labels.resource_fixed);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 'milliseconds':\n\t\t\t\t\t\t\t\t\t\t\tval = MiscUtils.formatMs(raw.y);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 'float':\n\t\t\t\t\t\t\t\t\t\t\tval = raw.y.toFixed(self.labels.resource_fixed);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\tval = raw.y;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet dataset = item.dataset as any;\n\t\t\t\t\t\t\t\tif (self.labels.resource_fixed) {\n\t\t\t\t\t\t\t\t\treturn dataset.label + ';' +\n\t\t\t\t\t\t\t\t\t\tval + self.labels.resource_suffix;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn dataset.label + ';' + val +\n\t\t\t\t\t\t\t\t\tself.labels.resource_suffix;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tdata: {\n\t\t\t\tdatasets: [],\n\t\t\t},\n\t\t} as ChartJs.ChartConfiguration;\n\n\t\tlet data = ChartTypes.getChartData(this.props.resource, this.data);\n\t\tfor (let i = 0; i < this.labels.datasets.length; i++) {\n\t\t\tlet datasetLabels = this.labels.datasets[i];\n\n\t\t\tconfig.data.datasets.push({\n\t\t\t\tlabel: datasetLabels.label,\n\t\t\t\tdata: data[i],\n\t\t\t\tfill: 'origin',\n\t\t\t\tpointRadius: 0,\n\t\t\t\tbackgroundColor: colors[i] + '15',\n\t\t\t\tborderColor: colors[i],\n\t\t\t\tborderWidth: 2,\n\t\t\t} as ChartJs.ChartDataset);\n\t\t}\n\n\t\treturn config;\n\t}\n\n\tupdate(sync: number, period: number, interval: number): void {\n\t\tthis.sync = sync;\n\t\tthis.period = period;\n\t\tthis.interval = interval;\n\n\t\tlet loading = true;\n\t\tthis.props.onLoading();\n\n\t\tlet chartResp: Promise\n\t\tif (this.props.check) {\n\t\t\tchartResp = CheckActions.chart(\n\t\t\t\tthis.props.check,\n\t\t\t\tthis.props.resource,\n\t\t\t\tthis.period,\n\t\t\t\tthis.interval,\n\t\t\t)\n\t\t} else {\n\t\t\tchartResp = EndpointActions.chart(\n\t\t\t\tthis.props.endpoint,\n\t\t\t\tthis.props.resource,\n\t\t\t\tthis.period,\n\t\t\t\tthis.interval,\n\t\t\t)\n\t\t}\n\n\t\tchartResp.then((data: ChartTypes.EndpointData): void => {\n\t\t\tif (loading) {\n\t\t\t\tloading = false;\n\t\t\t\tthis.props.onLoaded();\n\t\t\t}\n\n\t\t\tif (data && data.has_data && data.data) {\n\t\t\t\tif (this.state.hidden) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\thidden: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tthis.data = data.data;\n\t\t\t\tif (this.chart) {\n\t\t\t\t\tthis.updateChart();\n\t\t\t\t} else {\n\t\t\t\t\tthis.chart = new ChartJs.Chart(\n\t\t\t\t\t\tthis.chartRef.current,\n\t\t\t\t\t\tthis.config(),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!this.state.hidden) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\thidden: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}).catch((): void => {\n\t\t\tif (loading) {\n\t\t\t\tloading = false;\n\t\t\t\tthis.props.onLoaded();\n\t\t\t}\n\t\t});\n\t}\n\n\tupdateChart(): void {\n\t\ttry {\n\t\t\tthis.labels = ChartTypes.getChartLabels(this.props.resource, this.data);\n\t\t\tlet data = ChartTypes.getChartData(this.props.resource, this.data);\n\n\t\t\tlet dataLen = data.length;\n\t\t\tlet datasetsLen = this.chart.data.datasets.length;\n\n\t\t\tfor (let i = 0; i < Math.min(dataLen, datasetsLen); i++) {\n\t\t\t\tthis.chart.data.datasets[i].label = this.labels.datasets[i].label;\n\t\t\t\tthis.chart.data.datasets[i].data = data[i] as any;\n\t\t\t}\n\n\t\t\tif (dataLen > datasetsLen) {\n\t\t\t\tfor (let i = datasetsLen; i < dataLen; i++) {\n\t\t\t\t\tthis.chart.data.datasets.push({\n\t\t\t\t\t\tlabel: this.labels.datasets[i].label,\n\t\t\t\t\t\tdata: data[i],\n\t\t\t\t\t\tfill: 'origin',\n\t\t\t\t\t\tpointRadius: 0,\n\t\t\t\t\t\tbackgroundColor: colors[i] + '15',\n\t\t\t\t\t\tborderColor: colors[i],\n\t\t\t\t\t\tborderWidth: 2,\n\t\t\t\t\t} as ChartJs.ChartDataset);\n\t\t\t\t}\n\t\t\t} else if (datasetsLen > dataLen) {\n\t\t\t\tfor (let i = 0; i < datasetsLen - dataLen; i++) {\n\t\t\t\t\tthis.chart.data.datasets.pop();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.chart.update();\n\t\t} catch(error) {\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n\n\tcomponentDidMount(): void {\n\t\tthis.sync = this.props.sync;\n\t\tthis.period = this.props.period;\n\t\tthis.interval = this.props.interval;\n\n\t\tlet loading = true;\n\t\tthis.props.onLoading();\n\n\t\tlet chartResp: Promise\n\t\tif (this.props.check) {\n\t\t\tchartResp = CheckActions.chart(\n\t\t\t\tthis.props.check,\n\t\t\t\tthis.props.resource,\n\t\t\t\tthis.period,\n\t\t\t\tthis.interval,\n\t\t\t)\n\t\t} else {\n\t\t\tchartResp = EndpointActions.chart(\n\t\t\t\tthis.props.endpoint,\n\t\t\t\tthis.props.resource,\n\t\t\t\tthis.period,\n\t\t\t\tthis.interval,\n\t\t\t)\n\t\t}\n\n\t\tchartResp.then((data: ChartTypes.EndpointData): void => {\n\t\t\tif (loading) {\n\t\t\t\tloading = false;\n\t\t\t\tthis.props.onLoaded();\n\t\t\t}\n\n\t\t\tif (data && data.has_data && data.data) {\n\t\t\t\tif (this.state.hidden) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\thidden: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tthis.data = data.data;\n\t\t\t\tthis.chart = new ChartJs.Chart(\n\t\t\t\t\tthis.chartRef.current,\n\t\t\t\t\tthis.config(),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tif (!this.state.hidden) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\thidden: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}).catch((): void => {\n\t\t\tif (loading) {\n\t\t\t\tloading = false;\n\t\t\t\tthis.props.onLoaded();\n\t\t\t}\n\t\t});\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tif (this.chart) {\n\t\t\tthis.chart.destroy();\n\t\t}\n\t}\n\n\trender(): JSX.Element {\n\t\tif ((this.sync !== undefined && this.period !== undefined &&\n\t\t\t\tthis.interval !== undefined) &&\n\t\t\t\t(this.props.sync !== this.sync ||\n\t\t\t\tthis.props.period !== this.period ||\n\t\t\t\tthis.props.interval !== this.interval)) {\n\t\t\tthis.update(this.props.sync, this.props.period, this.props.interval);\n\t\t}\n\n\t\treturn ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport PageSelect from './PageSelect';\nimport EndpointChart from './EndpointChart';\nimport * as EndpointActions from '../actions/EndpointActions';\n\ninterface Props {\n\tendpoint: string;\n\tdisabled: boolean;\n}\n\ninterface State {\n\tsync: number;\n\tperiod: number;\n\tinterval: number;\n\tloading: {[key: string]: boolean};\n\tcancelable: {[key: string]: boolean};\n}\n\nconst css = {\n\theader: {\n\t\tfontSize: '20px',\n\t\tmarginTop: '-10px',\n\t\tpaddingBottom: '2px',\n\t\tmarginBottom: '10px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t} as React.CSSProperties,\n\tchartGroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t\tmarginBottom: '15px',\n\t} as React.CSSProperties,\n};\n\nexport default class EndpointCharts extends React.Component {\n\tloading: {[key: string]: boolean};\n\tchartBoxRef: React.RefObject;\n\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tsync: 0,\n\t\t\tperiod: 1440,\n\t\t\tinterval: 30,\n\t\t\tloading: {},\n\t\t\tcancelable: {},\n\t\t};\n\n\t\tthis.loading = {};\n\t\tthis.chartBoxRef = React.createRef();\n\t}\n\n\tgetDefaultInterval(period: number): number {\n\t\tswitch (period) {\n\t\t\tcase 60:\n\t\t\t\treturn 1;\n\t\t\tcase 180:\n\t\t\t\treturn 5;\n\t\t\tcase 360:\n\t\t\t\treturn 5;\n\t\t\tcase 720:\n\t\t\t\treturn 30;\n\t\t\tcase 1440:\n\t\t\t\treturn 30;\n\t\t\tcase 4320:\n\t\t\t\treturn 60;\n\t\t\tcase 10080:\n\t\t\t\treturn 120;\n\t\t\tcase 20160:\n\t\t\t\treturn 360;\n\t\t\tcase 43200:\n\t\t\t\treturn 720;\n\t\t\tcase 86400:\n\t\t\t\treturn 1440;\n\t\t\tcase 129600:\n\t\t\t\treturn 1440;\n\t\t\tcase 172800:\n\t\t\t\treturn 4320;\n\t\t\tdefault:\n\t\t\t\treturn 360;\n\t\t}\n\t}\n\n\tsetLoading(resource: string): void {\n\t\tthis.loading[resource] = true;\n\n\t\tlet loading = {\n\t\t\t...this.state.loading,\n\t\t};\n\t\tloading[resource] = true;\n\n\t\tsetTimeout((): void => {\n\t\t\tif (this.loading[resource]) {\n\t\t\t\tlet cancelable = {\n\t\t\t\t\t...this.state.cancelable,\n\t\t\t\t};\n\t\t\t\tcancelable[resource] = true;\n\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tcancelable: cancelable,\n\t\t\t\t});\n\t\t\t}\n\t\t}, 3000);\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tloading: loading,\n\t\t});\n\t}\n\n\tsetLoaded(resource: string): void {\n\t\tdelete this.loading[resource];\n\n\t\tlet loading = {\n\t\t\t...this.state.loading,\n\t\t};\n\t\tdelete loading[resource];\n\n\t\tlet cancelable = {\n\t\t\t...this.state.cancelable,\n\t\t};\n\t\tdelete cancelable[resource];\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tloading: loading,\n\t\t\tcancelable: cancelable,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.disabled) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet intervalMin = 0;\n\t\tlet intervalMax = 0;\n\t\tif (this.state.period > 43200) {\n\t\t\tintervalMin = 120;\n\t\t} else if (this.state.period > 20160) {\n\t\t\tintervalMin = 30;\n\t\t} else if (this.state.period > 4320) {\n\t\t\tintervalMin = 5;\n\t\t}\n\n\t\tif (this.state.period <= 60) {\n\t\t\tintervalMax = 30;\n\t\t} else if (this.state.period <= 180) {\n\t\t\tintervalMax = 60;\n\t\t} else if (this.state.period <= 360) {\n\t\t\tintervalMax = 120;\n\t\t} else if (this.state.period <= 720) {\n\t\t\tintervalMax = 360;\n\t\t} else if (this.state.period <= 1440) {\n\t\t\tintervalMax = 720;\n\t\t} else if (this.state.period <= 4320) {\n\t\t\tintervalMax = 1440;\n\t\t} else if (this.state.period <= 10080) {\n\t\t\tintervalMax = 4320;\n\t\t} else {\n\t\t\tintervalMax = 10080;\n\t\t}\n\n\t\tlet refreshDisabled = false;\n\t\tlet refreshLabel = '';\n\t\tlet refreshClass = 'bp3-button';\n\t\tif (Object.entries(this.state.cancelable).length) {\n\t\t\trefreshLabel = 'Cancel';\n\t\t\trefreshClass += ' bp3-intent-warning bp3-icon-delete'\n\t\t} else {\n\t\t\tif (Object.entries(this.state.loading).length) {\n\t\t\t\trefreshDisabled = true;\n\t\t\t}\n\t\t\trefreshLabel = 'Refresh';\n\t\t\trefreshClass += ' bp3-intent-success bp3-icon-refresh'\n\t\t}\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t

    Charts

    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (Object.entries(this.state.cancelable).length) {\n\t\t\t\t\t\t\t\tEndpointActions.dataCancel();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tsync: this.state.sync + 1,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{refreshLabel}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet period = parseInt(val, 10);\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tperiod: period,\n\t\t\t\t\t\t\t\tinterval: this.getDefaultInterval(period),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tinterval: parseInt(val, 10),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>1 minute\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>5 minutes\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>30 minutes\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>1 hour\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>2 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>6 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>12 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>24 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>3 days\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>7 days\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('system');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('system');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('load');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('load');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('disk');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('disk');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('network');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('network');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('diskio0');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('diskio0');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('diskio1');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('diskio1');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as Theme from '../Theme';\nimport * as EndpointTypes from '../types/EndpointTypes';\nimport * as EndpointActions from '../actions/EndpointActions';\nimport * as CheckActions from '../actions/CheckActions';\nimport {Ace} from \"ace-builds\";\nimport AceEditor from \"react-ace\";\n\nimport \"ace-builds/src-noconflict/mode-text\";\nimport \"ace-builds/src-noconflict/theme-dracula\";\nimport \"ace-builds/src-noconflict/theme-eclipse\";\n\ninterface Props {\n\tendpoint?: string;\n\tcheck?: string;\n\tdisabled: boolean;\n}\n\ninterface State {\n\tdata: string;\n\tloading: boolean;\n\tcancelable: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tfontSize: '20px',\n\t\tmarginTop: '-10px',\n\t\tpaddingBottom: '2px',\n\t\tmarginBottom: '10px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t} as React.CSSProperties,\n\teditorGroup: {\n\t\tmarginBottom: '15px',\n\t} as React.CSSProperties,\n};\n\nexport default class EndpointKmsg extends React.Component {\n\tloaded: boolean;\n\teditor: Ace.Editor;\n\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdata: '',\n\t\t\tloading: false,\n\t\t\tcancelable: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tTheme.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tTheme.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t});\n\t}\n\n\tsetLoading(): void {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tloading: true,\n\t\t\tcancelable: true,\n\t\t});\n\t}\n\n\tsetLoaded(): void {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tloading: false,\n\t\t\tcancelable: false,\n\t\t});\n\t}\n\n\tupdate(): void {\n\t\tlet loading = true;\n\t\tthis.setLoading();\n\n\t\tlet logResp: Promise\n\n\t\tif (this.props.endpoint) {\n\t\t\tlogResp = EndpointActions.log(\n\t\t\t\tthis.props.endpoint,\n\t\t\t\t'kmsg',\n\t\t\t)\n\t\t} else {\n\t\t\tlogResp = CheckActions.log(\n\t\t\t\tthis.props.check,\n\t\t\t\t'check',\n\t\t\t)\n\t\t}\n\n\t\tlogResp.then((data: EndpointTypes.LogData): void => {\n\t\t\tif (loading) {\n\t\t\t\tloading = false;\n\t\t\t\tthis.setLoaded();\n\t\t\t}\n\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdata: data.join(''),\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (this.editor) {\n\t\t\t\t\tthis.editor.scrollToLine(Number.POSITIVE_INFINITY,\n\t\t\t\t\t\tfalse, true, null);\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (this.editor) {\n\t\t\t\t\tthis.editor.scrollToLine(Number.POSITIVE_INFINITY,\n\t\t\t\t\t\tfalse, true, null);\n\t\t\t\t}\n\t\t\t}, 200);\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (this.editor) {\n\t\t\t\t\tthis.editor.scrollToLine(Number.POSITIVE_INFINITY,\n\t\t\t\t\t\tfalse, true, null);\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (this.editor) {\n\t\t\t\t\tthis.editor.scrollToLine(Number.POSITIVE_INFINITY,\n\t\t\t\t\t\tfalse, true, null);\n\t\t\t\t}\n\t\t\t}, 400);\n\t\t}).catch((): void => {\n\t\t\tif (loading) {\n\t\t\t\tloading = false;\n\t\t\t\tthis.setLoaded();\n\t\t\t}\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.disabled) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tif (!this.loaded) {\n\t\t\tthis.loaded = true;\n\t\t\tsetTimeout((): void => {\n\t\t\t\tthis.update();\n\t\t\t});\n\t\t}\n\n\t\tlet title = \"\"\n\t\tif (this.props.endpoint) {\n\t\t\ttitle = \"Dmesg\"\n\t\t} else {\n\t\t\ttitle = \"Error Log\"\n\t\t}\n\n\t\tlet refreshDisabled = false;\n\t\tlet refreshLabel = '';\n\t\tlet refreshClass = 'bp3-button';\n\t\tif (Object.entries(this.state.cancelable).length) {\n\t\t\trefreshLabel = 'Cancel';\n\t\t\trefreshClass += ' bp3-intent-warning bp3-icon-delete'\n\t\t} else {\n\t\t\tif (Object.entries(this.state.loading).length) {\n\t\t\t\trefreshDisabled = true;\n\t\t\t}\n\t\t\trefreshLabel = 'Refresh';\n\t\t\trefreshClass += ' bp3-intent-success bp3-icon-refresh'\n\t\t}\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t

    {title}

    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (Object.entries(this.state.cancelable).length) {\n\t\t\t\t\t\t\t\tif (this.props.endpoint) {\n\t\t\t\t\t\t\t\t\tEndpointActions.dataCancel();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tCheckActions.dataCancel();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{refreshLabel}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tthis.editor = editor;\n\t\t\t\t\t\tthis.editor.scrollToLine(Number.POSITIVE_INFINITY,\n\t\t\t\t\t\t\tfalse, false, null);\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={(): void => {\n\t\t\t\t\t\tif (this.editor) {\n\t\t\t\t\t\t\tthis.editor.scrollToLine(Number.POSITIVE_INFINITY,\n\t\t\t\t\t\t\t\tfalse, true, null);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as EndpointTypes from '../types/EndpointTypes';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\nimport * as EndpointActions from '../actions/EndpointActions';\nimport * as PageInfos from './PageInfo';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport PageInput from './PageInput';\nimport PageSave from './PageSave';\nimport PageInfo from './PageInfo';\nimport ConfirmButton from './ConfirmButton';\nimport PageInputButton from './PageInputButton';\nimport EndpointCharts from './EndpointCharts';\nimport EndpointKmsg from './EndpointKmsg';\nimport Help from './Help';\nimport PageSwitch from \"./PageSwitch\";\n\ninterface Props {\n\tendpoint: EndpointTypes.EndpointRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\tonClose: () => void;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\taddRole: string;\n\tshowCharts: boolean;\n\tendpoint: EndpointTypes.Endpoint;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '48px 10px 0 10px',\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t} as React.CSSProperties,\n\tcontrolButton: {\n\t\tmarginRight: '10px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\theight: '30px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tcursor: 'pointer',\n\t\tposition: 'absolute',\n\t\ttop: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tpadding: '4px',\n\t\theight: '39px',\n\t\tbackgroundColor: 'rgba(0, 0, 0, 0.13)',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tstatus: {\n\t\tmargin: '6px 0 0 1px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tprotocol: {\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n\tport: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '7px 0px 0px 6px',\n\t\tpaddingTop: '3px',\n\t} as React.CSSProperties,\n};\n\nexport default class EndpointDetailed extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tendpoint: null,\n\t\t\tshowCharts: true,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet endpoint: any;\n\n\t\tif (this.state.changed) {\n\t\t\tendpoint = {\n\t\t\t\t...this.state.endpoint,\n\t\t\t};\n\t\t} else {\n\t\t\tendpoint = {\n\t\t\t\t...this.props.endpoint,\n\t\t\t};\n\t\t}\n\n\t\tendpoint[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tendpoint: endpoint,\n\t\t});\n\t}\n\n\tonResetClientKey = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\n\t\tlet endpoint = {\n\t\t\t...this.props.endpoint,\n\t\t\treset_client_key: true,\n\t\t};\n\n\t\tEndpointActions.commit(endpoint).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Client key reset',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tendpoint: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tEndpointActions.commit(this.state.endpoint).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tendpoint: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tEndpointActions.remove(this.props.endpoint.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddRole = (): void => {\n\t\tlet endpoint: EndpointTypes.Endpoint;\n\n\t\tif (this.state.changed) {\n\t\t\tendpoint = {\n\t\t\t\t...this.state.endpoint,\n\t\t\t};\n\t\t} else {\n\t\t\tendpoint = {\n\t\t\t\t...this.props.endpoint,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...endpoint.roles,\n\t\t];\n\n\t\tif (!this.state.addRole) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (roles.indexOf(this.state.addRole) === -1) {\n\t\t\troles.push(this.state.addRole);\n\t\t}\n\n\t\troles.sort();\n\n\t\tendpoint.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tendpoint: endpoint,\n\t\t});\n\t}\n\n\tonRemoveRole(role: string): void {\n\t\tlet endpoint: EndpointTypes.Endpoint;\n\n\t\tif (this.state.changed) {\n\t\t\tendpoint = {\n\t\t\t\t...this.state.endpoint,\n\t\t\t};\n\t\t} else {\n\t\t\tendpoint = {\n\t\t\t\t...this.props.endpoint,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...endpoint.roles,\n\t\t];\n\n\t\tlet i = roles.indexOf(role);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\troles.splice(i, 1);\n\n\t\tendpoint.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tendpoint: endpoint,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet endpoint: EndpointTypes.Endpoint = this.state.endpoint ||\n\t\t\tthis.props.endpoint;\n\n\t\tlet fields: PageInfos.Field[] = [\n\t\t\t{\n\t\t\t\tlabel: 'ID',\n\t\t\t\tvalue: this.props.endpoint.id || 'None',\n\t\t\t},\n\t\t];\n\n\t\tlet endpointData = endpoint.data || {};\n\t\tif (endpointData) {\n\t\t\tif (endpointData.hostname) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'Hostname',\n\t\t\t\t\tvalue: endpointData.hostname,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.uptime) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'Uptime',\n\t\t\t\t\tvalue: MiscUtils.formatUptime(endpointData.uptime),\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.platform) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'Platform',\n\t\t\t\t\tvalue: endpointData.platform,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.package_updates) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'System Package Updates',\n\t\t\t\t\tvalue: endpointData.package_updates,\n\t\t\t\t\tvalueClass: 'bp3-text-intent-danger',\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.virtualization) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'Virtualization',\n\t\t\t\t\tvalue: endpointData.virtualization,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.cpu_cores) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'CPU Cores',\n\t\t\t\t\tvalue: endpointData.cpu_cores,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.mem_total) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'Memory',\n\t\t\t\t\tvalue: endpointData.mem_total + 'MB',\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.swap_total) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'Swap',\n\t\t\t\t\tvalue: endpointData.swap_total + 'MB',\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.huge_total) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'HugePages',\n\t\t\t\t\tvalue: endpointData.huge_total + 'MB',\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (endpoint.data.md_stat && endpoint.data.md_stat.length) {\n\t\t\tlet failed = 0;\n\t\t\tlet total = 0;\n\n\t\t\tfor (let md of endpoint.data.md_stat) {\n\t\t\t\tfailed += md.failed;\n\t\t\t\ttotal += md.total;\n\t\t\t}\n\n\t\t\tfields.push({\n\t\t\t\tlabel: 'Raid Devices',\n\t\t\t\tvalue: 'Failed: ' + failed + ' Total: ' + total,\n\t\t\t});\n\t\t}\n\n\t\tlet roles: JSX.Element[] = [];\n\t\tfor (let role of endpoint.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveRole(role);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet alerts: string[] = [];\n\t\tfor (let alert of Object.values(endpoint.info.alerts)) {\n\t\t\talerts.push(alert);\n\t\t}\n\n\t\tlet checks: string[] = [];\n\t\tfor (let check of Object.values(endpoint.info.checks)) {\n\t\t\tchecks.push(check);\n\t\t}\n\n\t\tlet secretKey = '';\n\t\tlet secretUri = '';\n\t\tif (!endpoint.has_client_key) {\n\t\t\tif (endpoint.client_key) {\n\t\t\t\tsecretKey = endpoint.id + '_' + endpoint.client_key.secret;\n\t\t\t} else {\n\t\t\t\tsecretKey = 'unknown';\n\t\t\t}\n\t\t\tsecretUri = 'pritunl://' + window.location.host + '/' + secretKey;\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\t\t\t\tif (target.className.indexOf('tab-close') !== -1) {\n\t\t\t\t\t\t\t\tthis.props.onClose();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n
    \n \n {\n\t\t\t\t\t\t\t\t\t}}\n onClick={(evt): void => {\n\t\t\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t\t\t}}\n />\n \n \n
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddRole}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tshowCharts: !this.state.showCharts,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tendpoint: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t>\n\t\t\t\t {\n\t\t\t\t\t\tthis.onResetClientKey();\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as Blueprint from '@blueprintjs/core';\nimport * as EndpointTypes from '../types/EndpointTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport EndpointDetailed from './EndpointDetailed';\n\ninterface Props {\n\tendpoint: EndpointTypes.EndpointRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\topen: boolean;\n\tonOpen: () => void;\n}\n\nconst css = {\n\tcard: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tcursor: 'pointer',\n\t} as React.CSSProperties,\n\tcardOpen: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tposition: 'relative',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '2px 0 0 0',\n\t\tpaddingTop: '3px',\n\t\tminHeight: '18px',\n\t} as React.CSSProperties,\n\tname: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t} as React.CSSProperties,\n\tnameSpan: {\n\t\tmargin: '1px 5px 0 0',\n\t} as React.CSSProperties,\n\titem: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '9px',\n\t\twhiteSpace: 'nowrap',\n\t} as React.CSSProperties,\n\troles: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '0 8px 8px 8px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginTop: '1px',\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\ttag: {\n\t\tmargin: '8px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\tbars: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t\twidth: '30px',\n\t} as React.CSSProperties,\n\tbar: {\n\t\theight: '6px',\n\t\tmarginBottom: '1px',\n\t} as React.CSSProperties,\n\tbarLast: {\n\t\theight: '6px',\n\t} as React.CSSProperties,\n};\n\nexport default class Endpoint extends React.Component {\n\trender(): JSX.Element {\n\t\tlet endpoint = this.props.endpoint;\n\n\t\tif (this.props.open) {\n\t\t\treturn \n\t\t\t\t {\n\t\t\t\t\t\tthis.props.onOpen();\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    ;\n\t\t}\n\n\t\tlet cardStyle = {\n\t\t\t...css.card,\n\t\t};\n\n\t\tlet roles: JSX.Element[] = [];\n\n\t\tfor (let role of endpoint.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet updates: JSX.Element;\n\t\tif (endpoint.data.package_updates) {\n\t\t\tupdates = ;\n\t\t}\n\n\t\treturn {\n\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\tif (target.className.indexOf('open-ignore') !== -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.props.onOpen();\n\t\t\t}}\n\t\t>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClick={(evt): void => {\n\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t{endpoint.name}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{updates}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{roles}\n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as EndpointTypes from '../types/EndpointTypes';\nimport SearchInput from './SearchInput';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\n\ninterface Props {\n\tfilter: EndpointTypes.Filter;\n\tonFilter: (filter: EndpointTypes.Filter) => void;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n}\n\nconst css = {\n\tfilters: {\n\t\tmargin: '-15px 0 5px 0',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '200px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\twidth: '150px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\ttype: {\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tcheck: {\n\t\tmargin: '12px 5px 8px 5px',\n\t} as React.CSSProperties,\n};\n\nexport default class EndpointsFilter extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tmenu: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.filter === null) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.id = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.id;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.name = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.name;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.role = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.role;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport EndpointsStore from '../stores/EndpointsStore';\nimport * as EndpointActions from '../actions/EndpointActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class EndpointsPage extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: EndpointsStore.page,\n\t\t\tpageCount: EndpointsStore.pageCount,\n\t\t\tpages: EndpointsStore.pages,\n\t\t\tcount: EndpointsStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tEndpointsStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tEndpointsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: EndpointsStore.page,\n\t\t\tpageCount: EndpointsStore.pageCount,\n\t\t\tpages: EndpointsStore.pages,\n\t\t\tcount: EndpointsStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tEndpointActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tEndpointActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tEndpointActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tEndpointActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tEndpointActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as EndpointTypes from '../types/EndpointTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport EndpointsStore from '../stores/EndpointsStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport * as EndpointActions from '../actions/EndpointActions';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport Endpoint from './Endpoint';\nimport EndpointsFilter from './EndpointsFilter';\nimport EndpointsPage from './EndpointsPage';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\nimport NonState from './NonState';\nimport ConfirmButton from './ConfirmButton';\n\ninterface Selected {\n\t[key: string]: boolean;\n}\n\ninterface Opened {\n\t[key: string]: boolean;\n}\n\ninterface State {\n\tendpoints: EndpointTypes.EndpointsRo;\n\tfilter: EndpointTypes.Filter;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: Selected;\n\topened: Opened;\n\tnewOpened: boolean;\n\tlastSelected: string;\n\tdisabled: boolean;\n}\n\nconst css = {\n\titems: {\n\t\twidth: '100%',\n\t\tmarginTop: '-5px',\n\t\tdisplay: 'table',\n\t\tborderSpacing: '0 5px',\n\t} as React.CSSProperties,\n\titemsBox: {\n\t\twidth: '100%',\n\t\toverflowY: 'auto',\n\t} as React.CSSProperties,\n\tplaceholder: {\n\t\topacity: 0,\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n};\n\nexport default class Endpoints extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tendpoints: EndpointsStore.endpoints,\n\t\t\tfilter: EndpointsStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: {},\n\t\t\topened: {},\n\t\t\tnewOpened: false,\n\t\t\tlastSelected: null,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tget selected(): boolean {\n\t\treturn !!Object.keys(this.state.selected).length;\n\t}\n\n\tget opened(): boolean {\n\t\treturn !!Object.keys(this.state.opened).length;\n\t}\n\n\tcomponentDidMount(): void {\n\t\tEndpointsStore.addChangeListener(this.onChange);\n\t\tAuthoritiesStore.addChangeListener(this.onChange);\n\t\tEndpointActions.sync();\n\t\tAuthorityActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tEndpointsStore.removeChangeListener(this.onChange);\n\t\tAuthoritiesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tlet endpoints = EndpointsStore.endpoints;\n\t\tlet selected: Selected = {};\n\t\tlet curSelected = this.state.selected;\n\t\tlet opened: Opened = {};\n\t\tlet curOpened = this.state.opened;\n\n\t\tendpoints.forEach((endpoint: EndpointTypes.Endpoint): void => {\n\t\t\tif (curSelected[endpoint.id]) {\n\t\t\t\tselected[endpoint.id] = true;\n\t\t\t}\n\t\t\tif (curOpened[endpoint.id]) {\n\t\t\t\topened[endpoint.id] = true;\n\t\t\t}\n\t\t});\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tendpoints: endpoints,\n\t\t\tfilter: EndpointsStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: selected,\n\t\t\topened: opened,\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tEndpointActions.removeMulti(\n\t\t\t\tObject.keys(this.state.selected)).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tselected: {},\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet endpointsDom: JSX.Element[] = [];\n\n\t\tthis.state.endpoints.forEach((\n\t\t\t\tendpoint: EndpointTypes.EndpointRo): void => {\n\t\t\tendpointsDom.push( {\n\t\t\t\t\tlet selected = {\n\t\t\t\t\t\t...this.state.selected,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (shift) {\n\t\t\t\t\t\tlet endpoints = this.state.endpoints;\n\t\t\t\t\t\tlet start: number;\n\t\t\t\t\t\tlet end: number;\n\n\t\t\t\t\t\tfor (let i = 0; i < endpoints.length; i++) {\n\t\t\t\t\t\t\tlet usr = endpoints[i];\n\n\t\t\t\t\t\t\tif (usr.id === endpoint.id) {\n\t\t\t\t\t\t\t\tstart = i;\n\t\t\t\t\t\t\t} else if (usr.id === this.state.lastSelected) {\n\t\t\t\t\t\t\t\tend = i;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (start !== undefined && end !== undefined) {\n\t\t\t\t\t\t\tif (start > end) {\n\t\t\t\t\t\t\t\tend = [start, start = end][0];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor (let i = start; i <= end; i++) {\n\t\t\t\t\t\t\t\tselected[endpoints[i].id] = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tlastSelected: endpoint.id,\n\t\t\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (selected[endpoint.id]) {\n\t\t\t\t\t\tdelete selected[endpoint.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselected[endpoint.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tlastSelected: endpoint.id,\n\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonOpen={(): void => {\n\t\t\t\t\tlet opened = {\n\t\t\t\t\t\t...this.state.opened,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (opened[endpoint.id]) {\n\t\t\t\t\t\tdelete opened[endpoint.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\topened[endpoint.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\topened: opened,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>);\n\t\t});\n\n\t\tlet filterClass = 'bp3-button bp3-intent-primary bp3-icon-filter ';\n\t\tif (this.state.filter) {\n\t\t\tfilterClass += 'bp3-active';\n\t\t}\n\n\t\tlet selectedNames: string[] = [];\n\t\tfor (let instId of Object.keys(this.state.selected)) {\n\t\t\tlet inst = EndpointsStore.endpoint(instId);\n\t\t\tif (inst) {\n\t\t\t\tselectedNames.push(inst.name || instId);\n\t\t\t} else {\n\t\t\t\tselectedNames.push(instId);\n\t\t\t}\n\t\t}\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Endpoints

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (this.state.filter === null) {\n\t\t\t\t\t\t\t\t\tEndpointActions.filter({});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tEndpointActions.filter(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFilters\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\topened: {},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCollapse All\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tEndpointActions.create({\n\t\t\t\t\t\t\t\t\tid: null,\n\t\t\t\t\t\t\t\t}).then((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>New\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tEndpointActions.filter(filter);\n\t\t\t\t}}\n\t\t\t\tauthorities={this.state.authorities}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{endpointsDom}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tselected: {},\n\t\t\t\t\t\tlastSelected: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nexport const SYNC = 'alert.sync';\nexport const SYNC_NAMES = 'alert.sync_names';\nexport const TRAVERSE = 'alert.traverse';\nexport const FILTER = 'alert.filter';\nexport const CHANGE = 'alert.change';\n\nexport interface Alert {\n\tid: string;\n\tname?: string;\n\troles?: string[];\n\tresource?: string;\n\tlevel?: number;\n\tfrequency?: number;\n\tignores?: string[];\n\tvalue_int?: number;\n\tvalue_str?: string;\n}\n\nexport interface Filter {\n\tid?: string;\n\tname?: string;\n\trole?: string;\n}\n\nexport type Alerts = Alert[];\n\nexport type AlertRo = Readonly;\nexport type AlertsRo = ReadonlyArray;\n\nexport interface AlertDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\talert?: Alert;\n\t\talerts?: Alerts;\n\t\tpage?: number;\n\t\tpageCount?: number;\n\t\tfilter?: Filter;\n\t\tcount?: number;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as AlertTypes from '../types/AlertTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass AlertsStore extends EventEmitter {\n\t_alerts: AlertTypes.AlertsRo = Object.freeze([]);\n\t_page: number;\n\t_pageCount: number;\n\t_filter: AlertTypes.Filter = null;\n\t_count: number;\n\t_map: {[key: string]: number} = {};\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget alerts(): AlertTypes.AlertsRo {\n\t\treturn this._alerts;\n\t}\n\n\tget alertsM(): AlertTypes.Alerts {\n\t\tlet alerts: AlertTypes.Alerts = [];\n\t\tthis._alerts.forEach((alert: AlertTypes.AlertRo): void => {\n\t\t\talerts.push({\n\t\t\t\t...alert,\n\t\t\t});\n\t\t});\n\t\treturn alerts;\n\t}\n\n\tget page(): number {\n\t\treturn this._page || 0;\n\t}\n\n\tget pageCount(): number {\n\t\treturn this._pageCount || 20;\n\t}\n\n\tget pages(): number {\n\t\treturn Math.ceil(this.count / this.pageCount);\n\t}\n\n\tget filter(): AlertTypes.Filter {\n\t\treturn this._filter;\n\t}\n\n\tget count(): number {\n\t\treturn this._count || 0;\n\t}\n\n\talert(id: string): AlertTypes.AlertRo {\n\t\tlet i = this._map[id];\n\t\tif (i === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._alerts[i];\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_traverse(page: number): void {\n\t\tthis._page = Math.min(this.pages, page);\n\t}\n\n\t_filterCallback(filter: AlertTypes.Filter): void {\n\t\tif ((this._filter !== null && filter === null) ||\n\t\t\t(this._filter === {} && filter !== null) || (\n\t\t\t\tfilter && this._filter && (\n\t\t\t\t\tfilter.name !== this._filter.name\n\t\t\t\t))) {\n\t\t\tthis._traverse(0);\n\t\t}\n\t\tthis._filter = filter;\n\t\tthis.emitChange();\n\t}\n\n\t_sync(alerts: AlertTypes.Alert[], count: number): void {\n\t\tthis._map = {};\n\t\tfor (let i = 0; i < alerts.length; i++) {\n\t\t\talerts[i] = Object.freeze(alerts[i]);\n\t\t\tthis._map[alerts[i].id] = i;\n\t\t}\n\n\t\tthis._count = count;\n\t\tthis._alerts = Object.freeze(alerts);\n\t\tthis._page = Math.min(this.pages, this.page);\n\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: AlertTypes.AlertDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase AlertTypes.TRAVERSE:\n\t\t\t\tthis._traverse(action.data.page);\n\t\t\t\tbreak;\n\n\t\t\tcase AlertTypes.FILTER:\n\t\t\t\tthis._filterCallback(action.data.filter);\n\t\t\t\tbreak;\n\n\t\t\tcase AlertTypes.SYNC:\n\t\t\t\tthis._sync(action.data.alerts, action.data.count);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new AlertsStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport AlertsStore from '../stores/AlertsStore';\nimport * as AlertTypes from '../types/AlertTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\n\nexport function sync(): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/alert')\n\t\t\t.query({\n\t\t\t\t...AlertsStore.filter,\n\t\t\t\tpage: AlertsStore.page,\n\t\t\t\tpage_count: AlertsStore.pageCount,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load alerts');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: AlertTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\talerts: res.body.alerts,\n\t\t\t\t\t\tcount: res.body.count,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function traverse(page: number): Promise {\n\tDispatcher.dispatch({\n\t\ttype: AlertTypes.TRAVERSE,\n\t\tdata: {\n\t\t\tpage: page,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function filter(filt: AlertTypes.Filter): Promise {\n\tDispatcher.dispatch({\n\t\ttype: AlertTypes.FILTER,\n\t\tdata: {\n\t\t\tfilter: filt,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function commit(alert: AlertTypes.Alert): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/alert/' + alert.id)\n\t\t\t.send(alert)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to save alert');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function create(alert: AlertTypes.Alert): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/alert')\n\t\t\t.send(alert)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to create alert');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function remove(alertId: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/alert/' + alertId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete alerts');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function removeMulti(alertIds: string[]): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/alert')\n\t\t\t.send(alertIds)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete alerts');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nEventDispatcher.register((action: AlertTypes.AlertDispatch) => {\n\tswitch (action.type) {\n\t\tcase AlertTypes.CHANGE:\n\t\t\tsync();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as React from 'react';\nimport * as AlertTypes from '../types/AlertTypes';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\nimport * as AlertActions from '../actions/AlertActions';\nimport * as PageInfos from './PageInfo';\nimport PageInput from './PageInput';\nimport PageSave from './PageSave';\nimport PageInfo from './PageInfo';\nimport ConfirmButton from './ConfirmButton';\nimport PageInputButton from './PageInputButton';\nimport Help from './Help';\nimport PageSwitch from \"./PageSwitch\";\nimport PageSelect from \"./PageSelect\";\n\ninterface Props {\n\talert: AlertTypes.AlertRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\tonClose: () => void;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\taddRole: string;\n\taddIgnore: string;\n\talert: AlertTypes.Alert;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '48px 10px 0 10px',\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t} as React.CSSProperties,\n\tcontrolButton: {\n\t\tmarginRight: '10px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\theight: '30px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tcursor: 'pointer',\n\t\tposition: 'absolute',\n\t\ttop: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tpadding: '4px',\n\t\theight: '39px',\n\t\tbackgroundColor: 'rgba(0, 0, 0, 0.13)',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tstatus: {\n\t\tmargin: '6px 0 0 1px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tprotocol: {\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n\tport: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '7px 0px 0px 6px',\n\t\tpaddingTop: '3px',\n\t} as React.CSSProperties,\n\theader: {\n\t\tfontSize: '20px',\n\t\tmarginTop: '-10px',\n\t\tpaddingBottom: '2px',\n\t\tmarginBottom: '10px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\talertsButtons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n\talertsAdd: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n};\n\nexport default class AlertDetailed extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\taddIgnore: '',\n\t\t\talert: null,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet alert: any;\n\n\t\tif (this.state.changed) {\n\t\t\talert = {\n\t\t\t\t...this.state.alert,\n\t\t\t};\n\t\t} else {\n\t\t\talert = {\n\t\t\t\t...this.props.alert,\n\t\t\t};\n\t\t}\n\n\t\talert[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\talert: alert,\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tAlertActions.commit(this.state.alert).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\talert: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tAlertActions.remove(this.props.alert.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddRole = (): void => {\n\t\tlet alert: AlertTypes.Alert;\n\n\t\tif (this.state.changed) {\n\t\t\talert = {\n\t\t\t\t...this.state.alert,\n\t\t\t};\n\t\t} else {\n\t\t\talert = {\n\t\t\t\t...this.props.alert,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...alert.roles,\n\t\t];\n\n\t\tif (!this.state.addRole) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (roles.indexOf(this.state.addRole) === -1) {\n\t\t\troles.push(this.state.addRole);\n\t\t}\n\n\t\troles.sort();\n\n\t\talert.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\talert: alert,\n\t\t});\n\t}\n\n\tonRemoveRole(role: string): void {\n\t\tlet alert: AlertTypes.Alert;\n\n\t\tif (this.state.changed) {\n\t\t\talert = {\n\t\t\t\t...this.state.alert,\n\t\t\t};\n\t\t} else {\n\t\t\talert = {\n\t\t\t\t...this.props.alert,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...alert.roles,\n\t\t];\n\n\t\tlet i = roles.indexOf(role);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\troles.splice(i, 1);\n\n\t\talert.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\talert: alert,\n\t\t});\n\t}\n\n\tonAddIgnore = (): void => {\n\t\tlet alert: AlertTypes.Alert;\n\n\t\tif (this.state.changed) {\n\t\t\talert = {\n\t\t\t\t...this.state.alert,\n\t\t\t};\n\t\t} else {\n\t\t\talert = {\n\t\t\t\t...this.props.alert,\n\t\t\t};\n\t\t}\n\n\t\tlet ignores = [\n\t\t\t...(alert.ignores || []),\n\t\t];\n\n\t\tif (!this.state.addIgnore) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (ignores.indexOf(this.state.addIgnore) === -1) {\n\t\t\tignores.push(this.state.addIgnore);\n\t\t}\n\n\t\tignores.sort();\n\n\t\talert.ignores = ignores;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddIgnore: '',\n\t\t\talert: alert,\n\t\t});\n\t}\n\n\tonRemoveIgnore(ignore: string): void {\n\t\tlet alert: AlertTypes.Alert;\n\n\t\tif (this.state.changed) {\n\t\t\talert = {\n\t\t\t\t...this.state.alert,\n\t\t\t};\n\t\t} else {\n\t\t\talert = {\n\t\t\t\t...this.props.alert,\n\t\t\t};\n\t\t}\n\n\t\tlet ignores = [\n\t\t\t...(alert.ignores || []),\n\t\t];\n\n\t\tlet i = ignores.indexOf(ignore);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tignores.splice(i, 1);\n\n\t\talert.ignores = ignores;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddIgnore: '',\n\t\t\talert: alert,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet alert: AlertTypes.Alert = this.state.alert ||\n\t\t\tthis.props.alert;\n\n\t\tlet fields: PageInfos.Field[] = [\n\t\t\t{\n\t\t\t\tlabel: 'ID',\n\t\t\t\tvalue: this.props.alert.id || 'None',\n\t\t\t},\n\t\t];\n\n\t\tlet roles: JSX.Element[] = [];\n\t\tfor (let role of alert.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveRole(role);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet ignores: JSX.Element[] = [];\n\t\tfor (let ignore of (alert.ignores || [])) {\n\t\t\tignores.push(\n\t\t\t\t\n\t\t\t\t\t{ignore}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveIgnore(ignore);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet valueInt = false;\n\t\tlet valueStr = false;\n\t\tlet valueLabel = '';\n\t\tlet valueHelp = '';\n\t\tlet ignoreShow = false;\n\t\tlet ignoreLabel = '';\n\t\tlet ignoreTitle = '';\n\t\tlet ignoreHelp = '';\n\t\tswitch (alert.resource) {\n\t\t\tcase \"system_cpu_level\":\n\t\t\t\tvalueInt = true;\n\t\t\t\tvalueLabel = 'Usage Threshold';\n\t\t\t\tvalueHelp = 'Maximum percent CPU usage as integer ' +\n\t\t\t\t\t'before alert is triggered.';\n\t\t\t\tbreak;\n\t\t\tcase \"system_memory_level\":\n\t\t\t\tvalueInt = true;\n\t\t\t\tvalueLabel = 'Usage Threshold';\n\t\t\t\tvalueHelp = 'Maximum percent memory usage as integer ' +\n\t\t\t\t\t'before alert is triggered.';\n\t\t\t\tbreak;\n\t\t\tcase \"system_swap_level\":\n\t\t\t\tvalueInt = true;\n\t\t\t\tvalueLabel = 'Usage Threshold';\n\t\t\t\tvalueHelp = 'Maximum percent swap usage as integer ' +\n\t\t\t\t\t'before alert is triggered.';\n\t\t\t\tbreak;\n\t\t\tcase \"system_hugepages_level\":\n\t\t\t\tvalueInt = true;\n\t\t\t\tvalueLabel = 'Usage Threshold';\n\t\t\t\tvalueHelp = 'Maximum percent hugepages usage as integer ' +\n\t\t\t\t\t'before alert is triggered.';\n\t\t\t\tbreak;\n\t\t\tcase \"system_md_failed\":\n\t\t\t\tvalueInt = false;\n\t\t\t\tvalueStr = false;\n\t\t\t\tbreak;\n\t\t\tcase \"disk_usage_level\":\n\t\t\t\tignoreShow = true;\n\t\t\t\tignoreLabel = 'Ignore Disk Paths';\n\t\t\t\tignoreTitle = 'Ignore Disk Paths';\n\t\t\t\tignoreHelp = 'Path of disk devices to ignore.';\n\t\t\t\tvalueInt = true;\n\t\t\t\tvalueLabel = 'Usage Threshold';\n\t\t\t\tvalueHelp = 'Maximum percent disk space usage as integer ' +\n\t\t\t\t\t'before alert is triggered.';\n\t\t\t\tbreak;\n\t\t\tcase \"kmsg_keyword\":\n\t\t\t\tvalueStr = true;\n\t\t\t\tvalueLabel = 'Dmesg Keyword Match';\n\t\t\t\tvalueHelp = 'Case insensitive dmesg match string to trigger alert.';\n\t\t\t\tbreak;\n\t\t\tcase \"check_http_failed\":\n\t\t\t\tvalueInt = false;\n\t\t\t\tvalueStr = false;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\t\t\t\tif (target.className.indexOf('tab-close') !== -1) {\n\t\t\t\t\t\t\t\tthis.props.onClose();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonClick={(evt): void => {\n\t\t\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddRole}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('resource', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tCPU Usage Threshold\n\t\t\t\t\t\tMemory Usage Threshold\n\t\t\t\t\t\tSwap Usage Threshold\n\t\t\t\t\t\tHugePages Usage Threshold\n\t\t\t\t\t\tMD RAID Device Failed\n\t\t\t\t\t\tDisk Usage Threshold\n\t\t\t\t\t\tDmesg Keyword Match\n\t\t\t\t\t\tHTTP Health Check Failed\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddIgnore: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddIgnore}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('value_int', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('value_str', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('level', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('frequency', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\talert: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as AlertTypes from '../types/AlertTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport AlertDetailed from './AlertDetailed';\n\ninterface Props {\n\talert: AlertTypes.AlertRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\topen: boolean;\n\tonOpen: () => void;\n}\n\nconst css = {\n\tcard: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tcursor: 'pointer',\n\t} as React.CSSProperties,\n\tcardOpen: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tposition: 'relative',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '2px 0 0 0',\n\t\tpaddingTop: '3px',\n\t\tminHeight: '18px',\n\t} as React.CSSProperties,\n\tname: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t} as React.CSSProperties,\n\tnameSpan: {\n\t\tmargin: '1px 5px 0 0',\n\t} as React.CSSProperties,\n\titem: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '9px',\n\t\twhiteSpace: 'nowrap',\n\t} as React.CSSProperties,\n\troles: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '0 8px 8px 8px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\ttag: {\n\t\tmargin: '8px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\tbars: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t\twidth: '30px',\n\t} as React.CSSProperties,\n\tbar: {\n\t\theight: '6px',\n\t\tmarginBottom: '1px',\n\t} as React.CSSProperties,\n\tbarLast: {\n\t\theight: '6px',\n\t} as React.CSSProperties,\n};\n\nexport default class Alert extends React.Component {\n\trender(): JSX.Element {\n\t\tlet alert = this.props.alert;\n\n\t\tif (this.props.open) {\n\t\t\treturn \n\t\t\t\t {\n\t\t\t\t\t\tthis.props.onOpen();\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    ;\n\t\t}\n\n\t\tlet cardStyle = {\n\t\t\t...css.card,\n\t\t};\n\n\t\tlet roles: JSX.Element[] = [];\n\n\t\tfor (let role of alert.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\tif (target.className.indexOf('open-ignore') !== -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.props.onOpen();\n\t\t\t}}\n\t\t>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClick={(evt): void => {\n\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t{alert.name}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{roles}\n\t\t\t
    \n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as AlertTypes from '../types/AlertTypes';\nimport SearchInput from './SearchInput';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\n\ninterface Props {\n\tfilter: AlertTypes.Filter;\n\tonFilter: (filter: AlertTypes.Filter) => void;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n}\n\nconst css = {\n\tfilters: {\n\t\tmargin: '-15px 0 5px 0',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '200px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\twidth: '150px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\ttype: {\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tcheck: {\n\t\tmargin: '12px 5px 8px 5px',\n\t} as React.CSSProperties,\n};\n\nexport default class AlertsFilter extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tmenu: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.filter === null) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.id = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.id;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.name = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.name;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.role = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.role;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport AlertsStore from '../stores/AlertsStore';\nimport * as AlertActions from '../actions/AlertActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class AlertsPage extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: AlertsStore.page,\n\t\t\tpageCount: AlertsStore.pageCount,\n\t\t\tpages: AlertsStore.pages,\n\t\t\tcount: AlertsStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tAlertsStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tAlertsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: AlertsStore.page,\n\t\t\tpageCount: AlertsStore.pageCount,\n\t\t\tpages: AlertsStore.pages,\n\t\t\tcount: AlertsStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tAlertActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tAlertActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tAlertActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tAlertActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tAlertActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as AlertTypes from '../types/AlertTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport AlertsStore from '../stores/AlertsStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport * as AlertActions from '../actions/AlertActions';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport Alert from './Alert';\nimport AlertsFilter from './AlertsFilter';\nimport AlertsPage from './AlertsPage';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\nimport NonState from './NonState';\nimport ConfirmButton from './ConfirmButton';\n\ninterface Selected {\n\t[key: string]: boolean;\n}\n\ninterface Opened {\n\t[key: string]: boolean;\n}\n\ninterface State {\n\talerts: AlertTypes.AlertsRo;\n\tfilter: AlertTypes.Filter;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: Selected;\n\topened: Opened;\n\tnewOpened: boolean;\n\tlastSelected: string;\n\tdisabled: boolean;\n}\n\nconst css = {\n\titems: {\n\t\twidth: '100%',\n\t\tmarginTop: '-5px',\n\t\tdisplay: 'table',\n\t\tborderSpacing: '0 5px',\n\t} as React.CSSProperties,\n\titemsBox: {\n\t\twidth: '100%',\n\t\toverflowY: 'auto',\n\t} as React.CSSProperties,\n\tplaceholder: {\n\t\topacity: 0,\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n};\n\nexport default class Alerts extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\talerts: AlertsStore.alerts,\n\t\t\tfilter: AlertsStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: {},\n\t\t\topened: {},\n\t\t\tnewOpened: false,\n\t\t\tlastSelected: null,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tget selected(): boolean {\n\t\treturn !!Object.keys(this.state.selected).length;\n\t}\n\n\tget opened(): boolean {\n\t\treturn !!Object.keys(this.state.opened).length;\n\t}\n\n\tcomponentDidMount(): void {\n\t\tAlertsStore.addChangeListener(this.onChange);\n\t\tAuthoritiesStore.addChangeListener(this.onChange);\n\t\tAlertActions.sync();\n\t\tAuthorityActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tAlertsStore.removeChangeListener(this.onChange);\n\t\tAuthoritiesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tlet alerts = AlertsStore.alerts;\n\t\tlet selected: Selected = {};\n\t\tlet curSelected = this.state.selected;\n\t\tlet opened: Opened = {};\n\t\tlet curOpened = this.state.opened;\n\n\t\talerts.forEach((alert: AlertTypes.Alert): void => {\n\t\t\tif (curSelected[alert.id]) {\n\t\t\t\tselected[alert.id] = true;\n\t\t\t}\n\t\t\tif (curOpened[alert.id]) {\n\t\t\t\topened[alert.id] = true;\n\t\t\t}\n\t\t});\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\talerts: alerts,\n\t\t\tfilter: AlertsStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: selected,\n\t\t\topened: opened,\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tAlertActions.removeMulti(\n\t\t\t\tObject.keys(this.state.selected)).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tselected: {},\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet alertsDom: JSX.Element[] = [];\n\n\t\tthis.state.alerts.forEach((\n\t\t\t\talert: AlertTypes.AlertRo): void => {\n\t\t\talertsDom.push( {\n\t\t\t\t\tlet selected = {\n\t\t\t\t\t\t...this.state.selected,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (shift) {\n\t\t\t\t\t\tlet alerts = this.state.alerts;\n\t\t\t\t\t\tlet start: number;\n\t\t\t\t\t\tlet end: number;\n\n\t\t\t\t\t\tfor (let i = 0; i < alerts.length; i++) {\n\t\t\t\t\t\t\tlet usr = alerts[i];\n\n\t\t\t\t\t\t\tif (usr.id === alert.id) {\n\t\t\t\t\t\t\t\tstart = i;\n\t\t\t\t\t\t\t} else if (usr.id === this.state.lastSelected) {\n\t\t\t\t\t\t\t\tend = i;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (start !== undefined && end !== undefined) {\n\t\t\t\t\t\t\tif (start > end) {\n\t\t\t\t\t\t\t\tend = [start, start = end][0];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor (let i = start; i <= end; i++) {\n\t\t\t\t\t\t\t\tselected[alerts[i].id] = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tlastSelected: alert.id,\n\t\t\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (selected[alert.id]) {\n\t\t\t\t\t\tdelete selected[alert.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselected[alert.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tlastSelected: alert.id,\n\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonOpen={(): void => {\n\t\t\t\t\tlet opened = {\n\t\t\t\t\t\t...this.state.opened,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (opened[alert.id]) {\n\t\t\t\t\t\tdelete opened[alert.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\topened[alert.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\topened: opened,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>);\n\t\t});\n\n\t\tlet filterClass = 'bp3-button bp3-intent-primary bp3-icon-filter ';\n\t\tif (this.state.filter) {\n\t\t\tfilterClass += 'bp3-active';\n\t\t}\n\n\t\tlet selectedNames: string[] = [];\n\t\tfor (let instId of Object.keys(this.state.selected)) {\n\t\t\tlet inst = AlertsStore.alert(instId);\n\t\t\tif (inst) {\n\t\t\t\tselectedNames.push(inst.name || instId);\n\t\t\t} else {\n\t\t\t\tselectedNames.push(instId);\n\t\t\t}\n\t\t}\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Alerts

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (this.state.filter === null) {\n\t\t\t\t\t\t\t\t\tAlertActions.filter({});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tAlertActions.filter(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFilters\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\topened: {},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCollapse All\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tAlertActions.create({\n\t\t\t\t\t\t\t\t\tid: null,\n\t\t\t\t\t\t\t\t}).then((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>New\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tAlertActions.filter(filter);\n\t\t\t\t}}\n\t\t\t\tauthorities={this.state.authorities}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{alertsDom}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tselected: {},\n\t\t\t\t\t\tlastSelected: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport PageSelect from './PageSelect';\nimport EndpointChart from './EndpointChart';\nimport * as CheckActions from '../actions/CheckActions';\n\ninterface Props {\n\tcheck: string;\n\tdisabled: boolean;\n}\n\ninterface State {\n\tsync: number;\n\tperiod: number;\n\tinterval: number;\n\tloading: {[key: string]: boolean};\n\tcancelable: {[key: string]: boolean};\n}\n\nconst css = {\n\theader: {\n\t\tfontSize: '20px',\n\t\tmarginTop: '-10px',\n\t\tpaddingBottom: '2px',\n\t\tmarginBottom: '10px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t} as React.CSSProperties,\n\tchartGroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t\tmarginBottom: '15px',\n\t} as React.CSSProperties,\n};\n\nexport default class CheckCharts extends React.Component {\n\tloading: {[key: string]: boolean};\n\tchartBoxRef: React.RefObject;\n\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tsync: 0,\n\t\t\tperiod: 1440,\n\t\t\tinterval: 30,\n\t\t\tloading: {},\n\t\t\tcancelable: {},\n\t\t};\n\n\t\tthis.loading = {};\n\t\tthis.chartBoxRef = React.createRef();\n\t}\n\n\tgetDefaultInterval(period: number): number {\n\t\tswitch (period) {\n\t\t\tcase 60:\n\t\t\t\treturn 1;\n\t\t\tcase 180:\n\t\t\t\treturn 5;\n\t\t\tcase 360:\n\t\t\t\treturn 5;\n\t\t\tcase 720:\n\t\t\t\treturn 30;\n\t\t\tcase 1440:\n\t\t\t\treturn 30;\n\t\t\tcase 4320:\n\t\t\t\treturn 60;\n\t\t\tcase 10080:\n\t\t\t\treturn 120;\n\t\t\tcase 20160:\n\t\t\t\treturn 360;\n\t\t\tcase 43200:\n\t\t\t\treturn 720;\n\t\t\tcase 86400:\n\t\t\t\treturn 1440;\n\t\t\tcase 129600:\n\t\t\t\treturn 1440;\n\t\t\tcase 172800:\n\t\t\t\treturn 4320;\n\t\t\tdefault:\n\t\t\t\treturn 360;\n\t\t}\n\t}\n\n\tsetLoading(resource: string): void {\n\t\tthis.loading[resource] = true;\n\n\t\tlet loading = {\n\t\t\t...this.state.loading,\n\t\t};\n\t\tloading[resource] = true;\n\n\t\tsetTimeout((): void => {\n\t\t\tif (this.loading[resource]) {\n\t\t\t\tlet cancelable = {\n\t\t\t\t\t...this.state.cancelable,\n\t\t\t\t};\n\t\t\t\tcancelable[resource] = true;\n\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tcancelable: cancelable,\n\t\t\t\t});\n\t\t\t}\n\t\t}, 3000);\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tloading: loading,\n\t\t});\n\t}\n\n\tsetLoaded(resource: string): void {\n\t\tdelete this.loading[resource];\n\n\t\tlet loading = {\n\t\t\t...this.state.loading,\n\t\t};\n\t\tdelete loading[resource];\n\n\t\tlet cancelable = {\n\t\t\t...this.state.cancelable,\n\t\t};\n\t\tdelete cancelable[resource];\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tloading: loading,\n\t\t\tcancelable: cancelable,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.disabled) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet intervalMin = 0;\n\t\tlet intervalMax = 0;\n\t\tif (this.state.period > 43200) {\n\t\t\tintervalMin = 120;\n\t\t} else if (this.state.period > 20160) {\n\t\t\tintervalMin = 30;\n\t\t} else if (this.state.period > 4320) {\n\t\t\tintervalMin = 5;\n\t\t}\n\n\t\tif (this.state.period <= 60) {\n\t\t\tintervalMax = 30;\n\t\t} else if (this.state.period <= 180) {\n\t\t\tintervalMax = 60;\n\t\t} else if (this.state.period <= 360) {\n\t\t\tintervalMax = 120;\n\t\t} else if (this.state.period <= 720) {\n\t\t\tintervalMax = 360;\n\t\t} else if (this.state.period <= 1440) {\n\t\t\tintervalMax = 720;\n\t\t} else if (this.state.period <= 4320) {\n\t\t\tintervalMax = 1440;\n\t\t} else if (this.state.period <= 10080) {\n\t\t\tintervalMax = 4320;\n\t\t} else {\n\t\t\tintervalMax = 10080;\n\t\t}\n\n\t\tlet refreshDisabled = false;\n\t\tlet refreshLabel = '';\n\t\tlet refreshClass = 'bp3-button';\n\t\tif (Object.entries(this.state.cancelable).length) {\n\t\t\trefreshLabel = 'Cancel';\n\t\t\trefreshClass += ' bp3-intent-warning bp3-icon-delete'\n\t\t} else {\n\t\t\tif (Object.entries(this.state.loading).length) {\n\t\t\t\trefreshDisabled = true;\n\t\t\t}\n\t\t\trefreshLabel = 'Refresh';\n\t\t\trefreshClass += ' bp3-intent-success bp3-icon-refresh'\n\t\t}\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t

    Charts

    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (Object.entries(this.state.cancelable).length) {\n\t\t\t\t\t\t\t\tCheckActions.dataCancel();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tsync: this.state.sync + 1,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{refreshLabel}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet period = parseInt(val, 10);\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tperiod: period,\n\t\t\t\t\t\t\t\tinterval: this.getDefaultInterval(period),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tinterval: parseInt(val, 10),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>1 minute\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>5 minutes\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>30 minutes\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>1 hour\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>2 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>6 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>12 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>24 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>3 days\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>7 days\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('check0');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('check0');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('check1');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('check1');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('check2');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('check2');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as CheckTypes from '../types/CheckTypes';\n\ninterface Props {\n\theader: CheckTypes.Header;\n\tonChange: (state: CheckTypes.Header) => void;\n\tonRemove: () => void;\n}\n\nconst css = {\n\tgroup: {\n\t\twidth: '100%',\n\t\tmaxWidth: '310px',\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\theader: {\n\t\twidth: '100%',\n\t\tborderRadius: '0 3px 3px 0',\n\t} as React.CSSProperties,\n\theaderBox: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class CheckHeader extends React.Component {\n\tclone(): CheckTypes.Header {\n\t\treturn {\n\t\t\t...this.props.header,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tlet header = this.props.header;\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\tstate.key = evt.target.value;\n\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\tstate.value = evt.target.value;\n\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.props.onRemove();\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as CheckTypes from '../types/CheckTypes';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\nimport * as CheckActions from '../actions/CheckActions';\nimport * as PageInfos from './PageInfo';\nimport PageInput from './PageInput';\nimport PageSave from './PageSave';\nimport PageInfo from './PageInfo';\nimport ConfirmButton from './ConfirmButton';\nimport PageInputButton from './PageInputButton';\nimport CheckCharts from './CheckCharts';\nimport Help from './Help';\nimport PageSwitch from \"./PageSwitch\";\nimport PageSelect from \"./PageSelect\";\nimport CheckHeader from \"./CheckHeader\";\nimport EndpointKmsg from \"./EndpointKmsg\";\n\ninterface Props {\n\tcheck: CheckTypes.CheckRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\tonClose: () => void;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\taddRole: string;\n\taddTarget: string;\n\tcheck: CheckTypes.Check;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '48px 10px 0 10px',\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t} as React.CSSProperties,\n\tcontrolButton: {\n\t\tmarginRight: '10px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\theight: '30px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tcursor: 'pointer',\n\t\tposition: 'absolute',\n\t\ttop: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tpadding: '4px',\n\t\theight: '39px',\n\t\tbackgroundColor: 'rgba(0, 0, 0, 0.13)',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tstatus: {\n\t\tmargin: '6px 0 0 1px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tprotocol: {\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n\tport: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '7px 0px 0px 6px',\n\t\tpaddingTop: '3px',\n\t} as React.CSSProperties,\n\theader: {\n\t\tfontSize: '20px',\n\t\tmarginTop: '-10px',\n\t\tpaddingBottom: '2px',\n\t\tmarginBottom: '10px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tchecksButtons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n\tchecksAdd: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n};\n\nexport default class CheckDetailed extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\taddTarget: '',\n\t\t\tcheck: null,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet check: any;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tcheck[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tCheckActions.commit(this.state.check).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tcheck: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tCheckActions.remove(this.props.check.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddRole = (): void => {\n\t\tlet check: CheckTypes.Check;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...check.roles,\n\t\t];\n\n\t\tif (!this.state.addRole) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (roles.indexOf(this.state.addRole) === -1) {\n\t\t\troles.push(this.state.addRole);\n\t\t}\n\n\t\troles.sort();\n\n\t\tcheck.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\tonRemoveRole(role: string): void {\n\t\tlet check: CheckTypes.Check;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...check.roles,\n\t\t];\n\n\t\tlet i = roles.indexOf(role);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\troles.splice(i, 1);\n\n\t\tcheck.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\tonAddTarget = (): void => {\n\t\tlet check: CheckTypes.Check;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tlet targets = [\n\t\t\t...(check.targets || []),\n\t\t];\n\n\t\tif (!this.state.addTarget) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (targets.indexOf(this.state.addTarget) === -1) {\n\t\t\ttargets.push(this.state.addTarget);\n\t\t}\n\n\t\ttargets.sort();\n\n\t\tcheck.targets = targets;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddTarget: '',\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\tonRemoveTarget(target: string): void {\n\t\tlet check: CheckTypes.Check;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tlet targets = [\n\t\t\t...(check.targets || []),\n\t\t];\n\n\t\tlet i = targets.indexOf(target);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\ttargets.splice(i, 1);\n\n\t\tcheck.targets = targets;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddTarget: '',\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\tonAddHeader = (): void => {\n\t\tlet check: CheckTypes.Check;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tlet headers = [\n\t\t\t...check.headers,\n\t\t\t{},\n\t\t];\n\n\t\tcheck.headers = headers;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\tonChangeHeader(i: number, state: CheckTypes.Header): void {\n\t\tlet check: CheckTypes.Check;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tlet headers = [\n\t\t\t...check.headers,\n\t\t];\n\n\t\theaders[i] = state;\n\n\t\tcheck.headers = headers;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\tonRemoveHeader(i: number): void {\n\t\tlet check: CheckTypes.Check;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tlet headers = [\n\t\t\t...check.headers,\n\t\t];\n\n\t\theaders.splice(i, 1);\n\n\t\tcheck.headers = headers;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet check: CheckTypes.Check = this.state.check ||\n\t\t\tthis.props.check;\n\n\t\tlet fields: PageInfos.Field[] = [\n\t\t\t{\n\t\t\t\tlabel: 'ID',\n\t\t\t\tvalue: this.props.check.id || 'None',\n\t\t\t},\n\t\t];\n\n\t\tlet roles: JSX.Element[] = [];\n\t\tfor (let role of check.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveRole(role);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet targets: JSX.Element[] = [];\n\t\tfor (let target of (check.targets || [])) {\n\t\t\ttargets.push(\n\t\t\t\t\n\t\t\t\t\t{target}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveTarget(target);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet targetLabel = '';\n\t\tlet targetTitle = '';\n\t\tlet targetHelp = '';\n\n\t\ttargetLabel = 'Targets';\n\t\ttargetTitle = 'Targets';\n\t\ttargetHelp = 'Targets for health check. For most configurations each ' +\n\t\t\t'target should be placed in a separate check.';\n\n\t\tlet headers: JSX.Element[] = [];\n\t\tif (check.type === \"http\") {\n\t\t\tfor (let i = 0; i < check.headers.length; i++) {\n\t\t\t\tlet index = i;\n\n\t\t\t\theaders.push(\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onChangeHeader(index, state);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={(): void => {\n\t\t\t\t\t\t\tthis.onRemoveHeader(index);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\t\t\t\tif (target.className.indexOf('tab-close') !== -1) {\n\t\t\t\t\t\t\t\tthis.props.onClose();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonClick={(evt): void => {\n\t\t\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddRole}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('type', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tHTTP Request\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddTarget: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddTarget}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('frequency', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('timeout', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('status_code', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t{headers}\n\t\t\t\t\t\n\t\t\t\t\t\tAdd Header\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tcheck: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t\t\n\t\t\t\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as CheckTypes from '../types/CheckTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport CheckDetailed from './CheckDetailed';\n\ninterface Props {\n\tcheck: CheckTypes.CheckRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\topen: boolean;\n\tonOpen: () => void;\n}\n\nconst css = {\n\tcard: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tcursor: 'pointer',\n\t} as React.CSSProperties,\n\tcardOpen: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tposition: 'relative',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '2px 0 0 0',\n\t\tpaddingTop: '3px',\n\t\tminHeight: '18px',\n\t} as React.CSSProperties,\n\tname: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t} as React.CSSProperties,\n\tnameSpan: {\n\t\tmargin: '1px 5px 0 0',\n\t} as React.CSSProperties,\n\titem: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '9px',\n\t\twhiteSpace: 'nowrap',\n\t} as React.CSSProperties,\n\troles: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '0 8px 8px 8px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\ttag: {\n\t\tmargin: '8px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\tbars: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t\twidth: '30px',\n\t} as React.CSSProperties,\n\tbar: {\n\t\theight: '6px',\n\t\tmarginBottom: '1px',\n\t} as React.CSSProperties,\n\tbarLast: {\n\t\theight: '6px',\n\t} as React.CSSProperties,\n};\n\nexport default class Check extends React.Component {\n\trender(): JSX.Element {\n\t\tlet check = this.props.check;\n\n\t\tif (this.props.open) {\n\t\t\treturn \n\t\t\t\t {\n\t\t\t\t\t\tthis.props.onOpen();\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    ;\n\t\t}\n\n\t\tlet cardStyle = {\n\t\t\t...css.card,\n\t\t};\n\n\t\tlet roles: JSX.Element[] = [];\n\n\t\tfor (let role of check.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\tif (target.className.indexOf('open-ignore') !== -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.props.onOpen();\n\t\t\t}}\n\t\t>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClick={(evt): void => {\n\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t{check.name}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{roles}\n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as CheckTypes from '../types/CheckTypes';\nimport SearchInput from './SearchInput';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\n\ninterface Props {\n\tfilter: CheckTypes.Filter;\n\tonFilter: (filter: CheckTypes.Filter) => void;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n}\n\nconst css = {\n\tfilters: {\n\t\tmargin: '-15px 0 5px 0',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '200px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\twidth: '150px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\ttype: {\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tcheck: {\n\t\tmargin: '12px 5px 8px 5px',\n\t} as React.CSSProperties,\n};\n\nexport default class ChecksFilter extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tmenu: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.filter === null) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.id = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.id;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.name = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.name;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.role = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.role;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport ChecksStore from '../stores/ChecksStore';\nimport * as CheckActions from '../actions/CheckActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class ChecksPage extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: ChecksStore.page,\n\t\t\tpageCount: ChecksStore.pageCount,\n\t\t\tpages: ChecksStore.pages,\n\t\t\tcount: ChecksStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tChecksStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tChecksStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: ChecksStore.page,\n\t\t\tpageCount: ChecksStore.pageCount,\n\t\t\tpages: ChecksStore.pages,\n\t\t\tcount: ChecksStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tCheckActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tCheckActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tCheckActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tCheckActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tCheckActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as CheckTypes from '../types/CheckTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport ChecksStore from '../stores/ChecksStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport * as CheckActions from '../actions/CheckActions';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport Check from './Check';\nimport ChecksFilter from './ChecksFilter';\nimport ChecksPage from './ChecksPage';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\nimport NonState from './NonState';\nimport ConfirmButton from './ConfirmButton';\n\ninterface Selected {\n\t[key: string]: boolean;\n}\n\ninterface Opened {\n\t[key: string]: boolean;\n}\n\ninterface State {\n\tchecks: CheckTypes.ChecksRo;\n\tfilter: CheckTypes.Filter;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: Selected;\n\topened: Opened;\n\tnewOpened: boolean;\n\tlastSelected: string;\n\tdisabled: boolean;\n}\n\nconst css = {\n\titems: {\n\t\twidth: '100%',\n\t\tmarginTop: '-5px',\n\t\tdisplay: 'table',\n\t\tborderSpacing: '0 5px',\n\t} as React.CSSProperties,\n\titemsBox: {\n\t\twidth: '100%',\n\t\toverflowY: 'auto',\n\t} as React.CSSProperties,\n\tplaceholder: {\n\t\topacity: 0,\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n};\n\nexport default class Checks extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tchecks: ChecksStore.checks,\n\t\t\tfilter: ChecksStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: {},\n\t\t\topened: {},\n\t\t\tnewOpened: false,\n\t\t\tlastSelected: null,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tget selected(): boolean {\n\t\treturn !!Object.keys(this.state.selected).length;\n\t}\n\n\tget opened(): boolean {\n\t\treturn !!Object.keys(this.state.opened).length;\n\t}\n\n\tcomponentDidMount(): void {\n\t\tChecksStore.addChangeListener(this.onChange);\n\t\tAuthoritiesStore.addChangeListener(this.onChange);\n\t\tCheckActions.sync();\n\t\tAuthorityActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tChecksStore.removeChangeListener(this.onChange);\n\t\tAuthoritiesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tlet checks = ChecksStore.checks;\n\t\tlet selected: Selected = {};\n\t\tlet curSelected = this.state.selected;\n\t\tlet opened: Opened = {};\n\t\tlet curOpened = this.state.opened;\n\n\t\tchecks.forEach((check: CheckTypes.Check): void => {\n\t\t\tif (curSelected[check.id]) {\n\t\t\t\tselected[check.id] = true;\n\t\t\t}\n\t\t\tif (curOpened[check.id]) {\n\t\t\t\topened[check.id] = true;\n\t\t\t}\n\t\t});\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchecks: checks,\n\t\t\tfilter: ChecksStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: selected,\n\t\t\topened: opened,\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tCheckActions.removeMulti(\n\t\t\t\tObject.keys(this.state.selected)).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tselected: {},\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet checksDom: JSX.Element[] = [];\n\n\t\tthis.state.checks.forEach((\n\t\t\t\tcheck: CheckTypes.CheckRo): void => {\n\t\t\tchecksDom.push( {\n\t\t\t\t\tlet selected = {\n\t\t\t\t\t\t...this.state.selected,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (shift) {\n\t\t\t\t\t\tlet checks = this.state.checks;\n\t\t\t\t\t\tlet start: number;\n\t\t\t\t\t\tlet end: number;\n\n\t\t\t\t\t\tfor (let i = 0; i < checks.length; i++) {\n\t\t\t\t\t\t\tlet usr = checks[i];\n\n\t\t\t\t\t\t\tif (usr.id === check.id) {\n\t\t\t\t\t\t\t\tstart = i;\n\t\t\t\t\t\t\t} else if (usr.id === this.state.lastSelected) {\n\t\t\t\t\t\t\t\tend = i;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (start !== undefined && end !== undefined) {\n\t\t\t\t\t\t\tif (start > end) {\n\t\t\t\t\t\t\t\tend = [start, start = end][0];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor (let i = start; i <= end; i++) {\n\t\t\t\t\t\t\t\tselected[checks[i].id] = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tlastSelected: check.id,\n\t\t\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (selected[check.id]) {\n\t\t\t\t\t\tdelete selected[check.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselected[check.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tlastSelected: check.id,\n\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonOpen={(): void => {\n\t\t\t\t\tlet opened = {\n\t\t\t\t\t\t...this.state.opened,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (opened[check.id]) {\n\t\t\t\t\t\tdelete opened[check.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\topened[check.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\topened: opened,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>);\n\t\t});\n\n\t\tlet filterClass = 'bp3-button bp3-intent-primary bp3-icon-filter ';\n\t\tif (this.state.filter) {\n\t\t\tfilterClass += 'bp3-active';\n\t\t}\n\n\t\tlet selectedNames: string[] = [];\n\t\tfor (let instId of Object.keys(this.state.selected)) {\n\t\t\tlet inst = ChecksStore.check(instId);\n\t\t\tif (inst) {\n\t\t\t\tselectedNames.push(inst.name || instId);\n\t\t\t} else {\n\t\t\t\tselectedNames.push(instId);\n\t\t\t}\n\t\t}\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Health Checks

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (this.state.filter === null) {\n\t\t\t\t\t\t\t\t\tCheckActions.filter({});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tCheckActions.filter(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFilters\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\topened: {},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCollapse All\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tCheckActions.create({\n\t\t\t\t\t\t\t\t\tid: null,\n\t\t\t\t\t\t\t\t}).then((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>New\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tCheckActions.filter(filter);\n\t\t\t\t}}\n\t\t\t\tauthorities={this.state.authorities}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{checksDom}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tselected: {},\n\t\t\t\t\t\tlastSelected: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nexport const SYNC = 'log.sync';\nexport const TRAVERSE = 'log.traverse';\nexport const FILTER = 'log.filter';\nexport const CHANGE = 'log.change';\n\nexport interface Log {\n\tid: string;\n\tlevel?: string;\n\ttimestamp?: string;\n\tmessage?: string;\n\tstack?: string;\n\tfields?: {[key: string]: any};\n}\n\nexport interface Filter {\n\tlevel?: string;\n\tmessage?: string;\n}\n\nexport type Logs = Log[];\n\nexport type LogRo = Readonly;\nexport type LogsRo = ReadonlyArray;\n\nexport interface LogDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tlog?: Log;\n\t\tlogs?: Logs;\n\t\tpage?: number;\n\t\tpageCount?: number;\n\t\tfilter?: Filter;\n\t\tcount?: number;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as LogTypes from '../types/LogTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass LogsStore extends EventEmitter {\n\t_logs: LogTypes.LogsRo = Object.freeze([]);\n\t_page: number;\n\t_pageCount: number;\n\t_filter: LogTypes.Filter = null;\n\t_count: number;\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget logs(): LogTypes.LogsRo {\n\t\treturn this._logs;\n\t}\n\n\tget logsM(): LogTypes.Logs {\n\t\tlet logs: LogTypes.Logs = [];\n\t\tthis._logs.forEach((log: LogTypes.LogRo): void => {\n\t\t\tlogs.push({\n\t\t\t\t...log,\n\t\t\t});\n\t\t});\n\t\treturn logs;\n\t}\n\n\tget page(): number {\n\t\treturn this._page || 0;\n\t}\n\n\tget pageCount(): number {\n\t\treturn this._pageCount || 50;\n\t}\n\n\tget pages(): number {\n\t\treturn Math.ceil(this.count / this.pageCount);\n\t}\n\n\tget filter(): LogTypes.Filter {\n\t\treturn this._filter;\n\t}\n\n\tget count(): number {\n\t\treturn this._count || 0;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_traverse(page: number): void {\n\t\tthis._page = Math.min(this.pages, page);\n\t}\n\n\t_filterCallback(filter: LogTypes.Filter): void {\n\t\tif ((this._filter !== null && filter === null) ||\n\t\t\t(this._filter === {} && filter !== null) || (\n\t\t\t\tfilter && this._filter && (\n\t\t\t\t\tfilter.level !== this._filter.level\n\t\t\t\t))) {\n\t\t\tthis._traverse(0);\n\t\t}\n\t\tthis._filter = filter;\n\t\tthis.emitChange();\n\t}\n\n\t_sync(logs: LogTypes.Log[], count: number): void {\n\t\tfor (let i = 0; i < logs.length; i++) {\n\t\t\tlogs[i] = Object.freeze(logs[i]);\n\t\t}\n\n\t\tthis._count = count;\n\t\tthis._logs = Object.freeze(logs);\n\t\tthis._page = Math.min(this.pages, this.page);\n\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: LogTypes.LogDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase LogTypes.TRAVERSE:\n\t\t\t\tthis._traverse(action.data.page);\n\t\t\t\tbreak;\n\n\t\t\tcase LogTypes.FILTER:\n\t\t\t\tthis._filterCallback(action.data.filter);\n\t\t\t\tbreak;\n\n\t\t\tcase LogTypes.SYNC:\n\t\t\t\tthis._sync(action.data.logs, action.data.count);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new LogsStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as LogTypes from '../types/LogTypes';\nimport LogsStore from '../stores/LogsStore';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\n\nexport function sync(): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/log')\n\t\t\t.query({\n\t\t\t\t...LogsStore.filter,\n\t\t\t\tpage: LogsStore.page,\n\t\t\t\tpage_count: LogsStore.pageCount,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load logs');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: LogTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tlogs: res.body.logs,\n\t\t\t\t\t\tcount: res.body.count,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function traverse(page: number): Promise {\n\tDispatcher.dispatch({\n\t\ttype: LogTypes.TRAVERSE,\n\t\tdata: {\n\t\t\tpage: page,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function filter(filt: LogTypes.Filter): Promise {\n\tDispatcher.dispatch({\n\t\ttype: LogTypes.FILTER,\n\t\tdata: {\n\t\t\tfilter: filt,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nEventDispatcher.register((action: LogTypes.LogDispatch) => {\n\tswitch (action.type) {\n\t\tcase LogTypes.CHANGE:\n\t\t\tif (window.location.hash.indexOf('/logs') !== -1) {\n\t\t\t\tsync();\n\t\t\t}\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as React from 'react';\nimport * as Blueprint from '@blueprintjs/core';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport * as LogTypes from '../types/LogTypes';\n\ninterface State {\n\tstack: boolean;\n}\n\ninterface Props {\n\tlog: LogTypes.LogRo;\n}\n\nconst css = {\n\tcard: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t} as React.CSSProperties,\n\ttimestamp: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '6px',\n\t} as React.CSSProperties,\n\tlevel: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '6px',\n\t} as React.CSSProperties,\n\tmessage: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '6px',\n\t} as React.CSSProperties,\n\tfields: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '6px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '0',\n\t\twidth: '30px',\n\t} as React.CSSProperties,\n\tkey: {\n\t\tfontWeight: 'bold',\n\t} as React.CSSProperties,\n\tvalue: {\n\t} as React.CSSProperties,\n\tdialog: {\n\t\theight: '500px',\n\t\twidth: '90%',\n\t\tmaxWidth: '700px',\n\t} as React.CSSProperties,\n\tdialogBody: {\n\t\theight: '100%',\n\t} as React.CSSProperties,\n\ttextarea: {\n\t\tresize: 'none',\n\t\tfontSize: '12px',\n\t\tfontFamily: '\"Lucida Console\", Monaco, monospace',\n\t\tmarginBottom: 0,\n\t} as React.CSSProperties,\n};\n\nexport default class Log extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tstack: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tlet log = this.props.log;\n\n\t\tlet className = 'bp3-cell ';\n\t\tswitch (log.level) {\n\t\t\tcase 'debug':\n\t\t\t\tclassName += 'bp3-text-intent-success';\n\t\t\t\tbreak;\n\t\t\tcase 'info':\n\t\t\t\tclassName += 'bp3-text-intent-primary';\n\t\t\t\tbreak;\n\t\t\tcase 'warning':\n\t\t\t\tclassName += 'bp3-text-intent-warning';\n\t\t\t\tbreak;\n\t\t\tcase 'error':\n\t\t\t\tclassName += 'bp3-text-intent-danger';\n\t\t\t\tbreak;\n\t\t\tcase 'fatal':\n\t\t\t\tclassName += 'bp3-text-intent-danger';\n\t\t\t\tbreak;\n\t\t\tcase 'panic':\n\t\t\t\tclassName += 'bp3-text-intent-danger';\n\t\t\t\tbreak;\n\t\t}\n\n\t\tlet fields: JSX.Element[] = [];\n\t\tfor (let key in log.fields) {\n\t\t\tif (!log.fields.hasOwnProperty(key)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet val = log.fields[key];\n\n\t\t\tfields.push(\n\t\t\t\t
    \n\t\t\t\t\t{key}: \n\t\t\t\t\t\n\t\t\t\t\t\t{JSON.stringify(val)}\n\t\t\t\t\t\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t{MiscUtils.formatDateShortTime(log.timestamp) || 'Unknown'}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{log.level}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{log.message}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{fields}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\tstack: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tstack: false,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t\n\t\t\t\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as LogTypes from '../types/LogTypes';\nimport SearchInput from './SearchInput';\n\ninterface Props {\n\tfilter: LogTypes.Filter;\n\tonFilter: (filter: LogTypes.Filter) => void;\n}\n\nconst css = {\n\tfilters: {\n\t\tmargin: '-15px 0 5px 0',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '200px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\twidth: '150px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\ttype: {\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tcheck: {\n\t\tmargin: '12px 5px 8px 5px',\n\t} as React.CSSProperties,\n};\n\nexport default class LogsFilter extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tmenu: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.filter === null) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.message = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.message;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tlet val = evt.target.value;\n\n\t\t\t\t\t\tif (val === 'any') {\n\t\t\t\t\t\t\tdelete filter.level;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfilter.level = val;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport LogsStore from '../stores/LogsStore';\nimport * as LogActions from '../actions/LogActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class LogsPage extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: LogsStore.page,\n\t\t\tpageCount: LogsStore.pageCount,\n\t\t\tpages: LogsStore.pages,\n\t\t\tcount: LogsStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tLogsStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tLogsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: LogsStore.page,\n\t\t\tpageCount: LogsStore.pageCount,\n\t\t\tpages: LogsStore.pages,\n\t\t\tcount: LogsStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tLogActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tLogActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tLogActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tLogActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tLogActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as LogTypes from '../types/LogTypes';\nimport LogsStore from '../stores/LogsStore';\nimport * as LogActions from '../actions/LogActions';\nimport Log from './Log';\nimport LogsFilter from './LogsFilter';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\nimport LogsPage from './LogsPage';\n\ninterface State {\n\tlogs: LogTypes.LogsRo;\n\tfilter: LogTypes.Filter;\n}\n\nconst css = {\n\tlogs: {\n\t\twidth: '100%',\n\t\tmarginTop: '-3px',\n\t\tdisplay: 'table',\n\t\tborderSpacing: '0 3px',\n\t} as React.CSSProperties,\n\tlogsBox: {\n\t\twidth: '100%',\n\t\toverflowY: 'auto',\n\t} as React.CSSProperties,\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n};\n\nexport default class Logs extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tlogs: LogsStore.logs,\n\t\t\tfilter: LogsStore.filter,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tLogsStore.addChangeListener(this.onChange);\n\t\tLogActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tLogsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tlogs: LogsStore.logs,\n\t\t\tfilter: LogsStore.filter,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet logsDom: JSX.Element[] = [];\n\n\t\tthis.state.logs.forEach((log: LogTypes.LogRo): void => {\n\t\t\tlogsDom.push();\n\t\t});\n\n\t\tlet filterClass = 'bp3-button bp3-intent-primary bp3-icon-filter ';\n\t\tif (this.state.filter) {\n\t\t\tfilterClass += 'bp3-active';\n\t\t}\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Logs

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (this.state.filter === null) {\n\t\t\t\t\t\t\t\t\tLogActions.filter({});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tLogActions.filter(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFilters\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tLogActions.filter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{logsDom}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ServiceTypes from '../types/ServiceTypes';\n\ninterface Props {\n\tdomain: ServiceTypes.Domain;\n\tonChange: (state: ServiceTypes.Domain) => void;\n\tonRemove: () => void;\n}\n\nconst css = {\n\tgroup: {\n\t\twidth: '100%',\n\t\tmaxWidth: '310px',\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\tdomain: {\n\t\twidth: '100%',\n\t\tborderRadius: '0 3px 3px 0',\n\t} as React.CSSProperties,\n\tdomainBox: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class ServiceDomain extends React.Component {\n\tclone(): ServiceTypes.Domain {\n\t\treturn {\n\t\t\t...this.props.domain,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tlet domain = this.props.domain;\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\tstate.domain = evt.target.value;\n\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\tstate.host = evt.target.value;\n\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.props.onRemove();\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ServiceTypes from '../types/ServiceTypes';\n\ninterface Props {\n\tserver: ServiceTypes.Server;\n\tonChange: (state: ServiceTypes.Server) => void;\n\tonRemove: () => void;\n}\n\nconst css = {\n\tgroup: {\n\t\twidth: '100%',\n\t\tmaxWidth: '310px',\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\tprotocol: {\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n\thostname: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\thostnameBox: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n\tport: {\n\t\tflex: '0 1 auto',\n\t\twidth: '52px',\n\t\tborderRadius: '0 3px 3px 0',\n\t} as React.CSSProperties,\n};\n\nexport default class ServiceServer extends React.Component {\n\tclone(): ServiceTypes.Server {\n\t\treturn {\n\t\t\t...this.props.server,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tlet server = this.props.server;\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\tstate.protocol = evt.target.value;\n\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\tstate.hostname = evt.target.value;\n\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.port = parseInt(evt.target.value, 10);\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tthis.props.onRemove();\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ServiceTypes from '../types/ServiceTypes';\n\ninterface Props {\n\tpath: ServiceTypes.Path;\n\tonChange: (state: ServiceTypes.Path) => void;\n\tonRemove: () => void;\n}\n\nconst css = {\n\tgroup: {\n\t\twidth: '100%',\n\t\tmaxWidth: '310px',\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\tpath: {\n\t\twidth: '100%',\n\t\tborderRadius: '0 3px 3px 0',\n\t} as React.CSSProperties,\n\tpathBox: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class ServiceWhitelistPath extends React.Component {\n\tclone(): ServiceTypes.Path {\n\t\treturn {\n\t\t\t...this.props.path,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tlet path = this.props.path;\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\tstate.path = evt.target.value;\n\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.props.onRemove();\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\nimport * as ServiceActions from '../actions/ServiceActions';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport ServiceDomain from './ServiceDomain';\nimport ServiceServer from './ServiceServer';\nimport ServiceWhitelistPath from './ServiceWhitelistPath';\nimport PageInput from './PageInput';\nimport PageSelect from './PageSelect';\nimport PageSwitch from './PageSwitch';\nimport PageSave from './PageSave';\nimport PageInfo from './PageInfo';\nimport ConfirmButton from './ConfirmButton';\nimport PageInputButton from './PageInputButton';\nimport Help from './Help';\n\ninterface Props {\n\tservice: ServiceTypes.ServiceRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\tonClose: () => void;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\taddRole: string;\n\taddWhitelistNet: string;\n\tservice: ServiceTypes.Service;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '48px 10px 0 10px',\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\n\tbutton: {\n\t\theight: '30px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tcursor: 'pointer',\n\t\tposition: 'absolute',\n\t\ttop: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tpadding: '4px',\n\t\theight: '39px',\n\t\tbackgroundColor: 'rgba(0, 0, 0, 0.13)',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tstatus: {\n\t\tmargin: '6px 0 0 1px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tprotocol: {\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n\tport: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '7px 0px 0px 6px',\n\t\tpaddingTop: '3px',\n\t} as React.CSSProperties,\n};\n\nexport default class ServiceDetailed extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\taddWhitelistNet: '',\n\t\t\tservice: null,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet service: any;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tservice[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tServiceActions.commit(this.state.service).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tservice: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tServiceActions.remove(this.props.service.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddRole = (): void => {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...service.roles,\n\t\t];\n\n\t\tif (!this.state.addRole) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (roles.indexOf(this.state.addRole) === -1) {\n\t\t\troles.push(this.state.addRole);\n\t\t}\n\n\t\troles.sort();\n\n\t\tservice.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonRemoveRole(role: string): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...service.roles,\n\t\t];\n\n\t\tlet i = roles.indexOf(role);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\troles.splice(i, 1);\n\n\t\tservice.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonAddWhitelistNet = (): void => {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet whitelistNets = [\n\t\t\t...service.whitelist_networks,\n\t\t];\n\n\t\tif (!this.state.addWhitelistNet) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (whitelistNets.indexOf(this.state.addWhitelistNet) === -1) {\n\t\t\twhitelistNets.push(this.state.addWhitelistNet);\n\t\t}\n\n\t\twhitelistNets.sort();\n\n\t\tservice.whitelist_networks = whitelistNets;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddWhitelistNet: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonRemoveWhitelistNet(whitelistNet: string): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet whitelistNets = [\n\t\t\t...service.whitelist_networks,\n\t\t];\n\n\t\tlet i = whitelistNets.indexOf(whitelistNet);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\twhitelistNets.splice(i, 1);\n\n\t\tservice.whitelist_networks = whitelistNets;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddWhitelistNet: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonAddServer = (): void => {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet servers = [\n\t\t\t...service.servers,\n\t\t\t{\n\t\t\t\tprotocol: 'https',\n\t\t\t\thostname: '',\n\t\t\t\tport: 443,\n\t\t\t},\n\t\t];\n\n\t\tservice.servers = servers;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonChangeServer(i: number, state: ServiceTypes.Server): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet servers = [\n\t\t\t...service.servers,\n\t\t];\n\n\t\tservers[i] = state;\n\n\t\tservice.servers = servers;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonRemoveServer(i: number): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet servers = [\n\t\t\t...service.servers,\n\t\t];\n\n\t\tservers.splice(i, 1);\n\n\t\tservice.servers = servers;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonAddDomain = (): void => {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet domains = [\n\t\t\t...service.domains,\n\t\t\t{},\n\t\t];\n\n\t\tservice.domains = domains;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonChangeDomain(i: number, state: ServiceTypes.Domain): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet domains = [\n\t\t\t...service.domains,\n\t\t];\n\n\t\tdomains[i] = state;\n\n\t\tservice.domains = domains;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonRemoveDomain(i: number): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet domains = [\n\t\t\t...service.domains,\n\t\t];\n\n\t\tdomains.splice(i, 1);\n\n\t\tservice.domains = domains;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonAddWhitelistPath = (): void => {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet paths = [\n\t\t\t...(service.whitelist_paths || []),\n\t\t\t{},\n\t\t];\n\n\t\tservice.whitelist_paths = paths;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonChangeWhitelistPath(i: number, state: ServiceTypes.Path): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet paths = [\n\t\t\t...service.whitelist_paths,\n\t\t];\n\n\t\tpaths[i] = state;\n\n\t\tservice.whitelist_paths = paths;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonRemoveWhitelistPath(i: number): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet paths = [\n\t\t\t...service.whitelist_paths,\n\t\t];\n\n\t\tpaths.splice(i, 1);\n\n\t\tservice.whitelist_paths = paths;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet service: ServiceTypes.Service = this.state.service ||\n\t\t\tthis.props.service;\n\n\t\tlet domains: JSX.Element[] = [];\n\t\tfor (let i = 0; i < service.domains.length; i++) {\n\t\t\tlet index = i;\n\n\t\t\tdomains.push(\n\t\t\t\t {\n\t\t\t\t\t\tthis.onChangeDomain(index, state);\n\t\t\t\t\t}}\n\t\t\t\t\tonRemove={(): void => {\n\t\t\t\t\t\tthis.onRemoveDomain(index);\n\t\t\t\t\t}}\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\tlet roles: JSX.Element[] = [];\n\t\tfor (let role of service.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveRole(role);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet servers: JSX.Element[] = [];\n\t\tfor (let i = 0; i < service.servers.length; i++) {\n\t\t\tlet index = i;\n\n\t\t\tservers.push(\n\t\t\t\t {\n\t\t\t\t\t\tthis.onChangeServer(index, state);\n\t\t\t\t\t}}\n\t\t\t\t\tonRemove={(): void => {\n\t\t\t\t\t\tthis.onRemoveServer(index);\n\t\t\t\t\t}}\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\tlet authorities: JSX.Element[] = [\n\t\t\t,\n\t\t];\n\t\tfor (let authority of this.props.authorities) {\n\t\t\tauthorities.push(\n\t\t\t\t{authority.name},\n\t\t\t);\n\t\t}\n\n\t\tlet whitelistNets: JSX.Element[] = [];\n\t\tfor (let whitelistNet of service.whitelist_networks) {\n\t\t\twhitelistNets.push(\n\t\t\t\t\n\t\t\t\t\t{whitelistNet}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveWhitelistNet(whitelistNet);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet whitelistPaths: JSX.Element[] = [];\n\t\tfor (let i = 0; i < (service.whitelist_paths || []).length; i++) {\n\t\t\tlet index = i;\n\n\t\t\twhitelistPaths.push(\n\t\t\t\t {\n\t\t\t\t\t\tthis.onChangeWhitelistPath(index, state);\n\t\t\t\t\t}}\n\t\t\t\t\tonRemove={(): void => {\n\t\t\t\t\t\tthis.onRemoveWhitelistPath(index);\n\t\t\t\t\t}}\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\t\t\t\tif (target.className.indexOf('tab-close') !== -1) {\n\t\t\t\t\t\t\t\tthis.props.onClose();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n
    \n \n {\n\t\t\t\t\t\t\t\t\t}}\n onClick={(evt): void => {\n\t\t\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t\t\t}}\n />\n \n \n
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('type', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{domains}\n\t\t\t\t\t\n\t\t\t\t\t\tAdd Domain\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{servers}\n\t\t\t\t\t\n\t\t\t\t\t\tAdd Server\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('client_authority', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{authorities}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('logout_path', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddRole}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddWhitelistNet: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddWhitelistNet}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t{whitelistPaths}\n\t\t\t\t\t\n\t\t\t\t\t\tAdd Permitted Path\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('share_session', !service.share_session);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('websockets', !service.websockets);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('disable_csrf_check', !service.disable_csrf_check);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tservice: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport ServiceDetailed from './ServiceDetailed';\n\ninterface Props {\n\tservice: ServiceTypes.ServiceRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\topen: boolean;\n\tonOpen: () => void;\n}\n\nconst css = {\n\tcard: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tcursor: 'pointer',\n\t} as React.CSSProperties,\n\tcardOpen: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tposition: 'relative',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '2px 0 0 0',\n\t\tpaddingTop: '3px',\n\t\tminHeight: '18px',\n\t} as React.CSSProperties,\n\tname: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t} as React.CSSProperties,\n\tnameSpan: {\n\t\tmargin: '1px 5px 0 0',\n\t} as React.CSSProperties,\n\titem: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '9px',\n\t\twhiteSpace: 'nowrap',\n\t} as React.CSSProperties,\n\troles: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '0 8px 8px 8px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\ttag: {\n\t\tmargin: '8px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\tbars: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t\twidth: '30px',\n\t} as React.CSSProperties,\n\tbar: {\n\t\theight: '6px',\n\t\tmarginBottom: '1px',\n\t} as React.CSSProperties,\n\tbarLast: {\n\t\theight: '6px',\n\t} as React.CSSProperties,\n};\n\nexport default class Service extends React.Component {\n\trender(): JSX.Element {\n\t\tlet service = this.props.service;\n\n\t\tif (this.props.open) {\n\t\t\treturn \n\t\t\t\t {\n\t\t\t\t\t\tthis.props.onOpen();\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    ;\n\t\t}\n\n\t\tlet cardStyle = {\n\t\t\t...css.card,\n\t\t};\n\n\t\tlet roles: JSX.Element[] = [];\n\n\t\tfor (let role of service.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\tif (target.className.indexOf('open-ignore') !== -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.props.onOpen();\n\t\t\t}}\n\t\t>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClick={(evt): void => {\n\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t{service.name}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{roles}\n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport SearchInput from './SearchInput';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\n\ninterface Props {\n\tfilter: ServiceTypes.Filter;\n\tonFilter: (filter: ServiceTypes.Filter) => void;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n}\n\nconst css = {\n\tfilters: {\n\t\tmargin: '-15px 0 5px 0',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '200px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\twidth: '150px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\ttype: {\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tcheck: {\n\t\tmargin: '12px 5px 8px 5px',\n\t} as React.CSSProperties,\n};\n\nexport default class ServicesFilter extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tmenu: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.filter === null) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.id = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.id;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.name = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.name;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.role = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.role;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport ServicesStore from '../stores/ServicesStore';\nimport * as ServiceActions from '../actions/ServiceActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class ServicesPage extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: ServicesStore.page,\n\t\t\tpageCount: ServicesStore.pageCount,\n\t\t\tpages: ServicesStore.pages,\n\t\t\tcount: ServicesStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tServicesStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tServicesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: ServicesStore.page,\n\t\t\tpageCount: ServicesStore.pageCount,\n\t\t\tpages: ServicesStore.pages,\n\t\t\tcount: ServicesStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tServiceActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tServiceActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tServiceActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tServiceActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tServiceActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport ServicesStore from '../stores/ServicesStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport * as ServiceActions from '../actions/ServiceActions';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport Service from './Service';\nimport ServicesFilter from './ServicesFilter';\nimport ServicesPage from './ServicesPage';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\nimport NonState from './NonState';\nimport ConfirmButton from './ConfirmButton';\n\ninterface Selected {\n\t[key: string]: boolean;\n}\n\ninterface Opened {\n\t[key: string]: boolean;\n}\n\ninterface State {\n\tservices: ServiceTypes.ServicesRo;\n\tfilter: ServiceTypes.Filter;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: Selected;\n\topened: Opened;\n\tnewOpened: boolean;\n\tlastSelected: string;\n\tdisabled: boolean;\n}\n\nconst css = {\n\titems: {\n\t\twidth: '100%',\n\t\tmarginTop: '-5px',\n\t\tdisplay: 'table',\n\t\tborderSpacing: '0 5px',\n\t} as React.CSSProperties,\n\titemsBox: {\n\t\twidth: '100%',\n\t\toverflowY: 'auto',\n\t} as React.CSSProperties,\n\tplaceholder: {\n\t\topacity: 0,\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n};\n\nexport default class Services extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tservices: ServicesStore.services,\n\t\t\tfilter: ServicesStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: {},\n\t\t\topened: {},\n\t\t\tnewOpened: false,\n\t\t\tlastSelected: null,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tget selected(): boolean {\n\t\treturn !!Object.keys(this.state.selected).length;\n\t}\n\n\tget opened(): boolean {\n\t\treturn !!Object.keys(this.state.opened).length;\n\t}\n\n\tcomponentDidMount(): void {\n\t\tServicesStore.addChangeListener(this.onChange);\n\t\tAuthoritiesStore.addChangeListener(this.onChange);\n\t\tServiceActions.sync();\n\t\tAuthorityActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tServicesStore.removeChangeListener(this.onChange);\n\t\tAuthoritiesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tlet services = ServicesStore.services;\n\t\tlet selected: Selected = {};\n\t\tlet curSelected = this.state.selected;\n\t\tlet opened: Opened = {};\n\t\tlet curOpened = this.state.opened;\n\n\t\tservices.forEach((service: ServiceTypes.Service): void => {\n\t\t\tif (curSelected[service.id]) {\n\t\t\t\tselected[service.id] = true;\n\t\t\t}\n\t\t\tif (curOpened[service.id]) {\n\t\t\t\topened[service.id] = true;\n\t\t\t}\n\t\t});\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tservices: services,\n\t\t\tfilter: ServicesStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: selected,\n\t\t\topened: opened,\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tServiceActions.removeMulti(\n\t\t\t\tObject.keys(this.state.selected)).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tselected: {},\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet servicesDom: JSX.Element[] = [];\n\n\t\tthis.state.services.forEach((\n\t\t\t\tservice: ServiceTypes.ServiceRo): void => {\n\t\t\tservicesDom.push( {\n\t\t\t\t\tlet selected = {\n\t\t\t\t\t\t...this.state.selected,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (shift) {\n\t\t\t\t\t\tlet services = this.state.services;\n\t\t\t\t\t\tlet start: number;\n\t\t\t\t\t\tlet end: number;\n\n\t\t\t\t\t\tfor (let i = 0; i < services.length; i++) {\n\t\t\t\t\t\t\tlet usr = services[i];\n\n\t\t\t\t\t\t\tif (usr.id === service.id) {\n\t\t\t\t\t\t\t\tstart = i;\n\t\t\t\t\t\t\t} else if (usr.id === this.state.lastSelected) {\n\t\t\t\t\t\t\t\tend = i;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (start !== undefined && end !== undefined) {\n\t\t\t\t\t\t\tif (start > end) {\n\t\t\t\t\t\t\t\tend = [start, start = end][0];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor (let i = start; i <= end; i++) {\n\t\t\t\t\t\t\t\tselected[services[i].id] = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tlastSelected: service.id,\n\t\t\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (selected[service.id]) {\n\t\t\t\t\t\tdelete selected[service.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselected[service.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tlastSelected: service.id,\n\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonOpen={(): void => {\n\t\t\t\t\tlet opened = {\n\t\t\t\t\t\t...this.state.opened,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (opened[service.id]) {\n\t\t\t\t\t\tdelete opened[service.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\topened[service.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\topened: opened,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>);\n\t\t});\n\n\t\tlet filterClass = 'bp3-button bp3-intent-primary bp3-icon-filter ';\n\t\tif (this.state.filter) {\n\t\t\tfilterClass += 'bp3-active';\n\t\t}\n\n\t\tlet selectedNames: string[] = [];\n\t\tfor (let instId of Object.keys(this.state.selected)) {\n\t\t\tlet inst = ServicesStore.service(instId);\n\t\t\tif (inst) {\n\t\t\t\tselectedNames.push(inst.name || instId);\n\t\t\t} else {\n\t\t\t\tselectedNames.push(instId);\n\t\t\t}\n\t\t}\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Services

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (this.state.filter === null) {\n\t\t\t\t\t\t\t\t\tServiceActions.filter({});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tServiceActions.filter(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFilters\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\topened: {},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCollapse All\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tServiceActions.create({\n\t\t\t\t\t\t\t\t\tid: null,\n\t\t\t\t\t\t\t\t\tshare_session: true,\n\t\t\t\t\t\t\t\t\twebsockets: true,\n\t\t\t\t\t\t\t\t}).then((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>New\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tServiceActions.filter(filter);\n\t\t\t\t}}\n\t\t\t\tauthorities={this.state.authorities}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{servicesDom}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tselected: {},\n\t\t\t\t\t\tlastSelected: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as SettingsTypes from '../types/SettingsTypes';\nimport PageInput from './PageInput';\nimport PageInputButton from './PageInputButton';\nimport PageTextArea from './PageTextArea';\nimport PageSwitch from './PageSwitch';\nimport PageInfo from './PageInfo';\nimport PageSelect from './PageSelect';\nimport Help from './Help';\n\ninterface Props {\n\tprovider: SettingsTypes.ProviderAny;\n\tonChange: (state: SettingsTypes.ProviderAny) => void;\n\tonRemove: () => void;\n}\n\ninterface State {\n\taddRole: string;\n}\n\nconst css = {\n\tlabel: {\n\t\tfontSize: '16px',\n\t\tmargin: '0 0 7px 0',\n\t} as React.CSSProperties,\n\tcard: {\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n};\n\nexport default class SettingsProvider extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\taddRole: '',\n\t\t};\n\t}\n\n\tclone(): SettingsTypes.ProviderAny {\n\t\treturn {\n\t\t\t...this.props.provider,\n\t\t};\n\t}\n\n\tazure(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.tenant = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.client_id = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.client_secret = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\tauthzero(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.domain = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.client_id = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.client_secret = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\tgoogle(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.domain = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.google_email = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.google_key = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\tonelogin(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.issuer_url = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.saml_url = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.saml_cert = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\tokta(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.saml_url = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.issuer_url = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.saml_cert = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\tjumpcloud(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.saml_url = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.issuer_url = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.saml_cert = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.jumpcloud_app_id = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.jumpcloud_secret = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\trender(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\t\tlet label = '';\n\t\tlet options: JSX.Element;\n\n\t\tswitch (provider.type) {\n\t\t\tcase 'azure':\n\t\t\t\tlabel = 'Azure';\n\t\t\t\toptions = this.azure();\n\t\t\t\tbreak;\n\t\t\tcase 'authzero':\n\t\t\t\tlabel = 'Auth0';\n\t\t\t\toptions = this.authzero();\n\t\t\t\tbreak;\n\t\t\tcase 'google':\n\t\t\t\tlabel = 'Google';\n\t\t\t\toptions = this.google();\n\t\t\t\tbreak;\n\t\t\tcase 'onelogin':\n\t\t\t\tlabel = 'OneLogin';\n\t\t\t\toptions = this.onelogin();\n\t\t\t\tbreak;\n\t\t\tcase 'okta':\n\t\t\t\tlabel = 'Okta';\n\t\t\t\toptions = this.okta();\n\t\t\t\tbreak;\n\t\t\tcase 'jumpcloud':\n\t\t\t\tlabel = 'JumpCloud';\n\t\t\t\toptions = this.jumpcloud();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tlet roles: JSX.Element[] = [];\n\t\tfor (let role of provider.default_roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet rls = [\n\t\t\t\t\t\t\t\t...this.props.provider.default_roles,\n\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\tlet i = rls.indexOf(role);\n\t\t\t\t\t\t\tif (i === -1) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\trls.splice(i, 1);\n\n\t\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\t\tstate.default_roles = rls;\n\t\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t
    {label}
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.label = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSubmit={(): void => {\n\t\t\t\t\tlet rls = [\n\t\t\t\t\t\t...this.props.provider.default_roles,\n\t\t\t\t\t];\n\n\t\t\t\t\tif (!this.state.addRole) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (rls.indexOf(this.state.addRole) === -1) {\n\t\t\t\t\t\trls.push(this.state.addRole);\n\t\t\t\t\t}\n\n\t\t\t\t\trls.sort();\n\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.default_roles = rls;\n\t\t\t\t\tthis.props.onChange(state);\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\taddRole: '',\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.auto_create = !state.auto_create;\n\n\t\t\t\t\tif (!state.auto_create &&\n\t\t\t\t\t\t\tstate.role_management === 'set_on_insert') {\n\t\t\t\t\t\tstate.role_management = 'merge';\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.role_management = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\tSet on insert\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t{options}\n\t\t\t {\n\t\t\t\t\tthis.props.onRemove();\n\t\t\t\t}}\n\t\t\t>Remove\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as SettingsTypes from '../types/SettingsTypes';\nimport PageInput from './PageInput';\nimport PageSelect from './PageSelect';\nimport PageSwitch from './PageSwitch';\nimport PageInfo from './PageInfo';\n\ninterface Props {\n\tprovider: SettingsTypes.SecondaryProviderAny;\n\tonChange: (state: SettingsTypes.SecondaryProviderAny) => void;\n\tonRemove: () => void;\n}\n\nconst css = {\n\tlabel: {\n\t\tfontSize: '16px',\n\t\tmargin: '0 0 7px 0',\n\t} as React.CSSProperties,\n\tcard: {\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n};\n\nexport default class SettingsSecondaryProvider extends React.Component {\n\tclone(): SettingsTypes.SecondaryProviderAny {\n\t\treturn {\n\t\t\t...this.props.provider,\n\t\t};\n\t}\n\n\tduo(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.duo_hostname = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.duo_key = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.duo_secret = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.push_factor = !state.push_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.phone_factor = !state.phone_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.passcode_factor = !state.passcode_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.sms_factor = !state.sms_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\tonelogin(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.one_login_id = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.one_login_secret = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.one_login_region = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.push_factor = !state.push_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.passcode_factor = !state.passcode_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\tokta(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.okta_domain = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.okta_token = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.push_factor = !state.push_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.passcode_factor = !state.passcode_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\trender(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\t\tlet label = '';\n\t\tlet options: JSX.Element;\n\n\t\tswitch (provider.type) {\n\t\t\tcase 'duo':\n\t\t\t\tlabel = 'Duo';\n\t\t\t\toptions = this.duo();\n\t\t\t\tbreak;\n\t\t\tcase 'one_login':\n\t\t\t\tlabel = 'OneLogin';\n\t\t\t\toptions = this.onelogin();\n\t\t\t\tbreak;\n\t\t\tcase 'okta':\n\t\t\t\tlabel = 'Okta';\n\t\t\t\toptions = this.okta();\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn
    \n\t\t\t
    {label}
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.name = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.label = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{options}\n\t\t\t {\n\t\t\t\t\tthis.props.onRemove();\n\t\t\t\t}}\n\t\t\t>Remove\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as SettingsTypes from '../types/SettingsTypes';\nimport SettingsStore from '../stores/SettingsStore';\nimport SubscriptionStore from '../stores/SubscriptionStore';\nimport * as SettingsActions from '../actions/SettingsActions';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\nimport PagePanel from './PagePanel';\nimport PageSplit from './PageSplit';\nimport PageInput from './PageInput';\nimport PageSwitch from './PageSwitch';\nimport PageSelectButton from './PageSelectButton';\nimport PageSave from './PageSave';\nimport SettingsProvider from './SettingsProvider';\nimport SettingsSecondaryProvider from './SettingsSecondaryProvider';\nimport NonState from './NonState';\n\ninterface State {\n\tchanged: boolean;\n\tdisabled: boolean;\n\tmessage: string;\n\tprovider: string;\n\tsecondaryProvider: string;\n\tsettings: SettingsTypes.Settings;\n}\n\nconst css = {\n\tproviders: {\n\t\tpaddingBottom: '6px',\n\t\tmarginBottom: '5px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n\tprovidersLabel: {\n\t\tmargin: 0,\n\t} as React.CSSProperties,\n\tsecondaryProviders: {\n\t\tpaddingBottom: '6px',\n\t\tmarginTop: '5px',\n\t\tmarginBottom: '5px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n};\n\nexport default class Settings extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tchanged: false,\n\t\t\tdisabled: false,\n\t\t\tmessage: '',\n\t\t\tprovider: 'google',\n\t\t\tsecondaryProvider: 'duo',\n\t\t\tsettings: SettingsStore.settingsM,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tSettingsStore.addChangeListener(this.onChange);\n\t\tSettingsActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tSettingsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: false,\n\t\t\tsettings: SettingsStore.settingsM,\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tSettingsActions.commit(this.state.settings).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tset = (name: string, val: any): void => {\n\t\tlet settings: any = {\n\t\t\t...this.state.settings,\n\t\t};\n\n\t\tsettings[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tsettings: settings,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet settings = this.state.settings;\n\n\t\tif (!settings) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet subscriptionActive = SubscriptionStore.subscription ?\n\t\t\tSubscriptionStore.subscription.active : false;\n\n\t\tlet providers: JSX.Element[] = [];\n\t\tfor (let i = 0; i < settings.auth_providers.length; i++) {\n\t\t\tproviders.push( {\n\t\t\t\t\tlet prvdrs = [\n\t\t\t\t\t\t...this.state.settings.auth_providers,\n\t\t\t\t\t];\n\t\t\t\t\tprvdrs[i] = state;\n\t\t\t\t\tthis.set('auth_providers', prvdrs);\n\t\t\t\t}}\n\t\t\t\tonRemove={(): void => {\n\t\t\t\t\tlet prvdrs = [\n\t\t\t\t\t\t...this.state.settings.auth_providers,\n\t\t\t\t\t];\n\t\t\t\t\tprvdrs.splice(i, 1);\n\t\t\t\t\tthis.set('auth_providers', prvdrs);\n\t\t\t\t}}\n\t\t\t/>);\n\t\t}\n\n\t\tlet secondaryProviders: JSX.Element[] = [];\n\t\tfor (let i = 0; i < settings.auth_secondary_providers.length; i++) {\n\t\t\tsecondaryProviders.push( {\n\t\t\t\t\tlet prvdrs = [\n\t\t\t\t\t\t...this.state.settings.auth_secondary_providers,\n\t\t\t\t\t];\n\t\t\t\t\tprvdrs[i] = state;\n\t\t\t\t\tthis.set('auth_secondary_providers', prvdrs);\n\t\t\t\t}}\n\t\t\t\tonRemove={(): void => {\n\t\t\t\t\tlet prvdrs = [\n\t\t\t\t\t\t...this.state.settings.auth_secondary_providers,\n\t\t\t\t\t];\n\t\t\t\t\tprvdrs.splice(i, 1);\n\t\t\t\t\tthis.set('auth_secondary_providers', prvdrs);\n\t\t\t\t}}\n\t\t\t/>);\n\t\t}\n\n\t\treturn \n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Two-Factor Providers
    \n\t\t\t\t\t
    \n\t\t\t\t\t{secondaryProviders}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tsecondaryProvider: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={(): void => {\n\t\t\t\t\t\t\tlet authProviders: SettingsTypes.SecondaryProviders = [\n\t\t\t\t\t\t\t\t...settings.auth_secondary_providers,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: this.state.secondaryProvider,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\tthis.set('auth_secondary_providers', authProviders);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('auth_admin_expire', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('auth_admin_max_duration', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('auth_proxy_expire', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('auth_proxy_max_duration', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('auth_user_expire', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('auth_user_max_duration', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('elastic_address', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('elastic_username', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('elastic_password', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('elastic_proxy_requests',\n\t\t\t\t\t\t\t\t!this.state.settings.elastic_proxy_requests);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tmessage: 'Your changes have been discarded',\n\t\t\t\t\t\tsettings: SettingsStore.settingsM,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ReactRouter from 'react-router-dom';\nimport * as Theme from '../Theme';\nimport * as SubscriptionTypes from '../types/SubscriptionTypes';\nimport SubscriptionStore from '../stores/SubscriptionStore';\nimport LoadingBar from './LoadingBar';\nimport Subscription from './Subscription';\nimport Users from './Users';\nimport UserDetailed from './UserDetailed';\nimport Nodes from './Nodes';\nimport Policies from './Policies';\nimport Authorities from './Authorities';\nimport Certificates from './Certificates';\nimport Endpoints from './Endpoints';\nimport Alerts from './Alerts';\nimport Checks from './Checks';\nimport Logs from './Logs';\nimport Services from './Services';\nimport Settings from './Settings';\nimport * as UserActions from '../actions/UserActions';\nimport * as SessionActions from '../actions/SessionActions';\nimport * as DeviceActions from '../actions/DeviceActions';\nimport * as AlertActions from '../actions/AlertActions';\nimport * as CheckActions from '../actions/CheckActions';\nimport * as AuditActions from '../actions/AuditActions';\nimport * as SshcertificateActions from '../actions/SshcertificateActions';\nimport * as NodeActions from '../actions/NodeActions';\nimport * as PolicyActions from '../actions/PolicyActions';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport * as CertificateActions from '../actions/CertificateActions';\nimport * as EndpointActions from '../actions/EndpointActions';\nimport * as LogActions from '../actions/LogActions';\nimport * as ServiceActions from '../actions/ServiceActions';\nimport * as SettingsActions from '../actions/SettingsActions';\nimport * as SubscriptionActions from '../actions/SubscriptionActions';\n\ninterface State {\n\tsubscription: SubscriptionTypes.SubscriptionRo;\n\tdisabled: boolean;\n}\n\nconst css = {\n\tnav: {\n\t\toverflowX: 'auto',\n\t\toverflowY: 'auto',\n\t\tuserSelect: 'none',\n\t\theight: 'auto',\n\t} as React.CSSProperties,\n\tnavTitle: {\n\t\theight: 'auto',\n\t} as React.CSSProperties,\n\tnavGroup: {\n\t\tflexWrap: 'wrap',\n\t\theight: 'auto',\n\t\tpadding: '10px 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tpadding: '0 8px',\n\t\tcolor: 'inherit',\n\t} as React.CSSProperties,\n\tsub: {\n\t\tcolor: 'inherit',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmarginRight: '11px',\n\t\tfontSize: '18px',\n\t\tfontWeight: 'bold',\n\t} as React.CSSProperties,\n};\n\nexport default class Main extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tsubscription: SubscriptionStore.subscription,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tSubscriptionStore.addChangeListener(this.onChange);\n\t\tSubscriptionActions.sync(false);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tSubscriptionStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tsubscription: SubscriptionStore.subscription,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tif (!this.state.subscription) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tUsers\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tServices\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tNodes\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tPolicies\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tAuthorities\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tCertificates\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tEndpoints\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tAlerts\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tHealth Checks\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tLogs\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tSettings\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tSubscriptionActions.sync(true);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>Subscription\n\t\t\t\t\t\t\n\t\t\t\t\t\t (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tlet pathname = props.location.pathname;\n\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tif (pathname === '/users') {\n\t\t\t\t\t\t\t\t\t\tUserActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname.startsWith('/user/')) {\n\t\t\t\t\t\t\t\t\t\tUserActions.reload().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tSessionActions.reload().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tDeviceActions.reload().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tSshcertificateActions.reload().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tAuditActions.reload().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/nodes') {\n\t\t\t\t\t\t\t\t\t\tServiceActions.syncNames();\n\t\t\t\t\t\t\t\t\t\tNodeActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/policies') {\n\t\t\t\t\t\t\t\t\t\tServiceActions.syncNames();\n\t\t\t\t\t\t\t\t\t\tAuthorityActions.sync();\n\t\t\t\t\t\t\t\t\t\tSettingsActions.sync();\n\t\t\t\t\t\t\t\t\t\tPolicyActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/authorities') {\n\t\t\t\t\t\t\t\t\t\tAuthorityActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/certificates') {\n\t\t\t\t\t\t\t\t\t\tCertificateActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/alerts') {\n\t\t\t\t\t\t\t\t\t\tAlertActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/checks') {\n\t\t\t\t\t\t\t\t\t\tCheckActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/endpoints') {\n\t\t\t\t\t\t\t\t\t\tAuthorityActions.sync();\n\t\t\t\t\t\t\t\t\t\tEndpointActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/logs') {\n\t\t\t\t\t\t\t\t\t\tLogActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/services') {\n\t\t\t\t\t\t\t\t\t\tAuthorityActions.sync();\n\t\t\t\t\t\t\t\t\t\tServiceActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/settings') {\n\t\t\t\t\t\t\t\t\t\tSettingsActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/subscription') {\n\t\t\t\t\t\t\t\t\t\tSubscriptionActions.sync(true).then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>Refresh\n\t\t\t\t\t\t)}/>\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\twindow.location.href = '/logout';\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>Logout\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tTheme.toggle();\n\t\t\t\t\t\t\t\tTheme.save();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t
    \n\t\t;\n\t}\n}\n","/// \nimport EventDispatcher from './dispatcher/EventDispatcher';\nimport * as Csrf from './Csrf';\n\nlet connected = false;\n\nfunction connect(): void {\n\tlet url = '';\n\tlet location = window.location;\n\n\tif (location.protocol === 'https:') {\n\t\turl += 'wss';\n\t} else {\n\t\turl += 'ws';\n\t}\n\n\turl += '://' + location.host + '/event?csrf_token=' + Csrf.token;\n\n\tlet socket = new WebSocket(url);\n\n\tsocket.addEventListener('close', () => {\n\t\tsetTimeout(() => {\n\t\t\tconnect();\n\t\t}, 500);\n\t});\n\n\tsocket.addEventListener('message', (evt) => {\n\t\tconsole.log(JSON.parse(evt.data).data);\n\t\tEventDispatcher.dispatch(JSON.parse(evt.data).data);\n\t})\n}\n\nexport function init() {\n\tif (connected) {\n\t\treturn;\n\t}\n\tconnected = true;\n\n\tconnect();\n}\n","/// \nimport 'chartjs-adapter-moment';\nimport * as ChartJs from 'chart.js';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as Blueprint from '@blueprintjs/core';\nimport Main from './components/Main';\nimport * as Alert from './Alert';\nimport * as Event from './Event';\nimport * as Theme from './Theme';\nimport * as Csrf from './Csrf';\n\nChartJs.Chart.register(ChartJs.LineController);\nChartJs.Chart.register(ChartJs.CategoryScale);\nChartJs.Chart.register(ChartJs.LinearScale);\nChartJs.Chart.register(ChartJs.TimeScale);\nChartJs.Chart.register(ChartJs.PointElement);\nChartJs.Chart.register(ChartJs.LineElement);\nChartJs.Chart.register(ChartJs.Title);\nChartJs.Chart.register(ChartJs.Tooltip);\nChartJs.Chart.register(ChartJs.Filler);\n\nclass LineTracerController extends ChartJs.LineController {\n\tdraw(): void {\n\t\tsuper.draw();\n\n\t\tlet chart = this.chart as any;\n\t\tif (chart.tooltip._active && chart.tooltip._active.length) {\n\t\t\tlet ctx = this.chart.ctx;\n\t\t\tlet x = chart.tooltip.caretX;\n\t\t\tlet topY = chart.scales.y.top;\n\t\t\tlet bottomY = chart.scales.y.bottom;\n\n\t\t\tctx.save();\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x, topY);\n\t\t\tctx.lineTo(x, bottomY);\n\t\t\tctx.lineWidth = 0.7;\n\t\t\tctx.strokeStyle = Theme.chartColor3();\n\t\t\tctx.stroke();\n\t\t\tctx.restore();\n\t\t}\n\t}\n}\n(ChartJs.Chart as any).registry.controllers.items.line = LineTracerController;\n\nCsrf.load().then((): void => {\n\tBlueprint.FocusStyleManager.onlyShowFocusOnTabs();\n\tAlert.init();\n\tEvent.init();\n\n\tReactDOM.render(\n\t\t
    ,\n\t\tdocument.getElementById('app'),\n\t);\n});\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","obj","__esModule","window","document","newObj","key","prototype","hasOwnProperty","call","desc","defineProperty","getOwnPropertyDescriptor","get","set","default","_interopRequireWildcard","_addClass","_interopRequireDefault","_removeClass","_react","_Transition","_extends","assign","target","i","arguments","length","source","apply","this","addClass","node","classes","split","forEach","c","removeClass","CSSTransition","_React$Component","subClass","superClass","_this","_len","args","Array","_key","concat","onEnter","appearing","className","getClassNames","removeClasses","props","onEntering","activeClassName","reflowAndAddClass","onEntered","appearClassName","doneClassName","enterClassName","onExit","onExiting","onExited","type","classNames","isStringClassNames","create","constructor","__proto__","_proto","_this$getClassNames6","scrollTop","render","createElement","Component","defaultProps","propTypes","_default","_reactDom","_TransitionGroup","ReplaceTransition","_args","handleEnter","_len2","_key2","handleLifecycle","handleEntering","_len3","_key3","handleEntered","_len4","_key4","handleExit","_len5","_key5","handleExiting","_len6","_key6","handleExited","_len7","_key7","handler","idx","originalArgs","_child$props","children","child","Children","toArray","findDOMNode","_this$props","inProp","in","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","_React$Children$toArr","first","second","cloneElement","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","PropTypes","_reactLifecyclesCompat","Transition","context","initialStatus","parentGroup","transitionGroup","appear","isMounting","enter","appearStatus","unmountOnExit","mountOnEnter","state","status","nextCallback","getChildContext","getDerivedStateFromProps","_ref","prevState","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","exit","timeout","undefined","mounting","performEnter","performExit","setState","_this2","timeouts","enterTimeout","safeSetState","onTransitionEnd","_this3","cancel","nextState","callback","setNextCallback","_this4","active","event","doesNotHaveTimeoutOrListener","addEndListener","setTimeout","childProps","only","noop","contextTypes","object","childContextTypes","polyfill","_propTypes","_ChildMapping","_assertThisInitialized","self","ReferenceError","values","k","TransitionGroup","bind","firstRender","appeared","mounted","nextProps","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","component","childFactory","isRequired","_CSSTransition","_ReplaceTransition","mergeChildMappings","getProp","nextChildMapping","isValidElement","hasPrev","hasNext","prevChild","isLeaving","mapFn","result","mapper","prev","next","getValueForKey","nextKeysPending","pendingKeys","prevKey","push","childMapping","nextKey","pendingNextKey","prop","classNamesShape","timeoutsShape","Caption","handleKeyUp","locale","date","getMonth","getFullYear","keyCode","ENTER","onClick","months","localeUtils","caption","role","onKeyUp","formatMonthTitle","LocaleUtils","clone","d","Date","getTime","isDate","value","isNaN","valueOf","addMonths","n","newDate","setMonth","isSameDay","d1","d2","getDate","isSameMonth","isDayBefore","setHours","isDayAfter","isPastDay","today","isFutureDay","tomorrow","isDayBetween","addDayToRange","day","range","from","to","isDayInRange","getWeekNumber","setDate","getDay","Math","ceil","handleEvent","modifiers","persist","Day","propNames","nextPropNames","some","name","nextProp","nextModifiers","mod","hasOwnProp","modifiersStyles","tabIndex","empty","onMouseEnter","onMouseLeave","onMouseUp","onMouseDown","onKeyDown","onTouchStart","onTouchEnd","onFocus","ariaLabel","ariaDisabled","ariaSelected","defaultClassNames","join","modifier","style","filter","Helpers","DateUtils","ModifiersUtils","DayPicker","dayPicker","showNextMonth","allowNextMonth","deltaMonths","pagedNavigation","numberOfMonths","nextMonth","currentMonth","showMonth","showPreviousMonth","allowPreviousMonth","previousMonth","handleKeyDown","LEFT","dir","cancelEvent","RIGHT","UP","showPreviousYear","DOWN","showNextYear","handleDayKeyDown","focusNextDay","focusPreviousDay","focusPreviousWeek","focusNextWeek","SPACE","onDayClick","handleDayClick","onDayKeyDown","outside","enableOutsideDaysClick","handleOutsideDayClick","handleTodayButtonClick","month","blur","onTodayButtonClick","getModifiersForDay","getCurrentMonthFromProps","startOfMonth","initialMonth","fromMonth","diffInMonths","getMonthsDiff","floor","toMonth","allowMonth","canChangeMonth","onMonthChange","allowYearChange","wrapper","focus","getDayNodes","dayNodes","dayNode","dayNodeIndex","nodeListToArray","focusLastDayOfMonth","focusFirstDayOfMonth","nextMonthDayNodeIndex","previousMonthDayNodes","labels","navbarElement","attributes","navBar","getNextNavigableMonth","getPreviousNavigableMonth","showPreviousButton","showNextButton","onNextClick","onPreviousClick","React","firstDayOfWeek","getFirstDayOfWeekFromProps","reverseMonths","reverse","todayButton","footer","renderTodayButton","container","interactionDisabled","containerProps","ref","el","lang","onBlur","renderNavbar","renderMonths","renderFooter","showOutsideDays","fixedWeeks","showWeekNumbers","showWeekDays","renderDay","renderWeek","weekNumber","weekdayElement","captionElement","VERSION","preventDefault","stopPropagation","getFirstDayOfMonth","getDaysInMonth","selectedDays","selected","disabledDays","disabled","getFirstDayOfWeek","daysInMonth","dayArray","week","weekArray","firstWeek","outsideDate","unshift","lastWeek","lastExtraWeek","lastDay","extraWeek","j","outsideClassName","dayQuery","replace","outsideDayQuery","selector","querySelectorAll","nodeList","slice","resultDate","formatDay","formatWeekdayShort","formatWeekdayLong","getMonths","WEEKDAYS_LONG","WEEKDAYS_SHORT","MONTHS","toDateString","dayMatchesModifier","isArray","isRangeOfDates","after","before","daysOfWeek","dayOfWeek","modifiersObj","reduce","modifierName","Month","monthNumber","propModifiers","getModifiersFromProps","dayModifiers","isOutside","onDayFocus","onDayMouseEnter","onDayMouseLeave","onDayMouseDown","onDayMouseUp","onDayTouchEnd","onDayTouchStart","weekdaysLong","weekdaysShort","onCaptionClick","onWeekClick","captionProps","weeks","getWeekArray","body","Navbar","handleNextClick","handlePreviousClick","handleNextKeyDown","handlePreviousKeyDown","previousClickHandler","nextClickHandler","previousKeyDownHandler","nextKeyDownHandler","shouldShowPrevious","shouldShowNext","previousClassName","navButtonPrev","navButtonInteractionDisabled","nextClassName","navButtonNext","previousButton","nextButton","Weekday","weekday","title","content","Weekdays","days","elementProps","element","weekdays","weekdaysRow","ESC","TAB","_propTypes2","_gud2","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","_inherits","enumerable","writable","configurable","setPrototypeOf","MAX_SIGNED_31_BIT_INT","createEventEmitter","handlers","on","off","h","newValue","changedBits","defaultValue","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","Provider","_Component","_temp","emitter","componentWillReceiveProps","oldValue","x","y","Consumer","_Component2","_temp2","getValue","onUpdate","observedBits","_react2","_implementation2","createContext","global","define","deps","payload","modules","payloads","original","console","error","trace","ns","root","_require","parentId","lookup","toString","params","l","dep","require","packagedModule","normalizeModule","moduleName","chunks","charAt","previous","uri","packaged","ace","Element","remove","parentNode","removeChild","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","_navigator","navigator","os","exec","platform","toLowerCase","ua","userAgent","appName","isWin","isIE","parseFloat","match","isOldIE","isGecko","isMozilla","isOpera","opera","isWebKit","isChrome","isEdge","isAIR","isAndroid","isChromeOS","isIOS","test","MSStream","isMobile","strictCSP","useragent","buildDom","arr","parent","refs","txt","createTextNode","appendChild","els","ch","options","childIndex","val","cssText","setAttribute","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","removeChildren","innerHTML","textContent","ownerDocument","createFragment","createDocumentFragment","hasCssClass","addCssClass","removeCssClass","index","splice","toggleCssClass","add","setCssClass","include","hasCssString","sheets","cssCache","insertPendingStyles","cache","item","importCssString","getRootNode","insertBefore","firstChild","useStrictCSP","importCssStylsheet","rel","href","scrollbarWidth","inner","width","minWidth","height","display","outer","position","left","overflow","noScrollbar","offsetWidth","withScrollbar","clientWidth","computedStyle","getComputedStyle","setStyle","styles","property","HAS_CSS_ANIMATION","HAS_CSS_TRANSFORMS","HI_DPI","devicePixelRatio","div","transform","animationName","translate","tx","ty","round","top","inherits","ctor","superCtor","super_","mixin","implement","proto","oop","Keys","ret","MODIFIER_KEYS","KEY_MODS","FUNCTION_KEYS","PRINTABLE_KEYS","parseInt","escape","esc","del","mods","pow","keyCodeToString","keyString","String","fromCharCode","activeListenerOptions","pressedKeys","ts","getListenerOptions","createComment","addEventListener","passive","detectListenerOptionsSupport","EventListener","elem","destroy","removeListener","addListener","destroyer","$toDestroy","removeEventListener","stopEvent","getButton","ctrlKey","altKey","shiftKey","button","capture","eventHandler","releaseCaptureHandler","addMouseWheelListener","wheelDeltaX","wheelX","wheelY","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","elements","callbackName","startX","startY","timer","clicks","eventNames","onMousedown","isNewClick","abs","clientX","clientY","clearTimeout","_clicks","getModifierHash","metaKey","normalizeCommandKeys","hashId","getModifierState","altGr","location","keyLocation","timeStamp","defaultPrevented","resetPressedKeys","getModifierString","addCommandKeyListener","isOldGecko","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","postMessageId","nextTick","win","messageName","listener","data","$idleBlocked","onIdle","cb","$idleBlockId","blockIdle","delay","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","Range","startRow","startColumn","endRow","endColumn","start","row","column","end","isEqual","contains","compare","compareRange","cmp","comparePoint","p","containsRange","intersects","isEnd","isStart","setStart","setEnd","inside","insideStart","insideEnd","isMultiLine","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","extend","isEmpty","collapseRows","max","toScreenRange","session","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","comparePoints","p1","p2","last","a","stringReverse","string","stringRepeat","count","trimBeginRegexp","trimEndRegexp","stringTrimLeft","stringTrimRight","copyObject","copy","copyArray","array","deepCopy","arrayToMap","createMap","arrayRemove","escapeRegExp","str","escapeHTML","getMatchOffsets","regExp","matches","offset","deferredCall","fcn","deferred","schedule","isPending","delayedCall","defaultTimeout","_self","$cancelT","lineMode","pasteCancelled","now","dom","clipboard","BROKEN_SETDATA","USE_IE_MIME_TYPE","HAS_FOCUS_ARGS","MAX_LINE_LENGTH","KEYS","MODS","valueResetRegex","TextInput","host","text","opacity","copied","pasted","inComposition","sendingText","tempStyle","fontSize","commandMode","ignoreFocusEvents","lastValue","lastSelectionStart","lastSelectionEnd","lastRestoreEnd","isFocused","activeElement","hasFocus","resetSelection","$focusScroll","preventScroll","isTransformed","getBoundingClientRect","ancestors","t","parentElement","nodeType","removeAttribute","curOp","commandName","command","isUserAction","docChanged","selectionChanged","onCompositionEnd","selectionEnd","selection","setSelectionRange","afterContextMenu","selectionStart","line","getRange","cursor","getLine","prevLine","nextLine","inputHandler","setInputHandler","getInputHandler","sendText","fromInput","onPaste","extendLeft","extendRight","inserted","restoreStart","restoreEnd","endIndex","shouldReset","onTextInput","onInput","onCompositionUpdate","inputType","execCommand","handleClipboardData","forceIEMime","clipboardData","mime","setData","getData","doCopy","isCut","getCopyText","onCut","onCopy","select","onCommandKey","isAllSelected","selectAll","$readOnly","cancelComposition","useTextareaForIME","markerRange","compositionStartOffset","closeTimeout","syncComposition","onContextMenuClose","renderer","$isMousePressed","$keepTextAreaAtCursor","$moveTextAreaToCursor","onCompositionStart","_signal","getSelectionRange","msGetInputContext","getInputContext","getElement","setCommandMode","readOnly","setReadOnly","setCopyWithEmptySelection","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","characterWidth","rect","borderTopWidth","borderLeftWidth","maxTop","bottom","clientHeight","move","min","textInput","scroller","typingResetTimeout","typing","detectArrowKeys","$mouseHandler","isMousePressed","up","home","option","down","right","shift","commands","findKeyCommand","addIosSelectionHandler","$setUserAgentForTests","_isMobile","_isIOS","DefaultHandlers","mouseHandler","$clickSelection","editor","setDefaultHandler","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","selectByLines","extendSelectionBy","selectByWords","calcRangeOrientation","anchor","ev","inSelection","pos","getDocumentPosition","mousedownEvent","moveToPosition","time","$focusTimeout","inMultiSelectMode","captureMouse","startSelect","waitForClickSelection","screenToTextCoordinates","getShiftKey","selectToPosition","setCapture","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","ax","ay","bx","by","distance","sqrt","getBracketRange","getWordRange","getLineRange","getAccelKey","$lastScroll","vx","vy","allowed","prevScroll","dt","direction","canScroll","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setText","setHtml","html","setPosition","setClassName","show","hide","getHeight","offsetHeight","getWidth","GutterTooltip","windowWidth","innerWidth","windowHeight","innerHeight","GutterHandler","tooltipTimeout","mouseEvent","tooltipAnnotation","gutter","$gutterLayer","tooltip","hideTooltip","moveTooltip","getRegion","selectTo","srcElement","$tooltipFollowsMouse","annotation","$annotations","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","showTooltip","$gutter","MouseEvent","$inSelection","propagationStopped","selectionRange","DragdropHandler","dragImage","dragSelectionMarker","timerId","dragCursor","dragOperation","isInternal","autoScrollStartTime","cursorMovedTime","cursorPointOnCaretMoved","mouseTarget","counter","onDragInterval","prevCursor","vMovement","hMovement","moveCursorToPosition","calcDistance","lineHeight","layerConfig","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScroll","addDragMarker","toOrientedRange","addMarker","getSelectionStyle","clearSelection","$cursorLayer","setBlinking","clearInterval","setInterval","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","$resetCursorStyle","onDragStart","cancelDrag","draggable","dataTransfer","effectAllowed","getReadOnly","setDragImage","clearData","getTextRange","onDragEnd","dropEffect","setCursorStyle","onDragEnter","canAccept","getDropEffect","onDragOver","onMouseMoveTimer","onDragLeave","onDrop","moveText","dropData","insert","types","copyAllowed","copyModifierState","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","dragDrop","$dragEnabled","eventTarget","unselectable","addTouchListeners","touchStartT","lastT","longTouchTimer","animationTimer","pressed","contextMenu","mode","animationSteps","clickCount","vX","vY","createContextMenu","handleClick","hasUndo","action","getAttribute","getUndoManager","replaceChild","class","readText","then","writeText","ontouchstart","ontouchend","onclick","showContextMenu","pagePos","textToScreenCoordinates","leftOffset","pageX","scrollLeft","pageY","hideContextMenu","handleLongTap","selectWord","touches","w","touchObj","setRange","switchToSelectionMode","cursorPos","getPixelPosition","anchorPos","offsetTop","offsetLeft","weightedDistance","diff1","diff2","oldScrollTop","getScrollTop","url","xhr","XMLHttpRequest","open","onreadystatechange","readyState","responseText","send","loadScript","path","s","src","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","once","newCallback","Promise","_disabled_","old","removeDefaultHandler","pop","capturing","removeAllListeners","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","hidden","getOption","opt","warn","forwardTo","handlesSet","message","reportError","msg","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","opts","setDefaultValues","optionHash","net","workerPath","modePath","themePath","basePath","suffix","$moduleUrls","loadWorkerFromBlob","sharedPopups","all","$modes","moduleUrl","parts","sep","base","re","RegExp","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","reportErrorIfPathIsNotConfigured","init","scriptOptions","scriptUrl","currentScript","_currentScript","scripts","script","attr","m","m1","toUpperCase","version","DefaultGutterHandler","config","MouseHandler","focusEditor","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","Boolean","gutterEl","$dragDelay","character","mousemove","$scrollSpeed","mouseMoveHandler","which","releaseMouse","$mouseMoved","onCaptureEnd","onOperationEnd","onCaptureInterval","$onCaptureMouseMove","endOperation","startOperation","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimeout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","getUseWrapMode","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","addFold","keyUtil","KeyBinding","$editor","$data","$handlers","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","passEvent","hiLevel","lastArabic","hasUBAT_B","hasUBAT_S","impTab_LTR","impTab_RTL","ET","BN","UnicodeTBL00","UnicodeTBL20","_invertLevel","lev","levels","_array","lo","hi","tmp","len","_getCharClass","chars","ix","wType","nType","cType","rtlCandidate","_getCharacterType","uc","charCodeAt","L","R","EN","ON_R","AN","R_H","B","RLE","DOT","doBidiReorder","textCharTypes","isRtl","logicalFromVisual","bidiLevels","charTypes","impTab","newClass","newLevel","newState","condPos","_computeLevels","hasBidiCharacters","getVisualFromLogicalIdx","logIdx","rowMap","bidiUtil","bidiRE","BidiHandler","bidiMap","currentRow","charWidths","EOL","showInvisibles","isRtlDir","$isRtl","wrapIndent","EOF","contentWidth","fontMetrics","rtlLineOffset","wrapOffset","isMoveLeftOperation","seenBidi","isBidiRow","docRow","splitIndex","updateRowLine","updateBidiMap","onChange","delta","lines","getDocumentRow","rowCache","$screenRowCache","$getRowCacheIndex","$docRowCache","getSplitIndex","currentIndex","prevIndex","endOfLine","$useWrapMode","splits","$wrapData","indent","substring","size","isFullWidth","getScreenTabSize","$main","substr","markAsDirty","updateCharacterWidths","$characterSize","bidiCharWidth","$measureCharWidth","setShowInvisibles","setEolChar","eolChar","setContentWidth","isRtlLine","setRtlDirection","getCursorPosition","getSelectionAnchor","$bidiHandler","removeInLine","getPosLeft","col","leftBoundary","logicalIdx","getOverwrite","visualIdx","getSelections","startCol","endCol","level","selections","selColMin","selColMax","isSelected","isSelectedPrev","visIdx","offsetToCol","posX","charWidth","Selection","getDocument","lead","createAnchor","$silent","$cursorChanged","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","$anchorChanged","getCursor","getPosition","getAnchor","getSelectionLead","isBackwards","$setSelection","Number","MAX_VALUE","anchorRow","anchorColumn","cursorRow","cursorColumn","wasEmpty","wasMultiselect","$moveSelection","mover","moveCursorTo","moveTo","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","wouldMoveIntoSoftTab","tabSize","isTabStop","getTabSize","getNavigateWithinSoftTabs","firstColumnPosition","screenToDocumentPosition","leadingSpace","getDisplayLine","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","search","moveCursorLongWordRight","rightOfCursor","nonTokenRe","lastIndex","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","offsetX","screenPos","lineWidgets","widget","rowsAbove","rowCount","docPos","keepDesiredColumn","moveCursorToScreen","desiredColumn","r","getRangeOfMovements","func","toJSON","rangeCount","ranges","r1","fromJSON","rangeList","toSingleRange","addRange","MAX_TOKEN_COUNT","Tokenizer","rules","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","flag","splitterRurles","rule","caseInsensitive","regex","adjustedregex","matchcount","token","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","digit","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","tokens","stack","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","consumeLineEnd","merge","TextHighlightRules","$rules","addRules","prefix","getRules","embedRules","HighlightRules","escapeRules","append","$embeds","getEmbeds","pushState","popState","normalizeRules","processState","processed","toInsert","stateName","includeName","noEscape","keywordMap","createKeywordMapper","ignoreCase","splitChar","keywords","$keywordList","list","word","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","getCurrentTokenRange","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","defaultQuotes","initContext","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","rowDiff","CstyleBehaviour","getWrapBehavioursEnabled","isSaneInsertion","braces","recordAutoInsert","recordMaybeInsert","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","openBracePos","findMatchingBracket","next_indent","$getIndent","getTabString","quotes","$mode","$quotes","lineCommentStart","quote","leftChar","rightChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","charBefore","iterator","$matchTokenType","iterator2","bracket","wordChars","unicode","Mode","$defaultBehaviour","getTokenizer","$tokenizer","$highlightRules","$highlightRuleConfig","blockComment","toggleCommentLines","ignoreBlankLines","shouldRemove","minIndent","Infinity","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","commentWithSpace","comment","insertInLine","testRemove","spaces","lineCommentEnd","regexpEnd","iter","fun","minEmptyLength","toggleBlockComment","colDiff","initialRange","startRange","endRange","getNextLineIndent","tab","checkOutdent","input","autoOutdent","createWorker","createModeDelegates","$id","delegations","scope","functionName","$delegator","method","language","transformAction","param","$behaviour","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","score","meta","applyDelta","docLines","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$clipPositionToDocument","$insertRight","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$getTransformedPoint","noClip","Document","textOrLines","$lines","insertMergedLines","setValue","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","$safeApplyDelta","docLength","MAX","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","update","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","sort","b","containsRow","walk","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","log","foldBefore","newFoldLine","foldLineNext","idxToPosition","lastFoldEndColumn","RangeList","$bias","pointIndex","excludeEdges","startIndex","addList","removed","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","Fold","subFolds","consumePoint","restorePoint","subFold","collapseChildren","addSubFold","afterStart","firstConsumed","consumedFolds","restoreRange","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","trim","lastFold","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","outermostFolds","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","getCommentFoldRange","depth","getFoldWidget","getFoldWidgetRange","foldToLevel","foldAllComments","$foldStyles","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","getMatchingBracketRanges","$brackets","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","$uid","onChangeFold","setMode","bgTokenizer","resetCaches","$resetRowCache","cacheArray","low","mid","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","$undoManager","mergeUndoDeltas","$informUndoManager","setUndoManager","reset","getSelection","undoManager","addSession","$syncInformUndoManager","markUndoGroup","$defaultUndoManager","undo","redo","hasRedo","addSelection","startNewGroup","setUseSoftTabs","$useSoftTabs","$indentWithTabs","setTabSize","$tabSize","setNavigateWithinSoftTabs","navigateWithinSoftTabs","$navigateWithinSoftTabs","$overwrite","setOverwrite","overwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","marker","addDynamicMarker","markerId","getMarkers","highlight","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","oldMode","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","getMode","$scrollTop","setScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","lineWidgetWidth","force","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","selectionBefore","$getUndoSelection","redoChanges","selectionAfter","setUndoSelect","enable","isUndo","fromRange","toPosition","toRange","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","$moveLines","diff","$clipRowToDocument","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","setUseWrapMode","useWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","limit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","displayLength","lastSplit","lastDocSplit","isCode","$wrapAsCode","indentedSoftWrap","$indentedSoftWrap","maxIndent","addSplit","indentation","getWrapIndent","minSplit","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","doCache","maxRow","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","wrap","$wrap","firstLineNumber","useSoftTabs","foldStyle","Search","find","$matchIterator","sr","sc","er","ec","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","$disableFakeMultiline","wholeWord","wordBoundary","addWordBoundary","caseSensitive","$assembleMultilineRegExp","backwards","forEachInLine","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","bindKey","isDefault","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","removeCommands","bindKeys","keyList","$keyChain","CommandManager","byName","$checkCommandState","isAvailable","returnValue","toggleRecording","$inReplay","recording","macro","$addCommandToMacro","oldMacro","replay","trimMacro","mac","description","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","gotoLine","prompt","$type","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$copyWithEmptySelection","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","autoIndent","firstLineEndCol","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","textarea","keyBinding","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","$opResetTimer","$lastSel","prevOp","commandEvent","previousCommand","scrollSelectionIntoView","animateScrolling","sel","$mergeableCommands","$mergeUndoDeltas","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","getSession","resize","onResize","setTheme","theme","getTheme","getFontSize","setFontSize","$highlightBrackets","$highlightPending","$bracketHighlight","markerIds","getMatching","markerType","$highlightTags","$highlightTagPending","$tagHighlight","currentTag","prevToken","stepCount","tmpToken","sbm","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","$updateHighlightActiveLine","updateLines","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$selectionColorConflict","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","wordWithBoundary","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","nl","copyLine","inVirtualSelectionMode","isFullLine","getBehavioursEnabled","lineState","shouldOutdent","$enableAutoIndent","lineIndent","selectedRange","currIndent","prevLineState","composition","applyComposition","forEachSelection","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","setShowPrintMargin","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","amount","charRange","isFinite","nr","fp","decimals","nnr","toFixed","replaceRange","toggleWord","$toggleWordPairs","currWordStart","wordParts","curLength","itLength","that","reg","wordPairs","negate","firstCondition","res","endPoint","moved","totalDiff","rangeIndex","subRows","compositionState","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","animate","alignCursor","getCursorPositionScreen","expand","matchType","bracketType","found","brackets","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","searchBox","$pixelPos","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","copyWithEmptySelection","behavioursEnabled","wrapBehavioursEnabled","enableAutoIndent","autoScrollEditorIntoView","showLineNumbers","setShowLineNumbers","$loop","CHANGE_GUTTER","$relativeLineNumbers","relativeNumberRenderer","relativeLineNumbers","$showLineNumbers","$updatePlaceholder","$composition","placeholderNode","$placeholder","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","displayIndentGuides","showGutter","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","hasCssTransforms","maxPixelHeight","getText","lastLineNumber","$renderer","UndoManager","$maxRev","allowMerge","$lastDelta","$keepRedoStack","$redoStack","lastDeltas","$undoStack","$rev","rev","markIgnored","ignore","getRevision","getDeltas","getChangedRanges","getChangedLines","deltaSet","swapped","swapGroups","rearrangeUndoStack","$redoStackBaseRev","undoSelectionRange","$syncRev","redoStack","deltaSets","moveDeltasByOne","rebaseRedoStack","redoSelectionRange","nextDelta","mark","canUndo","canRedo","bookmark","isAtBookmark","isClean","markClean","$prettyPrint","stringifyDelta","stringifyRange","i1","i2","ds1","ds2","xform","c1","splitDelta","shiftPos","rowsBefore","otherLines","cloneDelta","xformed","Lines","canvasHeight","cells","cellCache","$offsetCoefficient","moveContainer","firstRowScreen","pageChanged","oldConfig","newConfig","computeLineTop","screenTop","screenPage","computeLineHeight","$cacheCell","cell","fragment","insertAdjacentElement","createCell","initElement","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","onCreateCell","textNode","foldWidget","rowInfo","annoText","gutterOffset","oldLastRow","$updateCursorRow","$renderCell","$updateGutterWidth","gutterRenderer","$firstLineNumber","lastLineText","$fixedWidth","padding","$padding","$computePadding","$highlightGutterLine","$cursorRow","updateLineHighlight","$cursorCell","scrollLines","$renderLines","childNodes","breakpoints","decorations","foldHeight","getShowLineNumbers","paddingLeft","borderRightWidth","paddingRight","Marker","setPadding","setMarkers","markers","elt","css","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","childElementCount","lastChild","stringBuilder","extraStyle","curr","lineRange","range1","drawBidiSingleLineMarker","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","margin","getLineHeight","$fontMetrics","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","showSpaces","showTabs","showEOL","$tabStrings","tabStr","span","$indentGuideRe","spaceClass","spaceContent","tabClass","tabContent","lineElements","lineElementsIdx","heightChanged","lineElement","$renderLine","$renderLinesFragment","lineEl","$useLineGroups","$textToken","$renderToken","valueFragment","simpleSpace","controlCharacter","cjkSpace","cjk","cloneNode","com","renderIndentGuide","cols","$createLineElement","$renderWrappedLine","splitChars","$renderOverflowMessage","$renderSimpleLine","overflowEl","$getFoldLineTokens","lastLineEl","invisibleEl","renderTokens","addTokens","Cursor","isVisible","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateOpacity","$startCssAnimation","animationDuration","$isAnimating","$stopCssAnimation","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","$isSmoothBlinking","blink","onScreen","isCursorInView","pixelPos","maxHeight","$selectionMarkers","cursorIndex","drawCursor","$setOverwrite","MAX_SCROLL_H","ScrollBar","classSuffix","setVisible","skipEvent","onScroll","coeff","VScrollBar","scrollHeight","$scrollbarWidth","$minWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","$recursionLimit","_flush","change","clear","CHAR_COUNT","USE_OBSERVER","ResizeObserver","FontMetrics","$setMeasureNodeStyles","$measureNode","$addObserver","isRoot","visibility","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","$observer","observe","setPolling","disconnect","$getZoom","getZoom","zoom","$initTransformMeasureNodes","transformCoordinates","clientPos","elPos","mul","solve","l1","l2","det","sub","m2","ut","u","f","GutterLayer","MarkerLayer","TextLayer","CursorLayer","editorCss","HIDE_TEXTAREA","VirtualRenderer","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","minHeight","v","$renderChanges","defaultView","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$printMarginEl","containerEl","posTop","posLeft","setScrollMargin","sm","setMargin","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","freeze","unfreeze","st","$updateLines","$autosize","desiredHeight","$maxPixelHeight","$gutterWidth","hideScrollbars","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","x_min","steps","initialScroll","oldSteps","$timer","scrollTo","canvasPos","$hasCssTransforms","$blockCursor","$useTextareaForIME","addToken","removeExtraToken","newToken","$themeId","cssClass","$theme","isDark","setMouseCursor","attachToShadowRoot","workerUrl","Worker","blob","Blob","blobBuilder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","getBlob","$workerBlob","blobURL","URL","webkitURL","createObjectURL","WorkerClient","worker","$createWorkerFromOldConfig","$sendDeltaQueue","changeListener","onMessage","callbackId","callbacks","onmessage","topLevelNamespaces","classname","importScripts","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","err","deltaQueue","$doc","cmd","emit","ex","attachToDocument","q","UIWorkerClient","main","emitSync","sender","messageBuffer","workerClient","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","$others","undoStack","$undostack","$undoStackDepth","setup","other","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","otherPos","updateMarkers","updateMarker","undosRequired","isSamePoint","alt","ctrl","accel","selectionMode","isMultiSelect","mouseX","mouseY","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onSelectionInterval","selectMoreLines","selectMore","joinSelections","splitIntoLines","alignCursors","multiSelectCommands","getSelectionMarkers","$blockChangeEvents","$onAddRange","$onRemoveRange","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","startOffsetX","endOffsetX","docEnd","yBackwards","MultiSelect","$multiselectOnSessionChange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","altCursor","altDown","addAltCursorListeners","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","keepOrder","$byLines","cmdResult","anim","buf","additive","skip","screenLead","toRemove","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","startW","textW","endW","isLeftAligned","isRightAligned","alignLeft","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","$registerLineWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","oldWidget","gutterAnno","comparator","binarySearch","matched","findAnnotations","arrow","onmousedown","Renderer","edit","_id","getElementById","env","tagName","oldNode","createEditSession","Split","BELOW","BESIDE","$container","$splits","$editorCSS","$editors","$orientation","setSplits","$cEditor","$createEditor","$fontSize","getSplits","getEditor","getCurrentEditor","keybinding","$cloneSession","isUsed","getOrientation","setOrientation","orientation","editorWidth","editorHeight","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","applyBind","hasOwn","arg","argType","Emitter","fn","_callbacks","hasListeners","objectKeys","isArguments","is","isRegex","flags","deepEqual","actual","expected","strict","isUndefinedOrNull","aIsRegex","bIsRegex","aIsBuffer","isBuffer","bIsBuffer","ka","objEquiv","hasSymbols","Symbol","toStr","origDefineProperty","supportsDescriptors","arePropertyDescriptorsSupported","predicate","defineProperties","predicates","getOwnPropertySymbols","diff_match_patch","Diff_Timeout","Diff_EditCost","Match_Threshold","Match_Distance","Patch_DeleteThreshold","Patch_Margin","Match_MaxBits","DIFF_DELETE","Diff","op","diff_main","text1","text2","opt_checklines","opt_deadline","deadline","checklines","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_lineMode_","diff_bisect_","diff_linesToChars_","chars1","chars2","linearray","lineArray","diff_charsToLines_","diff_cleanupSemantic","pointer","count_delete","count_insert","text_delete","text_insert","subDiff","text1_length","text2_length","max_d","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","k1","k1_offset","y1","x1","k2_offset","x2","diff_bisectSplit_","k2","y2","text1a","text2a","text1b","text2b","diffsb","lineHash","diff_linesToCharsMunge_","lineStart","lineArrayLength","pointermin","pointermax","pointermid","pointerstart","pointerend","diff_commonOverlap_","text_length","best","pattern","dmp","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","best_common","prefixLength","suffixLength","hm1","hm2","equalities","equalitiesLength","lastEquality","length_insertions1","length_deletions1","length_insertions2","length_deletions2","diff_cleanupSemanticLossless","deletion","insertion","overlap_length1","overlap_length2","diff_cleanupSemanticScore_","one","two","char1","char2","nonAlphaNumeric1","nonAlphaNumericRegex_","nonAlphaNumeric2","whitespace1","whitespaceRegex_","whitespace2","lineBreak1","linebreakRegex_","lineBreak2","blankLine1","blanklineEndRegex_","blankLine2","blanklineStartRegex_","equality1","equality2","commonOffset","commonString","bestEquality1","bestEdit","bestEquality2","bestScore","diff_cleanupEfficiency","pre_ins","pre_del","post_ins","post_del","diff_xIndex","loc","last_chars1","last_chars2","diff_prettyHtml","pattern_amp","pattern_lt","pattern_gt","pattern_para","diff_text1","diff_text2","diff_levenshtein","levenshtein","insertions","deletions","diff_toDelta","encodeURI","diff_fromDelta","diffsLength","decodeURI","match_main","match_bitap_","match_alphabet_","match_bitapScore_","accuracy","proximity","score_threshold","best_loc","lastIndexOf","bin_min","bin_mid","matchmask","last_rd","bin_max","finish","rd","charMatch","patch_addContext_","patch","start2","length1","start1","length2","patch_make","opt_b","opt_c","patches","patch_obj","patchDiffLength","char_count1","char_count2","prepatch_text","postpatch_text","diff_type","diff_text","patch_deepCopy","patchesCopy","patchCopy","patch_apply","nullPadding","patch_addPadding","patch_splitMax","results","start_loc","expected_loc","end_loc","index2","index1","paddingLength","patch_size","bigpatch","precontext","postcontext","patch_toText","patch_fromText","textline","textPointer","patchHeader","sign","classList","_hasClass","baseVal","replaceClassName","origClass","classToRemove","nodeName","enoughArguments","mutationMacro","nodes","textNodeIfPrimitive","TemporaryPrototype","TemporaryTokenList","wrapVerifyToken","hOP","descriptor","__defineGetter__","__defineSetter__","DOMTokenList","noClassName","isSVG","properties","_isSVG","classListDescriptor","CLASS_LIST","toggle","DocumentFragmentPrototype","DocumentFragment","Node","NodePrototype","CharacterData","CharacterDataPrototype","DocumentType","DocumentTypePrototype","ElementPrototype","HTMLElement","HTMLSelectElement","selectRemove","SVGElement","matchesSelector","webkitMatchesSelector","khtmlMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","nextSibling","had","hasAttribute","replaceWith","_dom4","o_O","verifyToken","raf","rAF","cAF","cancelAnimationFrame","prefixes","goOn","CustomEvent","defaultInitDict","initCustomEvent","bubbles","cancelable","initEvent","eventInitDict","createEvent","Event","$Event","out","KeyboardEvent","$KeyboardEvent","eventType","initType","defaults","char","altGraphKey","repeat","charCode","initKeyboardEvent","keyIdentifier","getModifier","withDefaults","withInitValues","view","initKeyEvent","$MouseEvent","initMouseEvent","screenX","screenY","relatedTarget","what","querySelector","dataScope","random","ELEMENT_NODE","$0","$1","$2","$3","DOMMap","WeakMap","dispatched","drop","dispatch","ce","shouldDrop","dispatchEvent","Handler","__ce__","currentTarget","Dict","createEventListener","eventListener","augment","dm","dE","aEL","rEL","increment","getListenerKey","info","createAEL","createREL","EventTarget","HTMLDocument","Window","ReflectOwnKeys","Reflect","ReflectApply","receiver","Function","ownKeys","getOwnPropertyNames","NumberIsNaN","reject","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","prepend","events","existing","warning","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","prependListener","prependOnceListener","originalListener","spliceOne","rawListeners","stringify","stable","deterministicStringify","stableStringify","LIMIT_REPLACE_NODE","CIRCULAR_REPLACE_NODE","replacerStack","defaultOptions","depthLimit","MAX_SAFE_INTEGER","edgesLimit","replacer","spacer","decirc","JSON","replaceGetterValues","part","setReplace","propertyDescriptor","edgeIndex","compareFunction","deterministicDecirc","validateFormat","format","condition","argIndex","framesToPop","Dispatcher","_defineProperty","invariant","_isDispatching","_isHandled","_isPending","_lastID","register","unregister","waitFor","ids","ii","_invokeCallback","_startDispatching","_stopDispatching","isDispatching","_pendingPayload","ERROR_MESSAGE","funcType","bound","binder","boundLength","boundArgs","Empty","implementation","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","getProto","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","ArrayBuffer","Atomics","BigInt","DataView","decodeURIComponent","encodeURIComponent","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","Map","Proxy","Set","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakRef","WeakSet","doEval","gen","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","rePropName","reEscapeChar","stringToPath","number","subString","getBaseIntrinsic","alias","intrinsicName","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","g","origSymbol","hasSymbolSham","sym","symObj","syms","propertyIsEnumerable","toStringTag","reactIs","REACT_STATICS","contextType","displayName","getDefaultProps","getDerivedStateFromError","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","supportsStandardArguments","tryDateObject","has","$exec","isRegexMarker","badStringifier","throwRegexMarker","toPrimitive","gOPD","HASH_UNDEFINED","funcTag","genTag","reIsDeepProp","reIsPlainProp","reLeadingDot","reIsHostCtor","freeGlobal","freeSelf","uid","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","IE_PROTO","funcToString","objectToString","reIsNative","getNative","nativeCreate","symbolProto","symbolToString","Hash","entries","entry","ListCache","MapCache","assocIndexOf","baseGet","isSymbol","isKey","toKey","baseIsNative","isObject","isFunction","isHostObject","toSource","getMapData","__data__","memoize","baseToString","memoized","Cache","isObjectLike","argsTag","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","reIsUint","typedArrayTags","freeExports","freeModule","moduleExports","freeProcess","process","nodeUtil","nodeIsTypedArray","isTypedArray","arraySome","mapToArray","setToArray","nativeObjectToString","Buffer","symToStringTag","nativeGetSymbols","nativeIsBuffer","nativeKeys","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolValueOf","SetCache","Stack","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","eq","baseGetTag","unmasked","getRawTag","baseIsArguments","baseIsEqual","bitmask","customizer","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","isMasked","baseKeys","Ctor","arrLength","seen","arrValue","othIndex","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getSymbols","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","symbol","ctorString","isLength","baseUnary","impl","fullPattern","shortPattern","tabletPattern","equalIC","containsIC","valueLC","convertPropsToRegExp","MobileDetect","maxPhoneWidth","prepareUserAgent","_cache","FALLBACK_PHONE","FALLBACK_TABLET","FALLBACK_MOBILE","verPos","mobileDetectRules","oss","phones","tablets","uas","utils","oss0","WindowsPhoneOS","WindowsMobileOS","findMatch","findMatches","getVersionStr","propertyName","patterns","getVersion","prepareVersionNo","NaN","numbers","isMobileFallback","detectMobileBrowsers","isTabletFallback","prepareDetectionCache","mobile","phone","tablet","phoneSized","isPhoneSized","mobileGrade","$isMobile","detectOS","getDeviceSmallerSide","screen","userAgents","versionStr","grade","_impl","factory","moment","defineLocale","monthsShort","weekdaysMin","meridiemParse","isPM","meridiem","hours","minutes","isLower","longDateFormat","LT","LTS","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","sameElse","relativeTime","future","past","ss","mm","hh","dd","M","MM","yy","dayOfMonthOrdinalParse","ordinal","dow","doy","pluralForm","plurals","pluralize","withoutSuffix","isFuture","weekdaysParseExact","hour","minute","postformat","symbolMap","preparse","numberMap","suffixes","plural","num","forms","relativeTimeWithPlural","standalone","isFormat","period","ww","lastDigit","last2Digits","meridiemHour","monthsShortRegex","monthsParseExact","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","softMutation","mutationTable","monthsParse","monthsRegex","monthsStrictRegex","monthsShortStrictRegex","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","weekdaysParse","longMonthsParse","shortMonthsParse","ll","lll","llll","output","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsShortDot","invalidDate","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eras","since","narrow","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","isUpper","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","units","translateSeconds","translateSingular","special","relativeTimeWithSingular","relativeSeconds","translator","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","separator","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","weekdaysCaseReplace","nominative","accusative","genitive","processHoursFunction","hookCallback","hooks","setHookCallback","isObjectEmpty","isUndefined","isNumber","createUTC","createLocalOrUTC","utc","defaultParsingFlags","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","momentProperties","updateInProgress","copyConfig","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","_relativeTime","pastFuture","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","isLeapYear","year","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","stringGet","stringSet","prioritized","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","p3","p4","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","localeMonthsShort","_monthsShort","handleStrictParse","monthName","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","dayOfMonth","getSetMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","ms","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","fwd","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","seconds","kInput","_isPm","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","globalLocale","baseConfig","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configFromObject","dayOrDate","millisecond","createFromConfig","prepareConfig","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","isoWeek","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","utcOffset","offsetFromString","chunkOffset","matcher","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","wholeMonthDiff","toISOString","keepOffset","toDate","inspect","datetime","zone","inputString","defaultFormatUtc","defaultFormat","humanize","fromNow","toNow","newLocaleData","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","_eras","localeErasParse","eraName","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","symbols","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","O","addNumericSeparator","sepRegex","int","intStr","dec","inspectCustom","inspectSymbol","wrapQuotes","defaultStyle","quoteChar","quoteStyle","inspect_","maxStringLength","customInspect","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","getIndent","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","isElement","attrs","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isBigInt","isBoolean","isRegExp","ys","isPlainObject","protoTag","remaining","trailer","lowbyte","lineJoiner","symMap","numberIsNaN","getPolyfill","shim","keysShim","isArgs","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","keysWorksWithArguments","isarray","pathToRegexp","parse","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","escaped","group","asterisk","partial","optional","escapeGroup","escapeString","encodeURIComponentPretty","encode","pretty","segment","attachKeys","sensitive","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","propName","componentName","propFullName","secret","getShim","ReactPropTypes","bigint","bool","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","percentTwenties","Format","formatters","RFC1738","RFC3986","allowDots","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decoder","decode","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictNullHandling","numberStr","parseArrayValue","givenKey","valuesParsed","leaf","cleanRoot","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","maybeMap","encodedVal","combine","parseValues","compact","getSideChannel","arrayPrefixGenerators","indices","pushToArray","valueOrArray","toISO","addQueryPrefix","encoder","encodeValuesOnly","formatter","serializeDate","skipNulls","sentinel","generateArrayPrefix","sideChannel","tmpSc","step","findFlag","keyValue","valuesArray","valuesJoined","objKeys","keyPrefix","valueSideChannel","normalizeStringifyOptions","arrayFormat","joined","hexTable","arrayToObject","acc","queue","compacted","compactQueue","strWithoutPlus","unescape","defaultEncoder","mapped","mergeTarget","targetItem","getAceInstance","editorEvents","debounce","isInShadow","onBeforeLoad","onValidate","wrapEnabled","refEditor","editorProps","debounceChangePeriod","navigateToFileEnd","updatePlaceholder","handleMarkers","availableOptions","editorOptions","handleOptions","oldProps","oldClass","silent","cursorStart","handleScrollMargins","margins","currentMarkers","showPlaceholder","updateRef","divStyle","enableSnippets","enableBasicAutocompletion","enableLiveAutocompletion","ReactAce","DiffMatchPatch","lhString","rhString","diffedLines","generateDiffedLines","setCodeMarkers","C","chunkType","firstChar","lastChar","linesToHighlight","codeEditorSettings","newMarkerSet","markerObj","DiffComponent","acequire","splitEditor","defaultValueForEditor","valueForEditor","newAnnotations","newMarkers","sp","nextValue","oldAnnotations","oldMarkers","SplitComponent","aa","ba","ca","da","ea","fa","ha","ia","ja","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","D","oa","pa","qa","ma","na","la","setAttributeNS","xlinkHref","ra","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","sa","ta","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","construct","Qa","_render","Ra","$$typeof","_context","_payload","_init","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","checked","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","controlled","$a","ab","bb","eb","db","fb","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","lb","mb","nb","ob","namespaceURI","MSApp","execUnsafeLocalFunction","pb","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","order","orphans","widows","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","tb","setProperty","ub","menuitem","area","br","embed","hr","img","keygen","link","track","wbr","vb","wb","xb","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","ac","cc","sibling","current","bc","dc","fc","gc","hc","ic","jc","kc","lc","mc","nc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","delete","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","transition","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","F","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","LN2","unstable_UserBlockingPriority","ed","gd","hd","jd","kd","ld","md","nd","od","pd","qd","_reactName","_targetInst","isDefaultPrevented","isPropagationStopped","cancelBubble","isPersistent","wd","xd","yd","sd","eventPhase","isTrusted","td","ud","vd","Ad","zd","buttons","fromElement","toElement","movementX","movementY","Bd","Dd","Fd","Hd","elapsedTime","pseudoElement","Id","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","targetTouches","changedTouches","Xd","Yd","deltaZ","Zd","$d","ae","be","documentMode","de","ee","fe","ge","he","ie","le","color","email","password","tel","me","ne","oe","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","Me","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","anchorNode","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","G","$e","af","bf","cf","df","Nb","z","ef","ff","parentWindow","gf","hf","J","K","Q","je","ke","jf","kf","lf","mf","autoFocus","nf","__html","of","pf","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","H","I","Cf","N","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","mg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","yg","zg","eventTime","lane","Ag","Bg","Cg","A","Dg","Eg","Fg","Gg","Kg","isMounted","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","shouldComponentUpdate","isPureReactComponent","Mg","updater","Ng","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Pg","Qg","_owner","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","Wg","Xg","done","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","P","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","wh","xh","S","T","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","U","useState","getSnapshot","subscribe","useEffect","setSnapshot","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useCallback","useContext","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","ReactCurrentOwner","fi","gi","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","qi","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","rendering","renderingStartTime","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","V","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","aj","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","hj","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","X","Y","qj","rj","sj","tj","uj","vj","wj","ck","Z","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","focusedElem","ek","createRange","removeAllRanges","onCommitFiberRoot","fk","gk","ik","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","ok","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","sk","uk","hk","_calculateChangedBits","unstable_observedBits","unmount","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","createPortal","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","__reactInternalSnapshotFlag","__reactInternalSnapshot","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","_createClass","protoProps","staticProps","scriptLoading","scriptLoaded","scriptDidError","ReactStripeCheckout","onScriptLoaded","stripeHandler","StripeCheckout","configure","stripeKey","hasPendingClick","showStripeDialog","onScriptError","hideLoadingDialog","onClosed","_isMounted","closed","onOpened","opened","getConfig","showLoadingDialog","handleOnMouseDown","buttonActive","handleOnMouseUp","canceled","promise","onScriptTagCreated","async","loadPromise","onerror","accept","isCanceled","catch","updateStripeHandler","close","reconfigureOnUpdate","triggerEvent","onMouseOut","background","border","textDecoration","borderRadius","boxShadow","userSelect","backgroundImage","textShadow","textStyle","label","desktopShowModal","ComponentClass","renderDisabledButton","renderDefaultStripeButton","image","currency","panelLabel","zipCode","billingAddress","shippingAddress","allowRememberMe","bitcoin","alipay","alipayReusable","forceUpdate","__self","__source","_status","_result","IsSomeRendererActing","PureComponent","_currentValue2","_threadCount","createFactory","createRef","forwardRef","lazy","memo","$Object","hasIndices","multiline","dotAll","sticky","flagsBound","TypeErr","performance","MessageChannel","unstable_forceFrameRate","port2","port1","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","$wm","$m","$o","channel","assert","objects","listGet","listHas","listSet","Agent","_defaults","_setDefaults","def","safeStringify","qs","RequestBase","ResponseBase","Request","request","getXHR","protocol","ActiveXObject","serialize","pushEncodedKeyValuePair","subkey","parseString","isJSON","Response","responseType","statusText","_setStatusProperties","headers","fields","parseHeader","getAllResponseHeaders","header","getResponseHeader","_setHeaderProperties","_responseType","response","_parseBody","_query","_header","new_err","err_","rawResponse","statusCode","_isResponseOK","serializeObject","json","xml","urlencoded","_parser","toError","auth","user","pass","btoa","_auth","query","file","_getFormData","_formData","FormData","_shouldRetry","_retry","_callback","_maxRetries","retries","_retries","crossDomainError","crossDomain","agent","write","pipe","_isHost","_endCalled","_finalizeQueryString","_end","_setUploadTimeout","_uploadTimeout","_uploadTimeoutTimer","_timeoutError","_aborted","_setTimeouts","_responseTimeoutTimer","timedout","handleProgress","percent","loaded","upload","username","_withCredentials","withCredentials","contentType","_serializer","setRequestHeader","post","put","_timer","_timeout","_responseTimeout","retry","_retryCallback","ERROR_CODES","STATUS_CODES","override","timedoutError","_fullfilledPromise","use","_okCallback","getHeader","unset","abort","base64Encoder","redirects","_maxRedirects","maxResponseSize","_maxResponseSize","isObject_","sortQuery","_sort","includes","queryArray","_appendQueryString","reason","errno","ct","links","parseLinks","statusType","redirect","clientError","serverError","created","accepted","noContent","badRequest","unauthorized","notAcceptable","forbidden","notFound","unprocessableEntity","cleanHeader","changesOrigin","authorization","cookie","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","amdD","definition","globalThis","nmd","paths","requestAnimFrame","throttled","thisArg","updateFn","updateArgs","ticking","rest","_toLeftRightCenter","align","_alignStartEnd","isNullOrUndef","isNumberFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","endsWith","each","loopable","_elementsEqual","a0","a1","ilen","v0","datasetIndex","klen","isValidKey","_merger","tval","sval","sources","merger","mergeIf","_mergerIf","indexOfDotOrLength","resolveObjectKey","_capitalize","defined","setsEqual","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","niceNum","roundedRange","almostEquals","niceRange","fraction","epsilon","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","atEdge","elasticIn","sin","elasticOut","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","hex","h1","h2","hexString","isShort","lim","p2b","n2b","b2n","n2p","RGB_RE","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","calln","hsl2rgb","hue","hueParse","hwb2rgb","hsv2rgb","map$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","names$1","nameParse","unpacked","tkeys","unpack","transparent","modHSL","ratio","fromObject","functionParse","rgbParse","Color","_rgb","_valid","valid","rgbString","hslString","mix","weight","c2","w2","alpha","clearer","greyscale","opaquer","lighten","darken","saturate","desaturate","rotate","deg","index_esm","isPatternOrGradient","CanvasGradient","CanvasPattern","getHoverColor","overrides","descriptors","getScope$1","_descriptors","backgroundColor","borderColor","datasets","chart","getDevicePixelRatio","family","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","maintainAspectRatio","onHover","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","scopeObject","targetScopeObject","privateName","_scriptable","startsWith","_indexable","_fallback","_measureText","longest","textWidth","measureText","_longestText","arrayOfThings","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","getContext","resetTransform","clearRect","drawPoint","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","drawImage","beginPath","arc","closePath","lineTo","SQRT1_2","fill","borderWidth","stroke","_isPointInArea","clipArea","clip","unclipArea","_steppedLineTo","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","strokeColor","translation","fillStyle","textAlign","textBaseline","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","_readValueToProps","read","toTRBL","toTRBLCorners","toPadding","toFont","toFontString","inputs","cacheable","parentContext","_lookup","table","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","items","_createResolver","scopes","rootScopes","getTarget","_resolve","_cacheable","_scopes","_rootScopes","_getTarget","deleteProperty","_keys","_cached","proxy","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getKeysFromAllScopes","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_subProxy","_stack","setContext","isScriptable","_resolveScriptable","isIndexable","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","EPSILON","getPoint","points","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","splineCurveMonotone","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","iPixel","vPixel","monotoneCompute","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","positions","getPositionedStyle","getRelativePosition","evt","borderBox","boxSizing","paddings","borders","box","native","offsetY","shadowRoot","useOffsetPos","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","containerSize","containerStyle","containerBorder","containerPadding","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","cacheKey","Intl","NumberFormat","getNumberFormat","getRtlAdapter","rtl","rectX","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","normalize","normalizeSegment","_boundSegment","bounds","startBound","endBound","getSegment","prevValue","subStart","shouldStart","shouldStop","_boundSegments","segments","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","p0","p0DataIndex","p1DataIndex","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","animator","_request","_charts","_running","_lastDate","_notify","anims","numSteps","initial","currentStep","_refresh","_update","draw","_active","_total","tick","_getAnims","charts","complete","progress","listen","cur","_duration","interpolators","boolean","factor","c0","Animation","cfg","currentValue","_fn","_easing","easing","_start","_loop","_target","_prop","_from","_to","_promises","elapsed","remain","wait","promises","rej","resolved","animationOptions","colors","animations","visible","Animations","_properties","animatedProps","_animateOptions","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","awaitAll","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","singleMode","otherValue","isStacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","parsed","_cachedMeta","_stacks","iScale","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","DatasetController","_ctx","_cachedDataOpts","getMeta","_type","_parsing","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","$context","_syncList","initialize","linkScales","_stacked","addElements","updateIndex","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","xScale","getScaleForId","yScale","rScale","getDatasetMeta","scaleID","_getOtherScale","_destroy","_dataCheck","adata","convertObjectDataToArray","isExtensible","datasetElementType","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","_sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","getMinMax","canStack","otherScale","createStack","NEGATIVE_INFINITY","otherMin","otherMax","minDefined","maxDefined","getUserBounds","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","getLabelForValue","_clip","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","sharing","datasetElementScopeKeys","resolveNamedOptions","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","updateElement","updateSharedOptions","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","updateElements","_sync","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","$bar","visibleMetas","getAllScaleValues","_length","updateMinAndPrev","getPixelForValue","ticks","getPixelForTick","parseValue","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","super","bars","getBasePixel","isHorizontal","ruler","_getRuler","firstOpts","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","_getStacks","grouped","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","halfGrid","getLineWidthForValue","skipNull","maxBarThickness","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","rects","_index_","grid","_value_","beginAtZero","BubbleController","getPixelForDecimal","DoughnutController","innerRadius","outerRadius","_getRotation","_getCircumference","circumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","ratioX","ratioY","startAngle","endAngle","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","LineController","_dataset","animationsDisabled","pointCount","getStartAndCountOfVisiblePoints","_scaleRanges","xmin","xmax","ymin","ymax","changed","scaleRangesChanged","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","DateAdapter","timestamp","members","adapters","_date","metaset","lookupMethod","_reversePixels","optimizedEvaluateItems","getSortedVisibleDatasetMetas","getIntersectItems","useFinalPosition","_minPadding","inRange","getNearestCartesianItems","distanceMetric","useX","useY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","evaluateAllVisibleItems","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","same","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","autoPadding","addBox","_layers","removeBox","layoutItem","minPadding","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","handleMaxPadding","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","nodeListContains","createAttachObserver","observer","MutationObserver","trigger","addedNodes","removedNodes","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","unlistenDevicePixelRatioChanges","createProxyAndListen","fromNativeEvent","DomPlatform","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","isConnected","tooltipPosition","hasValue","final","defaultRoutes","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","tickLength","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","majorIndices","major","getMajorIndices","numMajorIndices","newTicks","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","grace","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","offsetFromEdge","sample","numItems","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingTop","paddingBottom","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getTicks","xLabels","yLabels","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","beforeFit","fit","afterFit","afterUpdate","startPixel","endPixel","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetRight","isFullSize","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","positionAxisID","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","_computeLabelItems","tickAndPadding","hTickAndPadding","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","labelPadding","_computeLabelArea","drawBackground","fillRect","findIndex","drawGrid","drawLine","setLineDash","lineDashOffset","lastLineWidth","drawLabels","drawTitle","titleX","titleY","titleArgs","tz","gz","axisID","_maxDigits","TypedRegistry","isForType","isPrototypeOf","parentScope","isIChartComponent","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","registry","controllers","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","_getRegistryForType","_exec","itemReg","camelMethod","PluginService","notify","hook","_createDescriptors","plugin","invalidate","_oldCache","_notifyStateChanges","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","initConfig","_scopeCache","_resolverCache","clearCache","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","instances","getChart","moveNumericKeys","intKey","Chart","userConfig","initialCanvas","existingChart","OffscreenCanvas","_detectPlatform","_options","_aspectRatio","_metasets","_lastEvent","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","hoverOptions","deactivated","activated","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","invalidatePlugins","clipArc","pixelMargin","angleMargin","parseBorderRadius$1","angleDelta","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p8","lineJoin","fullCircles","drawFullCircleBorders","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","_path","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_points","_segments","_pointsUpdated","findStartAndEnd","solidSegments","_computeSegments","interpolate","_interpolate","_getInterpolationMethod","interpolated","inRange$1","hitRadius","PointElement","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","decodeFill","fillOption","parseFillOption","simpleArc","computeBoundary","computeCircularBoundary","computeLinearBoundary","findSegmentEnd","addPointsBelow","sourcePoint","linesBelow","postponed","findPoint","pointValue","linePoints","firstValue","getLineByIndex","sourcePoints","below","getLinesBelow","createBoundaryLine","buildStackLine","boundary","pointsFromSegments","resolveTarget","propagate","visited","clipY","getBounds","_getEdge","clipBounds","interpolatedLineTo","interpolatedPoint","_fill","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","notShape","lineLoop","targetLoop","drawfill","lineOpts","above","doFill","plugin_filler","afterDatasetsUpdate","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","Title","_padding","textSize","_drawArgs","fontOpts","plugin_title","_element","titleBlock","createTitle","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getTooltipSize","boxWidth","boxHeight","bodyFont","titleFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","getTitle","beforeTitle","afterTitle","getBeforeBody","getBody","bodyItems","scoped","beforeLabel","afterLabel","getAfterBody","getFooter","beforeFooter","afterFooter","_createItems","itemSort","labelColor","labelPointStyle","labelTextColor","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","rtlHelper","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","usePointStyle","drawOptions","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","hasTooltipContent","globalAlpha","textDirection","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","afterEvent","labelCount","findOrAddLabel","addedLabels","addIfString","CategoryScale","_startValue","_valueRange","_addedLabels","generateTicks$1","generationOptions","dataRange","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","rounded","almostWhole","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","MIN_SAFE_INTEGER","getTickLimit","stepSize","computeTickLimit","LinearScale","isMajor","tickVal","LogarithmicScale","_zero","exp","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","determineLimits","fitWithPointLabels","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","buildPointLabelItems","hLimits","vLimits","pathRadiusLine","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","drawPointLabels","gridLineOpts","drawRadiusLine","INTERVALS","common","UNITS","sorter","adapter","_adapter","parser","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","_tickFormatFunction","minorFormat","majorFormat","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","FORMATS","trunc","Alignment","Elevation","Intent","Position","NS","BLUEPRINT_NAMESPACE","REACT_APP_BLUEPRINT_NAMESPACE","ACTIVE","ALIGN_LEFT","ALIGN_RIGHT","DARK","DISABLED","FILL","LARGE","LOADING","MINIMAL","OUTLINED","SMALL","VERTICAL","INTENT_PRIMARY","positionClass","elevationClass","FOCUS_DISABLED","TEXT_OVERFLOW_ELLIPSIS","BLOCKQUOTE","CODE","CODE_BLOCK","HEADING","LIST","BUTTON","BUTTON_GROUP","BUTTON_SPINNER","BUTTON_TEXT","DIALOG","DIALOG_CONTAINER","DIALOG_CLOSE_BUTTON","DIALOG_HEADER","DIVIDER","HTML_SELECT","LABEL","MENU","MENU_ITEM","MENU_ITEM_LABEL","MENU_SUBMENU","MENU_DIVIDER","MENU_HEADER","OVERLAY","OVERLAY_BACKDROP","OVERLAY_CONTENT","OVERLAY_INLINE","OVERLAY_OPEN","OVERLAY_SCROLL_CONTAINER","POPOVER","POPOVER_ARROW","POPOVER_BACKDROP","POPOVER_CAPTURING_DISMISS","POPOVER_CONTENT","POPOVER_DISMISS","POPOVER_DISMISS_OVERRIDE","POPOVER_OPEN","POPOVER_TARGET","POPOVER_WRAPPER","TRANSITION_CONTAINER","PORTAL","SPINNER","SPINNER_ANIMATION","SPINNER_HEAD","SPINNER_NO_SPIN","SPINNER_TRACK","TOAST","TOAST_CONTAINER","TOAST_MESSAGE","TOOLTIP","ICON","alignmentClass","elevation","intent","isRunning","handleMouseDown","isActive","focusEngine","InteractionModeEngine","FocusStyleManager","_setPrototypeOf","_inheritsLoose","isAbsolute","pathname","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","hash","currentLocation","hashIndex","searchIndex","parsePath","createTransitionManager","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","globalHistory","canUseHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","fromIndex","go","revertPop","initialLocation","createHref","checkDOMListeners","isBlocked","nextKeys","replaceState","goBack","goForward","block","unblock","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","pushHashPath","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","canGo","commonjsGlobal","getUniqueId","_proto2","createNamedContext","historyContext","Router","_pendingLocation","staticContext","computeRootMatch","isExact","RouterContext","HistoryContext","cacheCount","matchPath","pathCache","regexp","compilePath","Route","computedMatch","createURL","staticHandler","methodName","HashRouter","createHistory","resolveToLocation","normalizeToLocation","createLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","isModifiedEvent","Link","ariaCurrent","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","extendStatics","__extends","__","__assign","__rest","__decorate","decorators","decorate","__spreadArrays","il","jl","INVALID_PROPS","removeNonHTMLProps","invalidProps","setRef","refTarget","isRefCallback","refHandler","refTargetParent","refTargetKey","refProp","isKeyboardClick","isNodeEnv","timeoutIds","requestIds","clearTimeouts","cancelAnimationFrames","requestId","validateProps","_prevProps","_prevState","_snapshot","handle","isReactNodeEmpty","skipArray","every","ensureElement","isReactElement","isElementOfType","ComponentType","createReactRef","IconSvgPaths16","IconSvgPaths20","Icon","icon","htmlTitle","iconSize","SIZE_STANDARD","htmlprops","pixelGridSize","SIZE_LARGE","renderSvgPaths","iconName","viewBox","pathsSize","pathStrings","fillRule","DISPLAYNAME_PREFIX","AbstractPureComponent2","PATH_LENGTH","Spinner","getSize","strokeOffset","getViewBox","pathLength","SIZE_SMALL","viewBoxX","viewBoxWidth","currentKeyDown","buttonRef","click","handleBlur","getCommonButtonProps","alignText","large","loading","outlined","minimal","small","renderChildren","rightIcon","handleRef","elementRef","AbstractButton","commonProps","htmlElement","tagClassName","htmlProps","H4","H6","cannotCreatePortal","REACT_CONTEXT_TYPES","blueprintPortalClassName","hasMounted","portalElement","createContainerElement","onChildrenMount","unstableRenderNoPortal","maybeAddClass","hasEverOpened","containerElement","refHandlers","maybeRenderChild","decoratedChild","enforceFocus","onOpening","onClosing","transitionDuration","transitionName","CSSTransitionImplicit","handleTransitionAddEnd","handleBackdropMouseDown","backdropProps","canOutsideClickClose","onClose","bringFocusInsideOverlay","handleDocumentClick","composed","composedPath","openStack","isClickInThisOverlayOrDescendant","isSameNode","handleDocumentFocus","stopImmediatePropagation","canEscapeKeyClose","Overlay","usePortal","childrenWithTransitions","maybeBackdrop","maybeRenderBackdrop","containerClasses","portalClassName","portalContainer","overlayWillOpen","overlayWillClose","autofocusElement","wrapperElement","backdropClassName","hasBackdrop","lastOpenedOverlay","getLastOpened","maybeRenderHeader","isCloseButtonShown","maybeRenderCloseButton","Button","Dialog","Divider","iconProps","optionChildren","HTMLSelect","ManagerReferenceNodeContext","ManagerReferenceNodeSetterContext","Manager","newReferenceNode","referenceNode","setReferenceNode","unwrapArray","InnerReference","Reference","timeoutDuration","longerTimeoutBrowsers","isBrowser","called","scheduled","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","overflowX","overflowY","getReferenceNode","reference","isIE11","MSInputMethodContext","isIE10","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","DOCUMENT_POSITION_FOLLOWING","commonAncestorContainer","firstElementChild","element1root","getScroll","upperSide","scrollingElement","includeScroll","getBordersSize","sideA","sideB","getWindowSizes","getClientRect","sizes","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","runIsIE","isHTML","childrenRect","parentRect","scrollParent","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","getBoundaries","popper","boundariesElement","boundaries","boundariesNode","isPaddingNumber","getArea","computeAutoPlacement","placement","sortedAreas","filteredAreas","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","marginBottom","marginRight","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","check","runModifiers","ends","isDestroyed","positionFixed","originalPlacement","isCreated","onCreate","isModifierEnabled","getSupportedPropertyName","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","isNumeric","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","requesting","requested","validPlacements","placements","clockwise","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","ops","mergeWithPrevious","shiftvariation","isVertical","shiftOffsets","transformProp","popperStyles","escapeWithReference","opSide","arrowElement","sideCapitalized","altSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","flipped","placementOpposite","flipOrder","behavior","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","subtractLength","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","arrowStyles","modifierOptions","Popper","Defaults","jquery","Utils","PopperUtils","initialStyle","pointerEvents","initialArrowStyle","InnerPopper","popperNode","updatePopperInstance","arrowNode","applyStyle","updateStateModifier","popperInstance","destroyPopperInstance","referenceElement","setPopperNode","getPopperStyle","getPopperPlacement","outOfBoundaries","getOutOfBoundariesState","arrowProps","setArrowNode","getArrowStyle","elementIsOrContains","testElement","MapShim","getIndex","class_1","__entries__","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","lastCallTime","resolvePending","timeoutCallback","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","characterData","_b","isReflowProperty","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getHTMLElementContentRect","positions_1","getPaddings","horizPad","vertPad","isDocumentElement","isSVGGraphicsElement","SVGGraphicsElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","observeElement","observeParents","ResizeSensor","popover","popoverClassName","restProps","Popover","interactionKind","PopoverInteractionKind","HOVER_TARGET_ONLY","reposition","hoverCloseDelay","hoverOpenDelay","isVerticalPosition","getOppositePosition","getAlignment","getTransformOrigin","arrowSizeShift","arrowOffsetModifier","arrowSize","offsetSide","arrowOffsetSize","getArrowAngle","PopoverArrow","positionToPlacement","assertNever","CLICK","CLICK_TARGET_ONLY","HOVER","popoverRef","popoverElement","targetElement","hasDarkParent","getIsOpen","transformOrigin","isMouseInTargetOrPopover","lostFocusOnSamePage","handlePopoverRef","handleTargetRef","popperScheduleUpdate","renderPopover","popperProps","popoverHandlers","handlePopoverClick","handleMouseEnter","handleMouseLeave","popoverClasses","inheritDarkTheme","captureDismiss","isArrowEnabled","understandChildren","renderTarget","referenceProps","openOnTargetFocus","targetClassName","targetProps","isControlled","isHoverInteractionKind","targetTagName","finalTargetProps","handleTargetBlur","handleTargetFocus","handleTargetClick","rawTarget","rawTabIndex","clonedTarget","isElementInPopover","setOpenState","eventPopover","closest","isEventFromSelf","isEventPopoverCapturing","dismissElement","shouldDismiss","handleOverlayClose","updatePopoverState","wrapperTagName","isContentEmpty","wrapperClasses","getPopperModifiers","updateDarkParent","nextIsOpen","onInteraction","childrenCount","hasContentProp","hasTargetProp","contentProp","targetProp","targetChild","contentChild","defaultIsOpen","preventOverflow","arrowOffset","cancelOpenTimeout","isContentOverflowing","textRef","ellipsize","labelElement","shouldDismissPopover","textClassName","hasSubmenu","intentClass","anchorClasses","DISABLED_PROPS","maybeRenderLabel","liClasses","maybeRenderPopover","labelClassName","popoverProps","SUBMENU_POPOVER_MODIFIERS","MenuItem","ulRef","MenuDivider","Item","buttonGroupClasses","ButtonGroup","handleActionClick","triggerDismiss","handleCloseClick","startTimeout","maybeRenderActionButton","AnchorButton","didTimeoutExpire","onDismiss","Toast","toasts","toastId","renderToast","toast","getDismissHandler","timeoutExpired","dismiss","handleClose","Toaster","toaster","maxToasts","dismissIfAtLimit","createToastOptions","isNewToastKey","matchesKey","getToasts","getPositionClasses","canEscapeKeyClear","errorRes","error_msg","light","dark","chartColor1","chartColor2","emitDefer","SYNC","_token","subscription","_subscription","subscriptionM","emitChange","addChangeListener","removeChangeListener","ADD","DONE","_loaders","_done","progressBar","LoadingBar","EventDispatcher","uuid","zeroPad","capitalize","formatAmount","formatBytes","bytes","formatMs","formatUptime","formatDate","dateStr","getHours","getMinutes","getSeconds","formatDateShort","curDate","formatDateShortTime","syncId","sync","curSyncId","loader","activate","license","sessionTypes","admin","operatingSystems","linux","macos_1010","macos_1011","macos_1012","macos_1013","macos_1014","macos_1015","macos11","macos12","macos13","macos14","windows_xp","windows_7","windows_vista","windows_8","windows_10","windows_11","chrome_os","ios_8","ios_9","ios_10","ios_11","ios_12","ios_13","ios_14","ios_15","ios_16","ios_17","ios_18","android_4","android_5","android_6","android_7","android_8","android_9","android_10","android_11","android_12","android_13","android_14","blackberry_10","windows_phone","firefox_os","kindle","browsers","chrome","chrome_mobile","safari","safari_mobile","firefox","firefox_mobile","internet_explorer","internet_explorer_mobile","opera_mobile","locations","US","US_AL","US_AK","US_AZ","US_AR","US_CA","US_CO","US_CT","US_DE","US_FL","US_GA","US_HI","US_ID","US_IL","US_IN","US_IA","US_KS","US_KY","US_LA","US_ME","US_MD","US_MA","US_MI","US_MN","US_MS","US_MO","US_MT","US_NE","US_NV","US_NH","US_NJ","US_NM","US_NY","US_NC","US_ND","US_OH","US_OK","US_OR","US_PA","US_RI","US_SC","US_SD","US_TN","US_TX","US_UT","US_VT","US_VA","US_WA","US_DC","US_WV","US_WI","US_WY","AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","verticalAlign","actionProgress","borderBottomLeftRadius","borderBottomRightRadius","squareActionProgress","dialog","ConfirmButton","openDialog","closeDialog","closeDialogConfirm","onConfirm","confirmId","confirming","clearConfirm","safe","confirmInput","dialogClassName","dialogLabel","autoCapitalize","spellCheck","itemsList","confirmMsg","confirmElem","progressStyle","confirmStyle","progressClassName","card","card2","button2","button3","Subscription","plan","reactivate","balance","balanceLabel","canceling","cancel_at_period_end","periodEnd","period_end","trialEnd","trial_end","quantity","url_key","TRAVERSE","FILTER","LOAD","UNLOAD","_users","_filter","_map","users","usersM","page","_page","pageCount","_pageCount","pages","_count","_traverse","_filterCallback","administrator","_user","userM","_load","_unload","userId","roles","permissions","page_count","traverse","filt","userIds","_audits","_userId","audits","auditsM","audit","lastActivity","nameLink","User","userType","cardStyle","onSelect","last_active","SearchInput","SwitchNull","onToggle","filters","UsersFilter","menu","onFilter","pageWide","Page","wide","borderBottomStyle","PageHeader","buttonLast","onPage","borderSpacing","usersBox","heading","Users","curSelected","onDelete","lastSelected","usersDom","usr","filterClass","selectedNames","SHOW_REMOVED","_sessions","sessions","sessionsM","showRemoved","_showRemoved","_setShowRemoved","show_removed","NonState","initialized","iconClass","formatContinent","continent","continent_code","formatLocation","city","region","region_code","formatCountry","country","country_code","formatCoordinates","latitude","longitude","wordWrap","PageInfo","labelStyle","valueClass","progressClass","Session","sessionId","operating_system","browser","isp","ip","Sessions","showEnded","base64urlToBuffer","baseurl64String","base64String","atob","byteView","bufferToBase64url","copyValue","convertValue","conversionFn","schemaField","deriveFn","schema","required","derived","publicKeyCredentialDescriptorSchema","transports","simplifiedExtensionsSchema","appid","appidExclude","credProps","simplifiedClientExtensionResultsSchema","credentialCreationOptions","publicKey","rp","challenge","pubKeyCredParams","excludeCredentials","authenticatorSelection","attestation","extensions","signal","publicKeyCredentialWithAttestation","rawId","clientDataJSON","attestationObject","getTransports","clientExtensionResults","pkc","getClientExtensionResults","rpId","allowCredentials","userVerification","authenticatorData","signature","userHandle","requestJSON","credential","credentials","createRequestFromJSON","createResponseToJSON","_devices","devices","devicesM","device","popoverTarget","Help","helpElm","PageSwitch","help","PageSave","onCancel","onSave","labelNarrow","PageInput","autoSelect","inputGroup","controlButton","Device","onTestAlert","deviceId","toggleLevel","alert_levels","isPhone","deviceType","deviceOther","deviceMode","wan_rp_id","ssh_public_key","alertIcon","fields1","fields2","testButton","groupBox","inputBox","Devices","wanRegister","wanCreate","cred","deviceName","wanRespond","addDevice","devicePubKey","devicePhoneNumber","deviceTypes","onKeyPress","Audit","AuditsPage","Audits","_sshcertificates","sshcertificates","sshcertificatesM","sshcertificate","certs","certificates","Sshcertificate","certsInfo","certificates_info","serial","expires","authority_ids","SshcertificatesPage","Sshcertificates","panel","PagePanel","PageSplit","groupList","groupTop","buttonTop","PageInputButton","buttonClass","buttonStyle","buttonLabel","labelTop","buttonConfirm","buttonDisabled","onSubmit","listStyle","PageSelect","DATEPICKER","DATEPICKER_CAPTION","DATEPICKER_CAPTION_MEASURE","DATEPICKER_DAY_WRAPPER","DATEPICKER_FOOTER","DATEPICKER_MONTH_SELECT","DATEPICKER_YEAR_SELECT","DATEPICKER_NAVBAR","DATEPICKER_TIMEPICKER_WRAPPER","DATERANGEPICKER","DATERANGEPICKER_SHORTCUTS","DATETIMEPICKER","TIMEPICKER","TIMEPICKER_ARROW_BUTTON","TIMEPICKER_ARROW_ROW","TIMEPICKER_DIVIDER_TEXT","TIMEPICKER_HOUR","TIMEPICKER_INPUT","TIMEPICKER_INPUT_ROW","TIMEPICKER_MILLISECOND","TIMEPICKER_MINUTE","TIMEPICKER_SECOND","TIMEPICKER_AMPM_SELECT","areSameDay","date1","date2","areSameMonth","areSameTime","getMilliseconds","dateRange","exclusive","isDayRangeInRange","innerRange","outerRange","isTimeEqualOrGreaterThan","timeToCompare","isTimeEqualOrSmallerThan","isTimeInRange","minDate","maxDate","getDateOnlyWithTime","minTime","maxTime","isTimeGreaterThanMinTime","isTimeSmallerThanMaxTime","getTimeInRange","dateToCompare","isTimeSameOrAfter","getDateTime","getIsPmFrom24Hour","get12HourFrom24Hour","newHour","DATEPICKER_DEFAULT_VALUE_INVALID","DATEPICKER_INITIAL_MONTH_INVALID","DATEPICKER_MAX_DATE_INVALID","DATEPICKER_VALUE_INVALID","padWithZeroes","minLength","numTimes","monthRightOffset","handleMonthSelectChange","dateChangeHandler","handleYearSelectChange","onYearChange","minYear","maxYear","displayMonth","displayYear","startMonth","endMonth","monthOptionElements","displayedMonthText","monthSelect","yearSelect","orderedSelects","reverseMonthAndYearMenus","positionArrows","monthTextWidth","spanWidth","measureTextWidth","monthSelectWidth","rightOffset","onDateChange","DatePickerCaption","Months","getDefaultMinDate","TimeUnit","hideLeftNavButton","hideRightNavButton","getShorcutClickHandler","shortcut","onShortcutClick","isShortcutInRange","shortcutDateRange","allowSingleDayRange","hasTimePrecision","useSingleDateShortcuts","makeDate","yesterday","oneWeekAgo","oneMonthAgo","threeMonthsAgo","sixMonthsAgo","oneYearAgo","twoYearsAgo","shortcutElements","shortcuts","timePrecision","returnVal","createShortcut","selectedShortcutIndex","setTimeUnit","HOUR_24","HOUR_12","get24HourFrom12Hour","setMinutes","setSeconds","setMilliseconds","isTimeUnitValid","getTimeUnitMin","getTimeUnitMax","TimeUnitMetadata","DEFAULT_MIN_HOUR","DEFAULT_MIN_MINUTE","DEFAULT_MIN_SECOND","DEFAULT_MIN_MILLISECOND","DEFAULT_MAX_HOUR","DEFAULT_MAX_MINUTE","DEFAULT_MAX_SECOND","DEFAULT_MAX_MILLISECOND","TimePrecision","getInputChangeHandler","getStringValueFromInputEvent","hourText","minuteText","secondText","millisecondText","getInputBlurHandler","updateTime","getInputFocusHandler","selectAllOnFocus","getInputKeyDownHandler","actions","handleKeyEvent","incrementTime","decrementTime","getInputKeyUpHandler","handleAmPmChange","isNextPm","toPm","shiftTime","getFullStateFromValue","useAmPm","shouldRenderMilliseconds","shouldRenderSeconds","hourUnit","maybeRenderArrowButton","renderInput","renderDivider","maybeRenderAmPm","didMinTimeChange","didMaxTimeChange","didBoundsChange","didPropValueChange","shouldStateUpdate","isDirectionUp","timeUnit","showArrowButtons","isHour","timeInRange","formatTime","newTime","getTimeUnit","wrapTimeAtUnit","updateState","hasNewValue","ignoreNextMonthChange","shouldHighlightCurrentDay","getDatePickerModifiers","isToday","getDisabledDaysModifier","renderCaption","handleMonthChange","DatePickerNavbar","dayPickerProps","updateDay","canClearSelection","updateValue","handleShortcutClick","onShortcutChange","currentShortcutIndex","includeTime","datePickerShortcut","selectedDay","handleClearClick","computeValidDateInSpecifiedMonthYear","handleTodayClick","handleTimeChange","timePickerProps","getInitialValue","getInitialMonth","DatePicker","showActionsBar","maybeRenderShortcuts","maybeRenderTimePicker","renderOptionsBar","clearButtonText","todayButtonText","applyMin","applyMax","TimePicker","dateRangeShortcuts","Shortcuts","maxDaysInMonth","displayDate","isUserChange","skipOnChange","highlightCurrentDay","handleDateChange","dateValue","timeValue","datePickerProps","DateTimePicker","PageDateTime","dateStyle","PageNew","UserDetailed","onNew","locked","onAddRole","addRole","onRemoveRole","generate_secret","active_until","_nodes","nodesM","SYNC_NAMES","_services","_services_name","_map_name","services","servicesM","service","servicesName","servicesNameM","serviceName","_sync_names","SYNC_SECRET","_authorities","_secrets","authorities","authoritiesM","policy","authority","authoritySecret","_syncSecret","_certificates","certificatesM","certificate","nameSyncId","syncNames","service_names","deleteToken","authorityId","switchLabel","inputLabel","PageInputSwitch","borderTopLeftRadius","selectInner","selectBox","PageSelectButton","itemsLabel","itemsAdd","port","nodeId","onAddService","addService","serviceId","onRemoveService","onAddAuthority","addAuthority","proxy_hosting","onRemoveAuthority","onAddCert","addCert","certId","onRemoveCert","forwardedChecked","forwardedProtoChecked","toggleType","typ","vals","requests_min","memory","load1","load5","load15","servicesSelect","authoritiesSelect","cert","hasCertificates","certificatesSelect","management_domain","user_domain","webauthn_domain","no_redirect_server","software_version","hostname","forwarded_for_header","nde","forwarded_proto_header","Nodes","nodesDom","_policies","policies","policiesM","settings","_settings","settingsM","PolicyRule","onAddValue","addValue","onRemoveValue","defaultOption","selectLabel","selectPlaceholder","optionsSelect","inputElem","disable","Policy","setRule","operatingSystem","whitelistNetworks","whitelist_networks","blacklistNetworks","blacklist_networks","providerIds","adminProviders","userProviders","proxyProviders","authorityProviders","providers","provider","adminProvider","admin_secondary","userProvider","user_secondary","proxyProvider","proxy_secondary","authorityProvider","authority_secondary","admin_device_secondary","user_device_secondary","proxy_device_secondary","authority_device_secondary","authority_require_smart_card","Policies","policiesDom","callout","AuthorityDeploy","route53","awsAccessKey","awsSecretKey","hostCertificate","server","popoverElem","errorMsgElem","errorMsg","hostCertificateDisabled","host_certificates","servers","serverDefault","serversElm","host_tokens","bastionUsername","bastionHostname","bastionSplit","host_proxy","host_domain","epel","boto","public_key","PageTextAreaTab","activeIndex","tabs","Authority","hsm_secret","onAddMatch","host_matches","addMatch","onAddSubnet","subnets","host_subnets","addSubnet","onRemoveMatch","onRemoveSubnet","subnet","isHsm","hsmSecret","key_alg","proxy_jump","hsmStatus","hsm_status","hsm_timestamp","public_key_pem","root_certificate","strict_host_checking","authr","proxy_hostname","proxy_port","hsm_serial","hsm_token","hsm_generate_secret","expire","host_expire","match_roles","selectFirst","Authorities","algorithm","authoritiesDom","domain","domainBox","CertificateDomain","onRemove","PageTextArea","Certificate","onAddDomain","acmeDomains","acme_domains","addDomain","onChangeDomain","onRemoveDomain","domains","signature_alg","public_key_alg","issuer","issued_on","expires_on","dns_names","noCerts","Certificates","certsDom","_endpoints","endpoints","endpointsM","endpoint","dataSyncReqs","endpointId","resource","curDataSyncId","dataCancel","_checks","checks","checksM","checkId","getChartLabels","resource_label","resource_type","resource_suffix","resource_fixed","resource_min","resource_max","diskData","diskDatasets","hide_zero","diskioData","diskioDatasets","diskDevice","dataType","netData","netDatasets","iface","checkData","checkDatasets","getChartData","cpu_usage","mem_usage","swap_usage","huge_usage","diskChart","diskioChart","netChart","checkChart","EndpointChart","tickMod","toolElm","boxRect","getBoxRect","boxBottom","pageYOffset","boxTop","titleLines","bodyLines","innerHtml","tableRows","double","curRow","pageXOffset","toolTop","datasetLabels","pointRadius","chartRef","chartResp","onLoading","onLoaded","has_data","updateChart","dataLen","datasetsLen","chartGroup","EndpointCharts","chartBoxRef","getDefaultInterval","setLoading","setLoaded","intervalMin","intervalMax","refreshDisabled","refreshLabel","refreshClass","editorGroup","EndpointKmsg","logResp","$blockScrolling","EndpointDetailed","onResetClientKey","reset_client_key","showCharts","endpointData","uptime","package_updates","virtualization","cpu_cores","mem_total","swap_total","huge_total","md_stat","failed","alerts","alert","secretKey","secretUri","has_client_key","client_key","colSpan","cardOpen","nameSpan","barLast","Endpoint","onOpen","updates","EndpointsFilter","EndpointsPage","itemsBox","Endpoints","curOpened","endpointIds","newOpened","endpointsDom","instId","inst","_alerts","alertsM","alertsButtons","alertsAdd","AlertDetailed","alertId","onAddIgnore","ignores","addIgnore","onRemoveIgnore","valueInt","valueStr","valueLabel","valueHelp","ignoreShow","ignoreLabel","ignoreTitle","ignoreHelp","value_int","value_str","frequency","AlertsFilter","AlertsPage","Alerts","alertIds","alertsDom","CheckCharts","headerBox","CheckHeader","checksButtons","checksAdd","CheckDetailed","onAddTarget","targets","addTarget","onAddHeader","onRemoveTarget","onChangeHeader","onRemoveHeader","targetLabel","targetTitle","targetHelp","status_code","Check","ChecksFilter","ChecksPage","Checks","checkIds","checksDom","_logs","logs","logsM","dialogBody","Log","LogsFilter","LogsPage","logsBox","Logs","logsDom","ServiceDomain","hostnameBox","ServiceServer","pathBox","ServiceWhitelistPath","ServiceDetailed","onAddWhitelistNet","whitelistNets","addWhitelistNet","onAddServer","onAddWhitelistPath","whitelist_paths","onRemoveWhitelistNet","whitelistNet","onChangeServer","onRemoveServer","onChangeWhitelistPath","onRemoveWhitelistPath","whitelistPaths","client_authority","logout_path","share_session","websockets","disable_csrf_check","Service","ServicesFilter","ServicesPage","Services","serviceIds","servicesDom","SettingsProvider","azure","tenant","client_id","client_secret","authzero","google","google_email","google_key","onelogin","issuer_url","saml_url","saml_cert","okta","jumpcloud","jumpcloud_app_id","jumpcloud_secret","default_roles","rls","auto_create","role_management","SettingsSecondaryProvider","duo","duo_hostname","duo_key","duo_secret","push_factor","phone_factor","passcode_factor","sms_factor","one_login_id","one_login_secret","one_login_region","okta_domain","okta_token","providersLabel","secondaryProviders","Settings","secondaryProvider","subscriptionActive","auth_providers","prvdrs","auth_secondary_providers","authProviders","auth_admin_expire","auth_admin_max_duration","auth_proxy_expire","auth_proxy_max_duration","auth_user_expire","auth_user_max_duration","elastic_address","elastic_username","elastic_password","elastic_proxy_requests","nav","navTitle","navGroup","flexWrap","connected","connect","socket","WebSocket","topY","bottomY"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"app.js","mappings":"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,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE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AAWv4T,KAAK63T,EAAUxlU,G,CAK7B,OAAOkmU,EAIV,CDnFA,aAA0Bj4R,IACzB,GFvRqB,iBEuRbA,EAAOvqC,KAEb,I,IEnQH,MAAM,GAAS,CACd,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAGc,MAAMyiU,WAAsB,aAU1CriU,YAAYf,EAAY6E,GACvBu+N,MAAMpjO,EAAO6E,GAQd,KAAA68N,MAAS50M,IACR,IAAI40M,EAAQ50M,EAAK40M,MACbuU,EAA2B,GAC3Bzb,EAAUh+N,OAAOiM,OAAOhK,KAAK6wB,MAAM,GACnC+zS,EAAU,KACVprR,EAAMuiL,EAAQl8N,OAElB,GAAI25C,EAAK,CACR,IAAI/zC,EAAQs2N,EAAQ,GAEhB1sN,EADO0sN,EAAQviL,EAAI,GACNl5B,EAAI7a,EAAM6a,EAG1BskT,EADGv1T,GAAS,SACF,OACAA,GAAS,SACT,OACAA,GAAS,QACT,MACAA,GAAS,QACT,MACAA,GAAS,OACT,MAEA,I,CAIZ,IAAK,IAAI1P,EAAI,EAAGA,EAAIsjO,EAAMpjO,OAAQF,IAAK,CACtC,IAAI81N,EAAOwN,EAAMtjO,GAEb81N,EAAK1nN,MAAQ62T,GAAY,GAC5BptF,EAASrrO,KAAKspN,E,CAIhBpnM,EAAK40M,MAAQuU,CAAQ,EAGtB,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","sources":["webpack://pritunl-zero//home/cloud/pritunl-zero-www/node_modules/moment/locale|sync|/^\\.\\/.*$/","webpack://pritunl-zero/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/configureDom4.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/node_modules/react-transition-group/CSSTransition.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/node_modules/react-transition-group/ReplaceTransition.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/node_modules/react-transition-group/Transition.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/node_modules/react-transition-group/TransitionGroup.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/node_modules/react-transition-group/index.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/node_modules/react-transition-group/utils/ChildMapping.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/node_modules/react-transition-group/utils/PropTypes.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/Caption.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/DateUtils.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/Day.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/DayPicker.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/Helpers.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/LocaleUtils.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/ModifiersUtils.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/Month.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/Navbar.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/Weekday.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/Weekdays.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/classNames.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/index.js","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/node_modules/react-day-picker/src/keys.js","webpack://pritunl-zero/./node_modules/@hypnosphi/create-react-context/lib/implementation.js","webpack://pritunl-zero/./node_modules/@hypnosphi/create-react-context/lib/index.js","webpack://pritunl-zero/./node_modules/ace-builds/src-noconflict/ace.js","webpack://pritunl-zero/./node_modules/ace-builds/src-noconflict/ext-split.js","webpack://pritunl-zero/./node_modules/ace-builds/src-noconflict/mode-text.js","webpack://pritunl-zero/./node_modules/ace-builds/src-noconflict/theme-dracula.js","webpack://pritunl-zero/./node_modules/ace-builds/src-noconflict/theme-eclipse.js","webpack://pritunl-zero/./node_modules/call-bind/callBound.js","webpack://pritunl-zero/./node_modules/call-bind/index.js","webpack://pritunl-zero/./node_modules/classnames/index.js","webpack://pritunl-zero/./node_modules/component-emitter/index.js","webpack://pritunl-zero/./node_modules/deep-equal/index.js","webpack://pritunl-zero/./node_modules/define-properties/index.js","webpack://pritunl-zero/./node_modules/diff-match-patch/index.js","webpack://pritunl-zero/./node_modules/dom-helpers/class/addClass.js","webpack://pritunl-zero/./node_modules/dom-helpers/class/hasClass.js","webpack://pritunl-zero/./node_modules/dom-helpers/class/removeClass.js","webpack://pritunl-zero/./node_modules/dom4/build/dom4.max.js","webpack://pritunl-zero/./node_modules/events/events.js","webpack://pritunl-zero/./node_modules/fast-safe-stringify/index.js","webpack://pritunl-zero/./node_modules/fbjs/lib/invariant.js","webpack://pritunl-zero/./node_modules/flux/index.js","webpack://pritunl-zero/./node_modules/flux/lib/Dispatcher.js","webpack://pritunl-zero/./node_modules/function-bind/implementation.js","webpack://pritunl-zero/./node_modules/function-bind/index.js","webpack://pritunl-zero/./node_modules/get-intrinsic/index.js","webpack://pritunl-zero/./node_modules/gud/index.js","webpack://pritunl-zero/./node_modules/has-symbols/index.js","webpack://pritunl-zero/./node_modules/has-symbols/shams.js","webpack://pritunl-zero/./node_modules/has-tostringtag/shams.js","webpack://pritunl-zero/./node_modules/has/src/index.js","webpack://pritunl-zero/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://pritunl-zero/./node_modules/is-arguments/index.js","webpack://pritunl-zero/./node_modules/is-date-object/index.js","webpack://pritunl-zero/./node_modules/is-regex/index.js","webpack://pritunl-zero/./node_modules/isarray/index.js","webpack://pritunl-zero/./node_modules/lodash.get/index.js","webpack://pritunl-zero/./node_modules/lodash.isequal/index.js","webpack://pritunl-zero/./node_modules/mobile-detect/mobile-detect.js","webpack://pritunl-zero/./node_modules/moment/locale/af.js","webpack://pritunl-zero/./node_modules/moment/locale/ar-dz.js","webpack://pritunl-zero/./node_modules/moment/locale/ar-kw.js","webpack://pritunl-zero/./node_modules/moment/locale/ar-ly.js","webpack://pritunl-zero/./node_modules/moment/locale/ar-ma.js","webpack://pritunl-zero/./node_modules/moment/locale/ar-sa.js","webpack://pritunl-zero/./node_modules/moment/locale/ar-tn.js","webpack://pritunl-zero/./node_modules/moment/locale/ar.js","webpack://pritunl-zero/./node_modules/moment/locale/az.js","webpack://pritunl-zero/./node_modules/moment/locale/be.js","webpack://pritunl-zero/./node_modules/moment/locale/bg.js","webpack://pritunl-zero/./node_modules/moment/locale/bm.js","webpack://pritunl-zero/./node_modules/moment/locale/bn-bd.js","webpack://pritunl-zero/./node_modules/moment/locale/bn.js","webpack://pritunl-zero/./node_modules/moment/locale/bo.js","webpack://pritunl-zero/./node_modules/moment/locale/br.js","webpack://pritunl-zero/./node_modules/moment/locale/bs.js","webpack://pritunl-zero/./node_modules/moment/locale/ca.js","webpack://pritunl-zero/./node_modules/moment/locale/cs.js","webpack://pritunl-zero/./node_modules/moment/locale/cv.js","webpack://pritunl-zero/./node_modules/moment/locale/cy.js","webpack://pritunl-zero/./node_modules/moment/locale/da.js","webpack://pritunl-zero/./node_modules/moment/locale/de-at.js","webpack://pritunl-zero/./node_modules/moment/locale/de-ch.js","webpack://pritunl-zero/./node_modules/moment/locale/de.js","webpack://pritunl-zero/./node_modules/moment/locale/dv.js","webpack://pritunl-zero/./node_modules/moment/locale/el.js","webpack://pritunl-zero/./node_modules/moment/locale/en-au.js","webpack://pritunl-zero/./node_modules/moment/locale/en-ca.js","webpack://pritunl-zero/./node_modules/moment/locale/en-gb.js","webpack://pritunl-zero/./node_modules/moment/locale/en-ie.js","webpack://pritunl-zero/./node_modules/moment/locale/en-il.js","webpack://pritunl-zero/./node_modules/moment/locale/en-in.js","webpack://pritunl-zero/./node_modules/moment/locale/en-nz.js","webpack://pritunl-zero/./node_modules/moment/locale/en-sg.js","webpack://pritunl-zero/./node_modules/moment/locale/eo.js","webpack://pritunl-zero/./node_modules/moment/locale/es-do.js","webpack://pritunl-zero/./node_modules/moment/locale/es-mx.js","webpack://pritunl-zero/./node_modules/moment/locale/es-us.js","webpack://pritunl-zero/./node_modules/moment/locale/es.js","webpack://pritunl-zero/./node_modules/moment/locale/et.js","webpack://pritunl-zero/./node_modules/moment/locale/eu.js","webpack://pritunl-zero/./node_modules/moment/locale/fa.js","webpack://pritunl-zero/./node_modules/moment/locale/fi.js","webpack://pritunl-zero/./node_modules/moment/locale/fil.js","webpack://pritunl-zero/./node_modules/moment/locale/fo.js","webpack://pritunl-zero/./node_modules/moment/locale/fr-ca.js","webpack://pritunl-zero/./node_modules/moment/locale/fr-ch.js","webpack://pritunl-zero/./node_modules/moment/locale/fr.js","webpack://pritunl-zero/./node_modules/moment/locale/fy.js","webpack://pritunl-zero/./node_modules/moment/locale/ga.js","webpack://pritunl-zero/./node_modules/moment/locale/gd.js","webpack://pritunl-zero/./node_modules/moment/locale/gl.js","webpack://pritunl-zero/./node_modules/moment/locale/gom-deva.js","webpack://pritunl-zero/./node_modules/moment/locale/gom-latn.js","webpack://pritunl-zero/./node_modules/moment/locale/gu.js","webpack://pritunl-zero/./node_modules/moment/locale/he.js","webpack://pritunl-zero/./node_modules/moment/locale/hi.js","webpack://pritunl-zero/./node_modules/moment/locale/hr.js","webpack://pritunl-zero/./node_modules/moment/locale/hu.js","webpack://pritunl-zero/./node_modules/moment/locale/hy-am.js","webpack://pritunl-zero/./node_modules/moment/locale/id.js","webpack://pritunl-zero/./node_modules/moment/locale/is.js","webpack://pritunl-zero/./node_modules/moment/locale/it-ch.js","webpack://pritunl-zero/./node_modules/moment/locale/it.js","webpack://pritunl-zero/./node_modules/moment/locale/ja.js","webpack://pritunl-zero/./node_modules/moment/locale/jv.js","webpack://pritunl-zero/./node_modules/moment/locale/ka.js","webpack://pritunl-zero/./node_modules/moment/locale/kk.js","webpack://pritunl-zero/./node_modules/moment/locale/km.js","webpack://pritunl-zero/./node_modules/moment/locale/kn.js","webpack://pritunl-zero/./node_modules/moment/locale/ko.js","webpack://pritunl-zero/./node_modules/moment/locale/ku.js","webpack://pritunl-zero/./node_modules/moment/locale/ky.js","webpack://pritunl-zero/./node_modules/moment/locale/lb.js","webpack://pritunl-zero/./node_modules/moment/locale/lo.js","webpack://pritunl-zero/./node_modules/moment/locale/lt.js","webpack://pritunl-zero/./node_modules/moment/locale/lv.js","webpack://pritunl-zero/./node_modules/moment/locale/me.js","webpack://pritunl-zero/./node_modules/moment/locale/mi.js","webpack://pritunl-zero/./node_modules/moment/locale/mk.js","webpack://pritunl-zero/./node_modules/moment/locale/ml.js","webpack://pritunl-zero/./node_modules/moment/locale/mn.js","webpack://pritunl-zero/./node_modules/moment/locale/mr.js","webpack://pritunl-zero/./node_modules/moment/locale/ms-my.js","webpack://pritunl-zero/./node_modules/moment/locale/ms.js","webpack://pritunl-zero/./node_modules/moment/locale/mt.js","webpack://pritunl-zero/./node_modules/moment/locale/my.js","webpack://pritunl-zero/./node_modules/moment/locale/nb.js","webpack://pritunl-zero/./node_modules/moment/locale/ne.js","webpack://pritunl-zero/./node_modules/moment/locale/nl-be.js","webpack://pritunl-zero/./node_modules/moment/locale/nl.js","webpack://pritunl-zero/./node_modules/moment/locale/nn.js","webpack://pritunl-zero/./node_modules/moment/locale/oc-lnc.js","webpack://pritunl-zero/./node_modules/moment/locale/pa-in.js","webpack://pritunl-zero/./node_modules/moment/locale/pl.js","webpack://pritunl-zero/./node_modules/moment/locale/pt-br.js","webpack://pritunl-zero/./node_modules/moment/locale/pt.js","webpack://pritunl-zero/./node_modules/moment/locale/ro.js","webpack://pritunl-zero/./node_modules/moment/locale/ru.js","webpack://pritunl-zero/./node_modules/moment/locale/sd.js","webpack://pritunl-zero/./node_modules/moment/locale/se.js","webpack://pritunl-zero/./node_modules/moment/locale/si.js","webpack://pritunl-zero/./node_modules/moment/locale/sk.js","webpack://pritunl-zero/./node_modules/moment/locale/sl.js","webpack://pritunl-zero/./node_modules/moment/locale/sq.js","webpack://pritunl-zero/./node_modules/moment/locale/sr-cyrl.js","webpack://pritunl-zero/./node_modules/moment/locale/sr.js","webpack://pritunl-zero/./node_modules/moment/locale/ss.js","webpack://pritunl-zero/./node_modules/moment/locale/sv.js","webpack://pritunl-zero/./node_modules/moment/locale/sw.js","webpack://pritunl-zero/./node_modules/moment/locale/ta.js","webpack://pritunl-zero/./node_modules/moment/locale/te.js","webpack://pritunl-zero/./node_modules/moment/locale/tet.js","webpack://pritunl-zero/./node_modules/moment/locale/tg.js","webpack://pritunl-zero/./node_modules/moment/locale/th.js","webpack://pritunl-zero/./node_modules/moment/locale/tk.js","webpack://pritunl-zero/./node_modules/moment/locale/tl-ph.js","webpack://pritunl-zero/./node_modules/moment/locale/tlh.js","webpack://pritunl-zero/./node_modules/moment/locale/tr.js","webpack://pritunl-zero/./node_modules/moment/locale/tzl.js","webpack://pritunl-zero/./node_modules/moment/locale/tzm-latn.js","webpack://pritunl-zero/./node_modules/moment/locale/tzm.js","webpack://pritunl-zero/./node_modules/moment/locale/ug-cn.js","webpack://pritunl-zero/./node_modules/moment/locale/uk.js","webpack://pritunl-zero/./node_modules/moment/locale/ur.js","webpack://pritunl-zero/./node_modules/moment/locale/uz-latn.js","webpack://pritunl-zero/./node_modules/moment/locale/uz.js","webpack://pritunl-zero/./node_modules/moment/locale/vi.js","webpack://pritunl-zero/./node_modules/moment/locale/x-pseudo.js","webpack://pritunl-zero/./node_modules/moment/locale/yo.js","webpack://pritunl-zero/./node_modules/moment/locale/zh-cn.js","webpack://pritunl-zero/./node_modules/moment/locale/zh-hk.js","webpack://pritunl-zero/./node_modules/moment/locale/zh-mo.js","webpack://pritunl-zero/./node_modules/moment/locale/zh-tw.js","webpack://pritunl-zero/./node_modules/moment/moment.js","webpack://pritunl-zero/./node_modules/object-assign/index.js","webpack://pritunl-zero/./node_modules/object-inspect/index.js","webpack://pritunl-zero/./node_modules/object-is/implementation.js","webpack://pritunl-zero/./node_modules/object-is/index.js","webpack://pritunl-zero/./node_modules/object-is/polyfill.js","webpack://pritunl-zero/./node_modules/object-is/shim.js","webpack://pritunl-zero/./node_modules/object-keys/implementation.js","webpack://pritunl-zero/./node_modules/object-keys/index.js","webpack://pritunl-zero/./node_modules/object-keys/isArguments.js","webpack://pritunl-zero/./node_modules/path-to-regexp/index.js","webpack://pritunl-zero/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://pritunl-zero/./node_modules/prop-types/index.js","webpack://pritunl-zero/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://pritunl-zero/./node_modules/qs/lib/formats.js","webpack://pritunl-zero/./node_modules/qs/lib/index.js","webpack://pritunl-zero/./node_modules/qs/lib/parse.js","webpack://pritunl-zero/./node_modules/qs/lib/stringify.js","webpack://pritunl-zero/./node_modules/qs/lib/utils.js","webpack://pritunl-zero/./node_modules/react-ace/src/ace.tsx","webpack://pritunl-zero/./node_modules/react-ace/src/diff.tsx","webpack://pritunl-zero/./node_modules/react-ace/src/editorOptions.ts","webpack://pritunl-zero/./node_modules/react-ace/src/index.ts","webpack://pritunl-zero/./node_modules/react-ace/src/split.tsx","webpack://pritunl-zero/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://pritunl-zero/./node_modules/react-dom/index.js","webpack://pritunl-zero/./node_modules/react-is/cjs/react-is.production.min.js","webpack://pritunl-zero/./node_modules/react-is/index.js","webpack://pritunl-zero/./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack://pritunl-zero/./node_modules/react-stripe-checkout/dist/main.js","webpack://pritunl-zero/./node_modules/react/cjs/react.production.min.js","webpack://pritunl-zero/./node_modules/react/index.js","webpack://pritunl-zero/./node_modules/regexp.prototype.flags/implementation.js","webpack://pritunl-zero/./node_modules/regexp.prototype.flags/index.js","webpack://pritunl-zero/./node_modules/regexp.prototype.flags/polyfill.js","webpack://pritunl-zero/./node_modules/regexp.prototype.flags/shim.js","webpack://pritunl-zero/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://pritunl-zero/./node_modules/scheduler/index.js","webpack://pritunl-zero/./node_modules/side-channel/index.js","webpack://pritunl-zero/./node_modules/superagent/src/agent-base.js","webpack://pritunl-zero/./node_modules/superagent/src/client.js","webpack://pritunl-zero/./node_modules/superagent/src/is-object.js","webpack://pritunl-zero/./node_modules/superagent/src/request-base.js","webpack://pritunl-zero/./node_modules/superagent/src/response-base.js","webpack://pritunl-zero/./node_modules/superagent/src/utils.js","webpack://pritunl-zero/./node_modules/warning/warning.js","webpack://pritunl-zero/webpack/bootstrap","webpack://pritunl-zero/webpack/runtime/amd define","webpack://pritunl-zero/webpack/runtime/compat get default export","webpack://pritunl-zero/webpack/runtime/define property getters","webpack://pritunl-zero/webpack/runtime/global","webpack://pritunl-zero/webpack/runtime/hasOwnProperty shorthand","webpack://pritunl-zero/webpack/runtime/make namespace object","webpack://pritunl-zero/webpack/runtime/node module decorator","webpack://pritunl-zero/./node_modules/chart.js/dist/chunks/helpers.segment.js","webpack://pritunl-zero/./node_modules/chart.js/dist/chart.esm.js","webpack://pritunl-zero/./node_modules/chartjs-adapter-moment/dist/chartjs-adapter-moment.esm.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/alignment.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/elevation.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/intent.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/position.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/classes.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/interactionMode.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/accessibility/focusStyleManager.ts","webpack://pritunl-zero/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://pritunl-zero/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://pritunl-zero/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://pritunl-zero/./node_modules/resolve-pathname/esm/resolve-pathname.js","webpack://pritunl-zero/./node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack://pritunl-zero/./node_modules/history/esm/history.js","webpack://pritunl-zero/./node_modules/mini-create-react-context/dist/esm/index.js","webpack://pritunl-zero/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://pritunl-zero/./node_modules/react-router/modules/createNameContext.js","webpack://pritunl-zero/./node_modules/react-router/modules/HistoryContext.js","webpack://pritunl-zero/./node_modules/react-router/modules/RouterContext.js","webpack://pritunl-zero/./node_modules/react-router/modules/Router.js","webpack://pritunl-zero/./node_modules/react-router/modules/MemoryRouter.js","webpack://pritunl-zero/./node_modules/react-router/modules/Lifecycle.js","webpack://pritunl-zero/./node_modules/react-router/modules/matchPath.js","webpack://pritunl-zero/./node_modules/react-router/modules/Route.js","webpack://pritunl-zero/./node_modules/react-router/modules/StaticRouter.js","webpack://pritunl-zero/./node_modules/react-router/modules/Switch.js","webpack://pritunl-zero/./node_modules/react-router/modules/hooks.js","webpack://pritunl-zero/./node_modules/react-router-dom/modules/BrowserRouter.js","webpack://pritunl-zero/./node_modules/react-router-dom/modules/HashRouter.js","webpack://pritunl-zero/./node_modules/react-router-dom/modules/utils/locationUtils.js","webpack://pritunl-zero/./node_modules/react-router-dom/modules/Link.js","webpack://pritunl-zero/./node_modules/react-router-dom/modules/NavLink.js","webpack://pritunl-zero/./node_modules/tslib/tslib.es6.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/props.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/refs.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/keys.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/utils/jsUtils.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/abstractPureComponent2.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/utils/reactUtils.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/icons/src/generated/iconSvgPaths.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/icon/icon.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/spinner/spinner.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/errors.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/button/abstractButton.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/button/buttons.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/html/html.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/utils/functionUtils.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/portal/portal.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/overlay/overlay.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/dialog/dialog.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/divider/divider.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/html-select/htmlSelect.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/menu/menuDivider.tsx","webpack://pritunl-zero/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://pritunl-zero/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://pritunl-zero/./node_modules/react-popper/lib/esm/Manager.js","webpack://pritunl-zero/./node_modules/react-popper/lib/esm/utils.js","webpack://pritunl-zero/./node_modules/react-popper/lib/esm/Reference.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isBrowser.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/debounce.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isFunction.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getStyleComputedProperty.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getParentNode.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getScrollParent.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getReferenceNode.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isIE.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getOffsetParent.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getRoot.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/findCommonOffsetParent.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isOffsetContainer.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getScroll.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/includeScroll.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getBordersSize.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getWindowSizes.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getClientRect.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getBoundingClientRect.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getOffsetRectRelativeToArbitraryNode.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getViewportOffsetRectRelativeToArtbitraryNode.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isFixed.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getFixedPositionOffsetParent.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getBoundaries.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/computeAutoPlacement.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getReferenceOffsets.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getOuterSizes.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getOppositePlacement.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getPopperOffsets.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/find.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/runModifiers.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/findIndex.js","webpack://pritunl-zero/./node_modules/popper.js/src/methods/update.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isModifierEnabled.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getSupportedPropertyName.js","webpack://pritunl-zero/./node_modules/popper.js/src/methods/destroy.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getWindow.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/setupEventListeners.js","webpack://pritunl-zero/./node_modules/popper.js/src/methods/enableEventListeners.js","webpack://pritunl-zero/./node_modules/popper.js/src/methods/disableEventListeners.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/removeEventListeners.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isNumeric.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/setStyles.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/computeStyle.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/isModifierRequired.js","webpack://pritunl-zero/./node_modules/popper.js/src/methods/placements.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/clockwise.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/flip.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/offset.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/index.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/shift.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/preventOverflow.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/keepTogether.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/arrow.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getOppositeVariation.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/inner.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/hide.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/getRoundedOffsets.js","webpack://pritunl-zero/./node_modules/popper.js/src/modifiers/applyStyle.js","webpack://pritunl-zero/./node_modules/popper.js/src/utils/setAttributes.js","webpack://pritunl-zero/./node_modules/popper.js/src/methods/defaults.js","webpack://pritunl-zero/./node_modules/popper.js/src/index.js","webpack://pritunl-zero/./node_modules/react-popper/lib/esm/Popper.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/common/utils/domUtils.ts","webpack://pritunl-zero/./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/resize-sensor/resizeSensor.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/tooltip/tooltip.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/popover/popperUtils.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/popover/popoverArrow.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/popover/popoverMigrationUtils.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/popover/popover.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/text/text.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/menu/menuItem.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/menu/menu.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/button/buttonGroup.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/toast/toast.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/core/src/components/toast/toaster.tsx","webpack://pritunl-zero/./app/Alert.ts","webpack://pritunl-zero/./app/Csrf.ts","webpack://pritunl-zero/./app/Theme.ts","webpack://pritunl-zero/./app/dispatcher/Dispatcher.ts","webpack://pritunl-zero/./app/EventEmitter.ts","webpack://pritunl-zero/./app/types/SubscriptionTypes.ts","webpack://pritunl-zero/./app/types/GlobalTypes.ts","webpack://pritunl-zero/./app/stores/SubscriptionStore.ts","webpack://pritunl-zero/./app/types/LoadingTypes.ts","webpack://pritunl-zero/./app/stores/LoadingStore.ts","webpack://pritunl-zero/./app/components/LoadingBar.tsx","webpack://pritunl-zero/./app/dispatcher/EventDispatcher.ts","webpack://pritunl-zero/./app/utils/MiscUtils.ts","webpack://pritunl-zero/./app/Loader.ts","webpack://pritunl-zero/./app/actions/SubscriptionActions.ts","webpack://pritunl-zero/./app/Constants.ts","webpack://pritunl-zero/./app/components/ConfirmButton.tsx","webpack://pritunl-zero/./app/components/Subscription.tsx","webpack://pritunl-zero/./app/types/UserTypes.ts","webpack://pritunl-zero/./app/stores/UsersStore.ts","webpack://pritunl-zero/./app/stores/UserStore.ts","webpack://pritunl-zero/./app/actions/UserActions.ts","webpack://pritunl-zero/./app/types/AuditTypes.ts","webpack://pritunl-zero/./app/stores/AuditsStore.ts","webpack://pritunl-zero/./app/actions/AuditActions.ts","webpack://pritunl-zero/./app/components/User.tsx","webpack://pritunl-zero/./app/components/SearchInput.tsx","webpack://pritunl-zero/./app/components/SwitchNull.tsx","webpack://pritunl-zero/./app/components/UsersFilter.tsx","webpack://pritunl-zero/./app/components/Page.tsx","webpack://pritunl-zero/./app/components/PageHeader.tsx","webpack://pritunl-zero/./app/components/UsersPage.tsx","webpack://pritunl-zero/./app/components/Users.tsx","webpack://pritunl-zero/./app/types/SessionTypes.ts","webpack://pritunl-zero/./app/stores/SessionsStore.ts","webpack://pritunl-zero/./app/actions/SessionActions.ts","webpack://pritunl-zero/./app/components/NonState.tsx","webpack://pritunl-zero/./app/utils/AgentUtils.ts","webpack://pritunl-zero/./app/components/PageInfo.tsx","webpack://pritunl-zero/./app/components/Session.tsx","webpack://pritunl-zero/./app/components/Sessions.tsx","webpack://pritunl-zero/./node_modules/@github/webauthn-json/src/webauthn-json/base64url.ts","webpack://pritunl-zero/./node_modules/@github/webauthn-json/src/webauthn-json/convert.ts","webpack://pritunl-zero/./node_modules/@github/webauthn-json/src/webauthn-json/basic/schema.ts","webpack://pritunl-zero/./node_modules/@github/webauthn-json/src/webauthn-json/basic/api.ts","webpack://pritunl-zero/./app/types/DeviceTypes.ts","webpack://pritunl-zero/./app/stores/DevicesStore.ts","webpack://pritunl-zero/./app/actions/DeviceActions.ts","webpack://pritunl-zero/./app/components/Help.tsx","webpack://pritunl-zero/./app/components/PageSwitch.tsx","webpack://pritunl-zero/./app/components/PageSave.tsx","webpack://pritunl-zero/./app/components/PageInput.tsx","webpack://pritunl-zero/./app/components/Device.tsx","webpack://pritunl-zero/./app/components/Devices.tsx","webpack://pritunl-zero/./app/components/Audit.tsx","webpack://pritunl-zero/./app/components/AuditsPage.tsx","webpack://pritunl-zero/./app/components/Audits.tsx","webpack://pritunl-zero/./app/types/SshcertificateTypes.ts","webpack://pritunl-zero/./app/stores/SshcertificatesStore.ts","webpack://pritunl-zero/./app/actions/SshcertificateActions.ts","webpack://pritunl-zero/./app/components/Sshcertificate.tsx","webpack://pritunl-zero/./app/components/SshcertificatesPage.tsx","webpack://pritunl-zero/./app/components/Sshcertificates.tsx","webpack://pritunl-zero/./app/components/PagePanel.tsx","webpack://pritunl-zero/./app/components/PageSplit.tsx","webpack://pritunl-zero/./app/components/PageInputButton.tsx","webpack://pritunl-zero/./app/components/PageSelect.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/common/classes.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/common/dateUtils.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/common/errors.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/common/utils.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/datePickerCaption.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/common/months.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/datePickerCore.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/datePickerNavbar.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/common/timeUnit.ts","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/shortcuts.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/timePicker.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/datePicker.tsx","webpack://pritunl-zero/./node_modules/@blueprintjs/datetime/src/dateTimePicker.tsx","webpack://pritunl-zero/./app/components/PageDateTime.tsx","webpack://pritunl-zero/./app/components/PageNew.tsx","webpack://pritunl-zero/./app/components/UserDetailed.tsx","webpack://pritunl-zero/./app/types/NodeTypes.ts","webpack://pritunl-zero/./app/stores/NodesStore.ts","webpack://pritunl-zero/./app/types/ServiceTypes.ts","webpack://pritunl-zero/./app/stores/ServicesStore.ts","webpack://pritunl-zero/./app/types/AuthorityTypes.ts","webpack://pritunl-zero/./app/stores/AuthoritiesStore.ts","webpack://pritunl-zero/./app/types/CertificateTypes.ts","webpack://pritunl-zero/./app/stores/CertificatesStore.ts","webpack://pritunl-zero/./app/actions/NodeActions.ts","webpack://pritunl-zero/./app/actions/ServiceActions.ts","webpack://pritunl-zero/./app/actions/AuthorityActions.ts","webpack://pritunl-zero/./app/actions/CertificateActions.ts","webpack://pritunl-zero/./app/components/PageInputSwitch.tsx","webpack://pritunl-zero/./app/components/PageSelectButton.tsx","webpack://pritunl-zero/./app/components/Node.tsx","webpack://pritunl-zero/./app/components/Nodes.tsx","webpack://pritunl-zero/./app/types/PolicyTypes.ts","webpack://pritunl-zero/./app/stores/PoliciesStore.ts","webpack://pritunl-zero/./app/types/SettingsTypes.ts","webpack://pritunl-zero/./app/stores/SettingsStore.ts","webpack://pritunl-zero/./app/actions/PolicyActions.ts","webpack://pritunl-zero/./app/actions/SettingsActions.ts","webpack://pritunl-zero/./app/components/PolicyRule.tsx","webpack://pritunl-zero/./app/components/Policy.tsx","webpack://pritunl-zero/./app/components/Policies.tsx","webpack://pritunl-zero/./app/components/AuthorityDeploy.tsx","webpack://pritunl-zero/./app/components/PageTextAreaTab.tsx","webpack://pritunl-zero/./app/components/Authority.tsx","webpack://pritunl-zero/./app/components/Authorities.tsx","webpack://pritunl-zero/./app/components/CertificateDomain.tsx","webpack://pritunl-zero/./app/components/PageTextArea.tsx","webpack://pritunl-zero/./app/components/Certificate.tsx","webpack://pritunl-zero/./app/components/Certificates.tsx","webpack://pritunl-zero/./app/types/EndpointTypes.ts","webpack://pritunl-zero/./app/stores/EndpointsStore.ts","webpack://pritunl-zero/./app/actions/EndpointActions.ts","webpack://pritunl-zero/./app/types/CheckTypes.ts","webpack://pritunl-zero/./app/stores/ChecksStore.ts","webpack://pritunl-zero/./app/actions/CheckActions.ts","webpack://pritunl-zero/./app/types/ChartTypes.ts","webpack://pritunl-zero/./app/components/EndpointChart.tsx","webpack://pritunl-zero/./app/components/EndpointCharts.tsx","webpack://pritunl-zero/./app/components/EndpointKmsg.tsx","webpack://pritunl-zero/./app/components/EndpointDetailed.tsx","webpack://pritunl-zero/./app/components/Endpoint.tsx","webpack://pritunl-zero/./app/components/EndpointsFilter.tsx","webpack://pritunl-zero/./app/components/EndpointsPage.tsx","webpack://pritunl-zero/./app/components/Endpoints.tsx","webpack://pritunl-zero/./app/types/AlertTypes.ts","webpack://pritunl-zero/./app/stores/AlertsStore.ts","webpack://pritunl-zero/./app/actions/AlertActions.ts","webpack://pritunl-zero/./app/components/AlertDetailed.tsx","webpack://pritunl-zero/./app/components/Alert.tsx","webpack://pritunl-zero/./app/components/AlertsFilter.tsx","webpack://pritunl-zero/./app/components/AlertsPage.tsx","webpack://pritunl-zero/./app/components/Alerts.tsx","webpack://pritunl-zero/./app/components/CheckCharts.tsx","webpack://pritunl-zero/./app/components/CheckHeader.tsx","webpack://pritunl-zero/./app/components/CheckDetailed.tsx","webpack://pritunl-zero/./app/components/Check.tsx","webpack://pritunl-zero/./app/components/ChecksFilter.tsx","webpack://pritunl-zero/./app/components/ChecksPage.tsx","webpack://pritunl-zero/./app/components/Checks.tsx","webpack://pritunl-zero/./app/types/LogTypes.ts","webpack://pritunl-zero/./app/stores/LogsStore.ts","webpack://pritunl-zero/./app/actions/LogActions.ts","webpack://pritunl-zero/./app/components/Log.tsx","webpack://pritunl-zero/./app/components/LogsFilter.tsx","webpack://pritunl-zero/./app/components/LogsPage.tsx","webpack://pritunl-zero/./app/components/Logs.tsx","webpack://pritunl-zero/./app/components/ServiceDomain.tsx","webpack://pritunl-zero/./app/components/ServiceServer.tsx","webpack://pritunl-zero/./app/components/ServiceWhitelistPath.tsx","webpack://pritunl-zero/./app/components/ServiceDetailed.tsx","webpack://pritunl-zero/./app/components/Service.tsx","webpack://pritunl-zero/./app/components/ServicesFilter.tsx","webpack://pritunl-zero/./app/components/ServicesPage.tsx","webpack://pritunl-zero/./app/components/Services.tsx","webpack://pritunl-zero/./app/components/SettingsProvider.tsx","webpack://pritunl-zero/./app/components/SettingsSecondaryProvider.tsx","webpack://pritunl-zero/./app/components/Settings.tsx","webpack://pritunl-zero/./app/components/Main.tsx","webpack://pritunl-zero/./app/Event.ts","webpack://pritunl-zero/./app/App.tsx"],"sourcesContent":["var map = {\n\t\"./af\": 4506,\n\t\"./af.js\": 4506,\n\t\"./ar\": 9687,\n\t\"./ar-dz\": 2887,\n\t\"./ar-dz.js\": 2887,\n\t\"./ar-kw\": 6307,\n\t\"./ar-kw.js\": 6307,\n\t\"./ar-ly\": 1664,\n\t\"./ar-ly.js\": 1664,\n\t\"./ar-ma\": 9926,\n\t\"./ar-ma.js\": 9926,\n\t\"./ar-sa\": 5207,\n\t\"./ar-sa.js\": 5207,\n\t\"./ar-tn\": 2912,\n\t\"./ar-tn.js\": 2912,\n\t\"./ar.js\": 9687,\n\t\"./az\": 5011,\n\t\"./az.js\": 5011,\n\t\"./be\": 5997,\n\t\"./be.js\": 5997,\n\t\"./bg\": 4427,\n\t\"./bg.js\": 4427,\n\t\"./bm\": 5385,\n\t\"./bm.js\": 5385,\n\t\"./bn\": 7703,\n\t\"./bn-bd\": 7002,\n\t\"./bn-bd.js\": 7002,\n\t\"./bn.js\": 7703,\n\t\"./bo\": 9841,\n\t\"./bo.js\": 9841,\n\t\"./br\": 5642,\n\t\"./br.js\": 5642,\n\t\"./bs\": 9038,\n\t\"./bs.js\": 9038,\n\t\"./ca\": 3512,\n\t\"./ca.js\": 3512,\n\t\"./cs\": 9497,\n\t\"./cs.js\": 9497,\n\t\"./cv\": 6479,\n\t\"./cv.js\": 6479,\n\t\"./cy\": 9318,\n\t\"./cy.js\": 9318,\n\t\"./da\": 7229,\n\t\"./da.js\": 7229,\n\t\"./de\": 3460,\n\t\"./de-at\": 1044,\n\t\"./de-at.js\": 1044,\n\t\"./de-ch\": 6445,\n\t\"./de-ch.js\": 6445,\n\t\"./de.js\": 3460,\n\t\"./dv\": 2096,\n\t\"./dv.js\": 2096,\n\t\"./el\": 6048,\n\t\"./el.js\": 6048,\n\t\"./en-au\": 4301,\n\t\"./en-au.js\": 4301,\n\t\"./en-ca\": 6855,\n\t\"./en-ca.js\": 6855,\n\t\"./en-gb\": 761,\n\t\"./en-gb.js\": 761,\n\t\"./en-ie\": 6127,\n\t\"./en-ie.js\": 6127,\n\t\"./en-il\": 9157,\n\t\"./en-il.js\": 9157,\n\t\"./en-in\": 7199,\n\t\"./en-in.js\": 7199,\n\t\"./en-nz\": 1511,\n\t\"./en-nz.js\": 1511,\n\t\"./en-sg\": 7309,\n\t\"./en-sg.js\": 7309,\n\t\"./eo\": 2160,\n\t\"./eo.js\": 2160,\n\t\"./es\": 8582,\n\t\"./es-do\": 1885,\n\t\"./es-do.js\": 1885,\n\t\"./es-mx\": 8131,\n\t\"./es-mx.js\": 8131,\n\t\"./es-us\": 6962,\n\t\"./es-us.js\": 6962,\n\t\"./es.js\": 8582,\n\t\"./et\": 8890,\n\t\"./et.js\": 8890,\n\t\"./eu\": 7704,\n\t\"./eu.js\": 7704,\n\t\"./fa\": 2562,\n\t\"./fa.js\": 2562,\n\t\"./fi\": 877,\n\t\"./fi.js\": 877,\n\t\"./fil\": 4246,\n\t\"./fil.js\": 4246,\n\t\"./fo\": 8341,\n\t\"./fo.js\": 8341,\n\t\"./fr\": 9867,\n\t\"./fr-ca\": 2347,\n\t\"./fr-ca.js\": 2347,\n\t\"./fr-ch\": 7683,\n\t\"./fr-ch.js\": 7683,\n\t\"./fr.js\": 9867,\n\t\"./fy\": 1982,\n\t\"./fy.js\": 1982,\n\t\"./ga\": 3905,\n\t\"./ga.js\": 3905,\n\t\"./gd\": 3443,\n\t\"./gd.js\": 3443,\n\t\"./gl\": 6905,\n\t\"./gl.js\": 6905,\n\t\"./gom-deva\": 1324,\n\t\"./gom-deva.js\": 1324,\n\t\"./gom-latn\": 1890,\n\t\"./gom-latn.js\": 1890,\n\t\"./gu\": 7134,\n\t\"./gu.js\": 7134,\n\t\"./he\": 6835,\n\t\"./he.js\": 6835,\n\t\"./hi\": 1394,\n\t\"./hi.js\": 1394,\n\t\"./hr\": 3564,\n\t\"./hr.js\": 3564,\n\t\"./hu\": 6269,\n\t\"./hu.js\": 6269,\n\t\"./hy-am\": 7269,\n\t\"./hy-am.js\": 7269,\n\t\"./id\": 4254,\n\t\"./id.js\": 4254,\n\t\"./is\": 8699,\n\t\"./is.js\": 8699,\n\t\"./it\": 8301,\n\t\"./it-ch\": 5060,\n\t\"./it-ch.js\": 5060,\n\t\"./it.js\": 8301,\n\t\"./ja\": 4642,\n\t\"./ja.js\": 4642,\n\t\"./jv\": 2168,\n\t\"./jv.js\": 2168,\n\t\"./ka\": 4501,\n\t\"./ka.js\": 4501,\n\t\"./kk\": 9537,\n\t\"./kk.js\": 9537,\n\t\"./km\": 5808,\n\t\"./km.js\": 5808,\n\t\"./kn\": 4881,\n\t\"./kn.js\": 4881,\n\t\"./ko\": 2951,\n\t\"./ko.js\": 2951,\n\t\"./ku\": 2452,\n\t\"./ku.js\": 2452,\n\t\"./ky\": 1853,\n\t\"./ky.js\": 1853,\n\t\"./lb\": 7639,\n\t\"./lb.js\": 7639,\n\t\"./lo\": 4502,\n\t\"./lo.js\": 4502,\n\t\"./lt\": 874,\n\t\"./lt.js\": 874,\n\t\"./lv\": 8237,\n\t\"./lv.js\": 8237,\n\t\"./me\": 7878,\n\t\"./me.js\": 7878,\n\t\"./mi\": 4234,\n\t\"./mi.js\": 4234,\n\t\"./mk\": 7535,\n\t\"./mk.js\": 7535,\n\t\"./ml\": 3896,\n\t\"./ml.js\": 3896,\n\t\"./mn\": 3046,\n\t\"./mn.js\": 3046,\n\t\"./mr\": 927,\n\t\"./mr.js\": 927,\n\t\"./ms\": 7224,\n\t\"./ms-my\": 6332,\n\t\"./ms-my.js\": 6332,\n\t\"./ms.js\": 7224,\n\t\"./mt\": 4866,\n\t\"./mt.js\": 4866,\n\t\"./my\": 4206,\n\t\"./my.js\": 4206,\n\t\"./nb\": 6723,\n\t\"./nb.js\": 6723,\n\t\"./ne\": 5097,\n\t\"./ne.js\": 5097,\n\t\"./nl\": 7529,\n\t\"./nl-be\": 1355,\n\t\"./nl-be.js\": 1355,\n\t\"./nl.js\": 7529,\n\t\"./nn\": 296,\n\t\"./nn.js\": 296,\n\t\"./oc-lnc\": 4802,\n\t\"./oc-lnc.js\": 4802,\n\t\"./pa-in\": 7057,\n\t\"./pa-in.js\": 7057,\n\t\"./pl\": 9850,\n\t\"./pl.js\": 9850,\n\t\"./pt\": 5552,\n\t\"./pt-br\": 3726,\n\t\"./pt-br.js\": 3726,\n\t\"./pt.js\": 5552,\n\t\"./ro\": 1717,\n\t\"./ro.js\": 1717,\n\t\"./ru\": 9117,\n\t\"./ru.js\": 9117,\n\t\"./sd\": 1742,\n\t\"./sd.js\": 1742,\n\t\"./se\": 2049,\n\t\"./se.js\": 2049,\n\t\"./si\": 3329,\n\t\"./si.js\": 3329,\n\t\"./sk\": 7619,\n\t\"./sk.js\": 7619,\n\t\"./sl\": 6707,\n\t\"./sl.js\": 6707,\n\t\"./sq\": 4281,\n\t\"./sq.js\": 4281,\n\t\"./sr\": 436,\n\t\"./sr-cyrl\": 3408,\n\t\"./sr-cyrl.js\": 3408,\n\t\"./sr.js\": 436,\n\t\"./ss\": 7500,\n\t\"./ss.js\": 7500,\n\t\"./sv\": 6950,\n\t\"./sv.js\": 6950,\n\t\"./sw\": 4222,\n\t\"./sw.js\": 4222,\n\t\"./ta\": 3746,\n\t\"./ta.js\": 3746,\n\t\"./te\": 1130,\n\t\"./te.js\": 1130,\n\t\"./tet\": 4740,\n\t\"./tet.js\": 4740,\n\t\"./tg\": 3378,\n\t\"./tg.js\": 3378,\n\t\"./th\": 628,\n\t\"./th.js\": 628,\n\t\"./tk\": 2622,\n\t\"./tk.js\": 2622,\n\t\"./tl-ph\": 100,\n\t\"./tl-ph.js\": 100,\n\t\"./tlh\": 2871,\n\t\"./tlh.js\": 2871,\n\t\"./tr\": 3600,\n\t\"./tr.js\": 3600,\n\t\"./tzl\": 8985,\n\t\"./tzl.js\": 8985,\n\t\"./tzm\": 3627,\n\t\"./tzm-latn\": 1145,\n\t\"./tzm-latn.js\": 1145,\n\t\"./tzm.js\": 3627,\n\t\"./ug-cn\": 4790,\n\t\"./ug-cn.js\": 4790,\n\t\"./uk\": 7712,\n\t\"./uk.js\": 7712,\n\t\"./ur\": 9529,\n\t\"./ur.js\": 9529,\n\t\"./uz\": 9141,\n\t\"./uz-latn\": 1737,\n\t\"./uz-latn.js\": 1737,\n\t\"./uz.js\": 9141,\n\t\"./vi\": 8205,\n\t\"./vi.js\": 8205,\n\t\"./x-pseudo\": 697,\n\t\"./x-pseudo.js\": 697,\n\t\"./yo\": 7826,\n\t\"./yo.js\": 7826,\n\t\"./zh-cn\": 3994,\n\t\"./zh-cn.js\": 3994,\n\t\"./zh-hk\": 6892,\n\t\"./zh-hk.js\": 6892,\n\t\"./zh-mo\": 3884,\n\t\"./zh-mo.js\": 3884,\n\t\"./zh-tw\": 5136,\n\t\"./zh-tw.js\": 5136\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6700;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","/*\n * Copyright 2019 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nif (typeof require !== \"undefined\" && typeof window !== \"undefined\" && typeof document !== \"undefined\") {\n // we're in browser\n require(\"dom4\"); // only import actual dom4 if we're in the browser (not server-compatible)\n // we'll still need dom4 types for the TypeScript to compile, these are included in package.json\n}\n","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _addClass = _interopRequireDefault(require(\"dom-helpers/class/addClass\"));\n\nvar _removeClass = _interopRequireDefault(require(\"dom-helpers/class/removeClass\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _addClass.default)(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return (0, _removeClass.default)(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](http://www.nganimate.org/) library, you should use it if you're\n * using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
    \n * \n *
    \n * {\"I'll receive my-node-* classes\"}\n *
    \n *
    \n * \n *
    \n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity: 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**.\n */\n\n\nvar CSSTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _this.onEnter = function (node, appearing) {\n var _this$getClassNames = _this.getClassNames(appearing ? 'appear' : 'enter'),\n className = _this$getClassNames.className;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, className);\n\n if (_this.props.onEnter) {\n _this.props.onEnter(node, appearing);\n }\n };\n\n _this.onEntering = function (node, appearing) {\n var _this$getClassNames2 = _this.getClassNames(appearing ? 'appear' : 'enter'),\n activeClassName = _this$getClassNames2.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onEntering) {\n _this.props.onEntering(node, appearing);\n }\n };\n\n _this.onEntered = function (node, appearing) {\n var appearClassName = _this.getClassNames('appear').doneClassName;\n\n var enterClassName = _this.getClassNames('enter').doneClassName;\n\n var doneClassName = appearing ? appearClassName + \" \" + enterClassName : enterClassName;\n\n _this.removeClasses(node, appearing ? 'appear' : 'enter');\n\n addClass(node, doneClassName);\n\n if (_this.props.onEntered) {\n _this.props.onEntered(node, appearing);\n }\n };\n\n _this.onExit = function (node) {\n var _this$getClassNames3 = _this.getClassNames('exit'),\n className = _this$getClassNames3.className;\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n addClass(node, className);\n\n if (_this.props.onExit) {\n _this.props.onExit(node);\n }\n };\n\n _this.onExiting = function (node) {\n var _this$getClassNames4 = _this.getClassNames('exit'),\n activeClassName = _this$getClassNames4.activeClassName;\n\n _this.reflowAndAddClass(node, activeClassName);\n\n if (_this.props.onExiting) {\n _this.props.onExiting(node);\n }\n };\n\n _this.onExited = function (node) {\n var _this$getClassNames5 = _this.getClassNames('exit'),\n doneClassName = _this$getClassNames5.doneClassName;\n\n _this.removeClasses(node, 'exit');\n\n addClass(node, doneClassName);\n\n if (_this.props.onExited) {\n _this.props.onExited(node);\n }\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + '-' : '';\n var className = isStringClassNames ? prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? className + '-active' : classNames[type + 'Active'];\n var doneClassName = isStringClassNames ? className + '-done' : classNames[type + 'Done'];\n return {\n className: className,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$getClassNames6 = this.getClassNames(type),\n className = _this$getClassNames6.className,\n activeClassName = _this$getClassNames6.activeClassName,\n doneClassName = _this$getClassNames6.doneClassName;\n\n className && removeClass(node, className);\n activeClassName && removeClass(node, activeClassName);\n doneClassName && removeClass(node, doneClassName);\n };\n\n _proto.reflowAndAddClass = function reflowAndAddClass(node, className) {\n // This is for to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n if (className) {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n /* eslint-enable no-unused-expressions */\n\n addClass(node, className);\n }\n };\n\n _proto.render = function render() {\n var props = _extends({}, this.props);\n\n delete props.classNames;\n return _react.default.createElement(_Transition.default, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(_react.default.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, _Transition.default.propTypes, {\n /**\n * The animation classNames applied to the component as it enters, exits or\n * has finished the transition. A single name can be provided and it will be\n * suffixed for each stage: e.g.\n *\n * `classNames=\"fade\"` applies `fade-enter`, `fade-enter-active`,\n * `fade-enter-done`, `fade-exit`, `fade-exit-active`, `fade-exit-done`,\n * `fade-appear`, `fade-appear-active`, and `fade-appear-done`.\n *\n * **Note**: `fade-appear-done` and `fade-enter-done` will _both_ be applied.\n * This allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply an\n * epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: _PropTypes.classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nvar _default = CSSTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = require(\"react-dom\");\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\n/**\n * The `` component is a specialized `Transition` component\n * that animates between two children.\n *\n * ```jsx\n * \n *
    I appear first
    \n *
    I replace the above
    \n *
    \n * ```\n */\nvar ReplaceTransition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(ReplaceTransition, _React$Component);\n\n function ReplaceTransition() {\n var _this;\n\n for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n _args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(_args)) || this;\n\n _this.handleEnter = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _this.handleLifecycle('onEnter', 0, args);\n };\n\n _this.handleEntering = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this.handleLifecycle('onEntering', 0, args);\n };\n\n _this.handleEntered = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this.handleLifecycle('onEntered', 0, args);\n };\n\n _this.handleExit = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n return _this.handleLifecycle('onExit', 1, args);\n };\n\n _this.handleExiting = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n return _this.handleLifecycle('onExiting', 1, args);\n };\n\n _this.handleExited = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n return _this.handleLifecycle('onExited', 1, args);\n };\n\n return _this;\n }\n\n var _proto = ReplaceTransition.prototype;\n\n _proto.handleLifecycle = function handleLifecycle(handler, idx, originalArgs) {\n var _child$props;\n\n var children = this.props.children;\n\n var child = _react.default.Children.toArray(children)[idx];\n\n if (child.props[handler]) (_child$props = child.props)[handler].apply(_child$props, originalArgs);\n if (this.props[handler]) this.props[handler]((0, _reactDom.findDOMNode)(this));\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n inProp = _this$props.in,\n props = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\"]);\n\n var _React$Children$toArr = _react.default.Children.toArray(children),\n first = _React$Children$toArr[0],\n second = _React$Children$toArr[1];\n\n delete props.onEnter;\n delete props.onEntering;\n delete props.onEntered;\n delete props.onExit;\n delete props.onExiting;\n delete props.onExited;\n return _react.default.createElement(_TransitionGroup.default, props, inProp ? _react.default.cloneElement(first, {\n key: 'first',\n onEnter: this.handleEnter,\n onEntering: this.handleEntering,\n onEntered: this.handleEntered\n }) : _react.default.cloneElement(second, {\n key: 'second',\n onEnter: this.handleExit,\n onEntering: this.handleExiting,\n onEntered: this.handleExited\n }));\n };\n\n return ReplaceTransition;\n}(_react.default.Component);\n\nReplaceTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n in: _propTypes.default.bool.isRequired,\n children: function children(props, propName) {\n if (_react.default.Children.count(props[propName]) !== 2) return new Error(\"\\\"\" + propName + \"\\\" must be exactly two transition components.\");\n return null;\n }\n} : {};\nvar _default = ReplaceTransition;\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.EXITING = exports.ENTERED = exports.ENTERING = exports.EXITED = exports.UNMOUNTED = void 0;\n\nvar PropTypes = _interopRequireWildcard(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactDom = _interopRequireDefault(require(\"react-dom\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _PropTypes = require(\"./utils/PropTypes\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar UNMOUNTED = 'unmounted';\nexports.UNMOUNTED = UNMOUNTED;\nvar EXITED = 'exited';\nexports.EXITED = EXITED;\nvar ENTERING = 'entering';\nexports.ENTERING = ENTERING;\nvar ENTERED = 'entered';\nexports.ENTERED = ENTERED;\nvar EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 0 },\n * entered: { opacity: 1 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
    \n * I'm a fade Transition!\n *
    \n * )}\n *
    \n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
    \n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
    \n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nexports.EXITING = EXITING;\n\nvar Transition =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context.transitionGroup; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n var _proto = Transition.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: null // allows for nested Transitions\n\n };\n };\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n }; // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n var node = _reactDom.default.findDOMNode(this);\n\n if (nextStatus === ENTERING) {\n this.performEnter(node, mounting);\n } else {\n this.performExit(node);\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(node, mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context.transitionGroup ? this.context.transitionGroup.isMounting : mounting;\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node);\n });\n return;\n }\n\n this.props.onEnter(node, appearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(node, appearing);\n\n _this2.onTransitionEnd(node, enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(node, appearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit(node) {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts(); // no exit animation skip right to EXITED\n\n if (!exit) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n return;\n }\n\n this.props.onExit(node);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(node);\n\n _this3.onTransitionEnd(node, timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(node);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(node, timeout, handler) {\n this.setNextCallback(handler);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\"]); // filter props for Transtition\n\n\n delete childProps.in;\n delete childProps.mountOnEnter;\n delete childProps.unmountOnExit;\n delete childProps.appear;\n delete childProps.enter;\n delete childProps.exit;\n delete childProps.timeout;\n delete childProps.addEndListener;\n delete childProps.onEnter;\n delete childProps.onEntering;\n delete childProps.onEntered;\n delete childProps.onExit;\n delete childProps.onExiting;\n delete childProps.onExited;\n\n if (typeof children === 'function') {\n return children(status, childProps);\n }\n\n var child = _react.default.Children.only(children);\n\n return _react.default.cloneElement(child, childProps);\n };\n\n return Transition;\n}(_react.default.Component);\n\nTransition.contextTypes = {\n transitionGroup: PropTypes.object\n};\nTransition.childContextTypes = {\n transitionGroup: function transitionGroup() {}\n};\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`, `'unmounted'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * Normally a component is not transitioned if it is shown when the `` component mounts.\n * If you want to transition on the first mount set `appear` to `true`, and the\n * component will transition in as soon as the `` mounts.\n *\n * > Note: there are no specific \"appear\" states. `appear` only adds an additional `enter` transition.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = _PropTypes.timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. **Note:** Timeouts are still used as a fallback if provided.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func // Name the function so it is clearer in the documentation\n\n} : {};\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = 0;\nTransition.EXITED = 1;\nTransition.ENTERING = 2;\nTransition.ENTERED = 3;\nTransition.EXITING = 4;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(Transition);\n\nexports.default = _default;","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reactLifecyclesCompat = require(\"react-lifecycles-compat\");\n\nvar _ChildMapping = require(\"./utils/ChildMapping\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n /**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\n};\n\nvar TransitionGroup =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_assertThisInitialized(_this))); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.getChildContext = function getChildContext() {\n return {\n transitionGroup: {\n isMounting: !this.appeared\n }\n };\n };\n\n _proto.componentDidMount = function componentDidMount() {\n this.appeared = true;\n this.mounted = true;\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? (0, _ChildMapping.getInitialChildMapping)(nextProps, handleExited) : (0, _ChildMapping.getNextChildMapping)(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n };\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = (0, _ChildMapping.getChildMapping)(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return children;\n }\n\n return _react.default.createElement(Component, props, children);\n };\n\n return TransitionGroup;\n}(_react.default.Component);\n\nTransitionGroup.childContextTypes = {\n transitionGroup: _propTypes.default.object.isRequired\n};\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
    ` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
    ` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: _propTypes.default.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: _propTypes.default.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: _propTypes.default.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: _propTypes.default.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: _propTypes.default.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\n\nvar _default = (0, _reactLifecyclesCompat.polyfill)(TransitionGroup);\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nvar _CSSTransition = _interopRequireDefault(require(\"./CSSTransition\"));\n\nvar _ReplaceTransition = _interopRequireDefault(require(\"./ReplaceTransition\"));\n\nvar _TransitionGroup = _interopRequireDefault(require(\"./TransitionGroup\"));\n\nvar _Transition = _interopRequireDefault(require(\"./Transition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = {\n Transition: _Transition.default,\n TransitionGroup: _TransitionGroup.default,\n ReplaceTransition: _ReplaceTransition.default,\n CSSTransition: _CSSTransition.default\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.getChildMapping = getChildMapping;\nexports.mergeChildMappings = mergeChildMappings;\nexports.getInitialChildMapping = getInitialChildMapping;\nexports.getNextChildMapping = getNextChildMapping;\n\nvar _react = require(\"react\");\n\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\nfunction getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && (0, _react.isValidElement)(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) _react.Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\n\nfunction mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nfunction getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\n\nfunction getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!(0, _react.isValidElement)(child)) return;\n var hasPrev = key in prevChildMapping;\n var hasNext = key in nextChildMapping;\n var prevChild = prevChildMapping[key];\n var isLeaving = (0, _react.isValidElement)(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = (0, _react.cloneElement)(child, {\n in: false\n });\n } else if (hasNext && hasPrev && (0, _react.isValidElement)(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = (0, _react.cloneElement)(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeoutsShape = void 0;\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar timeoutsShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.shape({\n enter: _propTypes.default.number,\n exit: _propTypes.default.number,\n appear: _propTypes.default.number\n}).isRequired]) : null;\nexports.timeoutsShape = timeoutsShape;\nvar classNamesShape = process.env.NODE_ENV !== 'production' ? _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.shape({\n enter: _propTypes.default.string,\n exit: _propTypes.default.string,\n active: _propTypes.default.string\n}), _propTypes.default.shape({\n enter: _propTypes.default.string,\n enterDone: _propTypes.default.string,\n enterActive: _propTypes.default.string,\n exit: _propTypes.default.string,\n exitDone: _propTypes.default.string,\n exitActive: _propTypes.default.string\n})]) : null;\nexports.classNamesShape = classNamesShape;","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport LocaleUtils from './LocaleUtils';\n\nimport { ENTER } from './keys';\n\nexport default class Caption extends Component {\n static propTypes = {\n date: PropTypes.instanceOf(Date),\n months: PropTypes.arrayOf(PropTypes.string),\n locale: PropTypes.string,\n localeUtils: PropTypes.object,\n onClick: PropTypes.func,\n classNames: PropTypes.shape({\n caption: PropTypes.string.isRequired,\n }).isRequired,\n };\n\n static defaultProps = {\n localeUtils: LocaleUtils,\n };\n\n constructor(props) {\n super(props);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n }\n\n shouldComponentUpdate(nextProps) {\n return (\n nextProps.locale !== this.props.locale ||\n nextProps.classNames !== this.props.classNames ||\n nextProps.date.getMonth() !== this.props.date.getMonth() ||\n nextProps.date.getFullYear() !== this.props.date.getFullYear()\n );\n }\n\n handleKeyUp(e) {\n if (e.keyCode === ENTER) {\n this.props.onClick(e);\n }\n }\n\n render() {\n const {\n classNames,\n date,\n months,\n locale,\n localeUtils,\n onClick,\n } = this.props;\n return (\n
    \n
    \n {months\n ? `${months[date.getMonth()]} ${date.getFullYear()}`\n : localeUtils.formatMonthTitle(date, locale)}\n
    \n
    \n );\n }\n}\n","/**\n * Clone a date object.\n *\n * @export\n * @param {Date} d The date to clone\n * @return {Date} The cloned date\n */\nexport function clone(d) {\n return new Date(d.getTime());\n}\n\n/**\n * Return `true` if the passed value is a valid JavaScript Date object.\n *\n * @export\n * @param {any} value\n * @returns {Boolean}\n */\nexport function isDate(value) {\n return value instanceof Date && !isNaN(value.valueOf());\n}\n\n/**\n * Return `d` as a new date with `n` months added.\n *\n * @export\n * @param {Date} d\n * @param {number} n\n */\nexport function addMonths(d, n) {\n const newDate = clone(d);\n newDate.setMonth(d.getMonth() + n);\n return newDate;\n}\n\n/**\n * Return `true` if two dates are the same day, ignoring the time.\n *\n * @export\n * @param {Date} d1\n * @param {Date} d2\n * @return {Boolean}\n */\nexport function isSameDay(d1, d2) {\n if (!d1 || !d2) {\n return false;\n }\n return (\n d1.getDate() === d2.getDate() &&\n d1.getMonth() === d2.getMonth() &&\n d1.getFullYear() === d2.getFullYear()\n );\n}\n\n/**\n * Return `true` if two dates fall in the same month.\n *\n * @export\n * @param {Date} d1\n * @param {Date} d2\n * @return {Boolean}\n */\nexport function isSameMonth(d1, d2) {\n if (!d1 || !d2) {\n return false;\n }\n return (\n d1.getMonth() === d2.getMonth() && d1.getFullYear() === d2.getFullYear()\n );\n}\n\n/**\n * Returns `true` if the first day is before the second day.\n *\n * @export\n * @param {Date} d1\n * @param {Date} d2\n * @returns {Boolean}\n */\nexport function isDayBefore(d1, d2) {\n const day1 = clone(d1).setHours(0, 0, 0, 0);\n const day2 = clone(d2).setHours(0, 0, 0, 0);\n return day1 < day2;\n}\n\n/**\n * Returns `true` if the first day is after the second day.\n *\n * @export\n * @param {Date} d1\n * @param {Date} d2\n * @returns {Boolean}\n */\nexport function isDayAfter(d1, d2) {\n const day1 = clone(d1).setHours(0, 0, 0, 0);\n const day2 = clone(d2).setHours(0, 0, 0, 0);\n return day1 > day2;\n}\n\n/**\n * Return `true` if a day is in the past, e.g. yesterday or any day\n * before yesterday.\n *\n * @export\n * @param {Date} d\n * @return {Boolean}\n */\nexport function isPastDay(d) {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return isDayBefore(d, today);\n}\n\n/**\n * Return `true` if a day is in the future, e.g. tomorrow or any day\n * after tomorrow.\n *\n * @export\n * @param {Date} d\n * @return {Boolean}\n */\nexport function isFutureDay(d) {\n const tomorrow = new Date(new Date().getTime() + 24 * 60 * 60 * 1000);\n tomorrow.setHours(0, 0, 0, 0);\n return d >= tomorrow;\n}\n\n/**\n * Return `true` if day `d` is between days `d1` and `d2`,\n * without including them.\n *\n * @export\n * @param {Date} d\n * @param {Date} d1\n * @param {Date} d2\n * @return {Boolean}\n */\nexport function isDayBetween(d, d1, d2) {\n const date = clone(d);\n date.setHours(0, 0, 0, 0);\n return (\n (isDayAfter(date, d1) && isDayBefore(date, d2)) ||\n (isDayAfter(date, d2) && isDayBefore(date, d1))\n );\n}\n\n/**\n * Add a day to a range and return a new range. A range is an object with\n * `from` and `to` days.\n *\n * @export\n * @param {Date} day\n * @param {Object} range\n * @return {Object} Returns a new range object\n */\nexport function addDayToRange(day, range = { from: null, to: null }) {\n let { from, to } = range;\n if (!from) {\n from = day;\n } else if (from && to && isSameDay(from, to) && isSameDay(day, from)) {\n from = null;\n to = null;\n } else if (to && isDayBefore(day, from)) {\n from = day;\n } else if (to && isSameDay(day, to)) {\n from = day;\n to = day;\n } else {\n to = day;\n if (isDayBefore(to, from)) {\n to = from;\n from = day;\n }\n }\n\n return { from, to };\n}\n\n/**\n * Return `true` if a day is included in a range of days.\n *\n * @export\n * @param {Date} day\n * @param {Object} range\n * @return {Boolean}\n */\nexport function isDayInRange(day, range) {\n const { from, to } = range;\n return (\n (from && isSameDay(day, from)) ||\n (to && isSameDay(day, to)) ||\n (from && to && isDayBetween(day, from, to))\n );\n}\n\n/**\n * Return the year's week number (as per ISO, i.e. with the week starting from monday)\n * for the given day.\n *\n * @export\n * @param {Date} day\n * @returns {Number}\n */\nexport function getWeekNumber(day) {\n const date = clone(day);\n date.setHours(0, 0, 0);\n date.setDate(date.getDate() + 4 - (date.getDay() || 7));\n return Math.ceil(\n ((date - new Date(date.getFullYear(), 0, 1)) / 8.64e7 + 1) / 7\n );\n}\n\nexport default {\n addDayToRange,\n addMonths,\n clone,\n getWeekNumber,\n isDate,\n isDayAfter,\n isDayBefore,\n isDayBetween,\n isDayInRange,\n isFutureDay,\n isPastDay,\n isSameDay,\n isSameMonth,\n};\n","/* eslint-disable jsx-a11y/no-static-element-interactions, react/forbid-prop-types */\n\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { isSameDay } from './DateUtils';\nimport { hasOwnProp } from './Helpers';\n\nimport defaultClassNames from './classNames';\n\nfunction handleEvent(handler, day, modifiers) {\n if (!handler) {\n return undefined;\n }\n return e => {\n e.persist();\n handler(day, modifiers, e);\n };\n}\n\nexport default class Day extends Component {\n static propTypes = {\n classNames: PropTypes.shape({\n day: PropTypes.string.isRequired,\n }).isRequired,\n\n day: PropTypes.instanceOf(Date).isRequired,\n children: PropTypes.node.isRequired,\n\n ariaDisabled: PropTypes.bool,\n ariaLabel: PropTypes.string,\n ariaSelected: PropTypes.bool,\n empty: PropTypes.bool,\n modifiers: PropTypes.object,\n modifiersStyles: PropTypes.object,\n onClick: PropTypes.func,\n onKeyDown: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseDown: PropTypes.func,\n onMouseUp: PropTypes.func,\n onTouchEnd: PropTypes.func,\n onTouchStart: PropTypes.func,\n onFocus: PropTypes.func,\n tabIndex: PropTypes.number,\n };\n\n static defaultProps = {\n tabIndex: -1,\n };\n\n static defaultProps = {\n modifiers: {},\n modifiersStyles: {},\n empty: false,\n };\n\n shouldComponentUpdate(nextProps) {\n const propNames = Object.keys(this.props);\n const nextPropNames = Object.keys(nextProps);\n if (propNames.length !== nextPropNames.length) {\n return true;\n }\n return propNames.some(name => {\n if (\n name === 'modifiers' ||\n name === 'modifiersStyles' ||\n name === 'classNames'\n ) {\n const prop = this.props[name];\n const nextProp = nextProps[name];\n const modifiers = Object.keys(prop);\n const nextModifiers = Object.keys(nextProp);\n if (modifiers.length !== nextModifiers.length) {\n return true;\n }\n return modifiers.some(\n mod => !hasOwnProp(nextProp, mod) || prop[mod] !== nextProp[mod]\n );\n }\n if (name === 'day') {\n return !isSameDay(this.props[name], nextProps[name]);\n }\n return (\n !hasOwnProp(nextProps, name) || this.props[name] !== nextProps[name]\n );\n });\n }\n\n render() {\n const {\n classNames,\n modifiersStyles,\n day,\n tabIndex,\n empty,\n modifiers,\n onMouseEnter,\n onMouseLeave,\n onMouseUp,\n onMouseDown,\n onClick,\n onKeyDown,\n onTouchStart,\n onTouchEnd,\n onFocus,\n ariaLabel,\n ariaDisabled,\n ariaSelected,\n children,\n } = this.props;\n\n let className = classNames.day;\n if (classNames !== defaultClassNames) {\n // When using CSS modules prefix the modifier as required by the BEM syntax\n className += ` ${Object.keys(modifiers).join(' ')}`;\n } else {\n className += Object.keys(modifiers)\n .map(modifier => ` ${className}--${modifier}`)\n .join('');\n }\n\n let style;\n if (modifiersStyles) {\n Object.keys(modifiers)\n .filter(modifier => !!modifiersStyles[modifier])\n .forEach(modifier => {\n style = { ...style, ...modifiersStyles[modifier] };\n });\n }\n\n if (empty) {\n return
    ;\n }\n return (\n \n {children}\n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Caption from './Caption';\nimport Navbar from './Navbar';\nimport Month from './Month';\nimport Weekday from './Weekday';\n\nimport * as Helpers from './Helpers';\nimport * as DateUtils from './DateUtils';\nimport * as LocaleUtils from './LocaleUtils';\nimport * as ModifiersUtils from './ModifiersUtils';\nimport classNames from './classNames';\n\nimport { ENTER, SPACE, LEFT, UP, DOWN, RIGHT } from './keys';\n\nexport class DayPicker extends Component {\n dayPicker = null;\n\n static propTypes = {\n // Rendering months\n initialMonth: PropTypes.instanceOf(Date),\n month: PropTypes.instanceOf(Date),\n numberOfMonths: PropTypes.number,\n fromMonth: PropTypes.instanceOf(Date),\n toMonth: PropTypes.instanceOf(Date),\n canChangeMonth: PropTypes.bool,\n reverseMonths: PropTypes.bool,\n pagedNavigation: PropTypes.bool,\n todayButton: PropTypes.string,\n showWeekNumbers: PropTypes.bool,\n showWeekDays: PropTypes.bool,\n\n // Modifiers\n selectedDays: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.array,\n ]),\n disabledDays: PropTypes.oneOfType([\n PropTypes.object,\n PropTypes.func,\n PropTypes.array,\n ]),\n\n modifiers: PropTypes.object,\n modifiersStyles: PropTypes.object,\n\n // Localization\n dir: PropTypes.string,\n firstDayOfWeek: PropTypes.oneOf([0, 1, 2, 3, 4, 5, 6]),\n labels: PropTypes.shape({\n nextMonth: PropTypes.string.isRequired,\n previousMonth: PropTypes.string.isRequired,\n }),\n locale: PropTypes.string,\n localeUtils: PropTypes.shape({\n formatMonthTitle: PropTypes.func,\n formatWeekdayShort: PropTypes.func,\n formatWeekdayLong: PropTypes.func,\n getFirstDayOfWeek: PropTypes.func,\n }),\n months: PropTypes.arrayOf(PropTypes.string),\n weekdaysLong: PropTypes.arrayOf(PropTypes.string),\n weekdaysShort: PropTypes.arrayOf(PropTypes.string),\n\n // Customization\n showOutsideDays: PropTypes.bool,\n enableOutsideDaysClick: PropTypes.bool,\n fixedWeeks: PropTypes.bool,\n\n // CSS and HTML\n classNames: PropTypes.shape({\n body: PropTypes.string,\n container: PropTypes.string,\n day: PropTypes.string.isRequired,\n disabled: PropTypes.string.isRequired,\n footer: PropTypes.string,\n interactionDisabled: PropTypes.string,\n months: PropTypes.string,\n month: PropTypes.string,\n navBar: PropTypes.string,\n outside: PropTypes.string.isRequired,\n selected: PropTypes.string.isRequired,\n today: PropTypes.string.isRequired,\n todayButton: PropTypes.string,\n week: PropTypes.string,\n wrapper: PropTypes.string,\n }),\n className: PropTypes.string,\n containerProps: PropTypes.object,\n tabIndex: PropTypes.number,\n\n // Custom elements\n renderDay: PropTypes.func,\n renderWeek: PropTypes.func,\n weekdayElement: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.instanceOf(Component),\n ]),\n navbarElement: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.instanceOf(Component),\n ]),\n captionElement: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.instanceOf(Component),\n ]),\n\n // Events\n onBlur: PropTypes.func,\n onFocus: PropTypes.func,\n onKeyDown: PropTypes.func,\n onDayClick: PropTypes.func,\n onDayKeyDown: PropTypes.func,\n onDayMouseEnter: PropTypes.func,\n onDayMouseLeave: PropTypes.func,\n onDayMouseDown: PropTypes.func,\n onDayMouseUp: PropTypes.func,\n onDayTouchStart: PropTypes.func,\n onDayTouchEnd: PropTypes.func,\n onDayFocus: PropTypes.func,\n onMonthChange: PropTypes.func,\n onCaptionClick: PropTypes.func,\n onWeekClick: PropTypes.func,\n onTodayButtonClick: PropTypes.func,\n };\n\n static defaultProps = {\n classNames,\n tabIndex: 0,\n numberOfMonths: 1,\n labels: {\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n },\n locale: 'en',\n localeUtils: LocaleUtils,\n showOutsideDays: false,\n enableOutsideDaysClick: true,\n fixedWeeks: false,\n canChangeMonth: true,\n reverseMonths: false,\n pagedNavigation: false,\n showWeekNumbers: false,\n showWeekDays: true,\n renderDay: day => day.getDate(),\n renderWeek: weekNumber => weekNumber,\n weekdayElement: ,\n navbarElement: ,\n captionElement: ,\n };\n\n constructor(props) {\n super(props);\n\n const currentMonth = this.getCurrentMonthFromProps(props);\n this.state = { currentMonth };\n }\n\n componentDidUpdate(prevProps) {\n // Changing the `month` props means changing the current displayed month\n if (\n prevProps.month !== this.props.month &&\n !DateUtils.isSameMonth(prevProps.month, this.props.month)\n ) {\n const currentMonth = this.getCurrentMonthFromProps(this.props);\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ currentMonth });\n }\n }\n\n static VERSION = '7.4.8';\n\n /**\n * Return the month to be shown in the calendar based on the component props.\n *\n * @param {Object} props\n * @returns Date\n * @memberof DayPicker\n * @private\n */\n getCurrentMonthFromProps(props) {\n const initialMonth = Helpers.startOfMonth(\n props.month || props.initialMonth || new Date()\n );\n let currentMonth = initialMonth;\n\n if (props.pagedNavigation && props.numberOfMonths > 1 && props.fromMonth) {\n const fromMonth = Helpers.startOfMonth(props.fromMonth);\n const diffInMonths = Helpers.getMonthsDiff(fromMonth, currentMonth);\n currentMonth = DateUtils.addMonths(\n fromMonth,\n Math.floor(diffInMonths / props.numberOfMonths) * props.numberOfMonths\n );\n } else if (\n props.toMonth &&\n props.numberOfMonths > 1 &&\n Helpers.getMonthsDiff(currentMonth, props.toMonth) <= 0\n ) {\n currentMonth = DateUtils.addMonths(\n Helpers.startOfMonth(props.toMonth),\n 1 - this.props.numberOfMonths\n );\n }\n return currentMonth;\n }\n\n getNextNavigableMonth() {\n return DateUtils.addMonths(\n this.state.currentMonth,\n this.props.numberOfMonths\n );\n }\n\n getPreviousNavigableMonth() {\n return DateUtils.addMonths(this.state.currentMonth, -1);\n }\n\n allowPreviousMonth() {\n const previousMonth = DateUtils.addMonths(this.state.currentMonth, -1);\n return this.allowMonth(previousMonth);\n }\n\n allowNextMonth() {\n const nextMonth = DateUtils.addMonths(\n this.state.currentMonth,\n this.props.numberOfMonths\n );\n return this.allowMonth(nextMonth);\n }\n\n allowMonth(d) {\n const { fromMonth, toMonth, canChangeMonth } = this.props;\n if (\n !canChangeMonth ||\n (fromMonth && Helpers.getMonthsDiff(fromMonth, d) < 0) ||\n (toMonth && Helpers.getMonthsDiff(toMonth, d) > 0)\n ) {\n return false;\n }\n return true;\n }\n\n allowYearChange() {\n return this.props.canChangeMonth;\n }\n\n showMonth(d, callback) {\n if (!this.allowMonth(d)) {\n return;\n }\n this.setState({ currentMonth: Helpers.startOfMonth(d) }, () => {\n if (callback) {\n callback();\n }\n if (this.props.onMonthChange) {\n this.props.onMonthChange(this.state.currentMonth);\n }\n });\n }\n\n showNextMonth = callback => {\n if (!this.allowNextMonth()) {\n return;\n }\n const deltaMonths = this.props.pagedNavigation\n ? this.props.numberOfMonths\n : 1;\n const nextMonth = DateUtils.addMonths(this.state.currentMonth, deltaMonths);\n this.showMonth(nextMonth, callback);\n };\n\n showPreviousMonth = callback => {\n if (!this.allowPreviousMonth()) {\n return;\n }\n const deltaMonths = this.props.pagedNavigation\n ? this.props.numberOfMonths\n : 1;\n const previousMonth = DateUtils.addMonths(\n this.state.currentMonth,\n -deltaMonths\n );\n this.showMonth(previousMonth, callback);\n };\n\n showNextYear() {\n if (!this.allowYearChange()) {\n return;\n }\n const nextMonth = DateUtils.addMonths(this.state.currentMonth, 12);\n this.showMonth(nextMonth);\n }\n\n showPreviousYear() {\n if (!this.allowYearChange()) {\n return;\n }\n const nextMonth = DateUtils.addMonths(this.state.currentMonth, -12);\n this.showMonth(nextMonth);\n }\n\n focus() {\n this.wrapper.focus();\n }\n\n focusFirstDayOfMonth() {\n Helpers.getDayNodes(this.dayPicker, this.props.classNames)[0].focus();\n }\n\n focusLastDayOfMonth() {\n const dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n dayNodes[dayNodes.length - 1].focus();\n }\n\n focusPreviousDay(dayNode) {\n const dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n const dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n if (dayNodeIndex === -1) return;\n if (dayNodeIndex === 0) {\n this.showPreviousMonth(() => this.focusLastDayOfMonth());\n } else {\n dayNodes[dayNodeIndex - 1].focus();\n }\n }\n\n focusNextDay(dayNode) {\n const dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n const dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n if (dayNodeIndex === -1) return;\n if (dayNodeIndex === dayNodes.length - 1) {\n this.showNextMonth(() => this.focusFirstDayOfMonth());\n } else {\n dayNodes[dayNodeIndex + 1].focus();\n }\n }\n\n focusNextWeek(dayNode) {\n const dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n const dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n const isInLastWeekOfMonth = dayNodeIndex > dayNodes.length - 8;\n\n if (isInLastWeekOfMonth) {\n this.showNextMonth(() => {\n const daysAfterIndex = dayNodes.length - dayNodeIndex;\n const nextMonthDayNodeIndex = 7 - daysAfterIndex;\n Helpers.getDayNodes(this.dayPicker, this.props.classNames)[\n nextMonthDayNodeIndex\n ].focus();\n });\n } else {\n dayNodes[dayNodeIndex + 7].focus();\n }\n }\n\n focusPreviousWeek(dayNode) {\n const dayNodes = Helpers.getDayNodes(this.dayPicker, this.props.classNames);\n const dayNodeIndex = Helpers.nodeListToArray(dayNodes).indexOf(dayNode);\n const isInFirstWeekOfMonth = dayNodeIndex <= 6;\n\n if (isInFirstWeekOfMonth) {\n this.showPreviousMonth(() => {\n const previousMonthDayNodes = Helpers.getDayNodes(\n this.dayPicker,\n this.props.classNames\n );\n const startOfLastWeekOfMonth = previousMonthDayNodes.length - 7;\n const previousMonthDayNodeIndex = startOfLastWeekOfMonth + dayNodeIndex;\n previousMonthDayNodes[previousMonthDayNodeIndex].focus();\n });\n } else {\n dayNodes[dayNodeIndex - 7].focus();\n }\n }\n\n // Event handlers\n\n handleKeyDown = e => {\n e.persist();\n\n switch (e.keyCode) {\n case LEFT:\n if (this.props.dir === 'rtl') {\n this.showNextMonth();\n } else {\n this.showPreviousMonth();\n }\n Helpers.cancelEvent(e);\n break;\n case RIGHT:\n if (this.props.dir === 'rtl') {\n this.showPreviousMonth();\n } else {\n this.showNextMonth();\n }\n Helpers.cancelEvent(e);\n break;\n case UP:\n this.showPreviousYear();\n Helpers.cancelEvent(e);\n break;\n case DOWN:\n this.showNextYear();\n Helpers.cancelEvent(e);\n break;\n default:\n break;\n }\n\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n handleDayKeyDown = (day, modifiers, e) => {\n e.persist();\n\n switch (e.keyCode) {\n case LEFT:\n Helpers.cancelEvent(e);\n if (this.props.dir === 'rtl') {\n this.focusNextDay(e.target);\n } else {\n this.focusPreviousDay(e.target);\n }\n break;\n case RIGHT:\n Helpers.cancelEvent(e);\n if (this.props.dir === 'rtl') {\n this.focusPreviousDay(e.target);\n } else {\n this.focusNextDay(e.target);\n }\n break;\n case UP:\n Helpers.cancelEvent(e);\n this.focusPreviousWeek(e.target);\n break;\n case DOWN:\n Helpers.cancelEvent(e);\n this.focusNextWeek(e.target);\n break;\n case ENTER:\n case SPACE:\n Helpers.cancelEvent(e);\n if (this.props.onDayClick) {\n this.handleDayClick(day, modifiers, e);\n }\n break;\n default:\n break;\n }\n if (this.props.onDayKeyDown) {\n this.props.onDayKeyDown(day, modifiers, e);\n }\n };\n\n handleDayClick = (day, modifiers, e) => {\n e.persist();\n\n if (\n modifiers[this.props.classNames.outside] &&\n this.props.enableOutsideDaysClick\n ) {\n this.handleOutsideDayClick(day);\n }\n if (this.props.onDayClick) {\n this.props.onDayClick(day, modifiers, e);\n }\n };\n\n handleOutsideDayClick(day) {\n const { currentMonth } = this.state;\n const { numberOfMonths } = this.props;\n const diffInMonths = Helpers.getMonthsDiff(currentMonth, day);\n if (diffInMonths > 0 && diffInMonths >= numberOfMonths) {\n this.showNextMonth();\n } else if (diffInMonths < 0) {\n this.showPreviousMonth();\n }\n }\n\n handleTodayButtonClick = e => {\n const today = new Date();\n const month = new Date(today.getFullYear(), today.getMonth());\n this.showMonth(month);\n e.target.blur();\n if (this.props.onTodayButtonClick) {\n e.persist();\n this.props.onTodayButtonClick(\n new Date(today.getFullYear(), today.getMonth(), today.getDate()),\n ModifiersUtils.getModifiersForDay(today, this.props.modifiers),\n e\n );\n }\n };\n\n renderNavbar() {\n const {\n labels,\n locale,\n localeUtils,\n canChangeMonth,\n navbarElement,\n ...attributes\n } = this.props;\n\n if (!canChangeMonth) return null;\n\n const props = {\n month: this.state.currentMonth,\n classNames: this.props.classNames,\n className: this.props.classNames.navBar,\n nextMonth: this.getNextNavigableMonth(),\n previousMonth: this.getPreviousNavigableMonth(),\n showPreviousButton: this.allowPreviousMonth(),\n showNextButton: this.allowNextMonth(),\n onNextClick: this.showNextMonth,\n onPreviousClick: this.showPreviousMonth,\n dir: attributes.dir,\n labels,\n locale,\n localeUtils,\n };\n return React.isValidElement(navbarElement)\n ? React.cloneElement(navbarElement, props)\n : React.createElement(navbarElement, props);\n }\n\n renderMonths() {\n const months = [];\n const firstDayOfWeek = Helpers.getFirstDayOfWeekFromProps(this.props);\n for (let i = 0; i < this.props.numberOfMonths; i += 1) {\n const month = DateUtils.addMonths(this.state.currentMonth, i);\n months.push(\n \n );\n }\n\n if (this.props.reverseMonths) {\n months.reverse();\n }\n return months;\n }\n\n renderFooter() {\n if (this.props.todayButton) {\n return (\n
    \n {this.renderTodayButton()}\n
    \n );\n }\n return null;\n }\n\n renderTodayButton() {\n return (\n \n {this.props.todayButton}\n \n );\n }\n\n render() {\n let className = this.props.classNames.container;\n\n if (!this.props.onDayClick) {\n className = `${className} ${this.props.classNames.interactionDisabled}`;\n }\n if (this.props.className) {\n className = `${className} ${this.props.className}`;\n }\n return (\n (this.dayPicker = el)}\n lang={this.props.locale}\n >\n (this.wrapper = el)}\n tabIndex={\n this.props.canChangeMonth &&\n typeof this.props.tabIndex !== 'undefined'\n ? this.props.tabIndex\n : -1\n }\n onKeyDown={this.handleKeyDown}\n onFocus={this.props.onFocus}\n onBlur={this.props.onBlur}\n >\n {this.renderNavbar()}\n
    \n {this.renderMonths()}\n
    \n {this.renderFooter()}\n
    \n
    \n );\n }\n}\n\nDayPicker.DateUtils = DateUtils;\nDayPicker.LocaleUtils = LocaleUtils;\nDayPicker.ModifiersUtils = ModifiersUtils;\n\nexport { DateUtils, LocaleUtils, ModifiersUtils };\n\nexport default DayPicker;\n","import { clone } from './DateUtils';\nimport { getFirstDayOfWeek } from './LocaleUtils';\nimport defaultClassNames from './classNames';\n\nexport function cancelEvent(e) {\n e.preventDefault();\n e.stopPropagation();\n}\n\nexport function getFirstDayOfMonth(d) {\n return new Date(d.getFullYear(), d.getMonth(), 1, 12);\n}\n\nexport function getDaysInMonth(d) {\n const resultDate = getFirstDayOfMonth(d);\n\n resultDate.setMonth(resultDate.getMonth() + 1);\n resultDate.setDate(resultDate.getDate() - 1);\n\n return resultDate.getDate();\n}\n\nexport function getModifiersFromProps(props) {\n const modifiers = { ...props.modifiers };\n if (props.selectedDays) {\n modifiers[props.classNames.selected] = props.selectedDays;\n }\n if (props.disabledDays) {\n modifiers[props.classNames.disabled] = props.disabledDays;\n }\n return modifiers;\n}\n\nexport function getFirstDayOfWeekFromProps(props) {\n const { firstDayOfWeek, locale = 'en', localeUtils = {} } = props;\n if (!isNaN(firstDayOfWeek)) {\n return firstDayOfWeek;\n }\n if (localeUtils.getFirstDayOfWeek) {\n return localeUtils.getFirstDayOfWeek(locale);\n }\n return 0;\n}\n\nexport function isRangeOfDates(value) {\n return !!(value && value.from && value.to);\n}\n\nexport function getMonthsDiff(d1, d2) {\n return (\n d2.getMonth() - d1.getMonth() + 12 * (d2.getFullYear() - d1.getFullYear())\n );\n}\n\nexport function getWeekArray(\n d,\n firstDayOfWeek = getFirstDayOfWeek(),\n fixedWeeks\n) {\n const daysInMonth = getDaysInMonth(d);\n const dayArray = [];\n\n let week = [];\n const weekArray = [];\n\n for (let i = 1; i <= daysInMonth; i += 1) {\n dayArray.push(new Date(d.getFullYear(), d.getMonth(), i, 12));\n }\n\n dayArray.forEach(day => {\n if (week.length > 0 && day.getDay() === firstDayOfWeek) {\n weekArray.push(week);\n week = [];\n }\n week.push(day);\n if (dayArray.indexOf(day) === dayArray.length - 1) {\n weekArray.push(week);\n }\n });\n\n // unshift days to start the first week\n const firstWeek = weekArray[0];\n for (let i = 7 - firstWeek.length; i > 0; i -= 1) {\n const outsideDate = clone(firstWeek[0]);\n outsideDate.setDate(firstWeek[0].getDate() - 1);\n firstWeek.unshift(outsideDate);\n }\n\n // push days until the end of the last week\n const lastWeek = weekArray[weekArray.length - 1];\n for (let i = lastWeek.length; i < 7; i += 1) {\n const outsideDate = clone(lastWeek[lastWeek.length - 1]);\n outsideDate.setDate(lastWeek[lastWeek.length - 1].getDate() + 1);\n lastWeek.push(outsideDate);\n }\n\n // add extra weeks to reach 6 weeks\n if (fixedWeeks && weekArray.length < 6) {\n let lastExtraWeek;\n\n for (let i = weekArray.length; i < 6; i += 1) {\n lastExtraWeek = weekArray[weekArray.length - 1];\n const lastDay = lastExtraWeek[lastExtraWeek.length - 1];\n const extraWeek = [];\n\n for (let j = 0; j < 7; j += 1) {\n const outsideDate = clone(lastDay);\n outsideDate.setDate(lastDay.getDate() + j + 1);\n extraWeek.push(outsideDate);\n }\n\n weekArray.push(extraWeek);\n }\n }\n\n return weekArray;\n}\n\nexport function startOfMonth(d) {\n const newDate = clone(d);\n newDate.setDate(1);\n newDate.setHours(12, 0, 0, 0); // always set noon to avoid time zone issues\n return newDate;\n}\n\nexport function getDayNodes(node, classNames) {\n let outsideClassName;\n if (classNames === defaultClassNames) {\n // When using CSS modules prefix the modifier as required by the BEM syntax\n outsideClassName = `${classNames.day}--${classNames.outside}`;\n } else {\n outsideClassName = `${classNames.outside}`;\n }\n const dayQuery = classNames.day.replace(/ /g, '.');\n const outsideDayQuery = outsideClassName.replace(/ /g, '.');\n const selector = `.${dayQuery}:not(.${outsideDayQuery})`;\n return node.querySelectorAll(selector);\n}\n\nexport function nodeListToArray(nodeList) {\n return Array.prototype.slice.call(nodeList, 0);\n}\n\nexport function hasOwnProp(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","const WEEKDAYS_LONG = [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday',\n];\n\nconst WEEKDAYS_SHORT = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n\nconst MONTHS = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n];\n\nexport function formatDay(day) {\n return day.toDateString();\n}\n\nexport function formatMonthTitle(d) {\n return `${MONTHS[d.getMonth()]} ${d.getFullYear()}`;\n}\n\nexport function formatWeekdayShort(i) {\n return WEEKDAYS_SHORT[i];\n}\n\nexport function formatWeekdayLong(i) {\n return WEEKDAYS_LONG[i];\n}\n\nexport function getFirstDayOfWeek() {\n return 0;\n}\n\nexport function getMonths() {\n return MONTHS;\n}\n\nexport default {\n formatDay,\n formatMonthTitle,\n formatWeekdayShort,\n formatWeekdayLong,\n getFirstDayOfWeek,\n getMonths,\n};\n","import { isDayAfter, isDayBefore, isDayInRange, isSameDay } from './DateUtils';\nimport { isRangeOfDates } from './Helpers';\n\n/**\n * Return `true` if a date matches the specified modifier.\n *\n * @export\n * @param {Date} day\n * @param {Any} modifier\n * @return {Boolean}\n */\nexport function dayMatchesModifier(day, modifier) {\n if (!modifier) {\n return false;\n }\n const arr = Array.isArray(modifier) ? modifier : [modifier];\n return arr.some(mod => {\n if (!mod) {\n return false;\n }\n if (mod instanceof Date) {\n return isSameDay(day, mod);\n }\n if (isRangeOfDates(mod)) {\n return isDayInRange(day, mod);\n }\n if (mod.after && mod.before && isDayAfter(mod.before, mod.after)) {\n return isDayAfter(day, mod.after) && isDayBefore(day, mod.before);\n }\n if (\n mod.after &&\n mod.before &&\n (isDayAfter(mod.after, mod.before) || isSameDay(mod.after, mod.before))\n ) {\n return isDayAfter(day, mod.after) || isDayBefore(day, mod.before);\n }\n if (mod.after) {\n return isDayAfter(day, mod.after);\n }\n if (mod.before) {\n return isDayBefore(day, mod.before);\n }\n if (mod.daysOfWeek) {\n return mod.daysOfWeek.some(dayOfWeek => day.getDay() === dayOfWeek);\n }\n if (typeof mod === 'function') {\n return mod(day);\n }\n return false;\n });\n}\n\n/**\n * Return the modifiers matching the given day for the given\n * object of modifiers.\n *\n * @export\n * @param {Date} day\n * @param {Object} [modifiersObj={}]\n * @return {Array}\n */\nexport function getModifiersForDay(day, modifiersObj = {}) {\n return Object.keys(modifiersObj).reduce((modifiers, modifierName) => {\n const value = modifiersObj[modifierName];\n if (dayMatchesModifier(day, value)) {\n modifiers.push(modifierName);\n }\n return modifiers;\n }, []);\n}\n\nexport default { dayMatchesModifier, getModifiersForDay };\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport Weekdays from './Weekdays';\nimport Day from './Day';\nimport { ENTER } from './keys';\n\nimport * as ModifiersUtils from './ModifiersUtils';\nimport * as Helpers from './Helpers';\nimport * as DateUtils from './DateUtils';\n\nexport default class Month extends Component {\n static propTypes = {\n classNames: PropTypes.shape({\n body: PropTypes.string.isRequired,\n month: PropTypes.string.isRequired,\n outside: PropTypes.string.isRequired,\n today: PropTypes.string.isRequired,\n week: PropTypes.string.isRequired,\n weekNumber: PropTypes.string.isRequired,\n disabled: PropTypes.string.isRequired,\n selected: PropTypes.string.isRequired,\n }).isRequired,\n tabIndex: PropTypes.number,\n\n month: PropTypes.instanceOf(Date).isRequired,\n months: PropTypes.arrayOf(PropTypes.string),\n\n modifiersStyles: PropTypes.object,\n\n showWeekDays: PropTypes.bool,\n showOutsideDays: PropTypes.bool,\n\n renderDay: PropTypes.func.isRequired,\n renderWeek: PropTypes.func.isRequired,\n\n captionElement: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.instanceOf(React.Component),\n ]).isRequired,\n weekdayElement: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.instanceOf(React.Component),\n ]),\n\n fixedWeeks: PropTypes.bool,\n showWeekNumbers: PropTypes.bool,\n\n locale: PropTypes.string.isRequired,\n localeUtils: PropTypes.object.isRequired,\n weekdaysLong: PropTypes.arrayOf(PropTypes.string),\n weekdaysShort: PropTypes.arrayOf(PropTypes.string),\n firstDayOfWeek: PropTypes.number.isRequired,\n\n onCaptionClick: PropTypes.func,\n onDayClick: PropTypes.func,\n onDayFocus: PropTypes.func,\n onDayKeyDown: PropTypes.func,\n onDayMouseEnter: PropTypes.func,\n onDayMouseLeave: PropTypes.func,\n onDayMouseDown: PropTypes.func,\n onDayMouseUp: PropTypes.func,\n onDayTouchEnd: PropTypes.func,\n onDayTouchStart: PropTypes.func,\n onWeekClick: PropTypes.func,\n };\n\n renderDay = day => {\n const monthNumber = this.props.month.getMonth();\n const propModifiers = Helpers.getModifiersFromProps(this.props);\n const dayModifiers = ModifiersUtils.getModifiersForDay(day, propModifiers);\n if (\n DateUtils.isSameDay(day, new Date()) &&\n !Object.prototype.hasOwnProperty.call(\n propModifiers,\n this.props.classNames.today\n )\n ) {\n dayModifiers.push(this.props.classNames.today);\n }\n if (day.getMonth() !== monthNumber) {\n dayModifiers.push(this.props.classNames.outside);\n }\n\n const isOutside = day.getMonth() !== monthNumber;\n let tabIndex = -1;\n // Focus on the first day of the month\n if (this.props.onDayClick && !isOutside && day.getDate() === 1) {\n tabIndex = this.props.tabIndex; // eslint-disable-line prefer-destructuring\n }\n const key = `${day.getFullYear()}${day.getMonth()}${day.getDate()}`;\n const modifiers = {};\n dayModifiers.forEach(modifier => {\n modifiers[modifier] = true;\n });\n\n return (\n -1\n }\n ariaSelected={dayModifiers.indexOf(this.props.classNames.selected) > -1}\n onClick={this.props.onDayClick}\n onFocus={this.props.onDayFocus}\n onKeyDown={this.props.onDayKeyDown}\n onMouseEnter={this.props.onDayMouseEnter}\n onMouseLeave={this.props.onDayMouseLeave}\n onMouseDown={this.props.onDayMouseDown}\n onMouseUp={this.props.onDayMouseUp}\n onTouchEnd={this.props.onDayTouchEnd}\n onTouchStart={this.props.onDayTouchStart}\n >\n {this.props.renderDay(day, modifiers)}\n \n );\n };\n\n render() {\n const {\n classNames,\n\n month,\n months,\n\n fixedWeeks,\n captionElement,\n weekdayElement,\n\n locale,\n localeUtils,\n weekdaysLong,\n weekdaysShort,\n firstDayOfWeek,\n\n onCaptionClick,\n\n showWeekNumbers,\n showWeekDays,\n onWeekClick,\n } = this.props;\n\n const captionProps = {\n date: month,\n classNames,\n months,\n localeUtils,\n locale,\n onClick: onCaptionClick ? e => onCaptionClick(month, e) : undefined,\n };\n const caption = React.isValidElement(captionElement)\n ? React.cloneElement(captionElement, captionProps)\n : React.createElement(captionElement, captionProps);\n\n const weeks = Helpers.getWeekArray(month, firstDayOfWeek, fixedWeeks);\n return (\n
    \n {caption}\n {showWeekDays && (\n \n )}\n
    \n {weeks.map(week => {\n let weekNumber;\n if (showWeekNumbers) {\n weekNumber = DateUtils.getWeekNumber(week[6]);\n }\n return (\n \n {showWeekNumbers && (\n onWeekClick(weekNumber, week, e)\n : undefined\n }\n onKeyUp={\n onWeekClick\n ? e =>\n e.keyCode === ENTER &&\n onWeekClick(weekNumber, week, e)\n : undefined\n }\n >\n {this.props.renderWeek(weekNumber, week, month)}\n
    \n )}\n {week.map(this.renderDay)}\n
    \n );\n })}\n
    \n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport defaultClassNames from './classNames';\nimport { SPACE, ENTER } from './keys';\n\nexport default class Navbar extends Component {\n static propTypes = {\n classNames: PropTypes.shape({\n navBar: PropTypes.string.isRequired,\n navButtonPrev: PropTypes.string.isRequired,\n navButtonNext: PropTypes.string.isRequired,\n navButtonInteractionDisabled: PropTypes.string.isRequired,\n }),\n className: PropTypes.string,\n showPreviousButton: PropTypes.bool,\n showNextButton: PropTypes.bool,\n onPreviousClick: PropTypes.func,\n onNextClick: PropTypes.func,\n dir: PropTypes.string,\n labels: PropTypes.shape({\n previousMonth: PropTypes.string.isRequired,\n nextMonth: PropTypes.string.isRequired,\n }),\n };\n\n static defaultProps = {\n classNames: defaultClassNames,\n dir: 'ltr',\n labels: {\n previousMonth: 'Previous Month',\n nextMonth: 'Next Month',\n },\n showPreviousButton: true,\n showNextButton: true,\n };\n\n shouldComponentUpdate(nextProps) {\n return (\n nextProps.labels !== this.props.labels ||\n nextProps.dir !== this.props.dir ||\n this.props.showPreviousButton !== nextProps.showPreviousButton ||\n this.props.showNextButton !== nextProps.showNextButton\n );\n }\n\n handleNextClick = () => {\n if (this.props.onNextClick) {\n this.props.onNextClick();\n }\n };\n\n handlePreviousClick = () => {\n if (this.props.onPreviousClick) {\n this.props.onPreviousClick();\n }\n };\n\n handleNextKeyDown = e => {\n if (e.keyCode !== ENTER && e.keyCode !== SPACE) {\n return;\n }\n e.preventDefault();\n this.handleNextClick();\n };\n\n handlePreviousKeyDown = e => {\n if (e.keyCode !== ENTER && e.keyCode !== SPACE) {\n return;\n }\n e.preventDefault();\n this.handlePreviousClick();\n };\n\n render() {\n const {\n classNames,\n className,\n showPreviousButton,\n showNextButton,\n labels,\n dir,\n } = this.props;\n\n let previousClickHandler;\n let nextClickHandler;\n let previousKeyDownHandler;\n let nextKeyDownHandler;\n let shouldShowPrevious;\n let shouldShowNext;\n\n if (dir === 'rtl') {\n previousClickHandler = this.handleNextClick;\n nextClickHandler = this.handlePreviousClick;\n previousKeyDownHandler = this.handleNextKeyDown;\n nextKeyDownHandler = this.handlePreviousKeyDown;\n shouldShowNext = showPreviousButton;\n shouldShowPrevious = showNextButton;\n } else {\n previousClickHandler = this.handlePreviousClick;\n nextClickHandler = this.handleNextClick;\n previousKeyDownHandler = this.handlePreviousKeyDown;\n nextKeyDownHandler = this.handleNextKeyDown;\n shouldShowNext = showNextButton;\n shouldShowPrevious = showPreviousButton;\n }\n\n const previousClassName = shouldShowPrevious\n ? classNames.navButtonPrev\n : `${classNames.navButtonPrev} ${classNames.navButtonInteractionDisabled}`;\n\n const nextClassName = shouldShowNext\n ? classNames.navButtonNext\n : `${classNames.navButtonNext} ${classNames.navButtonInteractionDisabled}`;\n\n const previousButton = (\n \n );\n\n const nextButton = (\n \n );\n\n return (\n
    \n {dir === 'rtl'\n ? [nextButton, previousButton]\n : [previousButton, nextButton]}\n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Weekday extends Component {\n static propTypes = {\n weekday: PropTypes.number,\n className: PropTypes.string,\n locale: PropTypes.string,\n localeUtils: PropTypes.object,\n\n weekdaysLong: PropTypes.arrayOf(PropTypes.string),\n weekdaysShort: PropTypes.arrayOf(PropTypes.string),\n };\n\n shouldComponentUpdate(nextProps) {\n return this.props !== nextProps;\n }\n\n render() {\n const {\n weekday,\n className,\n weekdaysLong,\n weekdaysShort,\n localeUtils,\n locale,\n } = this.props;\n let title;\n if (weekdaysLong) {\n title = weekdaysLong[weekday];\n } else {\n title = localeUtils.formatWeekdayLong(weekday, locale);\n }\n let content;\n if (weekdaysShort) {\n content = weekdaysShort[weekday];\n } else {\n content = localeUtils.formatWeekdayShort(weekday, locale);\n }\n\n return (\n
    \n {content}\n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nexport default class Weekdays extends Component {\n static propTypes = {\n classNames: PropTypes.shape({\n weekday: PropTypes.string.isRequired,\n weekdays: PropTypes.string.isRequired,\n weekdaysRow: PropTypes.string.isRequired,\n }).isRequired,\n\n firstDayOfWeek: PropTypes.number.isRequired,\n weekdaysLong: PropTypes.arrayOf(PropTypes.string),\n weekdaysShort: PropTypes.arrayOf(PropTypes.string),\n showWeekNumbers: PropTypes.bool,\n locale: PropTypes.string.isRequired,\n localeUtils: PropTypes.object.isRequired,\n weekdayElement: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.func,\n PropTypes.instanceOf(React.Component),\n ]),\n };\n\n shouldComponentUpdate(nextProps) {\n return this.props !== nextProps;\n }\n\n render() {\n const {\n classNames,\n firstDayOfWeek,\n showWeekNumbers,\n weekdaysLong,\n weekdaysShort,\n locale,\n localeUtils,\n weekdayElement,\n } = this.props;\n const days = [];\n for (let i = 0; i < 7; i += 1) {\n const weekday = (i + firstDayOfWeek) % 7;\n const elementProps = {\n key: i,\n className: classNames.weekday,\n weekday,\n weekdaysLong,\n weekdaysShort,\n localeUtils,\n locale,\n };\n const element = React.isValidElement(weekdayElement)\n ? React.cloneElement(weekdayElement, elementProps)\n : React.createElement(weekdayElement, elementProps);\n days.push(element);\n }\n\n return (\n
    \n
    \n {showWeekNumbers &&
    }\n {days}\n
    \n
    \n );\n }\n}\n","// Proxy object to map classnames when css modules are not used\n\nexport default {\n container: 'DayPicker',\n wrapper: 'DayPicker-wrapper',\n interactionDisabled: 'DayPicker--interactionDisabled',\n months: 'DayPicker-Months',\n month: 'DayPicker-Month',\n\n navBar: 'DayPicker-NavBar',\n navButtonPrev: 'DayPicker-NavButton DayPicker-NavButton--prev',\n navButtonNext: 'DayPicker-NavButton DayPicker-NavButton--next',\n navButtonInteractionDisabled: 'DayPicker-NavButton--interactionDisabled',\n\n caption: 'DayPicker-Caption',\n weekdays: 'DayPicker-Weekdays',\n weekdaysRow: 'DayPicker-WeekdaysRow',\n weekday: 'DayPicker-Weekday',\n body: 'DayPicker-Body',\n week: 'DayPicker-Week',\n weekNumber: 'DayPicker-WeekNumber',\n day: 'DayPicker-Day',\n footer: 'DayPicker-Footer',\n todayButton: 'DayPicker-TodayButton',\n\n // default modifiers\n today: 'today',\n selected: 'selected',\n disabled: 'disabled',\n outside: 'outside',\n};\n","export { default } from './DayPicker';\nexport { default as DateUtils } from './DateUtils';\nexport { default as LocaleUtils } from './LocaleUtils';\nexport { default as ModifiersUtils } from './ModifiersUtils';\n","export const LEFT = 37;\nexport const UP = 38;\nexport const RIGHT = 39;\nexport const DOWN = 40;\nexport const ENTER = 13;\nexport const SPACE = 32;\nexport const ESC = 27;\nexport const TAB = 9;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = require('gud');\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\n\n// Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n var Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Provider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Provider.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits = void 0;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n if (process.env.NODE_ENV !== 'production') {\n (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n Provider.prototype.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(_react.Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n var Consumer = function (_Component2) {\n _inherits(Consumer, _Component2);\n\n function Consumer() {\n var _temp2, _this2, _ret2;\n\n _classCallCheck(this, Consumer);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n value: _this2.getValue()\n }, _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({ value: _this2.getValue() });\n }\n }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n }\n\n Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n var observedBits = this.props.observedBits;\n\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n Consumer.prototype.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n Consumer.prototype.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(_react.Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n\n\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = require('./implementation');\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];","/* ***** BEGIN LICENSE BLOCK *****\n * Distributed under the BSD license:\n *\n * Copyright (c) 2010, Ajax.org B.V.\n * All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of Ajax.org B.V. nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL AJAX.ORG B.V. BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * ***** END LICENSE BLOCK ***** */\n\n/**\n * Define a module along with a payload\n * @param module a name for the payload\n * @param payload a function to call with (require, exports, module) params\n */\n\n(function() {\n\nvar ACE_NAMESPACE = \"ace\";\n\nvar global = (function() { return this; })();\nif (!global && typeof window != \"undefined\") global = window; // strict mode\n\n\nif (!ACE_NAMESPACE && typeof requirejs !== \"undefined\")\n return;\n\n\nvar define = function(module, deps, payload) {\n if (typeof module !== \"string\") {\n if (define.original)\n define.original.apply(this, arguments);\n else {\n console.error(\"dropping module because define wasn\\'t a string.\");\n console.trace();\n }\n return;\n }\n if (arguments.length == 2)\n payload = deps;\n if (!define.modules[module]) {\n define.payloads[module] = payload;\n define.modules[module] = null;\n }\n};\n\ndefine.modules = {};\ndefine.payloads = {};\n\n/**\n * Get at functionality define()ed using the function above\n */\nvar _require = function(parentId, module, callback) {\n if (typeof module === \"string\") {\n var payload = lookup(parentId, module);\n if (payload != undefined) {\n callback && callback();\n return payload;\n }\n } else if (Object.prototype.toString.call(module) === \"[object Array]\") {\n var params = [];\n for (var i = 0, l = module.length; i < l; ++i) {\n var dep = lookup(parentId, module[i]);\n if (dep == undefined && require.original)\n return;\n params.push(dep);\n }\n return callback && callback.apply(null, params) || true;\n }\n};\n\nvar require = function(module, callback) {\n var packagedModule = _require(\"\", module, callback);\n if (packagedModule == undefined && require.original)\n return require.original.apply(this, arguments);\n return packagedModule;\n};\n\nvar normalizeModule = function(parentId, moduleName) {\n // normalize plugin requires\n if (moduleName.indexOf(\"!\") !== -1) {\n var chunks = moduleName.split(\"!\");\n return normalizeModule(parentId, chunks[0]) + \"!\" + normalizeModule(parentId, chunks[1]);\n }\n // normalize relative requires\n if (moduleName.charAt(0) == \".\") {\n var base = parentId.split(\"/\").slice(0, -1).join(\"/\");\n moduleName = base + \"/\" + moduleName;\n\n while(moduleName.indexOf(\".\") !== -1 && previous != moduleName) {\n var previous = moduleName;\n moduleName = moduleName.replace(/\\/\\.\\//, \"/\").replace(/[^\\/]+\\/\\.\\.\\//, \"\");\n }\n }\n return moduleName;\n};\n\n/**\n * Internal function to lookup moduleNames and resolve them by calling the\n * definition function if needed.\n */\nvar lookup = function(parentId, moduleName) {\n moduleName = normalizeModule(parentId, moduleName);\n\n var module = define.modules[moduleName];\n if (!module) {\n module = define.payloads[moduleName];\n if (typeof module === 'function') {\n var exports = {};\n var mod = {\n id: moduleName,\n uri: '',\n exports: exports,\n packaged: true\n };\n\n var req = function(module, callback) {\n return _require(moduleName, module, callback);\n };\n\n var returnValue = module(req, exports, mod);\n exports = returnValue || mod.exports;\n define.modules[moduleName] = exports;\n delete define.payloads[moduleName];\n }\n module = define.modules[moduleName] = exports || module;\n }\n return module;\n};\n\nfunction exportAce(ns) {\n var root = global;\n if (ns) {\n if (!global[ns])\n global[ns] = {};\n root = global[ns];\n }\n\n if (!root.define || !root.define.packaged) {\n define.original = root.define;\n root.define = define;\n root.define.packaged = true;\n }\n\n if (!root.require || !root.require.packaged) {\n require.original = root.require;\n root.require = require;\n root.require.packaged = true;\n }\n}\n\nexportAce(ACE_NAMESPACE);\n\n})();\n\nace.define(\"ace/lib/fixoldbrowsers\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nif (typeof Element != \"undefined\" && !Element.prototype.remove) {\n Object.defineProperty(Element.prototype, \"remove\", {\n enumerable: false,\n writable: true,\n configurable: true,\n value: function() { this.parentNode && this.parentNode.removeChild(this); }\n });\n}\n\n\n});\n\nace.define(\"ace/lib/useragent\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nexports.OS = {\n LINUX: \"LINUX\",\n MAC: \"MAC\",\n WINDOWS: \"WINDOWS\"\n};\nexports.getOS = function() {\n if (exports.isMac) {\n return exports.OS.MAC;\n } else if (exports.isLinux) {\n return exports.OS.LINUX;\n } else {\n return exports.OS.WINDOWS;\n }\n};\nvar _navigator = typeof navigator == \"object\" ? navigator : {};\n\nvar os = (/mac|win|linux/i.exec(_navigator.platform) || [\"other\"])[0].toLowerCase();\nvar ua = _navigator.userAgent || \"\";\nvar appName = _navigator.appName || \"\";\nexports.isWin = (os == \"win\");\nexports.isMac = (os == \"mac\");\nexports.isLinux = (os == \"linux\");\nexports.isIE = \n (appName == \"Microsoft Internet Explorer\" || appName.indexOf(\"MSAppHost\") >= 0)\n ? parseFloat((ua.match(/(?:MSIE |Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1])\n : parseFloat((ua.match(/(?:Trident\\/[0-9]+[\\.0-9]+;.*rv:)([0-9]+[\\.0-9]+)/)||[])[1]); // for ie\n \nexports.isOldIE = exports.isIE && exports.isIE < 9;\nexports.isGecko = exports.isMozilla = ua.match(/ Gecko\\/\\d+/);\nexports.isOpera = typeof opera == \"object\" && Object.prototype.toString.call(window.opera) == \"[object Opera]\";\nexports.isWebKit = parseFloat(ua.split(\"WebKit/\")[1]) || undefined;\n\nexports.isChrome = parseFloat(ua.split(\" Chrome/\")[1]) || undefined;\n\nexports.isEdge = parseFloat(ua.split(\" Edge/\")[1]) || undefined;\n\nexports.isAIR = ua.indexOf(\"AdobeAIR\") >= 0;\n\nexports.isAndroid = ua.indexOf(\"Android\") >= 0;\n\nexports.isChromeOS = ua.indexOf(\" CrOS \") >= 0;\n\nexports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream;\n\nif (exports.isIOS) exports.isMac = true;\n\nexports.isMobile = exports.isIOS || exports.isAndroid;\n\n});\n\nace.define(\"ace/lib/dom\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar useragent = require(\"./useragent\"); \nvar XHTML_NS = \"http://www.w3.org/1999/xhtml\";\n\nexports.buildDom = function buildDom(arr, parent, refs) {\n if (typeof arr == \"string\" && arr) {\n var txt = document.createTextNode(arr);\n if (parent)\n parent.appendChild(txt);\n return txt;\n }\n \n if (!Array.isArray(arr)) {\n if (arr && arr.appendChild && parent)\n parent.appendChild(arr);\n return arr;\n }\n if (typeof arr[0] != \"string\" || !arr[0]) {\n var els = [];\n for (var i = 0; i < arr.length; i++) {\n var ch = buildDom(arr[i], parent, refs);\n ch && els.push(ch);\n }\n return els;\n }\n \n var el = document.createElement(arr[0]);\n var options = arr[1];\n var childIndex = 1;\n if (options && typeof options == \"object\" && !Array.isArray(options))\n childIndex = 2;\n for (var i = childIndex; i < arr.length; i++)\n buildDom(arr[i], el, refs);\n if (childIndex == 2) {\n Object.keys(options).forEach(function(n) {\n var val = options[n];\n if (n === \"class\") {\n el.className = Array.isArray(val) ? val.join(\" \") : val;\n } else if (typeof val == \"function\" || n == \"value\" || n[0] == \"$\") {\n el[n] = val;\n } else if (n === \"ref\") {\n if (refs) refs[val] = el;\n } else if (n === \"style\") {\n if (typeof val == \"string\") el.style.cssText = val;\n } else if (val != null) {\n el.setAttribute(n, val);\n }\n });\n }\n if (parent)\n parent.appendChild(el);\n return el;\n};\n\nexports.getDocumentHead = function(doc) {\n if (!doc)\n doc = document;\n return doc.head || doc.getElementsByTagName(\"head\")[0] || doc.documentElement;\n};\n\nexports.createElement = function(tag, ns) {\n return document.createElementNS ?\n document.createElementNS(ns || XHTML_NS, tag) :\n document.createElement(tag);\n};\n\nexports.removeChildren = function(element) {\n element.innerHTML = \"\";\n};\n\nexports.createTextNode = function(textContent, element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createTextNode(textContent);\n};\n\nexports.createFragment = function(element) {\n var doc = element ? element.ownerDocument : document;\n return doc.createDocumentFragment();\n};\n\nexports.hasCssClass = function(el, name) {\n var classes = (el.className + \"\").split(/\\s+/g);\n return classes.indexOf(name) !== -1;\n};\nexports.addCssClass = function(el, name) {\n if (!exports.hasCssClass(el, name)) {\n el.className += \" \" + name;\n }\n};\nexports.removeCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g);\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n classes.splice(index, 1);\n }\n el.className = classes.join(\" \");\n};\n\nexports.toggleCssClass = function(el, name) {\n var classes = el.className.split(/\\s+/g), add = true;\n while (true) {\n var index = classes.indexOf(name);\n if (index == -1) {\n break;\n }\n add = false;\n classes.splice(index, 1);\n }\n if (add)\n classes.push(name);\n\n el.className = classes.join(\" \");\n return add;\n};\nexports.setCssClass = function(node, className, include) {\n if (include) {\n exports.addCssClass(node, className);\n } else {\n exports.removeCssClass(node, className);\n }\n};\n\nexports.hasCssString = function(id, doc) {\n var index = 0, sheets;\n doc = doc || document;\n if ((sheets = doc.querySelectorAll(\"style\"))) {\n while (index < sheets.length)\n if (sheets[index++].id === id)\n return true;\n }\n};\n\nvar strictCSP;\nvar cssCache = [];\nexports.useStrictCSP = function(value) {\n strictCSP = value;\n if (value == false) insertPendingStyles();\n else if (!cssCache) cssCache = [];\n};\n\nfunction insertPendingStyles() {\n var cache = cssCache;\n cssCache = null;\n cache && cache.forEach(function(item) {\n importCssString(item[0], item[1]);\n });\n}\n\nfunction importCssString(cssText, id, target) {\n if (typeof document == \"undefined\")\n return;\n if (cssCache) {\n if (target) {\n insertPendingStyles();\n } else if (target === false) {\n return cssCache.push([cssText, id]);\n }\n }\n if (strictCSP) return;\n\n var container = target;\n if (!target || !target.getRootNode) {\n container = document;\n } else {\n container = target.getRootNode();\n if (!container || container == target)\n container = document;\n }\n \n var doc = container.ownerDocument || container;\n if (id && exports.hasCssString(id, container))\n return null;\n \n if (id)\n cssText += \"\\n/*# sourceURL=ace/css/\" + id + \" */\";\n \n var style = exports.createElement(\"style\");\n style.appendChild(doc.createTextNode(cssText));\n if (id)\n style.id = id;\n\n if (container == doc)\n container = exports.getDocumentHead(doc);\n container.insertBefore(style, container.firstChild);\n}\nexports.importCssString = importCssString;\n\nexports.importCssStylsheet = function(uri, doc) {\n exports.buildDom([\"link\", {rel: \"stylesheet\", href: uri}], exports.getDocumentHead(doc));\n};\nexports.scrollbarWidth = function(document) {\n var inner = exports.createElement(\"ace_inner\");\n inner.style.width = \"100%\";\n inner.style.minWidth = \"0px\";\n inner.style.height = \"200px\";\n inner.style.display = \"block\";\n\n var outer = exports.createElement(\"ace_outer\");\n var style = outer.style;\n\n style.position = \"absolute\";\n style.left = \"-10000px\";\n style.overflow = \"hidden\";\n style.width = \"200px\";\n style.minWidth = \"0px\";\n style.height = \"150px\";\n style.display = \"block\";\n\n outer.appendChild(inner);\n\n var body = document.documentElement;\n body.appendChild(outer);\n\n var noScrollbar = inner.offsetWidth;\n\n style.overflow = \"scroll\";\n var withScrollbar = inner.offsetWidth;\n\n if (noScrollbar == withScrollbar) {\n withScrollbar = outer.clientWidth;\n }\n\n body.removeChild(outer);\n\n return noScrollbar-withScrollbar;\n};\n\nexports.computedStyle = function(element, style) {\n return window.getComputedStyle(element, \"\") || {};\n};\n\nexports.setStyle = function(styles, property, value) {\n if (styles[property] !== value) {\n styles[property] = value;\n }\n};\n\nexports.HAS_CSS_ANIMATION = false;\nexports.HAS_CSS_TRANSFORMS = false;\nexports.HI_DPI = useragent.isWin\n ? typeof window !== \"undefined\" && window.devicePixelRatio >= 1.5\n : true;\n\nif (useragent.isChromeOS) exports.HI_DPI = false;\n\nif (typeof document !== \"undefined\") {\n var div = document.createElement(\"div\");\n if (exports.HI_DPI && div.style.transform !== undefined)\n exports.HAS_CSS_TRANSFORMS = true;\n if (!useragent.isEdge && typeof div.style.animationName !== \"undefined\")\n exports.HAS_CSS_ANIMATION = true;\n div = null;\n}\n\nif (exports.HAS_CSS_TRANSFORMS) {\n exports.translate = function(element, tx, ty) {\n element.style.transform = \"translate(\" + Math.round(tx) + \"px, \" + Math.round(ty) +\"px)\";\n };\n} else {\n exports.translate = function(element, tx, ty) {\n element.style.top = Math.round(ty) + \"px\";\n element.style.left = Math.round(tx) + \"px\";\n };\n}\n\n});\n\nace.define(\"ace/lib/oop\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nexports.inherits = function(ctor, superCtor) {\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n};\n\nexports.mixin = function(obj, mixin) {\n for (var key in mixin) {\n obj[key] = mixin[key];\n }\n return obj;\n};\n\nexports.implement = function(proto, mixin) {\n exports.mixin(proto, mixin);\n};\n\n});\n\nace.define(\"ace/lib/keys\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./oop\");\nvar Keys = (function() {\n var ret = {\n MODIFIER_KEYS: {\n 16: 'Shift', 17: 'Ctrl', 18: 'Alt', 224: 'Meta',\n 91: 'MetaLeft', 92: 'MetaRight', 93: 'ContextMenu'\n },\n\n KEY_MODS: {\n \"ctrl\": 1, \"alt\": 2, \"option\" : 2, \"shift\": 4,\n \"super\": 8, \"meta\": 8, \"command\": 8, \"cmd\": 8, \n \"control\": 1\n },\n\n FUNCTION_KEYS : {\n 8 : \"Backspace\",\n 9 : \"Tab\",\n 13 : \"Return\",\n 19 : \"Pause\",\n 27 : \"Esc\",\n 32 : \"Space\",\n 33 : \"PageUp\",\n 34 : \"PageDown\",\n 35 : \"End\",\n 36 : \"Home\",\n 37 : \"Left\",\n 38 : \"Up\",\n 39 : \"Right\",\n 40 : \"Down\",\n 44 : \"Print\",\n 45 : \"Insert\",\n 46 : \"Delete\",\n 96 : \"Numpad0\",\n 97 : \"Numpad1\",\n 98 : \"Numpad2\",\n 99 : \"Numpad3\",\n 100: \"Numpad4\",\n 101: \"Numpad5\",\n 102: \"Numpad6\",\n 103: \"Numpad7\",\n 104: \"Numpad8\",\n 105: \"Numpad9\",\n '-13': \"NumpadEnter\",\n 112: \"F1\",\n 113: \"F2\",\n 114: \"F3\",\n 115: \"F4\",\n 116: \"F5\",\n 117: \"F6\",\n 118: \"F7\",\n 119: \"F8\",\n 120: \"F9\",\n 121: \"F10\",\n 122: \"F11\",\n 123: \"F12\",\n 144: \"Numlock\",\n 145: \"Scrolllock\"\n },\n\n PRINTABLE_KEYS: {\n 32: ' ', 48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5',\n 54: '6', 55: '7', 56: '8', 57: '9', 59: ';', 61: '=', 65: 'a',\n 66: 'b', 67: 'c', 68: 'd', 69: 'e', 70: 'f', 71: 'g', 72: 'h',\n 73: 'i', 74: 'j', 75: 'k', 76: 'l', 77: 'm', 78: 'n', 79: 'o',\n 80: 'p', 81: 'q', 82: 'r', 83: 's', 84: 't', 85: 'u', 86: 'v',\n 87: 'w', 88: 'x', 89: 'y', 90: 'z', 107: '+', 109: '-', 110: '.',\n 186: ';', 187: '=', 188: ',', 189: '-', 190: '.', 191: '/', 192: '`',\n 219: '[', 220: '\\\\',221: ']', 222: \"'\", 111: '/', 106: '*'\n }\n };\n var name, i;\n for (i in ret.FUNCTION_KEYS) {\n name = ret.FUNCTION_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n for (i in ret.PRINTABLE_KEYS) {\n name = ret.PRINTABLE_KEYS[i].toLowerCase();\n ret[name] = parseInt(i, 10);\n }\n oop.mixin(ret, ret.MODIFIER_KEYS);\n oop.mixin(ret, ret.PRINTABLE_KEYS);\n oop.mixin(ret, ret.FUNCTION_KEYS);\n ret.enter = ret[\"return\"];\n ret.escape = ret.esc;\n ret.del = ret[\"delete\"];\n ret[173] = '-';\n \n (function() {\n var mods = [\"cmd\", \"ctrl\", \"alt\", \"shift\"];\n for (var i = Math.pow(2, mods.length); i--;) { \n ret.KEY_MODS[i] = mods.filter(function(x) {\n return i & ret.KEY_MODS[x];\n }).join(\"-\") + \"-\";\n }\n })();\n\n ret.KEY_MODS[0] = \"\";\n ret.KEY_MODS[-1] = \"input-\";\n\n return ret;\n})();\noop.mixin(exports, Keys);\n\nexports.keyCodeToString = function(keyCode) {\n var keyString = Keys[keyCode];\n if (typeof keyString != \"string\")\n keyString = String.fromCharCode(keyCode);\n return keyString.toLowerCase();\n};\n\n});\n\nace.define(\"ace/lib/event\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar keys = require(\"./keys\");\nvar useragent = require(\"./useragent\");\n\nvar pressedKeys = null;\nvar ts = 0;\n\nvar activeListenerOptions;\nfunction detectListenerOptionsSupport() {\n activeListenerOptions = false;\n try {\n document.createComment(\"\").addEventListener(\"test\", function() {}, { \n get passive() { \n activeListenerOptions = {passive: false};\n }\n });\n } catch(e) {}\n}\n\nfunction getListenerOptions() {\n if (activeListenerOptions == undefined)\n detectListenerOptionsSupport();\n return activeListenerOptions;\n}\n\nfunction EventListener(elem, type, callback) {\n this.elem = elem;\n this.type = type;\n this.callback = callback;\n}\nEventListener.prototype.destroy = function() {\n removeListener(this.elem, this.type, this.callback);\n this.elem = this.type = this.callback = undefined;\n};\n\nvar addListener = exports.addListener = function(elem, type, callback, destroyer) {\n elem.addEventListener(type, callback, getListenerOptions());\n if (destroyer)\n destroyer.$toDestroy.push(new EventListener(elem, type, callback));\n};\n\nvar removeListener = exports.removeListener = function(elem, type, callback) {\n elem.removeEventListener(type, callback, getListenerOptions());\n};\nexports.stopEvent = function(e) {\n exports.stopPropagation(e);\n exports.preventDefault(e);\n return false;\n};\n\nexports.stopPropagation = function(e) {\n if (e.stopPropagation)\n e.stopPropagation();\n};\n\nexports.preventDefault = function(e) {\n if (e.preventDefault)\n e.preventDefault();\n};\nexports.getButton = function(e) {\n if (e.type == \"dblclick\")\n return 0;\n if (e.type == \"contextmenu\" || (useragent.isMac && (e.ctrlKey && !e.altKey && !e.shiftKey)))\n return 2;\n return e.button;\n};\n\nexports.capture = function(el, eventHandler, releaseCaptureHandler) {\n var ownerDocument = el && el.ownerDocument || document;\n function onMouseUp(e) {\n eventHandler && eventHandler(e);\n releaseCaptureHandler && releaseCaptureHandler(e);\n\n removeListener(ownerDocument, \"mousemove\", eventHandler);\n removeListener(ownerDocument, \"mouseup\", onMouseUp);\n removeListener(ownerDocument, \"dragstart\", onMouseUp);\n }\n\n addListener(ownerDocument, \"mousemove\", eventHandler);\n addListener(ownerDocument, \"mouseup\", onMouseUp);\n addListener(ownerDocument, \"dragstart\", onMouseUp);\n \n return onMouseUp;\n};\n\nexports.addMouseWheelListener = function(el, callback, destroyer) {\n if (\"onmousewheel\" in el) {\n addListener(el, \"mousewheel\", function(e) {\n var factor = 8;\n if (e.wheelDeltaX !== undefined) {\n e.wheelX = -e.wheelDeltaX / factor;\n e.wheelY = -e.wheelDeltaY / factor;\n } else {\n e.wheelX = 0;\n e.wheelY = -e.wheelDelta / factor;\n }\n callback(e);\n }, destroyer);\n } else if (\"onwheel\" in el) {\n addListener(el, \"wheel\", function(e) {\n var factor = 0.35;\n switch (e.deltaMode) {\n case e.DOM_DELTA_PIXEL:\n e.wheelX = e.deltaX * factor || 0;\n e.wheelY = e.deltaY * factor || 0;\n break;\n case e.DOM_DELTA_LINE:\n case e.DOM_DELTA_PAGE:\n e.wheelX = (e.deltaX || 0) * 5;\n e.wheelY = (e.deltaY || 0) * 5;\n break;\n }\n \n callback(e);\n }, destroyer);\n } else {\n addListener(el, \"DOMMouseScroll\", function(e) {\n if (e.axis && e.axis == e.HORIZONTAL_AXIS) {\n e.wheelX = (e.detail || 0) * 5;\n e.wheelY = 0;\n } else {\n e.wheelX = 0;\n e.wheelY = (e.detail || 0) * 5;\n }\n callback(e);\n }, destroyer);\n }\n};\n\nexports.addMultiMouseDownListener = function(elements, timeouts, eventHandler, callbackName, destroyer) {\n var clicks = 0;\n var startX, startY, timer; \n var eventNames = {\n 2: \"dblclick\",\n 3: \"tripleclick\",\n 4: \"quadclick\"\n };\n\n function onMousedown(e) {\n if (exports.getButton(e) !== 0) {\n clicks = 0;\n } else if (e.detail > 1) {\n clicks++;\n if (clicks > 4)\n clicks = 1;\n } else {\n clicks = 1;\n }\n if (useragent.isIE) {\n var isNewClick = Math.abs(e.clientX - startX) > 5 || Math.abs(e.clientY - startY) > 5;\n if (!timer || isNewClick)\n clicks = 1;\n if (timer)\n clearTimeout(timer);\n timer = setTimeout(function() {timer = null;}, timeouts[clicks - 1] || 600);\n\n if (clicks == 1) {\n startX = e.clientX;\n startY = e.clientY;\n }\n }\n \n e._clicks = clicks;\n\n eventHandler[callbackName](\"mousedown\", e);\n\n if (clicks > 4)\n clicks = 0;\n else if (clicks > 1)\n return eventHandler[callbackName](eventNames[clicks], e);\n }\n if (!Array.isArray(elements))\n elements = [elements];\n elements.forEach(function(el) {\n addListener(el, \"mousedown\", onMousedown, destroyer);\n });\n};\n\nvar getModifierHash = function(e) {\n return 0 | (e.ctrlKey ? 1 : 0) | (e.altKey ? 2 : 0) | (e.shiftKey ? 4 : 0) | (e.metaKey ? 8 : 0);\n};\n\nexports.getModifierString = function(e) {\n return keys.KEY_MODS[getModifierHash(e)];\n};\n\nfunction normalizeCommandKeys(callback, e, keyCode) {\n var hashId = getModifierHash(e);\n\n if (!useragent.isMac && pressedKeys) {\n if (e.getModifierState && (e.getModifierState(\"OS\") || e.getModifierState(\"Win\")))\n hashId |= 8;\n if (pressedKeys.altGr) {\n if ((3 & hashId) != 3)\n pressedKeys.altGr = 0;\n else\n return;\n }\n if (keyCode === 18 || keyCode === 17) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (keyCode === 17 && location === 1) {\n if (pressedKeys[keyCode] == 1)\n ts = e.timeStamp;\n } else if (keyCode === 18 && hashId === 3 && location === 2) {\n var dt = e.timeStamp - ts;\n if (dt < 50)\n pressedKeys.altGr = true;\n }\n }\n }\n \n if (keyCode in keys.MODIFIER_KEYS) {\n keyCode = -1;\n }\n \n if (!hashId && keyCode === 13) {\n var location = \"location\" in e ? e.location : e.keyLocation;\n if (location === 3) {\n callback(e, hashId, -keyCode);\n if (e.defaultPrevented)\n return;\n }\n }\n \n if (useragent.isChromeOS && hashId & 8) {\n callback(e, hashId, keyCode);\n if (e.defaultPrevented)\n return;\n else\n hashId &= ~8;\n }\n if (!hashId && !(keyCode in keys.FUNCTION_KEYS) && !(keyCode in keys.PRINTABLE_KEYS)) {\n return false;\n }\n \n return callback(e, hashId, keyCode);\n}\n\n\nexports.addCommandKeyListener = function(el, callback, destroyer) {\n if (useragent.isOldGecko || (useragent.isOpera && !(\"KeyboardEvent\" in window))) {\n var lastKeyDownKeyCode = null;\n addListener(el, \"keydown\", function(e) {\n lastKeyDownKeyCode = e.keyCode;\n }, destroyer);\n addListener(el, \"keypress\", function(e) {\n return normalizeCommandKeys(callback, e, lastKeyDownKeyCode);\n }, destroyer);\n } else {\n var lastDefaultPrevented = null;\n\n addListener(el, \"keydown\", function(e) {\n pressedKeys[e.keyCode] = (pressedKeys[e.keyCode] || 0) + 1;\n var result = normalizeCommandKeys(callback, e, e.keyCode);\n lastDefaultPrevented = e.defaultPrevented;\n return result;\n }, destroyer);\n\n addListener(el, \"keypress\", function(e) {\n if (lastDefaultPrevented && (e.ctrlKey || e.altKey || e.shiftKey || e.metaKey)) {\n exports.stopEvent(e);\n lastDefaultPrevented = null;\n }\n }, destroyer);\n\n addListener(el, \"keyup\", function(e) {\n pressedKeys[e.keyCode] = null;\n }, destroyer);\n\n if (!pressedKeys) {\n resetPressedKeys();\n addListener(window, \"focus\", resetPressedKeys);\n }\n }\n};\nfunction resetPressedKeys() {\n pressedKeys = Object.create(null);\n}\n\nif (typeof window == \"object\" && window.postMessage && !useragent.isOldIE) {\n var postMessageId = 1;\n exports.nextTick = function(callback, win) {\n win = win || window;\n var messageName = \"zero-timeout-message-\" + (postMessageId++);\n \n var listener = function(e) {\n if (e.data == messageName) {\n exports.stopPropagation(e);\n removeListener(win, \"message\", listener);\n callback();\n }\n };\n \n addListener(win, \"message\", listener);\n win.postMessage(messageName, \"*\");\n };\n}\n\nexports.$idleBlocked = false;\nexports.onIdle = function(cb, timeout) {\n return setTimeout(function handler() {\n if (!exports.$idleBlocked) {\n cb();\n } else {\n setTimeout(handler, 100);\n }\n }, timeout);\n};\n\nexports.$idleBlockId = null;\nexports.blockIdle = function(delay) {\n if (exports.$idleBlockId)\n clearTimeout(exports.$idleBlockId);\n \n exports.$idleBlocked = true;\n exports.$idleBlockId = setTimeout(function() {\n exports.$idleBlocked = false;\n }, delay || 100);\n};\n\nexports.nextFrame = typeof window == \"object\" && (window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || window.oRequestAnimationFrame);\n\nif (exports.nextFrame)\n exports.nextFrame = exports.nextFrame.bind(window);\nelse\n exports.nextFrame = function(callback) {\n setTimeout(callback, 17);\n };\n});\n\nace.define(\"ace/range\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nvar comparePoints = function(p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\nvar Range = function(startRow, startColumn, endRow, endColumn) {\n this.start = {\n row: startRow,\n column: startColumn\n };\n\n this.end = {\n row: endRow,\n column: endColumn\n };\n};\n\n(function() {\n this.isEqual = function(range) {\n return this.start.row === range.start.row &&\n this.end.row === range.end.row &&\n this.start.column === range.start.column &&\n this.end.column === range.end.column;\n };\n this.toString = function() {\n return (\"Range: [\" + this.start.row + \"/\" + this.start.column +\n \"] -> [\" + this.end.row + \"/\" + this.end.column + \"]\");\n };\n\n this.contains = function(row, column) {\n return this.compare(row, column) == 0;\n };\n this.compareRange = function(range) {\n var cmp,\n end = range.end,\n start = range.start;\n\n cmp = this.compare(end.row, end.column);\n if (cmp == 1) {\n cmp = this.compare(start.row, start.column);\n if (cmp == 1) {\n return 2;\n } else if (cmp == 0) {\n return 1;\n } else {\n return 0;\n }\n } else if (cmp == -1) {\n return -2;\n } else {\n cmp = this.compare(start.row, start.column);\n if (cmp == -1) {\n return -1;\n } else if (cmp == 1) {\n return 42;\n } else {\n return 0;\n }\n }\n };\n this.comparePoint = function(p) {\n return this.compare(p.row, p.column);\n };\n this.containsRange = function(range) {\n return this.comparePoint(range.start) == 0 && this.comparePoint(range.end) == 0;\n };\n this.intersects = function(range) {\n var cmp = this.compareRange(range);\n return (cmp == -1 || cmp == 0 || cmp == 1);\n };\n this.isEnd = function(row, column) {\n return this.end.row == row && this.end.column == column;\n };\n this.isStart = function(row, column) {\n return this.start.row == row && this.start.column == column;\n };\n this.setStart = function(row, column) {\n if (typeof row == \"object\") {\n this.start.column = row.column;\n this.start.row = row.row;\n } else {\n this.start.row = row;\n this.start.column = column;\n }\n };\n this.setEnd = function(row, column) {\n if (typeof row == \"object\") {\n this.end.column = row.column;\n this.end.row = row.row;\n } else {\n this.end.row = row;\n this.end.column = column;\n }\n };\n this.inside = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column) || this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideStart = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isEnd(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.insideEnd = function(row, column) {\n if (this.compare(row, column) == 0) {\n if (this.isStart(row, column)) {\n return false;\n } else {\n return true;\n }\n }\n return false;\n };\n this.compare = function(row, column) {\n if (!this.isMultiLine()) {\n if (row === this.start.row) {\n return column < this.start.column ? -1 : (column > this.end.column ? 1 : 0);\n }\n }\n\n if (row < this.start.row)\n return -1;\n\n if (row > this.end.row)\n return 1;\n\n if (this.start.row === row)\n return column >= this.start.column ? 0 : -1;\n\n if (this.end.row === row)\n return column <= this.end.column ? 0 : 1;\n\n return 0;\n };\n this.compareStart = function(row, column) {\n if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareEnd = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else {\n return this.compare(row, column);\n }\n };\n this.compareInside = function(row, column) {\n if (this.end.row == row && this.end.column == column) {\n return 1;\n } else if (this.start.row == row && this.start.column == column) {\n return -1;\n } else {\n return this.compare(row, column);\n }\n };\n this.clipRows = function(firstRow, lastRow) {\n if (this.end.row > lastRow)\n var end = {row: lastRow + 1, column: 0};\n else if (this.end.row < firstRow)\n var end = {row: firstRow, column: 0};\n\n if (this.start.row > lastRow)\n var start = {row: lastRow + 1, column: 0};\n else if (this.start.row < firstRow)\n var start = {row: firstRow, column: 0};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n this.extend = function(row, column) {\n var cmp = this.compare(row, column);\n\n if (cmp == 0)\n return this;\n else if (cmp == -1)\n var start = {row: row, column: column};\n else\n var end = {row: row, column: column};\n\n return Range.fromPoints(start || this.start, end || this.end);\n };\n\n this.isEmpty = function() {\n return (this.start.row === this.end.row && this.start.column === this.end.column);\n };\n this.isMultiLine = function() {\n return (this.start.row !== this.end.row);\n };\n this.clone = function() {\n return Range.fromPoints(this.start, this.end);\n };\n this.collapseRows = function() {\n if (this.end.column == 0)\n return new Range(this.start.row, 0, Math.max(this.start.row, this.end.row-1), 0);\n else\n return new Range(this.start.row, 0, this.end.row, 0);\n };\n this.toScreenRange = function(session) {\n var screenPosStart = session.documentToScreenPosition(this.start);\n var screenPosEnd = session.documentToScreenPosition(this.end);\n\n return new Range(\n screenPosStart.row, screenPosStart.column,\n screenPosEnd.row, screenPosEnd.column\n );\n };\n this.moveBy = function(row, column) {\n this.start.row += row;\n this.start.column += column;\n this.end.row += row;\n this.end.column += column;\n };\n\n}).call(Range.prototype);\nRange.fromPoints = function(start, end) {\n return new Range(start.row, start.column, end.row, end.column);\n};\nRange.comparePoints = comparePoints;\n\nRange.comparePoints = function(p1, p2) {\n return p1.row - p2.row || p1.column - p2.column;\n};\n\n\nexports.Range = Range;\n});\n\nace.define(\"ace/lib/lang\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nexports.last = function(a) {\n return a[a.length - 1];\n};\n\nexports.stringReverse = function(string) {\n return string.split(\"\").reverse().join(\"\");\n};\n\nexports.stringRepeat = function (string, count) {\n var result = '';\n while (count > 0) {\n if (count & 1)\n result += string;\n\n if (count >>= 1)\n string += string;\n }\n return result;\n};\n\nvar trimBeginRegexp = /^\\s\\s*/;\nvar trimEndRegexp = /\\s\\s*$/;\n\nexports.stringTrimLeft = function (string) {\n return string.replace(trimBeginRegexp, '');\n};\n\nexports.stringTrimRight = function (string) {\n return string.replace(trimEndRegexp, '');\n};\n\nexports.copyObject = function(obj) {\n var copy = {};\n for (var key in obj) {\n copy[key] = obj[key];\n }\n return copy;\n};\n\nexports.copyArray = function(array){\n var copy = [];\n for (var i=0, l=array.length; i Date.now() - 50)\n return true;\n return $cancelT = false;\n },\n cancel: function() {\n $cancelT = Date.now();\n }\n};\n\n});\n\nace.define(\"ace/keyboard/textinput\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/clipboard\",\"ace/lib/keys\"], function(require, exports, module) {\n\"use strict\";\n\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar clipboard = require(\"../clipboard\");\nvar BROKEN_SETDATA = useragent.isChrome < 18;\nvar USE_IE_MIME_TYPE = useragent.isIE;\nvar HAS_FOCUS_ARGS = useragent.isChrome > 63;\nvar MAX_LINE_LENGTH = 400;\n\nvar KEYS = require(\"../lib/keys\");\nvar MODS = KEYS.KEY_MODS;\nvar isIOS = useragent.isIOS;\nvar valueResetRegex = isIOS ? /\\s/ : /\\n/;\nvar isMobile = useragent.isMobile;\n\nvar TextInput = function(parentNode, host) {\n var text = dom.createElement(\"textarea\");\n text.className = \"ace_text-input\";\n\n text.setAttribute(\"wrap\", \"off\");\n text.setAttribute(\"autocorrect\", \"off\");\n text.setAttribute(\"autocapitalize\", \"off\");\n text.setAttribute(\"spellcheck\", false);\n\n text.style.opacity = \"0\";\n parentNode.insertBefore(text, parentNode.firstChild);\n\n var copied = false;\n var pasted = false;\n var inComposition = false;\n var sendingText = false;\n var tempStyle = '';\n \n if (!isMobile)\n text.style.fontSize = \"1px\";\n\n var commandMode = false;\n var ignoreFocusEvents = false;\n \n var lastValue = \"\";\n var lastSelectionStart = 0;\n var lastSelectionEnd = 0;\n var lastRestoreEnd = 0;\n try { var isFocused = document.activeElement === text; } catch(e) {}\n \n event.addListener(text, \"blur\", function(e) {\n if (ignoreFocusEvents) return;\n host.onBlur(e);\n isFocused = false;\n }, host);\n event.addListener(text, \"focus\", function(e) {\n if (ignoreFocusEvents) return;\n isFocused = true;\n if (useragent.isEdge) {\n try {\n if (!document.hasFocus())\n return;\n } catch(e) {}\n }\n host.onFocus(e);\n if (useragent.isEdge)\n setTimeout(resetSelection);\n else\n resetSelection();\n }, host);\n this.$focusScroll = false;\n this.focus = function() {\n if (tempStyle || HAS_FOCUS_ARGS || this.$focusScroll == \"browser\")\n return text.focus({ preventScroll: true });\n\n var top = text.style.top;\n text.style.position = \"fixed\";\n text.style.top = \"0px\";\n try {\n var isTransformed = text.getBoundingClientRect().top != 0;\n } catch(e) {\n return;\n }\n var ancestors = [];\n if (isTransformed) {\n var t = text.parentElement;\n while (t && t.nodeType == 1) {\n ancestors.push(t);\n t.setAttribute(\"ace_nocontext\", true);\n if (!t.parentElement && t.getRootNode)\n t = t.getRootNode().host;\n else\n t = t.parentElement;\n }\n }\n text.focus({ preventScroll: true });\n if (isTransformed) {\n ancestors.forEach(function(p) {\n p.removeAttribute(\"ace_nocontext\");\n });\n }\n setTimeout(function() {\n text.style.position = \"\";\n if (text.style.top == \"0px\")\n text.style.top = top;\n }, 0);\n };\n this.blur = function() {\n text.blur();\n };\n this.isFocused = function() {\n return isFocused;\n };\n \n host.on(\"beforeEndOperation\", function() {\n var curOp = host.curOp;\n var commandName = curOp && curOp.command && curOp.command.name;\n if (commandName == \"insertstring\")\n return;\n var isUserAction = commandName && (curOp.docChanged || curOp.selectionChanged);\n if (inComposition && isUserAction) {\n lastValue = text.value = \"\";\n onCompositionEnd();\n }\n resetSelection();\n });\n \n var resetSelection = isIOS\n ? function(value) {\n if (!isFocused || (copied && !value) || sendingText) return;\n if (!value) \n value = \"\";\n var newValue = \"\\n ab\" + value + \"cde fg\\n\";\n if (newValue != text.value)\n text.value = lastValue = newValue;\n \n var selectionStart = 4;\n var selectionEnd = 4 + (value.length || (host.selection.isEmpty() ? 0 : 1));\n\n if (lastSelectionStart != selectionStart || lastSelectionEnd != selectionEnd) {\n text.setSelectionRange(selectionStart, selectionEnd);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n }\n : function() {\n if (inComposition || sendingText)\n return;\n if (!isFocused && !afterContextMenu)\n return;\n inComposition = true;\n \n var selectionStart = 0;\n var selectionEnd = 0;\n var line = \"\";\n\n if (host.session) {\n var selection = host.selection;\n var range = selection.getRange();\n var row = selection.cursor.row;\n selectionStart = range.start.column;\n selectionEnd = range.end.column;\n line = host.session.getLine(row);\n\n if (range.start.row != row) {\n var prevLine = host.session.getLine(row - 1);\n selectionStart = range.start.row < row - 1 ? 0 : selectionStart;\n selectionEnd += prevLine.length + 1;\n line = prevLine + \"\\n\" + line;\n }\n else if (range.end.row != row) {\n var nextLine = host.session.getLine(row + 1);\n selectionEnd = range.end.row > row + 1 ? nextLine.length : selectionEnd;\n selectionEnd += line.length + 1;\n line = line + \"\\n\" + nextLine;\n }\n else if (isMobile && row > 0) {\n line = \"\\n\" + line;\n selectionEnd += 1;\n selectionStart += 1;\n }\n\n if (line.length > MAX_LINE_LENGTH) {\n if (selectionStart < MAX_LINE_LENGTH && selectionEnd < MAX_LINE_LENGTH) {\n line = line.slice(0, MAX_LINE_LENGTH);\n } else {\n line = \"\\n\";\n if (selectionStart == selectionEnd) {\n selectionStart = selectionEnd = 0;\n }\n else {\n selectionStart = 0;\n selectionEnd = 1;\n }\n }\n }\n }\n\n var newValue = line + \"\\n\\n\";\n if (newValue != lastValue) {\n text.value = lastValue = newValue;\n lastSelectionStart = lastSelectionEnd = newValue.length;\n }\n if (afterContextMenu) {\n lastSelectionStart = text.selectionStart;\n lastSelectionEnd = text.selectionEnd;\n }\n if (\n lastSelectionEnd != selectionEnd \n || lastSelectionStart != selectionStart \n || text.selectionEnd != lastSelectionEnd // on ie edge selectionEnd changes silently after the initialization\n ) {\n try {\n text.setSelectionRange(selectionStart, selectionEnd);\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n } catch(e){}\n }\n inComposition = false;\n };\n this.resetSelection = resetSelection;\n\n if (isFocused)\n host.onFocus();\n\n\n var isAllSelected = function(text) {\n return text.selectionStart === 0 && text.selectionEnd >= lastValue.length\n && text.value === lastValue && lastValue\n && text.selectionEnd !== lastSelectionEnd;\n };\n\n var onSelect = function(e) {\n if (inComposition)\n return;\n if (copied) {\n copied = false;\n } else if (isAllSelected(text)) {\n host.selectAll();\n resetSelection();\n } else if (isMobile && text.selectionStart != lastSelectionStart) {\n resetSelection();\n }\n };\n\n var inputHandler = null;\n this.setInputHandler = function(cb) {inputHandler = cb;};\n this.getInputHandler = function() {return inputHandler;};\n var afterContextMenu = false;\n \n var sendText = function(value, fromInput) {\n if (afterContextMenu)\n afterContextMenu = false;\n if (pasted) {\n resetSelection();\n if (value)\n host.onPaste(value);\n pasted = false;\n return \"\";\n } else {\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n \n var extendLeft = lastSelectionStart;\n var extendRight = lastValue.length - lastSelectionEnd;\n \n var inserted = value;\n var restoreStart = value.length - selectionStart;\n var restoreEnd = value.length - selectionEnd;\n \n var i = 0;\n while (extendLeft > 0 && lastValue[i] == value[i]) {\n i++;\n extendLeft--;\n }\n inserted = inserted.slice(i);\n i = 1;\n while (extendRight > 0 && lastValue.length - i > lastSelectionStart - 1 && lastValue[lastValue.length - i] == value[value.length - i]) {\n i++;\n extendRight--;\n }\n restoreStart -= i-1;\n restoreEnd -= i-1;\n var endIndex = inserted.length - i + 1;\n if (endIndex < 0) {\n extendLeft = -endIndex;\n endIndex = 0;\n } \n inserted = inserted.slice(0, endIndex);\n if (!fromInput && !inserted && !restoreStart && !extendLeft && !extendRight && !restoreEnd)\n return \"\";\n sendingText = true;\n var shouldReset = false;\n if (useragent.isAndroid && inserted == \". \") {\n inserted = \" \";\n shouldReset = true;\n }\n \n if (inserted && !extendLeft && !extendRight && !restoreStart && !restoreEnd || commandMode) {\n host.onTextInput(inserted);\n } else {\n host.onTextInput(inserted, {\n extendLeft: extendLeft,\n extendRight: extendRight,\n restoreStart: restoreStart,\n restoreEnd: restoreEnd\n });\n }\n sendingText = false;\n \n lastValue = value;\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n lastRestoreEnd = restoreEnd;\n return shouldReset ? \"\\n\" : inserted;\n }\n };\n var onInput = function(e) {\n if (inComposition)\n return onCompositionUpdate();\n if (e && e.inputType) {\n if (e.inputType == \"historyUndo\") return host.execCommand(\"undo\");\n if (e.inputType == \"historyRedo\") return host.execCommand(\"redo\");\n }\n var data = text.value;\n var inserted = sendText(data, true);\n if (\n data.length > MAX_LINE_LENGTH + 100 \n || valueResetRegex.test(inserted)\n || isMobile && lastSelectionStart < 1 && lastSelectionStart == lastSelectionEnd\n ) {\n resetSelection();\n }\n };\n \n var handleClipboardData = function(e, data, forceIEMime) {\n var clipboardData = e.clipboardData || window.clipboardData;\n if (!clipboardData || BROKEN_SETDATA)\n return;\n var mime = USE_IE_MIME_TYPE || forceIEMime ? \"Text\" : \"text/plain\";\n try {\n if (data) {\n return clipboardData.setData(mime, data) !== false;\n } else {\n return clipboardData.getData(mime);\n }\n } catch(e) {\n if (!forceIEMime)\n return handleClipboardData(e, data, true);\n }\n };\n\n var doCopy = function(e, isCut) {\n var data = host.getCopyText();\n if (!data)\n return event.preventDefault(e);\n\n if (handleClipboardData(e, data)) {\n if (isIOS) {\n resetSelection(data);\n copied = data;\n setTimeout(function () {\n copied = false;\n }, 10);\n }\n isCut ? host.onCut() : host.onCopy();\n event.preventDefault(e);\n } else {\n copied = true;\n text.value = data;\n text.select();\n setTimeout(function(){\n copied = false;\n resetSelection();\n isCut ? host.onCut() : host.onCopy();\n });\n }\n };\n \n var onCut = function(e) {\n doCopy(e, true);\n };\n \n var onCopy = function(e) {\n doCopy(e, false);\n };\n \n var onPaste = function(e) {\n var data = handleClipboardData(e);\n if (clipboard.pasteCancelled())\n return;\n if (typeof data == \"string\") {\n if (data)\n host.onPaste(data, e);\n if (useragent.isIE)\n setTimeout(resetSelection);\n event.preventDefault(e);\n }\n else {\n text.value = \"\";\n pasted = true;\n }\n };\n\n event.addCommandKeyListener(text, host.onCommandKey.bind(host), host);\n\n event.addListener(text, \"select\", onSelect, host);\n event.addListener(text, \"input\", onInput, host);\n\n event.addListener(text, \"cut\", onCut, host);\n event.addListener(text, \"copy\", onCopy, host);\n event.addListener(text, \"paste\", onPaste, host);\n if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) {\n event.addListener(parentNode, \"keydown\", function(e) {\n if ((useragent.isMac && !e.metaKey) || !e.ctrlKey)\n return;\n\n switch (e.keyCode) {\n case 67:\n onCopy(e);\n break;\n case 86:\n onPaste(e);\n break;\n case 88:\n onCut(e);\n break;\n }\n }, host);\n }\n var onCompositionStart = function(e) {\n if (inComposition || !host.onCompositionStart || host.$readOnly) \n return;\n \n inComposition = {};\n\n if (commandMode)\n return;\n \n if (e.data)\n inComposition.useTextareaForIME = false;\n \n setTimeout(onCompositionUpdate, 0);\n host._signal(\"compositionStart\");\n host.on(\"mousedown\", cancelComposition);\n \n var range = host.getSelectionRange();\n range.end.row = range.start.row;\n range.end.column = range.start.column;\n inComposition.markerRange = range;\n inComposition.selectionStart = lastSelectionStart;\n host.onCompositionStart(inComposition);\n \n if (inComposition.useTextareaForIME) {\n lastValue = text.value = \"\";\n lastSelectionStart = 0;\n lastSelectionEnd = 0;\n }\n else {\n if (text.msGetInputContext)\n inComposition.context = text.msGetInputContext();\n if (text.getInputContext)\n inComposition.context = text.getInputContext();\n }\n };\n\n var onCompositionUpdate = function() {\n if (!inComposition || !host.onCompositionUpdate || host.$readOnly)\n return;\n if (commandMode)\n return cancelComposition();\n \n if (inComposition.useTextareaForIME) {\n host.onCompositionUpdate(text.value);\n }\n else {\n var data = text.value;\n sendText(data);\n if (inComposition.markerRange) {\n if (inComposition.context) {\n inComposition.markerRange.start.column = inComposition.selectionStart\n = inComposition.context.compositionStartOffset;\n }\n inComposition.markerRange.end.column = inComposition.markerRange.start.column\n + lastSelectionEnd - inComposition.selectionStart + lastRestoreEnd;\n }\n }\n };\n\n var onCompositionEnd = function(e) {\n if (!host.onCompositionEnd || host.$readOnly) return;\n inComposition = false;\n host.onCompositionEnd();\n host.off(\"mousedown\", cancelComposition);\n if (e) onInput();\n };\n \n\n function cancelComposition() {\n ignoreFocusEvents = true;\n text.blur();\n text.focus();\n ignoreFocusEvents = false;\n }\n\n var syncComposition = lang.delayedCall(onCompositionUpdate, 50).schedule.bind(null, null);\n \n function onKeyup(e) {\n if (e.keyCode == 27 && text.value.length < text.selectionStart) {\n if (!inComposition)\n lastValue = text.value;\n lastSelectionStart = lastSelectionEnd = -1;\n resetSelection();\n }\n syncComposition();\n }\n\n event.addListener(text, \"compositionstart\", onCompositionStart, host);\n event.addListener(text, \"compositionupdate\", onCompositionUpdate, host);\n event.addListener(text, \"keyup\", onKeyup, host);\n event.addListener(text, \"keydown\", syncComposition, host);\n event.addListener(text, \"compositionend\", onCompositionEnd, host);\n\n this.getElement = function() {\n return text;\n };\n this.setCommandMode = function(value) {\n commandMode = value;\n text.readOnly = false;\n };\n \n this.setReadOnly = function(readOnly) {\n if (!commandMode)\n text.readOnly = readOnly;\n };\n\n this.setCopyWithEmptySelection = function(value) {\n };\n\n this.onContextMenu = function(e) {\n afterContextMenu = true;\n resetSelection();\n host._emit(\"nativecontextmenu\", {target: host, domEvent: e});\n this.moveToMouse(e, true);\n };\n \n this.moveToMouse = function(e, bringToFront) {\n if (!tempStyle)\n tempStyle = text.style.cssText;\n text.style.cssText = (bringToFront ? \"z-index:100000;\" : \"\")\n + (useragent.isIE ? \"opacity:0.1;\" : \"\")\n + \"text-indent: -\" + (lastSelectionStart + lastSelectionEnd) * host.renderer.characterWidth * 0.5 + \"px;\";\n\n var rect = host.container.getBoundingClientRect();\n var style = dom.computedStyle(host.container);\n var top = rect.top + (parseInt(style.borderTopWidth) || 0);\n var left = rect.left + (parseInt(rect.borderLeftWidth) || 0);\n var maxTop = rect.bottom - top - text.clientHeight -2;\n var move = function(e) {\n dom.translate(text, e.clientX - left - 2, Math.min(e.clientY - top - 2, maxTop));\n }; \n move(e);\n\n if (e.type != \"mousedown\")\n return;\n\n host.renderer.$isMousePressed = true;\n\n clearTimeout(closeTimeout);\n if (useragent.isWin)\n event.capture(host.container, move, onContextMenuClose);\n };\n\n this.onContextMenuClose = onContextMenuClose;\n var closeTimeout;\n function onContextMenuClose() {\n clearTimeout(closeTimeout);\n closeTimeout = setTimeout(function () {\n if (tempStyle) {\n text.style.cssText = tempStyle;\n tempStyle = '';\n }\n host.renderer.$isMousePressed = false;\n if (host.renderer.$keepTextAreaAtCursor)\n host.renderer.$moveTextAreaToCursor();\n }, 0);\n }\n\n var onContextMenu = function(e) {\n host.textInput.onContextMenu(e);\n onContextMenuClose();\n };\n event.addListener(text, \"mouseup\", onContextMenu, host);\n event.addListener(text, \"mousedown\", function(e) {\n e.preventDefault();\n onContextMenuClose();\n }, host);\n event.addListener(host.renderer.scroller, \"contextmenu\", onContextMenu, host);\n event.addListener(text, \"contextmenu\", onContextMenu, host);\n \n if (isIOS)\n addIosSelectionHandler(parentNode, host, text);\n\n function addIosSelectionHandler(parentNode, host, text) {\n var typingResetTimeout = null;\n var typing = false;\n \n text.addEventListener(\"keydown\", function (e) {\n if (typingResetTimeout) clearTimeout(typingResetTimeout);\n typing = true;\n }, true);\n\n text.addEventListener(\"keyup\", function (e) {\n typingResetTimeout = setTimeout(function () {\n typing = false;\n }, 100);\n }, true);\n var detectArrowKeys = function(e) {\n if (document.activeElement !== text) return;\n if (typing || inComposition || host.$mouseHandler.isMousePressed) return;\n\n if (copied) {\n return;\n }\n var selectionStart = text.selectionStart;\n var selectionEnd = text.selectionEnd;\n \n var key = null;\n var modifier = 0;\n if (selectionStart == 0) {\n key = KEYS.up;\n } else if (selectionStart == 1) {\n key = KEYS.home;\n } else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd] == \"\\n\") {\n key = KEYS.end;\n } else if (selectionStart < lastSelectionStart && lastValue[selectionStart - 1] == \" \") {\n key = KEYS.left;\n modifier = MODS.option;\n } else if (\n selectionStart < lastSelectionStart\n || (\n selectionStart == lastSelectionStart \n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd\n )\n ) {\n key = KEYS.left;\n } else if (selectionEnd > lastSelectionEnd && lastValue.slice(0, selectionEnd).split(\"\\n\").length > 2) {\n key = KEYS.down;\n } else if (selectionEnd > lastSelectionEnd && lastValue[selectionEnd - 1] == \" \") {\n key = KEYS.right;\n modifier = MODS.option;\n } else if (\n selectionEnd > lastSelectionEnd\n || (\n selectionEnd == lastSelectionEnd \n && lastSelectionEnd != lastSelectionStart\n && selectionStart == selectionEnd\n )\n ) {\n key = KEYS.right;\n }\n \n if (selectionStart !== selectionEnd)\n modifier |= MODS.shift;\n\n if (key) {\n var result = host.onCommandKey({}, modifier, key);\n if (!result && host.commands) {\n key = KEYS.keyCodeToString(key);\n var command = host.commands.findKeyCommand(modifier, key);\n if (command)\n host.execCommand(command);\n }\n lastSelectionStart = selectionStart;\n lastSelectionEnd = selectionEnd;\n resetSelection(\"\");\n }\n };\n document.addEventListener(\"selectionchange\", detectArrowKeys);\n host.on(\"destroy\", function() {\n document.removeEventListener(\"selectionchange\", detectArrowKeys);\n });\n }\n};\n\nexports.TextInput = TextInput;\nexports.$setUserAgentForTests = function(_isMobile, _isIOS) {\n isMobile = _isMobile;\n isIOS = _isIOS;\n};\n});\n\nace.define(\"ace/mouse/default_handlers\",[\"require\",\"exports\",\"module\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar useragent = require(\"../lib/useragent\");\n\nvar DRAG_OFFSET = 0; // pixels\nvar SCROLL_COOLDOWN_T = 550; // milliseconds\n\nfunction DefaultHandlers(mouseHandler) {\n mouseHandler.$clickSelection = null;\n\n var editor = mouseHandler.editor;\n editor.setDefaultHandler(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n editor.setDefaultHandler(\"dblclick\", this.onDoubleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"tripleclick\", this.onTripleClick.bind(mouseHandler));\n editor.setDefaultHandler(\"quadclick\", this.onQuadClick.bind(mouseHandler));\n editor.setDefaultHandler(\"mousewheel\", this.onMouseWheel.bind(mouseHandler));\n\n var exports = [\"select\", \"startSelect\", \"selectEnd\", \"selectAllEnd\", \"selectByWordsEnd\",\n \"selectByLinesEnd\", \"dragWait\", \"dragWaitEnd\", \"focusWait\"];\n\n exports.forEach(function(x) {\n mouseHandler[x] = this[x];\n }, this);\n\n mouseHandler.selectByLines = this.extendSelectionBy.bind(mouseHandler, \"getLineRange\");\n mouseHandler.selectByWords = this.extendSelectionBy.bind(mouseHandler, \"getWordRange\");\n}\n\n(function() {\n\n this.onMouseDown = function(ev) {\n var inSelection = ev.inSelection();\n var pos = ev.getDocumentPosition();\n this.mousedownEvent = ev;\n var editor = this.editor;\n\n var button = ev.getButton();\n if (button !== 0) {\n var selectionRange = editor.getSelectionRange();\n var selectionEmpty = selectionRange.isEmpty();\n if (selectionEmpty || button == 1)\n editor.selection.moveToPosition(pos);\n if (button == 2) {\n editor.textInput.onContextMenu(ev.domEvent);\n if (!useragent.isMozilla)\n ev.preventDefault();\n }\n return;\n }\n\n this.mousedownEvent.time = Date.now();\n if (inSelection && !editor.isFocused()) {\n editor.focus();\n if (this.$focusTimeout && !this.$clickSelection && !editor.inMultiSelectMode) {\n this.setState(\"focusWait\");\n this.captureMouse(ev);\n return;\n }\n }\n\n this.captureMouse(ev);\n this.startSelect(pos, ev.domEvent._clicks > 1);\n return ev.preventDefault();\n };\n\n this.startSelect = function(pos, waitForClickSelection) {\n pos = pos || this.editor.renderer.screenToTextCoordinates(this.x, this.y);\n var editor = this.editor;\n if (!this.mousedownEvent) return;\n if (this.mousedownEvent.getShiftKey())\n editor.selection.selectToPosition(pos);\n else if (!waitForClickSelection)\n editor.selection.moveToPosition(pos);\n if (!waitForClickSelection)\n this.select();\n if (editor.renderer.scroller.setCapture) {\n editor.renderer.scroller.setCapture();\n }\n editor.setStyle(\"ace_selecting\");\n this.setState(\"select\");\n };\n\n this.select = function() {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n if (this.$clickSelection) {\n var cmp = this.$clickSelection.comparePoint(cursor);\n\n if (cmp == -1) {\n anchor = this.$clickSelection.end;\n } else if (cmp == 1) {\n anchor = this.$clickSelection.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n\n this.extendSelectionBy = function(unitName) {\n var anchor, editor = this.editor;\n var cursor = editor.renderer.screenToTextCoordinates(this.x, this.y);\n var range = editor.selection[unitName](cursor.row, cursor.column);\n if (this.$clickSelection) {\n var cmpStart = this.$clickSelection.comparePoint(range.start);\n var cmpEnd = this.$clickSelection.comparePoint(range.end);\n\n if (cmpStart == -1 && cmpEnd <= 0) {\n anchor = this.$clickSelection.end;\n if (range.end.row != cursor.row || range.end.column != cursor.column)\n cursor = range.start;\n } else if (cmpEnd == 1 && cmpStart >= 0) {\n anchor = this.$clickSelection.start;\n if (range.start.row != cursor.row || range.start.column != cursor.column)\n cursor = range.end;\n } else if (cmpStart == -1 && cmpEnd == 1) {\n cursor = range.end;\n anchor = range.start;\n } else {\n var orientedRange = calcRangeOrientation(this.$clickSelection, cursor);\n cursor = orientedRange.cursor;\n anchor = orientedRange.anchor;\n }\n editor.selection.setSelectionAnchor(anchor.row, anchor.column);\n }\n editor.selection.selectToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n };\n\n this.selectEnd =\n this.selectAllEnd =\n this.selectByWordsEnd =\n this.selectByLinesEnd = function() {\n this.$clickSelection = null;\n this.editor.unsetStyle(\"ace_selecting\");\n if (this.editor.renderer.scroller.releaseCapture) {\n this.editor.renderer.scroller.releaseCapture();\n }\n };\n\n this.focusWait = function() {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n var time = Date.now();\n\n if (distance > DRAG_OFFSET || time - this.mousedownEvent.time > this.$focusTimeout)\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n };\n\n this.onDoubleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n var session = editor.session;\n\n var range = session.getBracketRange(pos);\n if (range) {\n if (range.isEmpty()) {\n range.start.column--;\n range.end.column++;\n }\n this.setState(\"select\");\n } else {\n range = editor.selection.getWordRange(pos.row, pos.column);\n this.setState(\"selectByWords\");\n }\n this.$clickSelection = range;\n this.select();\n };\n\n this.onTripleClick = function(ev) {\n var pos = ev.getDocumentPosition();\n var editor = this.editor;\n\n this.setState(\"selectByLines\");\n var range = editor.getSelectionRange();\n if (range.isMultiLine() && range.contains(pos.row, pos.column)) {\n this.$clickSelection = editor.selection.getLineRange(range.start.row);\n this.$clickSelection.end = editor.selection.getLineRange(range.end.row).end;\n } else {\n this.$clickSelection = editor.selection.getLineRange(pos.row);\n }\n this.select();\n };\n\n this.onQuadClick = function(ev) {\n var editor = this.editor;\n\n editor.selectAll();\n this.$clickSelection = editor.getSelectionRange();\n this.setState(\"selectAll\");\n };\n\n this.onMouseWheel = function(ev) {\n if (ev.getAccelKey())\n return;\n if (ev.getShiftKey() && ev.wheelY && !ev.wheelX) {\n ev.wheelX = ev.wheelY;\n ev.wheelY = 0;\n }\n \n var editor = this.editor;\n \n if (!this.$lastScroll)\n this.$lastScroll = { t: 0, vx: 0, vy: 0, allowed: 0 };\n \n var prevScroll = this.$lastScroll;\n var t = ev.domEvent.timeStamp;\n var dt = t - prevScroll.t;\n var vx = dt ? ev.wheelX / dt : prevScroll.vx;\n var vy = dt ? ev.wheelY / dt : prevScroll.vy;\n if (dt < SCROLL_COOLDOWN_T) {\n vx = (vx + prevScroll.vx) / 2;\n vy = (vy + prevScroll.vy) / 2;\n }\n \n var direction = Math.abs(vx / vy);\n \n var canScroll = false;\n if (direction >= 1 && editor.renderer.isScrollableBy(ev.wheelX * ev.speed, 0))\n canScroll = true;\n if (direction <= 1 && editor.renderer.isScrollableBy(0, ev.wheelY * ev.speed))\n canScroll = true;\n \n if (canScroll) {\n prevScroll.allowed = t;\n } else if (t - prevScroll.allowed < SCROLL_COOLDOWN_T) {\n var isSlower = Math.abs(vx) <= 1.5 * Math.abs(prevScroll.vx)\n && Math.abs(vy) <= 1.5 * Math.abs(prevScroll.vy);\n if (isSlower) {\n canScroll = true;\n prevScroll.allowed = t;\n }\n else {\n prevScroll.allowed = 0;\n }\n }\n \n prevScroll.t = t;\n prevScroll.vx = vx;\n prevScroll.vy = vy;\n\n if (canScroll) {\n editor.renderer.scrollBy(ev.wheelX * ev.speed, ev.wheelY * ev.speed);\n return ev.stop();\n }\n };\n\n}).call(DefaultHandlers.prototype);\n\nexports.DefaultHandlers = DefaultHandlers;\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nfunction calcRangeOrientation(range, cursor) {\n if (range.start.row == range.end.row)\n var cmp = 2 * cursor.column - range.start.column - range.end.column;\n else if (range.start.row == range.end.row - 1 && !range.start.column && !range.end.column)\n var cmp = cursor.column - 4;\n else\n var cmp = 2 * cursor.row - range.start.row - range.end.row;\n\n if (cmp < 0)\n return {cursor: range.start, anchor: range.end};\n else\n return {cursor: range.end, anchor: range.start};\n}\n\n});\n\nace.define(\"ace/tooltip\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nfunction Tooltip (parentNode) {\n this.isOpen = false;\n this.$element = null;\n this.$parentNode = parentNode;\n}\n\n(function() {\n this.$init = function() {\n this.$element = dom.createElement(\"div\");\n this.$element.className = \"ace_tooltip\";\n this.$element.style.display = \"none\";\n this.$parentNode.appendChild(this.$element);\n return this.$element;\n };\n this.getElement = function() {\n return this.$element || this.$init();\n };\n this.setText = function(text) {\n this.getElement().textContent = text;\n };\n this.setHtml = function(html) {\n this.getElement().innerHTML = html;\n };\n this.setPosition = function(x, y) {\n this.getElement().style.left = x + \"px\";\n this.getElement().style.top = y + \"px\";\n };\n this.setClassName = function(className) {\n dom.addCssClass(this.getElement(), className);\n };\n this.show = function(text, x, y) {\n if (text != null)\n this.setText(text);\n if (x != null && y != null)\n this.setPosition(x, y);\n if (!this.isOpen) {\n this.getElement().style.display = \"block\";\n this.isOpen = true;\n }\n };\n\n this.hide = function() {\n if (this.isOpen) {\n this.getElement().style.display = \"none\";\n this.isOpen = false;\n }\n };\n this.getHeight = function() {\n return this.getElement().offsetHeight;\n };\n this.getWidth = function() {\n return this.getElement().offsetWidth;\n };\n \n this.destroy = function() {\n this.isOpen = false;\n if (this.$element && this.$element.parentNode) {\n this.$element.parentNode.removeChild(this.$element);\n }\n };\n\n}).call(Tooltip.prototype);\n\nexports.Tooltip = Tooltip;\n});\n\nace.define(\"ace/mouse/default_gutter_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/oop\",\"ace/lib/event\",\"ace/tooltip\"], function(require, exports, module) {\n\"use strict\";\nvar dom = require(\"../lib/dom\");\nvar oop = require(\"../lib/oop\");\nvar event = require(\"../lib/event\");\nvar Tooltip = require(\"../tooltip\").Tooltip;\n\nfunction GutterHandler(mouseHandler) {\n var editor = mouseHandler.editor;\n var gutter = editor.renderer.$gutterLayer;\n var tooltip = new GutterTooltip(editor.container);\n\n mouseHandler.editor.setDefaultHandler(\"guttermousedown\", function(e) {\n if (!editor.isFocused() || e.getButton() != 0)\n return;\n var gutterRegion = gutter.getRegion(e);\n\n if (gutterRegion == \"foldWidgets\")\n return;\n\n var row = e.getDocumentPosition().row;\n var selection = editor.session.selection;\n\n if (e.getShiftKey())\n selection.selectTo(row, 0);\n else {\n if (e.domEvent.detail == 2) {\n editor.selectAll();\n return e.preventDefault();\n }\n mouseHandler.$clickSelection = editor.selection.getLineRange(row);\n }\n mouseHandler.setState(\"selectByLines\");\n mouseHandler.captureMouse(e);\n return e.preventDefault();\n });\n\n\n var tooltipTimeout, mouseEvent, tooltipAnnotation;\n\n function showTooltip() {\n var row = mouseEvent.getDocumentPosition().row;\n var annotation = gutter.$annotations[row];\n if (!annotation)\n return hideTooltip();\n\n var maxRow = editor.session.getLength();\n if (row == maxRow) {\n var screenRow = editor.renderer.pixelToScreenCoordinates(0, mouseEvent.y).row;\n var pos = mouseEvent.$pos;\n if (screenRow > editor.session.documentToScreenRow(pos.row, pos.column))\n return hideTooltip();\n }\n\n if (tooltipAnnotation == annotation)\n return;\n tooltipAnnotation = annotation.text.join(\"
    \");\n\n tooltip.setHtml(tooltipAnnotation);\n tooltip.show();\n editor._signal(\"showGutterTooltip\", tooltip);\n editor.on(\"mousewheel\", hideTooltip);\n\n if (mouseHandler.$tooltipFollowsMouse) {\n moveTooltip(mouseEvent);\n } else {\n var gutterElement = mouseEvent.domEvent.target;\n var rect = gutterElement.getBoundingClientRect();\n var style = tooltip.getElement().style;\n style.left = rect.right + \"px\";\n style.top = rect.bottom + \"px\";\n }\n }\n\n function hideTooltip() {\n if (tooltipTimeout)\n tooltipTimeout = clearTimeout(tooltipTimeout);\n if (tooltipAnnotation) {\n tooltip.hide();\n tooltipAnnotation = null;\n editor._signal(\"hideGutterTooltip\", tooltip);\n editor.off(\"mousewheel\", hideTooltip);\n }\n }\n\n function moveTooltip(e) {\n tooltip.setPosition(e.x, e.y);\n }\n\n mouseHandler.editor.setDefaultHandler(\"guttermousemove\", function(e) {\n var target = e.domEvent.target || e.domEvent.srcElement;\n if (dom.hasCssClass(target, \"ace_fold-widget\"))\n return hideTooltip();\n\n if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse)\n moveTooltip(e);\n\n mouseEvent = e;\n if (tooltipTimeout)\n return;\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n if (mouseEvent && !mouseHandler.isMousePressed)\n showTooltip();\n else\n hideTooltip();\n }, 50);\n });\n\n event.addListener(editor.renderer.$gutter, \"mouseout\", function(e) {\n mouseEvent = null;\n if (!tooltipAnnotation || tooltipTimeout)\n return;\n\n tooltipTimeout = setTimeout(function() {\n tooltipTimeout = null;\n hideTooltip();\n }, 50);\n }, editor);\n \n editor.on(\"changeSession\", hideTooltip);\n}\n\nfunction GutterTooltip(parentNode) {\n Tooltip.call(this, parentNode);\n}\n\noop.inherits(GutterTooltip, Tooltip);\n\n(function(){\n this.setPosition = function(x, y) {\n var windowWidth = window.innerWidth || document.documentElement.clientWidth;\n var windowHeight = window.innerHeight || document.documentElement.clientHeight;\n var width = this.getWidth();\n var height = this.getHeight();\n x += 15;\n y += 15;\n if (x + width > windowWidth) {\n x -= (x + width) - windowWidth;\n }\n if (y + height > windowHeight) {\n y -= 20 + height;\n }\n Tooltip.prototype.setPosition.call(this, x, y);\n };\n\n}).call(GutterTooltip.prototype);\n\n\n\nexports.GutterHandler = GutterHandler;\n\n});\n\nace.define(\"ace/mouse/mouse_event\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar MouseEvent = exports.MouseEvent = function(domEvent, editor) {\n this.domEvent = domEvent;\n this.editor = editor;\n \n this.x = this.clientX = domEvent.clientX;\n this.y = this.clientY = domEvent.clientY;\n\n this.$pos = null;\n this.$inSelection = null;\n \n this.propagationStopped = false;\n this.defaultPrevented = false;\n};\n\n(function() { \n \n this.stopPropagation = function() {\n event.stopPropagation(this.domEvent);\n this.propagationStopped = true;\n };\n \n this.preventDefault = function() {\n event.preventDefault(this.domEvent);\n this.defaultPrevented = true;\n };\n \n this.stop = function() {\n this.stopPropagation();\n this.preventDefault();\n };\n this.getDocumentPosition = function() {\n if (this.$pos)\n return this.$pos;\n \n this.$pos = this.editor.renderer.screenToTextCoordinates(this.clientX, this.clientY);\n return this.$pos;\n };\n this.inSelection = function() {\n if (this.$inSelection !== null)\n return this.$inSelection;\n \n var editor = this.editor;\n \n\n var selectionRange = editor.getSelectionRange();\n if (selectionRange.isEmpty())\n this.$inSelection = false;\n else {\n var pos = this.getDocumentPosition();\n this.$inSelection = selectionRange.contains(pos.row, pos.column);\n }\n\n return this.$inSelection;\n };\n this.getButton = function() {\n return event.getButton(this.domEvent);\n };\n this.getShiftKey = function() {\n return this.domEvent.shiftKey;\n };\n \n this.getAccelKey = useragent.isMac\n ? function() { return this.domEvent.metaKey; }\n : function() { return this.domEvent.ctrlKey; };\n \n}).call(MouseEvent.prototype);\n\n});\n\nace.define(\"ace/mouse/dragdrop_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"../lib/dom\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\n\nvar AUTOSCROLL_DELAY = 200;\nvar SCROLL_CURSOR_DELAY = 200;\nvar SCROLL_CURSOR_HYSTERESIS = 5;\n\nfunction DragdropHandler(mouseHandler) {\n\n var editor = mouseHandler.editor;\n\n var dragImage = dom.createElement(\"div\");\n dragImage.style.cssText = \"top:-100px;position:absolute;z-index:2147483647;opacity:0.5\";\n dragImage.textContent = \"\\xa0\";\n\n var exports = [\"dragWait\", \"dragWaitEnd\", \"startDrag\", \"dragReadyEnd\", \"onMouseDrag\"];\n\n exports.forEach(function(x) {\n mouseHandler[x] = this[x];\n }, this);\n editor.on(\"mousedown\", this.onMouseDown.bind(mouseHandler));\n\n var mouseTarget = editor.container;\n var dragSelectionMarker, x, y;\n var timerId, range;\n var dragCursor, counter = 0;\n var dragOperation;\n var isInternal;\n var autoScrollStartTime;\n var cursorMovedTime;\n var cursorPointOnCaretMoved;\n\n this.onDragStart = function(e) {\n if (this.cancelDrag || !mouseTarget.draggable) {\n var self = this;\n setTimeout(function(){\n self.startSelect();\n self.captureMouse(e);\n }, 0);\n return e.preventDefault();\n }\n range = editor.getSelectionRange();\n\n var dataTransfer = e.dataTransfer;\n dataTransfer.effectAllowed = editor.getReadOnly() ? \"copy\" : \"copyMove\";\n editor.container.appendChild(dragImage);\n\n dataTransfer.setDragImage && dataTransfer.setDragImage(dragImage, 0, 0);\n setTimeout(function() {\n editor.container.removeChild(dragImage);\n });\n dataTransfer.clearData();\n dataTransfer.setData(\"Text\", editor.session.getTextRange());\n\n isInternal = true;\n this.setState(\"drag\");\n };\n\n this.onDragEnd = function(e) {\n mouseTarget.draggable = false;\n isInternal = false;\n this.setState(null);\n if (!editor.getReadOnly()) {\n var dropEffect = e.dataTransfer.dropEffect;\n if (!dragOperation && dropEffect == \"move\")\n editor.session.remove(editor.getSelectionRange());\n editor.$resetCursorStyle();\n }\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n };\n\n this.onDragEnter = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker)\n addDragMarker();\n counter++;\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragOver = function(e) {\n if (editor.getReadOnly() || !canAccept(e.dataTransfer))\n return;\n x = e.clientX;\n y = e.clientY;\n if (!dragSelectionMarker) {\n addDragMarker();\n counter++;\n }\n if (onMouseMoveTimer !== null)\n onMouseMoveTimer = null;\n\n e.dataTransfer.dropEffect = dragOperation = getDropEffect(e);\n return event.preventDefault(e);\n };\n\n this.onDragLeave = function(e) {\n counter--;\n if (counter <= 0 && dragSelectionMarker) {\n clearDragMarker();\n dragOperation = null;\n return event.preventDefault(e);\n }\n };\n\n this.onDrop = function(e) {\n if (!dragCursor)\n return;\n var dataTransfer = e.dataTransfer;\n if (isInternal) {\n switch (dragOperation) {\n case \"move\":\n if (range.contains(dragCursor.row, dragCursor.column)) {\n range = {\n start: dragCursor,\n end: dragCursor\n };\n } else {\n range = editor.moveText(range, dragCursor);\n }\n break;\n case \"copy\":\n range = editor.moveText(range, dragCursor, true);\n break;\n }\n } else {\n var dropData = dataTransfer.getData('Text');\n range = {\n start: dragCursor,\n end: editor.session.insert(dragCursor, dropData)\n };\n editor.focus();\n dragOperation = null;\n }\n clearDragMarker();\n return event.preventDefault(e);\n };\n\n event.addListener(mouseTarget, \"dragstart\", this.onDragStart.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragend\", this.onDragEnd.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragenter\", this.onDragEnter.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragover\", this.onDragOver.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"dragleave\", this.onDragLeave.bind(mouseHandler), editor);\n event.addListener(mouseTarget, \"drop\", this.onDrop.bind(mouseHandler), editor);\n\n function scrollCursorIntoView(cursor, prevCursor) {\n var now = Date.now();\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n var hMovement = !prevCursor || cursor.column != prevCursor.column;\n if (!cursorMovedTime || vMovement || hMovement) {\n editor.moveCursorToPosition(cursor);\n cursorMovedTime = now;\n cursorPointOnCaretMoved = {x: x, y: y};\n } else {\n var distance = calcDistance(cursorPointOnCaretMoved.x, cursorPointOnCaretMoved.y, x, y);\n if (distance > SCROLL_CURSOR_HYSTERESIS) {\n cursorMovedTime = null;\n } else if (now - cursorMovedTime >= SCROLL_CURSOR_DELAY) {\n editor.renderer.scrollCursorIntoView();\n cursorMovedTime = null;\n }\n }\n }\n\n function autoScroll(cursor, prevCursor) {\n var now = Date.now();\n var lineHeight = editor.renderer.layerConfig.lineHeight;\n var characterWidth = editor.renderer.layerConfig.characterWidth;\n var editorRect = editor.renderer.scroller.getBoundingClientRect();\n var offsets = {\n x: {\n left: x - editorRect.left,\n right: editorRect.right - x\n },\n y: {\n top: y - editorRect.top,\n bottom: editorRect.bottom - y\n }\n };\n var nearestXOffset = Math.min(offsets.x.left, offsets.x.right);\n var nearestYOffset = Math.min(offsets.y.top, offsets.y.bottom);\n var scrollCursor = {row: cursor.row, column: cursor.column};\n if (nearestXOffset / characterWidth <= 2) {\n scrollCursor.column += (offsets.x.left < offsets.x.right ? -3 : +2);\n }\n if (nearestYOffset / lineHeight <= 1) {\n scrollCursor.row += (offsets.y.top < offsets.y.bottom ? -1 : +1);\n }\n var vScroll = cursor.row != scrollCursor.row;\n var hScroll = cursor.column != scrollCursor.column;\n var vMovement = !prevCursor || cursor.row != prevCursor.row;\n if (vScroll || (hScroll && !vMovement)) {\n if (!autoScrollStartTime)\n autoScrollStartTime = now;\n else if (now - autoScrollStartTime >= AUTOSCROLL_DELAY)\n editor.renderer.scrollCursorIntoView(scrollCursor);\n } else {\n autoScrollStartTime = null;\n }\n }\n\n function onDragInterval() {\n var prevCursor = dragCursor;\n dragCursor = editor.renderer.screenToTextCoordinates(x, y);\n scrollCursorIntoView(dragCursor, prevCursor);\n autoScroll(dragCursor, prevCursor);\n }\n\n function addDragMarker() {\n range = editor.selection.toOrientedRange();\n dragSelectionMarker = editor.session.addMarker(range, \"ace_selection\", editor.getSelectionStyle());\n editor.clearSelection();\n if (editor.isFocused())\n editor.renderer.$cursorLayer.setBlinking(false);\n clearInterval(timerId);\n onDragInterval();\n timerId = setInterval(onDragInterval, 20);\n counter = 0;\n event.addListener(document, \"mousemove\", onMouseMove);\n }\n\n function clearDragMarker() {\n clearInterval(timerId);\n editor.session.removeMarker(dragSelectionMarker);\n dragSelectionMarker = null;\n editor.selection.fromOrientedRange(range);\n if (editor.isFocused() && !isInternal)\n editor.$resetCursorStyle();\n range = null;\n dragCursor = null;\n counter = 0;\n autoScrollStartTime = null;\n cursorMovedTime = null;\n event.removeListener(document, \"mousemove\", onMouseMove);\n }\n var onMouseMoveTimer = null;\n function onMouseMove() {\n if (onMouseMoveTimer == null) {\n onMouseMoveTimer = setTimeout(function() {\n if (onMouseMoveTimer != null && dragSelectionMarker)\n clearDragMarker();\n }, 20);\n }\n }\n\n function canAccept(dataTransfer) {\n var types = dataTransfer.types;\n return !types || Array.prototype.some.call(types, function(type) {\n return type == 'text/plain' || type == 'Text';\n });\n }\n\n function getDropEffect(e) {\n var copyAllowed = ['copy', 'copymove', 'all', 'uninitialized'];\n var moveAllowed = ['move', 'copymove', 'linkmove', 'all', 'uninitialized'];\n\n var copyModifierState = useragent.isMac ? e.altKey : e.ctrlKey;\n var effectAllowed = \"uninitialized\";\n try {\n effectAllowed = e.dataTransfer.effectAllowed.toLowerCase();\n } catch (e) {}\n var dropEffect = \"none\";\n\n if (copyModifierState && copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n else if (moveAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"move\";\n else if (copyAllowed.indexOf(effectAllowed) >= 0)\n dropEffect = \"copy\";\n\n return dropEffect;\n }\n}\n\n(function() {\n\n this.dragWait = function() {\n var interval = Date.now() - this.mousedownEvent.time;\n if (interval > this.editor.getDragDelay())\n this.startDrag();\n };\n\n this.dragWaitEnd = function() {\n var target = this.editor.container;\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n this.selectEnd();\n };\n\n this.dragReadyEnd = function(e) {\n this.editor.$resetCursorStyle();\n this.editor.unsetStyle(\"ace_dragging\");\n this.editor.renderer.setCursorStyle(\"\");\n this.dragWaitEnd();\n };\n\n this.startDrag = function(){\n this.cancelDrag = false;\n var editor = this.editor;\n var target = editor.container;\n target.draggable = true;\n editor.renderer.$cursorLayer.setBlinking(false);\n editor.setStyle(\"ace_dragging\");\n var cursorStyle = useragent.isWin ? \"default\" : \"move\";\n editor.renderer.setCursorStyle(cursorStyle);\n this.setState(\"dragReady\");\n };\n\n this.onMouseDrag = function(e) {\n var target = this.editor.container;\n if (useragent.isIE && this.state == \"dragReady\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 3)\n target.dragDrop();\n }\n if (this.state === \"dragWait\") {\n var distance = calcDistance(this.mousedownEvent.x, this.mousedownEvent.y, this.x, this.y);\n if (distance > 0) {\n target.draggable = false;\n this.startSelect(this.mousedownEvent.getDocumentPosition());\n }\n }\n };\n\n this.onMouseDown = function(e) {\n if (!this.$dragEnabled)\n return;\n this.mousedownEvent = e;\n var editor = this.editor;\n\n var inSelection = e.inSelection();\n var button = e.getButton();\n var clickCount = e.domEvent.detail || 1;\n if (clickCount === 1 && button === 0 && inSelection) {\n if (e.editor.inMultiSelectMode && (e.getAccelKey() || e.getShiftKey()))\n return;\n this.mousedownEvent.time = Date.now();\n var eventTarget = e.domEvent.target || e.domEvent.srcElement;\n if (\"unselectable\" in eventTarget)\n eventTarget.unselectable = \"on\";\n if (editor.getDragDelay()) {\n if (useragent.isWebKit) {\n this.cancelDrag = true;\n var mouseTarget = editor.container;\n mouseTarget.draggable = true;\n }\n this.setState(\"dragWait\");\n } else {\n this.startDrag();\n }\n this.captureMouse(e, this.onMouseDrag.bind(this));\n e.defaultPrevented = true;\n }\n };\n\n}).call(DragdropHandler.prototype);\n\n\nfunction calcDistance(ax, ay, bx, by) {\n return Math.sqrt(Math.pow(bx - ax, 2) + Math.pow(by - ay, 2));\n}\n\nexports.DragdropHandler = DragdropHandler;\n\n});\n\nace.define(\"ace/mouse/touch_handler\",[\"require\",\"exports\",\"module\",\"ace/mouse/mouse_event\",\"ace/lib/event\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar MouseEvent = require(\"./mouse_event\").MouseEvent;\nvar event = require(\"../lib/event\");\nvar dom = require(\"../lib/dom\");\n\nexports.addTouchListeners = function(el, editor) {\n var mode = \"scroll\";\n var startX;\n var startY;\n var touchStartT;\n var lastT;\n var longTouchTimer;\n var animationTimer;\n var animationSteps = 0;\n var pos;\n var clickCount = 0;\n var vX = 0;\n var vY = 0;\n var pressed;\n var contextMenu;\n \n function createContextMenu() {\n var clipboard = window.navigator && window.navigator.clipboard;\n var isOpen = false;\n var updateMenu = function() {\n var selected = editor.getCopyText();\n var hasUndo = editor.session.getUndoManager().hasUndo();\n contextMenu.replaceChild(\n dom.buildDom(isOpen ? [\"span\",\n !selected && [\"span\", { class: \"ace_mobile-button\", action: \"selectall\" }, \"Select All\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"copy\" }, \"Copy\"],\n selected && [\"span\", { class: \"ace_mobile-button\", action: \"cut\" }, \"Cut\"],\n clipboard && [\"span\", { class: \"ace_mobile-button\", action: \"paste\" }, \"Paste\"],\n hasUndo && [\"span\", { class: \"ace_mobile-button\", action: \"undo\" }, \"Undo\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"find\" }, \"Find\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"openCommandPallete\" }, \"Pallete\"]\n ] : [\"span\"]),\n contextMenu.firstChild\n );\n };\n var handleClick = function(e) {\n var action = e.target.getAttribute(\"action\");\n\n if (action == \"more\" || !isOpen) {\n isOpen = !isOpen;\n return updateMenu();\n }\n if (action == \"paste\") {\n clipboard.readText().then(function (text) {\n editor.execCommand(action, text);\n });\n }\n else if (action) {\n if (action == \"cut\" || action == \"copy\") {\n if (clipboard)\n clipboard.writeText(editor.getCopyText());\n else\n document.execCommand(\"copy\");\n }\n editor.execCommand(action);\n }\n contextMenu.firstChild.style.display = \"none\";\n isOpen = false;\n if (action != \"openCommandPallete\")\n editor.focus();\n };\n contextMenu = dom.buildDom([\"div\",\n {\n class: \"ace_mobile-menu\",\n ontouchstart: function(e) {\n mode = \"menu\";\n e.stopPropagation();\n e.preventDefault();\n editor.textInput.focus();\n },\n ontouchend: function(e) {\n e.stopPropagation();\n e.preventDefault();\n handleClick(e);\n },\n onclick: handleClick\n },\n [\"span\"],\n [\"span\", { class: \"ace_mobile-button\", action: \"more\" }, \"...\"]\n ], editor.container);\n }\n function showContextMenu() {\n if (!contextMenu) createContextMenu();\n var cursor = editor.selection.cursor;\n var pagePos = editor.renderer.textToScreenCoordinates(cursor.row, cursor.column);\n var leftOffset = editor.renderer.textToScreenCoordinates(0, 0).pageX;\n var scrollLeft = editor.renderer.scrollLeft;\n var rect = editor.container.getBoundingClientRect();\n contextMenu.style.top = pagePos.pageY - rect.top - 3 + \"px\";\n if (pagePos.pageX - rect.left < rect.width - 70) {\n contextMenu.style.left = \"\";\n contextMenu.style.right = \"10px\";\n } else {\n contextMenu.style.right = \"\";\n contextMenu.style.left = leftOffset + scrollLeft - rect.left + \"px\";\n }\n contextMenu.style.display = \"\";\n contextMenu.firstChild.style.display = \"none\";\n editor.on(\"input\", hideContextMenu);\n }\n function hideContextMenu(e) {\n if (contextMenu)\n contextMenu.style.display = \"none\";\n editor.off(\"input\", hideContextMenu);\n }\n\n function handleLongTap() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n var range = editor.selection.getRange();\n var inSelection = range.contains(pos.row, pos.column);\n if (range.isEmpty() || !inSelection) {\n editor.selection.moveToPosition(pos);\n editor.selection.selectWord();\n }\n mode = \"wait\";\n showContextMenu();\n }\n function switchToSelectionMode() {\n longTouchTimer = null;\n clearTimeout(longTouchTimer);\n editor.selection.moveToPosition(pos);\n var range = clickCount >= 2\n ? editor.selection.getLineRange(pos.row)\n : editor.session.getBracketRange(pos);\n if (range && !range.isEmpty()) {\n editor.selection.setRange(range);\n } else {\n editor.selection.selectWord();\n }\n mode = \"wait\";\n }\n event.addListener(el, \"contextmenu\", function(e) {\n if (!pressed) return;\n var textarea = editor.textInput.getElement();\n textarea.focus();\n }, editor);\n event.addListener(el, \"touchstart\", function (e) {\n var touches = e.touches;\n if (longTouchTimer || touches.length > 1) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n touchStartT = -1;\n mode = \"zoom\";\n return;\n }\n \n pressed = editor.$mouseHandler.isMousePressed = true;\n var h = editor.renderer.layerConfig.lineHeight;\n var w = editor.renderer.layerConfig.lineHeight;\n var t = e.timeStamp;\n lastT = t;\n var touchObj = touches[0];\n var x = touchObj.clientX;\n var y = touchObj.clientY;\n if (Math.abs(startX - x) + Math.abs(startY - y) > h)\n touchStartT = -1;\n \n startX = e.clientX = x;\n startY = e.clientY = y;\n vX = vY = 0;\n \n var ev = new MouseEvent(e, editor);\n pos = ev.getDocumentPosition();\n\n if (t - touchStartT < 500 && touches.length == 1 && !animationSteps) {\n clickCount++;\n e.preventDefault();\n e.button = 0;\n switchToSelectionMode();\n } else {\n clickCount = 0;\n var cursor = editor.selection.cursor;\n var anchor = editor.selection.isEmpty() ? cursor : editor.selection.anchor;\n \n var cursorPos = editor.renderer.$cursorLayer.getPixelPosition(cursor, true);\n var anchorPos = editor.renderer.$cursorLayer.getPixelPosition(anchor, true);\n var rect = editor.renderer.scroller.getBoundingClientRect();\n var offsetTop = editor.renderer.layerConfig.offset;\n var offsetLeft = editor.renderer.scrollLeft;\n var weightedDistance = function(x, y) {\n x = x / w;\n y = y / h - 0.75;\n return x * x + y * y;\n };\n \n if (e.clientX < rect.left) {\n mode = \"zoom\";\n return;\n }\n \n var diff1 = weightedDistance(\n e.clientX - rect.left - cursorPos.left + offsetLeft,\n e.clientY - rect.top - cursorPos.top + offsetTop\n );\n var diff2 = weightedDistance(\n e.clientX - rect.left - anchorPos.left + offsetLeft,\n e.clientY - rect.top - anchorPos.top + offsetTop\n );\n if (diff1 < 3.5 && diff2 < 3.5)\n mode = diff1 > diff2 ? \"cursor\" : \"anchor\";\n \n if (diff2 < 3.5)\n mode = \"anchor\";\n else if (diff1 < 3.5)\n mode = \"cursor\";\n else\n mode = \"scroll\";\n longTouchTimer = setTimeout(handleLongTap, 450);\n }\n touchStartT = t;\n }, editor);\n\n event.addListener(el, \"touchend\", function (e) {\n pressed = editor.$mouseHandler.isMousePressed = false;\n if (animationTimer) clearInterval(animationTimer);\n if (mode == \"zoom\") {\n mode = \"\";\n animationSteps = 0;\n } else if (longTouchTimer) {\n editor.selection.moveToPosition(pos);\n animationSteps = 0;\n showContextMenu();\n } else if (mode == \"scroll\") {\n animate();\n hideContextMenu();\n } else {\n showContextMenu();\n }\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }, editor);\n event.addListener(el, \"touchmove\", function (e) {\n if (longTouchTimer) {\n clearTimeout(longTouchTimer);\n longTouchTimer = null;\n }\n var touches = e.touches;\n if (touches.length > 1 || mode == \"zoom\") return;\n\n var touchObj = touches[0];\n\n var wheelX = startX - touchObj.clientX;\n var wheelY = startY - touchObj.clientY;\n\n if (mode == \"wait\") {\n if (wheelX * wheelX + wheelY * wheelY > 4)\n mode = \"cursor\";\n else\n return e.preventDefault();\n }\n\n startX = touchObj.clientX;\n startY = touchObj.clientY;\n\n e.clientX = touchObj.clientX;\n e.clientY = touchObj.clientY;\n\n var t = e.timeStamp;\n var dt = t - lastT;\n lastT = t;\n if (mode == \"scroll\") {\n var mouseEvent = new MouseEvent(e, editor);\n mouseEvent.speed = 1;\n mouseEvent.wheelX = wheelX;\n mouseEvent.wheelY = wheelY;\n if (10 * Math.abs(wheelX) < Math.abs(wheelY)) wheelX = 0;\n if (10 * Math.abs(wheelY) < Math.abs(wheelX)) wheelY = 0;\n if (dt != 0) {\n vX = wheelX / dt;\n vY = wheelY / dt;\n }\n editor._emit(\"mousewheel\", mouseEvent);\n if (!mouseEvent.propagationStopped) {\n vX = vY = 0;\n }\n }\n else {\n var ev = new MouseEvent(e, editor);\n var pos = ev.getDocumentPosition();\n if (mode == \"cursor\")\n editor.selection.moveCursorToPosition(pos);\n else if (mode == \"anchor\")\n editor.selection.setSelectionAnchor(pos.row, pos.column);\n editor.renderer.scrollCursorIntoView(pos);\n e.preventDefault();\n }\n }, editor);\n\n function animate() {\n animationSteps += 60;\n animationTimer = setInterval(function() {\n if (animationSteps-- <= 0) {\n clearInterval(animationTimer);\n animationTimer = null;\n }\n if (Math.abs(vX) < 0.01) vX = 0;\n if (Math.abs(vY) < 0.01) vY = 0;\n if (animationSteps < 20) vX = 0.9 * vX;\n if (animationSteps < 20) vY = 0.9 * vY;\n var oldScrollTop = editor.session.getScrollTop();\n editor.renderer.scrollBy(10 * vX, 10 * vY);\n if (oldScrollTop == editor.session.getScrollTop())\n animationSteps = 0;\n }, 10);\n }\n};\n\n});\n\nace.define(\"ace/lib/net\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\nvar dom = require(\"./dom\");\n\nexports.get = function (url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, true);\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n callback(xhr.responseText);\n }\n };\n xhr.send(null);\n};\n\nexports.loadScript = function(path, callback) {\n var head = dom.getDocumentHead();\n var s = document.createElement('script');\n\n s.src = path;\n head.appendChild(s);\n\n s.onload = s.onreadystatechange = function(_, isAbort) {\n if (isAbort || !s.readyState || s.readyState == \"loaded\" || s.readyState == \"complete\") {\n s = s.onload = s.onreadystatechange = null;\n if (!isAbort)\n callback();\n }\n };\n};\nexports.qualifyURL = function(url) {\n var a = document.createElement('a');\n a.href = url;\n return a.href;\n};\n\n});\n\nace.define(\"ace/lib/event_emitter\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nvar EventEmitter = {};\nvar stopPropagation = function() { this.propagationStopped = true; };\nvar preventDefault = function() { this.defaultPrevented = true; };\n\nEventEmitter._emit =\nEventEmitter._dispatchEvent = function(eventName, e) {\n this._eventRegistry || (this._eventRegistry = {});\n this._defaultHandlers || (this._defaultHandlers = {});\n\n var listeners = this._eventRegistry[eventName] || [];\n var defaultHandler = this._defaultHandlers[eventName];\n if (!listeners.length && !defaultHandler)\n return;\n\n if (typeof e != \"object\" || !e)\n e = {};\n\n if (!e.type)\n e.type = eventName;\n if (!e.stopPropagation)\n e.stopPropagation = stopPropagation;\n if (!e.preventDefault)\n e.preventDefault = preventDefault;\n\n listeners = listeners.slice();\n for (var i=0; i 1)\n base = parts[parts.length - 2];\n var path = options[component + \"Path\"];\n if (path == null) {\n path = options.basePath;\n } else if (sep == \"/\") {\n component = sep = \"\";\n }\n if (path && path.slice(-1) != \"/\")\n path += \"/\";\n return path + component + sep + base + this.get(\"suffix\");\n};\n\nexports.setModuleUrl = function(name, subst) {\n return options.$moduleUrls[name] = subst;\n};\n\nexports.$loading = {};\nexports.loadModule = function(moduleName, onLoad) {\n var module, moduleType;\n if (Array.isArray(moduleName)) {\n moduleType = moduleName[0];\n moduleName = moduleName[1];\n }\n\n try {\n module = require(moduleName);\n } catch (e) {}\n if (module && !exports.$loading[moduleName])\n return onLoad && onLoad(module);\n\n if (!exports.$loading[moduleName])\n exports.$loading[moduleName] = [];\n\n exports.$loading[moduleName].push(onLoad);\n\n if (exports.$loading[moduleName].length > 1)\n return;\n\n var afterLoad = function() {\n require([moduleName], function(module) {\n exports._emit(\"load.module\", {name: moduleName, module: module});\n var listeners = exports.$loading[moduleName];\n exports.$loading[moduleName] = null;\n listeners.forEach(function(onLoad) {\n onLoad && onLoad(module);\n });\n });\n };\n\n if (!exports.get(\"packaged\"))\n return afterLoad();\n \n net.loadScript(exports.moduleUrl(moduleName, moduleType), afterLoad);\n reportErrorIfPathIsNotConfigured();\n};\n\nvar reportErrorIfPathIsNotConfigured = function() {\n if (\n !options.basePath && !options.workerPath \n && !options.modePath && !options.themePath\n && !Object.keys(options.$moduleUrls).length\n ) {\n console.error(\n \"Unable to infer path to ace from script src,\",\n \"use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes\",\n \"or with webpack use ace/webpack-resolver\"\n );\n reportErrorIfPathIsNotConfigured = function() {};\n }\n};\ninit(true);function init(packaged) {\n\n if (!global || !global.document)\n return;\n \n options.packaged = packaged || require.packaged || module.packaged || (global.define && define.packaged);\n\n var scriptOptions = {};\n var scriptUrl = \"\";\n var currentScript = (document.currentScript || document._currentScript ); // native or polyfill\n var currentDocument = currentScript && currentScript.ownerDocument || document;\n \n var scripts = currentDocument.getElementsByTagName(\"script\");\n for (var i=0; i 0){\n\t\t\tif (action == 0x10){\n\t\t\t\tfor(i = condPos; i < ix; i++){\n\t\t\t\t\tlevels[i] = 1;\n\t\t\t\t}\n\t\t\t\tcondPos = -1;\n\t\t\t} else {\n\t\t\t\tcondPos = -1;\n\t\t\t}\n\t\t}\n\t\tcond = impTab[newState][6];\n\t\tif (cond){\n\t\t\tif(condPos == -1){\n\t\t\t\tcondPos = ix;\n\t\t\t}\n\t\t}else{\n\t\t\tif (condPos > -1){\n\t\t\t\tfor(i = condPos; i < ix; i++){\n\t\t\t\t\tlevels[i] = newLevel;\n\t\t\t\t}\n\t\t\t\tcondPos = -1;\n\t\t\t}\n\t\t}\n\t\tif (charTypes[ix] == B){\n\t\t\tlevels[ix] = 0;\n\t\t}\n\t\thiLevel |= newLevel;\n\t}\n\tif (hasUBAT_S){\n\t\tfor(i = 0; i < len; i++){\n\t\t\tif(charTypes[i] == S){\n\t\t\t\tlevels[i] = dir;\n\t\t\t\tfor(var j = i - 1; j >= 0; j--){\n\t\t\t\t\tif(charTypes[j] == WS){\n\t\t\t\t\t\tlevels[j] = dir;\n\t\t\t\t\t}else{\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction _invertLevel(lev, levels, _array) {\n\tif (hiLevel < lev){\n\t\treturn;\n\t}\n\tif (lev == 1 && dir == RTL && !hasUBAT_B){\n\t\t_array.reverse();\n\t\treturn;\n\t}\n\tvar len = _array.length, start = 0, end, lo, hi, tmp;\n\twhile(start < len){\n\t\tif (levels[start] >= lev){\n\t\t\tend = start + 1;\n\t\twhile(end < len && levels[end] >= lev){\n\t\t\tend++;\n\t\t}\n\t\tfor(lo = start, hi = end - 1 ; lo < hi; lo++, hi--){\n\t\t\ttmp = _array[lo];\n\t\t\t_array[lo] = _array[hi];\n\t\t\t_array[hi] = tmp;\n\t\t}\n\t\tstart = end;\n\t}\n\tstart++;\n\t}\n}\n\nfunction _getCharClass(chars, types, classes, ix) {\t\t\t\n\tvar cType = types[ix], wType, nType, len, i;\n\tswitch(cType){\n\t\tcase L:\n\t\tcase R:\n\t\t\tlastArabic = false;\n\t\tcase ON:\n\t\tcase AN:\n\t\t\treturn cType;\n\t\tcase EN:\n\t\t\treturn lastArabic ? AN : EN;\n\t\tcase AL:\n\t\t\tlastArabic = true;\n\t\t\thasUBAT_AL = true;\n\t\t\treturn R;\n\t\tcase WS:\n\t\t\treturn ON;\n\t\tcase CS:\n\t\t\tif (ix < 1 || (ix + 1) >= types.length ||\n\t\t\t\t((wType = classes[ix - 1]) != EN && wType != AN) ||\n\t\t\t\t((nType = types[ix + 1]) != EN && nType != AN)){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\tif (lastArabic){nType = AN;}\n\t\t\treturn nType == wType ? nType : ON;\n\t\tcase ES:\n\t\t\twType = ix > 0 ? classes[ix - 1] : B;\n\t\t\tif (wType == EN && (ix + 1) < types.length && types[ix + 1] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\treturn ON;\n\t\tcase ET:\n\t\t\tif (ix > 0 && classes[ix - 1] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\tif (lastArabic){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\ti = ix + 1;\n\t\t\tlen = types.length;\n\t\t\twhile (i < len && types[i] == ET){\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < len && types[i] == EN){\n\t\t\t\treturn EN;\n\t\t\t}\n\t\t\treturn ON;\n\t\tcase NSM:\n\t\t\tlen = types.length;\n\t\t\ti = ix + 1;\n\t\t\twhile (i < len && types[i] == NSM){\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i < len){\n\t\t\t\tvar c = chars[ix], rtlCandidate = (c >= 0x0591 && c <= 0x08FF) || c == 0xFB1E;\n\t\t\t\t\n\t\t\t\twType = types[i];\n\t\t\t\tif (rtlCandidate && (wType == R || wType == AL)){\n\t\t\t\t\treturn R;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ix < 1 || (wType = types[ix - 1]) == B){\n\t\t\t\treturn ON;\n\t\t\t}\n\t\t\treturn classes[ix - 1];\n\t\tcase B:\n\t\t\tlastArabic = false;\n\t\t\thasUBAT_B = true;\n\t\t\treturn dir;\n\t\tcase S:\n\t\t\thasUBAT_S = true;\n\t\t\treturn ON;\n\t\tcase LRE:\n\t\tcase RLE:\n\t\tcase LRO:\n\t\tcase RLO:\n\t\tcase PDF:\n\t\t\tlastArabic = false;\n\t\tcase BN:\n\t\t\treturn ON;\n\t}\n}\n\nfunction _getCharacterType( ch ) {\t\t\n\tvar uc = ch.charCodeAt(0), hi = uc >> 8;\n\t\n\tif (hi == 0) {\t\t\n\t\treturn ((uc > 0x00BF) ? L : UnicodeTBL00[uc]);\n\t} else if (hi == 5) {\n\t\treturn (/[\\u0591-\\u05f4]/.test(ch) ? R : L);\n\t} else if (hi == 6) {\n\t\tif (/[\\u0610-\\u061a\\u064b-\\u065f\\u06d6-\\u06e4\\u06e7-\\u06ed]/.test(ch))\n\t\t\treturn NSM;\n\t\telse if (/[\\u0660-\\u0669\\u066b-\\u066c]/.test(ch))\n\t\t\treturn AN;\n\t\telse if (uc == 0x066A)\n\t\t\treturn ET;\n\t\telse if (/[\\u06f0-\\u06f9]/.test(ch))\n\t\t\treturn EN;\t\t\t\n\t\telse\n\t\t\treturn AL;\n\t} else if (hi == 0x20 && uc <= 0x205F) {\n\t\treturn UnicodeTBL20[uc & 0xFF];\n\t} else if (hi == 0xFE) {\n\t\treturn (uc >= 0xFE70 ? AL : ON);\n\t}\t\t\n\treturn ON;\t\n}\n\nfunction _isArabicDiacritics( ch ) {\n\treturn (ch >= '\\u064b' && ch <= '\\u0655');\n}\nexports.L = L;\nexports.R = R;\nexports.EN = EN;\nexports.ON_R = 3;\nexports.AN = 4;\nexports.R_H = 5;\nexports.B = 6;\nexports.RLE = 7;\n\nexports.DOT = \"\\xB7\";\nexports.doBidiReorder = function(text, textCharTypes, isRtl) {\n\tif (text.length < 2)\n\t\treturn {};\n\t\t\n\tvar chars = text.split(\"\"), logicalFromVisual = new Array(chars.length),\n\t\tbidiLevels = new Array(chars.length), levels = []; \n\n\tdir = isRtl ? RTL : LTR;\n\n\t_computeLevels(chars, levels, chars.length, textCharTypes);\n\n\tfor (var i = 0; i < logicalFromVisual.length; logicalFromVisual[i] = i, i++);\n\n\t_invertLevel(2, levels, logicalFromVisual);\n\t_invertLevel(1, levels, logicalFromVisual);\n\n\tfor (var i = 0; i < logicalFromVisual.length - 1; i++) { //fix levels to reflect character width\n\t\tif (textCharTypes[i] === AN) {\n\t\t\tlevels[i] = exports.AN;\n\t\t} else if (levels[i] === R && ((textCharTypes[i] > AL && textCharTypes[i] < LRE) \n\t\t\t|| textCharTypes[i] === ON || textCharTypes[i] === BN)) {\n\t\t\tlevels[i] = exports.ON_R;\n\t\t} else if ((i > 0 && chars[i - 1] === '\\u0644') && /\\u0622|\\u0623|\\u0625|\\u0627/.test(chars[i])) {\n\t\t\tlevels[i - 1] = levels[i] = exports.R_H;\n\t\t\ti++;\n\t\t}\n\t}\n\tif (chars[chars.length - 1] === exports.DOT)\n\t\tlevels[chars.length - 1] = exports.B;\n\t\t\t\t\n\tif (chars[0] === '\\u202B')\n\t\tlevels[0] = exports.RLE;\n\t\t\t\t\n\tfor (var i = 0; i < logicalFromVisual.length; i++) {\n\t\tbidiLevels[i] = levels[logicalFromVisual[i]];\n\t}\n\n\treturn {'logicalFromVisual': logicalFromVisual, 'bidiLevels': bidiLevels};\n};\nexports.hasBidiCharacters = function(text, textCharTypes){\n\tvar ret = false;\n\tfor (var i = 0; i < text.length; i++){\n\t\ttextCharTypes[i] = _getCharacterType(text.charAt(i));\n\t\tif (!ret && (textCharTypes[i] == R || textCharTypes[i] == AL || textCharTypes[i] == AN))\n\t\t\tret = true;\n\t}\n\treturn ret;\n};\t\nexports.getVisualFromLogicalIdx = function(logIdx, rowMap) {\n\tfor (var i = 0; i < rowMap.logicalFromVisual.length; i++) {\n\t\tif (rowMap.logicalFromVisual[i] == logIdx)\n\t\t\treturn i;\n\t}\n\treturn 0;\n};\n\n});\n\nace.define(\"ace/bidihandler\",[\"require\",\"exports\",\"module\",\"ace/lib/bidiutil\",\"ace/lib/lang\"], function(require, exports, module) {\n\"use strict\";\n\nvar bidiUtil = require(\"./lib/bidiutil\");\nvar lang = require(\"./lib/lang\");\nvar bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac\\u202B]/;\nvar BidiHandler = function(session) {\n this.session = session;\n this.bidiMap = {};\n this.currentRow = null;\n this.bidiUtil = bidiUtil;\n this.charWidths = [];\n this.EOL = \"\\xAC\";\n this.showInvisibles = true;\n this.isRtlDir = false;\n this.$isRtl = false;\n this.line = \"\";\n this.wrapIndent = 0;\n this.EOF = \"\\xB6\";\n this.RLE = \"\\u202B\";\n this.contentWidth = 0;\n this.fontMetrics = null;\n this.rtlLineOffset = 0;\n this.wrapOffset = 0;\n this.isMoveLeftOperation = false;\n this.seenBidi = bidiRE.test(session.getValue());\n};\n\n(function() {\n this.isBidiRow = function(screenRow, docRow, splitIndex) {\n if (!this.seenBidi)\n return false;\n if (screenRow !== this.currentRow) {\n this.currentRow = screenRow;\n this.updateRowLine(docRow, splitIndex);\n this.updateBidiMap();\n }\n return this.bidiMap.bidiLevels;\n };\n\n this.onChange = function(delta) {\n if (!this.seenBidi) {\n if (delta.action == \"insert\" && bidiRE.test(delta.lines.join(\"\\n\"))) {\n this.seenBidi = true;\n this.currentRow = null;\n }\n } \n else {\n this.currentRow = null;\n }\n };\n\n this.getDocumentRow = function() {\n var docRow = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var index = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n if (index >= 0)\n docRow = this.session.$docRowCache[index];\n }\n\n return docRow;\n };\n\n this.getSplitIndex = function() {\n var splitIndex = 0;\n var rowCache = this.session.$screenRowCache;\n if (rowCache.length) {\n var currentIndex, prevIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow);\n while (this.currentRow - splitIndex > 0) {\n currentIndex = this.session.$getRowCacheIndex(rowCache, this.currentRow - splitIndex - 1);\n if (currentIndex !== prevIndex)\n break;\n\n prevIndex = currentIndex;\n splitIndex++;\n }\n } else {\n splitIndex = this.currentRow;\n }\n\n return splitIndex;\n };\n\n this.updateRowLine = function(docRow, splitIndex) {\n if (docRow === undefined)\n docRow = this.getDocumentRow();\n \n var isLastRow = (docRow === this.session.getLength() - 1),\n endOfLine = isLastRow ? this.EOF : this.EOL;\n\n this.wrapIndent = 0;\n this.line = this.session.getLine(docRow);\n this.isRtlDir = this.$isRtl || this.line.charAt(0) === this.RLE;\n if (this.session.$useWrapMode) {\n var splits = this.session.$wrapData[docRow];\n if (splits) {\n if (splitIndex === undefined)\n splitIndex = this.getSplitIndex();\n\n if(splitIndex > 0 && splits.length) {\n this.wrapIndent = splits.indent;\n this.wrapOffset = this.wrapIndent * this.charWidths[bidiUtil.L];\n this.line = (splitIndex < splits.length) ?\n this.line.substring(splits[splitIndex - 1], splits[splitIndex]) :\n this.line.substring(splits[splits.length - 1]);\n } else {\n this.line = this.line.substring(0, splits[splitIndex]);\n }\n }\n if (splitIndex == splits.length)\n this.line += (this.showInvisibles) ? endOfLine : bidiUtil.DOT;\n } else {\n this.line += this.showInvisibles ? endOfLine : bidiUtil.DOT;\n }\n var session = this.session, shift = 0, size;\n this.line = this.line.replace(/\\t|[\\u1100-\\u2029, \\u202F-\\uFFE6]/g, function(ch, i){\n if (ch === '\\t' || session.isFullWidth(ch.charCodeAt(0))) {\n size = (ch === '\\t') ? session.getScreenTabSize(i + shift) : 2;\n shift += size - 1;\n return lang.stringRepeat(bidiUtil.DOT, size);\n }\n return ch;\n });\n\n if (this.isRtlDir) {\n this.fontMetrics.$main.textContent = (this.line.charAt(this.line.length - 1) == bidiUtil.DOT) ? this.line.substr(0, this.line.length - 1) : this.line;\n this.rtlLineOffset = this.contentWidth - this.fontMetrics.$main.getBoundingClientRect().width;\n }\n };\n \n this.updateBidiMap = function() {\n var textCharTypes = [];\n if (bidiUtil.hasBidiCharacters(this.line, textCharTypes) || this.isRtlDir) {\n this.bidiMap = bidiUtil.doBidiReorder(this.line, textCharTypes, this.isRtlDir);\n } else {\n this.bidiMap = {};\n }\n };\n this.markAsDirty = function() {\n this.currentRow = null;\n };\n this.updateCharacterWidths = function(fontMetrics) {\n if (this.characterWidth === fontMetrics.$characterSize.width)\n return;\n\n this.fontMetrics = fontMetrics;\n var characterWidth = this.characterWidth = fontMetrics.$characterSize.width;\n var bidiCharWidth = fontMetrics.$measureCharWidth(\"\\u05d4\");\n\n this.charWidths[bidiUtil.L] = this.charWidths[bidiUtil.EN] = this.charWidths[bidiUtil.ON_R] = characterWidth;\n this.charWidths[bidiUtil.R] = this.charWidths[bidiUtil.AN] = bidiCharWidth;\n this.charWidths[bidiUtil.R_H] = bidiCharWidth * 0.45;\n this.charWidths[bidiUtil.B] = this.charWidths[bidiUtil.RLE] = 0;\n\n this.currentRow = null;\n };\n\n this.setShowInvisibles = function(showInvisibles) {\n this.showInvisibles = showInvisibles;\n this.currentRow = null;\n };\n\n this.setEolChar = function(eolChar) {\n this.EOL = eolChar; \n };\n\n this.setContentWidth = function(width) {\n this.contentWidth = width;\n };\n\n this.isRtlLine = function(row) {\n if (this.$isRtl) return true;\n if (row != undefined)\n return (this.session.getLine(row).charAt(0) == this.RLE);\n else\n return this.isRtlDir; \n };\n\n this.setRtlDirection = function(editor, isRtlDir) {\n var cursor = editor.getCursorPosition(); \n for (var row = editor.selection.getSelectionAnchor().row; row <= cursor.row; row++) {\n if (!isRtlDir && editor.session.getLine(row).charAt(0) === editor.session.$bidiHandler.RLE)\n editor.session.doc.removeInLine(row, 0, 1);\n else if (isRtlDir && editor.session.getLine(row).charAt(0) !== editor.session.$bidiHandler.RLE)\n editor.session.doc.insert({column: 0, row: row}, editor.session.$bidiHandler.RLE);\n }\n };\n this.getPosLeft = function(col) {\n col -= this.wrapIndent;\n var leftBoundary = (this.line.charAt(0) === this.RLE) ? 1 : 0;\n var logicalIdx = (col > leftBoundary) ? (this.session.getOverwrite() ? col : col - 1) : leftBoundary;\n var visualIdx = bidiUtil.getVisualFromLogicalIdx(logicalIdx, this.bidiMap),\n levels = this.bidiMap.bidiLevels, left = 0;\n\n if (!this.session.getOverwrite() && col <= leftBoundary && levels[visualIdx] % 2 !== 0)\n visualIdx++;\n \n for (var i = 0; i < visualIdx; i++) {\n left += this.charWidths[levels[i]];\n }\n\n if (!this.session.getOverwrite() && (col > leftBoundary) && (levels[visualIdx] % 2 === 0))\n left += this.charWidths[levels[visualIdx]];\n\n if (this.wrapIndent)\n left += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n\n if (this.isRtlDir)\n left += this.rtlLineOffset;\n\n return left;\n };\n this.getSelections = function(startCol, endCol) {\n var map = this.bidiMap, levels = map.bidiLevels, level, selections = [], offset = 0,\n selColMin = Math.min(startCol, endCol) - this.wrapIndent, selColMax = Math.max(startCol, endCol) - this.wrapIndent,\n isSelected = false, isSelectedPrev = false, selectionStart = 0;\n \n if (this.wrapIndent)\n offset += this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n\n for (var logIdx, visIdx = 0; visIdx < levels.length; visIdx++) {\n logIdx = map.logicalFromVisual[visIdx];\n level = levels[visIdx];\n isSelected = (logIdx >= selColMin) && (logIdx < selColMax);\n if (isSelected && !isSelectedPrev) {\n selectionStart = offset;\n } else if (!isSelected && isSelectedPrev) {\n selections.push({left: selectionStart, width: offset - selectionStart});\n }\n offset += this.charWidths[level];\n isSelectedPrev = isSelected;\n }\n\n if (isSelected && (visIdx === levels.length)) {\n selections.push({left: selectionStart, width: offset - selectionStart});\n }\n\n if(this.isRtlDir) {\n for (var i = 0; i < selections.length; i++) {\n selections[i].left += this.rtlLineOffset;\n }\n }\n return selections;\n };\n this.offsetToCol = function(posX) {\n if(this.isRtlDir)\n posX -= this.rtlLineOffset;\n\n var logicalIdx = 0, posX = Math.max(posX, 0),\n offset = 0, visualIdx = 0, levels = this.bidiMap.bidiLevels,\n charWidth = this.charWidths[levels[visualIdx]];\n\n if (this.wrapIndent)\n posX -= this.isRtlDir ? (-1 * this.wrapOffset) : this.wrapOffset;\n \n while(posX > offset + charWidth/2) {\n offset += charWidth;\n if(visualIdx === levels.length - 1) {\n charWidth = 0;\n break;\n }\n charWidth = this.charWidths[levels[++visualIdx]];\n }\n \n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && (levels[visualIdx] % 2 === 0)){\n if(posX < offset)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n\n } else if (visualIdx > 0 && (levels[visualIdx - 1] % 2 === 0) && (levels[visualIdx] % 2 !== 0)){\n logicalIdx = 1 + ((posX > offset) ? this.bidiMap.logicalFromVisual[visualIdx]\n : this.bidiMap.logicalFromVisual[visualIdx - 1]);\n\n } else if ((this.isRtlDir && visualIdx === levels.length - 1 && charWidth === 0 && (levels[visualIdx - 1] % 2 === 0))\n || (!this.isRtlDir && visualIdx === 0 && (levels[visualIdx] % 2 !== 0))){\n logicalIdx = 1 + this.bidiMap.logicalFromVisual[visualIdx];\n } else {\n if (visualIdx > 0 && (levels[visualIdx - 1] % 2 !== 0) && charWidth !== 0)\n visualIdx--;\n logicalIdx = this.bidiMap.logicalFromVisual[visualIdx];\n }\n\n if (logicalIdx === 0 && this.isRtlDir)\n logicalIdx++;\n\n return (logicalIdx + this.wrapIndent);\n };\n\n}).call(BidiHandler.prototype);\n\nexports.BidiHandler = BidiHandler;\n});\n\nace.define(\"ace/selection\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Selection = function(session) {\n this.session = session;\n this.doc = session.getDocument();\n\n this.clearSelection();\n this.cursor = this.lead = this.doc.createAnchor(0, 0);\n this.anchor = this.doc.createAnchor(0, 0);\n this.$silent = false;\n\n var self = this;\n this.cursor.on(\"change\", function(e) {\n self.$cursorChanged = true;\n if (!self.$silent)\n self._emit(\"changeCursor\");\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)\n self.$desiredColumn = null;\n });\n\n this.anchor.on(\"change\", function() {\n self.$anchorChanged = true;\n if (!self.$isEmpty && !self.$silent)\n self._emit(\"changeSelection\");\n });\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.isEmpty = function() {\n return this.$isEmpty || (\n this.anchor.row == this.lead.row &&\n this.anchor.column == this.lead.column\n );\n };\n this.isMultiLine = function() {\n return !this.$isEmpty && this.anchor.row != this.cursor.row;\n };\n this.getCursor = function() {\n return this.lead.getPosition();\n };\n this.setSelectionAnchor = function(row, column) {\n this.$isEmpty = false;\n this.anchor.setPosition(row, column);\n };\n this.getAnchor = \n this.getSelectionAnchor = function() {\n if (this.$isEmpty)\n return this.getSelectionLead();\n \n return this.anchor.getPosition();\n };\n this.getSelectionLead = function() {\n return this.lead.getPosition();\n };\n this.isBackwards = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));\n };\n this.getRange = function() {\n var anchor = this.anchor;\n var lead = this.lead;\n\n if (this.$isEmpty)\n return Range.fromPoints(lead, lead);\n\n return this.isBackwards()\n ? Range.fromPoints(lead, anchor)\n : Range.fromPoints(anchor, lead);\n };\n this.clearSelection = function() {\n if (!this.$isEmpty) {\n this.$isEmpty = true;\n this._emit(\"changeSelection\");\n }\n };\n this.selectAll = function() {\n this.$setSelection(0, 0, Number.MAX_VALUE, Number.MAX_VALUE);\n };\n this.setRange =\n this.setSelectionRange = function(range, reverse) {\n var start = reverse ? range.end : range.start;\n var end = reverse ? range.start : range.end;\n this.$setSelection(start.row, start.column, end.row, end.column);\n };\n\n this.$setSelection = function(anchorRow, anchorColumn, cursorRow, cursorColumn) {\n if (this.$silent)\n return;\n var wasEmpty = this.$isEmpty;\n var wasMultiselect = this.inMultiSelectMode;\n this.$silent = true;\n this.$cursorChanged = this.$anchorChanged = false;\n this.anchor.setPosition(anchorRow, anchorColumn);\n this.cursor.setPosition(cursorRow, cursorColumn);\n this.$isEmpty = !Range.comparePoints(this.anchor, this.cursor);\n this.$silent = false;\n if (this.$cursorChanged)\n this._emit(\"changeCursor\");\n if (this.$cursorChanged || this.$anchorChanged || wasEmpty != this.$isEmpty || wasMultiselect)\n this._emit(\"changeSelection\");\n };\n\n this.$moveSelection = function(mover) {\n var lead = this.lead;\n if (this.$isEmpty)\n this.setSelectionAnchor(lead.row, lead.column);\n\n mover.call(this);\n };\n this.selectTo = function(row, column) {\n this.$moveSelection(function() {\n this.moveCursorTo(row, column);\n });\n };\n this.selectToPosition = function(pos) {\n this.$moveSelection(function() {\n this.moveCursorToPosition(pos);\n });\n };\n this.moveTo = function(row, column) {\n this.clearSelection();\n this.moveCursorTo(row, column);\n };\n this.moveToPosition = function(pos) {\n this.clearSelection();\n this.moveCursorToPosition(pos);\n };\n this.selectUp = function() {\n this.$moveSelection(this.moveCursorUp);\n };\n this.selectDown = function() {\n this.$moveSelection(this.moveCursorDown);\n };\n this.selectRight = function() {\n this.$moveSelection(this.moveCursorRight);\n };\n this.selectLeft = function() {\n this.$moveSelection(this.moveCursorLeft);\n };\n this.selectLineStart = function() {\n this.$moveSelection(this.moveCursorLineStart);\n };\n this.selectLineEnd = function() {\n this.$moveSelection(this.moveCursorLineEnd);\n };\n this.selectFileEnd = function() {\n this.$moveSelection(this.moveCursorFileEnd);\n };\n this.selectFileStart = function() {\n this.$moveSelection(this.moveCursorFileStart);\n };\n this.selectWordRight = function() {\n this.$moveSelection(this.moveCursorWordRight);\n };\n this.selectWordLeft = function() {\n this.$moveSelection(this.moveCursorWordLeft);\n };\n this.getWordRange = function(row, column) {\n if (typeof column == \"undefined\") {\n var cursor = row || this.lead;\n row = cursor.row;\n column = cursor.column;\n }\n return this.session.getWordRange(row, column);\n };\n this.selectWord = function() {\n this.setSelectionRange(this.getWordRange());\n };\n this.selectAWord = function() {\n var cursor = this.getCursor();\n var range = this.session.getAWordRange(cursor.row, cursor.column);\n this.setSelectionRange(range);\n };\n\n this.getLineRange = function(row, excludeLastChar) {\n var rowStart = typeof row == \"number\" ? row : this.lead.row;\n var rowEnd;\n\n var foldLine = this.session.getFoldLine(rowStart);\n if (foldLine) {\n rowStart = foldLine.start.row;\n rowEnd = foldLine.end.row;\n } else {\n rowEnd = rowStart;\n }\n if (excludeLastChar === true)\n return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);\n else\n return new Range(rowStart, 0, rowEnd + 1, 0);\n };\n this.selectLine = function() {\n this.setSelectionRange(this.getLineRange());\n };\n this.moveCursorUp = function() {\n this.moveCursorBy(-1, 0);\n };\n this.moveCursorDown = function() {\n this.moveCursorBy(1, 0);\n };\n this.wouldMoveIntoSoftTab = function(cursor, tabSize, direction) {\n var start = cursor.column;\n var end = cursor.column + tabSize;\n\n if (direction < 0) {\n start = cursor.column - tabSize;\n end = cursor.column;\n }\n return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(\" \").length-1 == tabSize;\n };\n this.moveCursorLeft = function() {\n var cursor = this.lead.getPosition(),\n fold;\n\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n } else if (cursor.column === 0) {\n if (cursor.row > 0) {\n this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, -tabSize);\n } else {\n this.moveCursorBy(0, -1);\n }\n }\n };\n this.moveCursorRight = function() {\n var cursor = this.lead.getPosition(),\n fold;\n if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n }\n else if (this.lead.column == this.doc.getLine(this.lead.row).length) {\n if (this.lead.row < this.doc.getLength() - 1) {\n this.moveCursorTo(this.lead.row + 1, 0);\n }\n }\n else {\n var tabSize = this.session.getTabSize();\n var cursor = this.lead;\n if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) {\n this.moveCursorBy(0, tabSize);\n } else {\n this.moveCursorBy(0, 1);\n }\n }\n };\n this.moveCursorLineStart = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var screenRow = this.session.documentToScreenRow(row, column);\n var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);\n var beforeCursor = this.session.getDisplayLine(\n row, null, firstColumnPosition.row,\n firstColumnPosition.column\n );\n\n var leadingSpace = beforeCursor.match(/^\\s*/);\n if (leadingSpace[0].length != column && !this.session.$useEmacsStyleLineStart)\n firstColumnPosition.column += leadingSpace[0].length;\n this.moveCursorToPosition(firstColumnPosition);\n };\n this.moveCursorLineEnd = function() {\n var lead = this.lead;\n var lineEnd = this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);\n if (this.lead.column == lineEnd.column) {\n var line = this.session.getLine(lineEnd.row);\n if (lineEnd.column == line.length) {\n var textEnd = line.search(/\\s+$/);\n if (textEnd > 0)\n lineEnd.column = textEnd;\n }\n }\n\n this.moveCursorTo(lineEnd.row, lineEnd.column);\n };\n this.moveCursorFileEnd = function() {\n var row = this.doc.getLength() - 1;\n var column = this.doc.getLine(row).length;\n this.moveCursorTo(row, column);\n };\n this.moveCursorFileStart = function() {\n this.moveCursorTo(0, 0);\n };\n this.moveCursorLongWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n this.moveCursorTo(fold.end.row, fold.end.column);\n return;\n }\n if (this.session.nonTokenRe.exec(rightOfCursor)) {\n column += this.session.nonTokenRe.lastIndex;\n this.session.nonTokenRe.lastIndex = 0;\n rightOfCursor = line.substring(column);\n }\n if (column >= line.length) {\n this.moveCursorTo(row, line.length);\n this.moveCursorRight();\n if (row < this.doc.getLength() - 1)\n this.moveCursorWordRight();\n return;\n }\n if (this.session.tokenRe.exec(rightOfCursor)) {\n column += this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n this.moveCursorLongWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1)) {\n this.moveCursorTo(fold.start.row, fold.start.column);\n return;\n }\n\n var str = this.session.getFoldStringAt(row, column, -1);\n if (str == null) {\n str = this.doc.getLine(row).substring(0, column);\n }\n\n var leftOfCursor = lang.stringReverse(str);\n this.session.nonTokenRe.lastIndex = 0;\n this.session.tokenRe.lastIndex = 0;\n if (this.session.nonTokenRe.exec(leftOfCursor)) {\n column -= this.session.nonTokenRe.lastIndex;\n leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);\n this.session.nonTokenRe.lastIndex = 0;\n }\n if (column <= 0) {\n this.moveCursorTo(row, 0);\n this.moveCursorLeft();\n if (row > 0)\n this.moveCursorWordLeft();\n return;\n }\n if (this.session.tokenRe.exec(leftOfCursor)) {\n column -= this.session.tokenRe.lastIndex;\n this.session.tokenRe.lastIndex = 0;\n }\n\n this.moveCursorTo(row, column);\n };\n\n this.$shortWordEndIndex = function(rightOfCursor) {\n var index = 0, ch;\n var whitespaceRe = /\\s/;\n var tokenRe = this.session.tokenRe;\n\n tokenRe.lastIndex = 0;\n if (this.session.tokenRe.exec(rightOfCursor)) {\n index = this.session.tokenRe.lastIndex;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n\n if (index < 1) {\n tokenRe.lastIndex = 0;\n while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {\n tokenRe.lastIndex = 0;\n index ++;\n if (whitespaceRe.test(ch)) {\n if (index > 2) {\n index--;\n break;\n } else {\n while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))\n index ++;\n if (index > 2)\n break;\n }\n }\n }\n }\n }\n tokenRe.lastIndex = 0;\n\n return index;\n };\n\n this.moveCursorShortWordRight = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n var line = this.doc.getLine(row);\n var rightOfCursor = line.substring(column);\n\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold)\n return this.moveCursorTo(fold.end.row, fold.end.column);\n\n if (column == line.length) {\n var l = this.doc.getLength();\n do {\n row++;\n rightOfCursor = this.doc.getLine(row);\n } while (row < l && /^\\s*$/.test(rightOfCursor));\n\n if (!/^\\s+/.test(rightOfCursor))\n rightOfCursor = \"\";\n column = 0;\n }\n\n var index = this.$shortWordEndIndex(rightOfCursor);\n\n this.moveCursorTo(row, column + index);\n };\n\n this.moveCursorShortWordLeft = function() {\n var row = this.lead.row;\n var column = this.lead.column;\n\n var fold;\n if (fold = this.session.getFoldAt(row, column, -1))\n return this.moveCursorTo(fold.start.row, fold.start.column);\n\n var line = this.session.getLine(row).substring(0, column);\n if (column === 0) {\n do {\n row--;\n line = this.doc.getLine(row);\n } while (row > 0 && /^\\s*$/.test(line));\n\n column = line.length;\n if (!/\\s+$/.test(line))\n line = \"\";\n }\n\n var leftOfCursor = lang.stringReverse(line);\n var index = this.$shortWordEndIndex(leftOfCursor);\n\n return this.moveCursorTo(row, column - index);\n };\n\n this.moveCursorWordRight = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordRight();\n else\n this.moveCursorShortWordRight();\n };\n\n this.moveCursorWordLeft = function() {\n if (this.session.$selectLongWords)\n this.moveCursorLongWordLeft();\n else\n this.moveCursorShortWordLeft();\n };\n this.moveCursorBy = function(rows, chars) {\n var screenPos = this.session.documentToScreenPosition(\n this.lead.row,\n this.lead.column\n );\n\n var offsetX;\n\n if (chars === 0) {\n if (rows !== 0) {\n if (this.session.$bidiHandler.isBidiRow(screenPos.row, this.lead.row)) {\n offsetX = this.session.$bidiHandler.getPosLeft(screenPos.column);\n screenPos.column = Math.round(offsetX / this.session.$bidiHandler.charWidths[0]);\n } else {\n offsetX = screenPos.column * this.session.$bidiHandler.charWidths[0];\n }\n }\n\n if (this.$desiredColumn)\n screenPos.column = this.$desiredColumn;\n else\n this.$desiredColumn = screenPos.column;\n }\n \n if (rows != 0 && this.session.lineWidgets && this.session.lineWidgets[this.lead.row]) {\n var widget = this.session.lineWidgets[this.lead.row];\n if (rows < 0)\n rows -= widget.rowsAbove || 0;\n else if (rows > 0)\n rows += widget.rowCount - (widget.rowsAbove || 0);\n }\n \n var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column, offsetX);\n \n if (rows !== 0 && chars === 0 && docPos.row === this.lead.row && docPos.column === this.lead.column) {\n \n }\n this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);\n };\n this.moveCursorToPosition = function(position) {\n this.moveCursorTo(position.row, position.column);\n };\n this.moveCursorTo = function(row, column, keepDesiredColumn) {\n var fold = this.session.getFoldAt(row, column, 1);\n if (fold) {\n row = fold.start.row;\n column = fold.start.column;\n }\n\n this.$keepDesiredColumnOnChange = true;\n var line = this.session.getLine(row);\n if (/[\\uDC00-\\uDFFF]/.test(line.charAt(column)) && line.charAt(column - 1)) {\n if (this.lead.row == row && this.lead.column == column + 1)\n column = column - 1;\n else\n column = column + 1;\n }\n this.lead.setPosition(row, column);\n this.$keepDesiredColumnOnChange = false;\n\n if (!keepDesiredColumn)\n this.$desiredColumn = null;\n };\n this.moveCursorToScreen = function(row, column, keepDesiredColumn) {\n var pos = this.session.screenToDocumentPosition(row, column);\n this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);\n };\n this.detach = function() {\n this.lead.detach();\n this.anchor.detach();\n };\n\n this.fromOrientedRange = function(range) {\n this.setSelectionRange(range, range.cursor == range.start);\n this.$desiredColumn = range.desiredColumn || this.$desiredColumn;\n };\n\n this.toOrientedRange = function(range) {\n var r = this.getRange();\n if (range) {\n range.start.column = r.start.column;\n range.start.row = r.start.row;\n range.end.column = r.end.column;\n range.end.row = r.end.row;\n } else {\n range = r;\n }\n\n range.cursor = this.isBackwards() ? range.start : range.end;\n range.desiredColumn = this.$desiredColumn;\n return range;\n };\n this.getRangeOfMovements = function(func) {\n var start = this.getCursor();\n try {\n func(this);\n var end = this.getCursor();\n return Range.fromPoints(start, end);\n } catch(e) {\n return Range.fromPoints(start, start);\n } finally {\n this.moveCursorToPosition(start);\n }\n };\n\n this.toJSON = function() {\n if (this.rangeCount) {\n var data = this.ranges.map(function(r) {\n var r1 = r.clone();\n r1.isBackwards = r.cursor == r.start;\n return r1;\n });\n } else {\n var data = this.getRange();\n data.isBackwards = this.isBackwards();\n }\n return data;\n };\n\n this.fromJSON = function(data) {\n if (data.start == undefined) {\n if (this.rangeList && data.length > 1) {\n this.toSingleRange(data[0]);\n for (var i = data.length; i--; ) {\n var r = Range.fromPoints(data[i].start, data[i].end);\n if (data[i].isBackwards)\n r.cursor = r.start;\n this.addRange(r, true);\n }\n return;\n } else {\n data = data[0];\n }\n }\n if (this.rangeList)\n this.toSingleRange(data);\n this.setSelectionRange(data, data.isBackwards);\n };\n\n this.isEqual = function(data) {\n if ((data.length || this.rangeCount) && data.length != this.rangeCount)\n return false;\n if (!data.length || !this.ranges)\n return this.getRange().isEqual(data);\n\n for (var i = this.ranges.length; i--; ) {\n if (!this.ranges[i].isEqual(data[i]))\n return false;\n }\n return true;\n };\n\n}).call(Selection.prototype);\n\nexports.Selection = Selection;\n});\n\nace.define(\"ace/tokenizer\",[\"require\",\"exports\",\"module\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar config = require(\"./config\");\nvar MAX_TOKEN_COUNT = 2000;\nvar Tokenizer = function(rules) {\n this.states = rules;\n\n this.regExps = {};\n this.matchMappings = {};\n for (var key in this.states) {\n var state = this.states[key];\n var ruleRegExps = [];\n var matchTotal = 0;\n var mapping = this.matchMappings[key] = {defaultToken: \"text\"};\n var flag = \"g\";\n\n var splitterRurles = [];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.defaultToken)\n mapping.defaultToken = rule.defaultToken;\n if (rule.caseInsensitive)\n flag = \"gi\";\n if (rule.regex == null)\n continue;\n\n if (rule.regex instanceof RegExp)\n rule.regex = rule.regex.toString().slice(1, -1);\n var adjustedregex = rule.regex;\n var matchcount = new RegExp(\"(?:(\" + adjustedregex + \")|(.))\").exec(\"a\").length - 2;\n if (Array.isArray(rule.token)) {\n if (rule.token.length == 1 || matchcount == 1) {\n rule.token = rule.token[0];\n } else if (matchcount - 1 != rule.token.length) {\n this.reportError(\"number of classes and regexp groups doesn't match\", { \n rule: rule,\n groupCount: matchcount - 1\n });\n rule.token = rule.token[0];\n } else {\n rule.tokenArray = rule.token;\n rule.token = null;\n rule.onMatch = this.$arrayTokens;\n }\n } else if (typeof rule.token == \"function\" && !rule.onMatch) {\n if (matchcount > 1)\n rule.onMatch = this.$applyToken;\n else\n rule.onMatch = rule.token;\n }\n\n if (matchcount > 1) {\n if (/\\\\\\d/.test(rule.regex)) {\n adjustedregex = rule.regex.replace(/\\\\([0-9]+)/g, function(match, digit) {\n return \"\\\\\" + (parseInt(digit, 10) + matchTotal + 1);\n });\n } else {\n matchcount = 1;\n adjustedregex = this.removeCapturingGroups(rule.regex);\n }\n if (!rule.splitRegex && typeof rule.token != \"string\")\n splitterRurles.push(rule); // flag will be known only at the very end\n }\n\n mapping[matchTotal] = i;\n matchTotal += matchcount;\n\n ruleRegExps.push(adjustedregex);\n if (!rule.onMatch)\n rule.onMatch = null;\n }\n \n if (!ruleRegExps.length) {\n mapping[0] = 0;\n ruleRegExps.push(\"$\");\n }\n \n splitterRurles.forEach(function(rule) {\n rule.splitRegex = this.createSplitterRegexp(rule.regex, flag);\n }, this);\n\n this.regExps[key] = new RegExp(\"(\" + ruleRegExps.join(\")|(\") + \")|($)\", flag);\n }\n};\n\n(function() {\n this.$setMaxTokenCount = function(m) {\n MAX_TOKEN_COUNT = m | 0;\n };\n \n this.$applyToken = function(str) {\n var values = this.splitRegex.exec(str).slice(1);\n var types = this.token.apply(this, values);\n if (typeof types === \"string\")\n return [{type: types, value: str}];\n\n var tokens = [];\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i]\n };\n }\n return tokens;\n };\n\n this.$arrayTokens = function(str) {\n if (!str)\n return [];\n var values = this.splitRegex.exec(str);\n if (!values)\n return \"text\";\n var tokens = [];\n var types = this.tokenArray;\n for (var i = 0, l = types.length; i < l; i++) {\n if (values[i + 1])\n tokens[tokens.length] = {\n type: types[i],\n value: values[i + 1]\n };\n }\n return tokens;\n };\n\n this.removeCapturingGroups = function(src) {\n var r = src.replace(\n /\\\\.|\\[(?:\\\\.|[^\\\\\\]])*|\\(\\?[:=!<]|(\\()/g,\n function(x, y) {return y ? \"(?:\" : x;}\n );\n return r;\n };\n\n this.createSplitterRegexp = function(src, flag) {\n if (src.indexOf(\"(?=\") != -1) {\n var stack = 0;\n var inChClass = false;\n var lastCapture = {};\n src.replace(/(\\\\.)|(\\((?:\\?[=!])?)|(\\))|([\\[\\]])/g, function(\n m, esc, parenOpen, parenClose, square, index\n ) {\n if (inChClass) {\n inChClass = square != \"]\";\n } else if (square) {\n inChClass = true;\n } else if (parenClose) {\n if (stack == lastCapture.stack) {\n lastCapture.end = index+1;\n lastCapture.stack = -1;\n }\n stack--;\n } else if (parenOpen) {\n stack++;\n if (parenOpen.length != 1) {\n lastCapture.stack = stack;\n lastCapture.start = index;\n }\n }\n return m;\n });\n\n if (lastCapture.end != null && /^\\)*$/.test(src.substr(lastCapture.end)))\n src = src.substring(0, lastCapture.start) + src.substr(lastCapture.end);\n }\n if (src.charAt(0) != \"^\") src = \"^\" + src;\n if (src.charAt(src.length - 1) != \"$\") src += \"$\";\n \n return new RegExp(src, (flag||\"\").replace(\"g\", \"\"));\n };\n this.getLineTokens = function(line, startState) {\n if (startState && typeof startState != \"string\") {\n var stack = startState.slice(0);\n startState = stack[0];\n if (startState === \"#tmp\") {\n stack.shift();\n startState = stack.shift();\n }\n } else\n var stack = [];\n\n var currentState = startState || \"start\";\n var state = this.states[currentState];\n if (!state) {\n currentState = \"start\";\n state = this.states[currentState];\n }\n var mapping = this.matchMappings[currentState];\n var re = this.regExps[currentState];\n re.lastIndex = 0;\n\n var match, tokens = [];\n var lastIndex = 0;\n var matchAttempts = 0;\n\n var token = {type: null, value: \"\"};\n\n while (match = re.exec(line)) {\n var type = mapping.defaultToken;\n var rule = null;\n var value = match[0];\n var index = re.lastIndex;\n\n if (index - value.length > lastIndex) {\n var skipped = line.substring(lastIndex, index - value.length);\n if (token.type == type) {\n token.value += skipped;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: skipped};\n }\n }\n\n for (var i = 0; i < match.length-2; i++) {\n if (match[i + 1] === undefined)\n continue;\n\n rule = state[mapping[i]];\n\n if (rule.onMatch)\n type = rule.onMatch(value, currentState, stack, line);\n else\n type = rule.token;\n\n if (rule.next) {\n if (typeof rule.next == \"string\") {\n currentState = rule.next;\n } else {\n currentState = rule.next(currentState, stack);\n }\n \n state = this.states[currentState];\n if (!state) {\n this.reportError(\"state doesn't exist\", currentState);\n currentState = \"start\";\n state = this.states[currentState];\n }\n mapping = this.matchMappings[currentState];\n lastIndex = index;\n re = this.regExps[currentState];\n re.lastIndex = index;\n }\n if (rule.consumeLineEnd)\n lastIndex = index;\n break;\n }\n\n if (value) {\n if (typeof type === \"string\") {\n if ((!rule || rule.merge !== false) && token.type === type) {\n token.value += value;\n } else {\n if (token.type)\n tokens.push(token);\n token = {type: type, value: value};\n }\n } else if (type) {\n if (token.type)\n tokens.push(token);\n token = {type: null, value: \"\"};\n for (var i = 0; i < type.length; i++)\n tokens.push(type[i]);\n }\n }\n\n if (lastIndex == line.length)\n break;\n\n lastIndex = index;\n\n if (matchAttempts++ > MAX_TOKEN_COUNT) {\n if (matchAttempts > 2 * line.length) {\n this.reportError(\"infinite loop with in ace tokenizer\", {\n startState: startState,\n line: line\n });\n }\n while (lastIndex < line.length) {\n if (token.type)\n tokens.push(token);\n token = {\n value: line.substring(lastIndex, lastIndex += 500),\n type: \"overflow\"\n };\n }\n currentState = \"start\";\n stack = [];\n break;\n }\n }\n\n if (token.type)\n tokens.push(token);\n \n if (stack.length > 1) {\n if (stack[0] !== currentState)\n stack.unshift(\"#tmp\", currentState);\n }\n return {\n tokens : tokens,\n state : stack.length ? stack : currentState\n };\n };\n \n this.reportError = config.reportError;\n \n}).call(Tokenizer.prototype);\n\nexports.Tokenizer = Tokenizer;\n});\n\nace.define(\"ace/mode/text_highlight_rules\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"../lib/lang\");\n\nvar TextHighlightRules = function() {\n\n this.$rules = {\n \"start\" : [{\n token : \"empty_line\",\n regex : '^$'\n }, {\n defaultToken : \"text\"\n }]\n };\n};\n\n(function() {\n\n this.addRules = function(rules, prefix) {\n if (!prefix) {\n for (var key in rules)\n this.$rules[key] = rules[key];\n return;\n }\n for (var key in rules) {\n var state = rules[key];\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n if (rule.next || rule.onMatch) {\n if (typeof rule.next == \"string\") {\n if (rule.next.indexOf(prefix) !== 0)\n rule.next = prefix + rule.next;\n }\n if (rule.nextState && rule.nextState.indexOf(prefix) !== 0)\n rule.nextState = prefix + rule.nextState;\n }\n }\n this.$rules[prefix + key] = state;\n }\n };\n\n this.getRules = function() {\n return this.$rules;\n };\n\n this.embedRules = function (HighlightRules, prefix, escapeRules, states, append) {\n var embedRules = typeof HighlightRules == \"function\"\n ? new HighlightRules().getRules()\n : HighlightRules;\n if (states) {\n for (var i = 0; i < states.length; i++)\n states[i] = prefix + states[i];\n } else {\n states = [];\n for (var key in embedRules)\n states.push(prefix + key);\n }\n\n this.addRules(embedRules, prefix);\n\n if (escapeRules) {\n var addRules = Array.prototype[append ? \"push\" : \"unshift\"];\n for (var i = 0; i < states.length; i++)\n addRules.apply(this.$rules[states[i]], lang.deepCopy(escapeRules));\n }\n\n if (!this.$embeds)\n this.$embeds = [];\n this.$embeds.push(prefix);\n };\n\n this.getEmbeds = function() {\n return this.$embeds;\n };\n\n var pushState = function(currentState, stack) {\n if (currentState != \"start\" || stack.length)\n stack.unshift(this.nextState, currentState);\n return this.nextState;\n };\n var popState = function(currentState, stack) {\n stack.shift();\n return stack.shift() || \"start\";\n };\n\n this.normalizeRules = function() {\n var id = 0;\n var rules = this.$rules;\n function processState(key) {\n var state = rules[key];\n state.processed = true;\n for (var i = 0; i < state.length; i++) {\n var rule = state[i];\n var toInsert = null;\n if (Array.isArray(rule)) {\n toInsert = rule;\n rule = {};\n }\n if (!rule.regex && rule.start) {\n rule.regex = rule.start;\n if (!rule.next)\n rule.next = [];\n rule.next.push({\n defaultToken: rule.token\n }, {\n token: rule.token + \".end\",\n regex: rule.end || rule.start,\n next: \"pop\"\n });\n rule.token = rule.token + \".start\";\n rule.push = true;\n }\n var next = rule.next || rule.push;\n if (next && Array.isArray(next)) {\n var stateName = rule.stateName;\n if (!stateName) {\n stateName = rule.token;\n if (typeof stateName != \"string\")\n stateName = stateName[0] || \"\";\n if (rules[stateName])\n stateName += id++;\n }\n rules[stateName] = next;\n rule.next = stateName;\n processState(stateName);\n } else if (next == \"pop\") {\n rule.next = popState;\n }\n\n if (rule.push) {\n rule.nextState = rule.next || rule.push;\n rule.next = pushState;\n delete rule.push;\n }\n\n if (rule.rules) {\n for (var r in rule.rules) {\n if (rules[r]) {\n if (rules[r].push)\n rules[r].push.apply(rules[r], rule.rules[r]);\n } else {\n rules[r] = rule.rules[r];\n }\n }\n }\n var includeName = typeof rule == \"string\" ? rule : rule.include;\n if (includeName) {\n if (Array.isArray(includeName))\n toInsert = includeName.map(function(x) { return rules[x]; });\n else\n toInsert = rules[includeName];\n }\n\n if (toInsert) {\n var args = [i, 1].concat(toInsert);\n if (rule.noEscape)\n args = args.filter(function(x) {return !x.next;});\n state.splice.apply(state, args);\n i--;\n }\n \n if (rule.keywordMap) {\n rule.token = this.createKeywordMapper(\n rule.keywordMap, rule.defaultToken || \"text\", rule.caseInsensitive\n );\n delete rule.defaultToken;\n }\n }\n }\n Object.keys(rules).forEach(processState, this);\n };\n\n this.createKeywordMapper = function(map, defaultToken, ignoreCase, splitChar) {\n var keywords = Object.create(null);\n this.$keywordList = [];\n Object.keys(map).forEach(function(className) {\n var a = map[className];\n var list = a.split(splitChar || \"|\");\n for (var i = list.length; i--; ) {\n var word = list[i];\n this.$keywordList.push(word);\n if (ignoreCase)\n word = word.toLowerCase(); \n keywords[word] = className;\n }\n }, this);\n map = null;\n return ignoreCase\n ? function(value) {return keywords[value.toLowerCase()] || defaultToken; }\n : function(value) {return keywords[value] || defaultToken; };\n };\n\n this.getKeywords = function() {\n return this.$keywords;\n };\n\n}).call(TextHighlightRules.prototype);\n\nexports.TextHighlightRules = TextHighlightRules;\n});\n\nace.define(\"ace/mode/behaviour\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nvar Behaviour = function() {\n this.$behaviours = {};\n};\n\n(function () {\n\n this.add = function (name, action, callback) {\n switch (undefined) {\n case this.$behaviours:\n this.$behaviours = {};\n case this.$behaviours[name]:\n this.$behaviours[name] = {};\n }\n this.$behaviours[name][action] = callback;\n };\n \n this.addBehaviours = function (behaviours) {\n for (var key in behaviours) {\n for (var action in behaviours[key]) {\n this.add(key, action, behaviours[key][action]);\n }\n }\n };\n \n this.remove = function (name) {\n if (this.$behaviours && this.$behaviours[name]) {\n delete this.$behaviours[name];\n }\n };\n \n this.inherit = function (mode, filter) {\n if (typeof mode === \"function\") {\n var behaviours = new mode().getBehaviours(filter);\n } else {\n var behaviours = mode.getBehaviours(filter);\n }\n this.addBehaviours(behaviours);\n };\n \n this.getBehaviours = function (filter) {\n if (!filter) {\n return this.$behaviours;\n } else {\n var ret = {};\n for (var i = 0; i < filter.length; i++) {\n if (this.$behaviours[filter[i]]) {\n ret[filter[i]] = this.$behaviours[filter[i]];\n }\n }\n return ret;\n }\n };\n\n}).call(Behaviour.prototype);\n\nexports.Behaviour = Behaviour;\n});\n\nace.define(\"ace/token_iterator\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"./range\").Range;\nvar TokenIterator = function(session, initialRow, initialColumn) {\n this.$session = session;\n this.$row = initialRow;\n this.$rowTokens = session.getTokens(initialRow);\n\n var token = session.getTokenAt(initialRow, initialColumn);\n this.$tokenIndex = token ? token.index : -1;\n};\n\n(function() { \n this.stepBackward = function() {\n this.$tokenIndex -= 1;\n \n while (this.$tokenIndex < 0) {\n this.$row -= 1;\n if (this.$row < 0) {\n this.$row = 0;\n return null;\n }\n \n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = this.$rowTokens.length - 1;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.stepForward = function() {\n this.$tokenIndex += 1;\n var rowCount;\n while (this.$tokenIndex >= this.$rowTokens.length) {\n this.$row += 1;\n if (!rowCount)\n rowCount = this.$session.getLength();\n if (this.$row >= rowCount) {\n this.$row = rowCount - 1;\n return null;\n }\n\n this.$rowTokens = this.$session.getTokens(this.$row);\n this.$tokenIndex = 0;\n }\n \n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentToken = function () {\n return this.$rowTokens[this.$tokenIndex];\n }; \n this.getCurrentTokenRow = function () {\n return this.$row;\n }; \n this.getCurrentTokenColumn = function() {\n var rowTokens = this.$rowTokens;\n var tokenIndex = this.$tokenIndex;\n var column = rowTokens[tokenIndex].start;\n if (column !== undefined)\n return column;\n \n column = 0;\n while (tokenIndex > 0) {\n tokenIndex -= 1;\n column += rowTokens[tokenIndex].value.length;\n }\n \n return column; \n };\n this.getCurrentTokenPosition = function() {\n return {row: this.$row, column: this.getCurrentTokenColumn()};\n };\n this.getCurrentTokenRange = function() {\n var token = this.$rowTokens[this.$tokenIndex];\n var column = this.getCurrentTokenColumn();\n return new Range(this.$row, column, this.$row, column + token.value.length);\n };\n \n}).call(TokenIterator.prototype);\n\nexports.TokenIterator = TokenIterator;\n});\n\nace.define(\"ace/mode/behaviour/cstyle\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/mode/behaviour\",\"ace/token_iterator\",\"ace/lib/lang\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../../lib/oop\");\nvar Behaviour = require(\"../behaviour\").Behaviour;\nvar TokenIterator = require(\"../../token_iterator\").TokenIterator;\nvar lang = require(\"../../lib/lang\");\n\nvar SAFE_INSERT_IN_TOKENS =\n [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\"];\nvar SAFE_INSERT_BEFORE_TOKENS =\n [\"text\", \"paren.rparen\", \"rparen\", \"paren\", \"punctuation.operator\", \"comment\"];\n\nvar context;\nvar contextCache = {};\nvar defaultQuotes = {'\"' : '\"', \"'\" : \"'\"};\n\nvar initContext = function(editor) {\n var id = -1;\n if (editor.multiSelect) {\n id = editor.selection.index;\n if (contextCache.rangeCount != editor.multiSelect.rangeCount)\n contextCache = {rangeCount: editor.multiSelect.rangeCount};\n }\n if (contextCache[id])\n return context = contextCache[id];\n context = contextCache[id] = {\n autoInsertedBrackets: 0,\n autoInsertedRow: -1,\n autoInsertedLineEnd: \"\",\n maybeInsertedBrackets: 0,\n maybeInsertedRow: -1,\n maybeInsertedLineStart: \"\",\n maybeInsertedLineEnd: \"\"\n };\n};\n\nvar getWrapped = function(selection, selected, opening, closing) {\n var rowDiff = selection.end.row - selection.start.row;\n return {\n text: opening + selected + closing,\n selection: [\n 0,\n selection.start.column + 1,\n rowDiff,\n selection.end.column + (rowDiff ? 0 : 1)\n ]\n };\n};\n\nvar CstyleBehaviour = function(options) {\n this.add(\"braces\", \"insertion\", function(state, action, editor, session, text) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (text == '{') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && selected !== \"{\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '{', '}');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n if (/[\\]\\}\\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options && options.braces) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"}\");\n return {\n text: '{}',\n selection: [1, 1]\n };\n } else {\n CstyleBehaviour.recordMaybeInsert(editor, session, \"{\");\n return {\n text: '{',\n selection: [1, 1]\n };\n }\n }\n } else if (text == '}') {\n initContext(editor);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == '}') {\n var matching = session.$findOpeningBracket('}', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n } else if (text == \"\\n\" || text == \"\\r\\n\") {\n initContext(editor);\n var closing = \"\";\n if (CstyleBehaviour.isMaybeInsertedClosing(cursor, line)) {\n closing = lang.stringRepeat(\"}\", context.maybeInsertedBrackets);\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar === '}') {\n var openBracePos = session.findMatchingBracket({row: cursor.row, column: cursor.column+1}, '}');\n if (!openBracePos)\n return null;\n var next_indent = this.$getIndent(session.getLine(openBracePos.row));\n } else if (closing) {\n var next_indent = this.$getIndent(line);\n } else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n return;\n }\n var indent = next_indent + session.getTabString();\n\n return {\n text: '\\n' + indent + '\\n' + next_indent + closing,\n selection: [1, indent.length, 1, indent.length]\n };\n } else {\n CstyleBehaviour.clearMaybeInsertedClosing();\n }\n });\n\n this.add(\"braces\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '{') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.end.column, range.end.column + 1);\n if (rightChar == '}') {\n range.end.column++;\n return range;\n } else {\n context.maybeInsertedBrackets--;\n }\n }\n });\n\n this.add(\"parens\", \"insertion\", function(state, action, editor, session, text) {\n if (text == '(') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '(', ')');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \")\");\n return {\n text: '()',\n selection: [1, 1]\n };\n }\n } else if (text == ')') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ')') {\n var matching = session.$findOpeningBracket(')', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"parens\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '(') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ')') {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"brackets\", \"insertion\", function(state, action, editor, session, text) {\n if (text == '[') {\n initContext(editor);\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, '[', ']');\n } else if (CstyleBehaviour.isSaneInsertion(editor, session)) {\n CstyleBehaviour.recordAutoInsert(editor, session, \"]\");\n return {\n text: '[]',\n selection: [1, 1]\n };\n }\n } else if (text == ']') {\n initContext(editor);\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n if (rightChar == ']') {\n var matching = session.$findOpeningBracket(']', {column: cursor.column + 1, row: cursor.row});\n if (matching !== null && CstyleBehaviour.isAutoInsertedClosing(cursor, line, text)) {\n CstyleBehaviour.popAutoInsertedClosing();\n return {\n text: '',\n selection: [1, 1]\n };\n }\n }\n }\n });\n\n this.add(\"brackets\", \"deletion\", function(state, action, editor, session, range) {\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && selected == '[') {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == ']') {\n range.end.column++;\n return range;\n }\n }\n });\n\n this.add(\"string_dquotes\", \"insertion\", function(state, action, editor, session, text) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n if (text.length == 1 && quotes[text]) {\n if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) \n return;\n initContext(editor);\n var quote = text;\n var selection = editor.getSelectionRange();\n var selected = session.doc.getTextRange(selection);\n if (selected !== \"\" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) {\n return getWrapped(selection, selected, quote, quote);\n } else if (!selected) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n var leftChar = line.substring(cursor.column-1, cursor.column);\n var rightChar = line.substring(cursor.column, cursor.column + 1);\n \n var token = session.getTokenAt(cursor.row, cursor.column);\n var rightToken = session.getTokenAt(cursor.row, cursor.column + 1);\n if (leftChar == \"\\\\\" && token && /escape/.test(token.type))\n return null;\n \n var stringBefore = token && /string|escape/.test(token.type);\n var stringAfter = !rightToken || /string|escape/.test(rightToken.type);\n \n var pair;\n if (rightChar == quote) {\n pair = stringBefore !== stringAfter;\n if (pair && /string\\.end/.test(rightToken.type))\n pair = false;\n } else {\n if (stringBefore && !stringAfter)\n return null; // wrap string with different quote\n if (stringBefore && stringAfter)\n return null; // do not pair quotes inside strings\n var wordRe = session.$mode.tokenRe;\n wordRe.lastIndex = 0;\n var isWordBefore = wordRe.test(leftChar);\n wordRe.lastIndex = 0;\n var isWordAfter = wordRe.test(leftChar);\n if (isWordBefore || isWordAfter)\n return null; // before or after alphanumeric\n if (rightChar && !/[\\s;,.})\\]\\\\]/.test(rightChar))\n return null; // there is rightChar and it isn't closing\n var charBefore = line[cursor.column - 2];\n if (leftChar == quote && (charBefore == quote || wordRe.test(charBefore)))\n return null;\n pair = true;\n }\n return {\n text: pair ? quote + quote : \"\",\n selection: [1,1]\n };\n }\n }\n });\n\n this.add(\"string_dquotes\", \"deletion\", function(state, action, editor, session, range) {\n var quotes = session.$mode.$quotes || defaultQuotes;\n\n var selected = session.doc.getTextRange(range);\n if (!range.isMultiLine() && quotes.hasOwnProperty(selected)) {\n initContext(editor);\n var line = session.doc.getLine(range.start.row);\n var rightChar = line.substring(range.start.column + 1, range.start.column + 2);\n if (rightChar == selected) {\n range.end.column++;\n return range;\n }\n }\n });\n\n};\n\n \nCstyleBehaviour.isSaneInsertion = function(editor, session) {\n var cursor = editor.getCursorPosition();\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n if (!this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS)) {\n if (/[)}\\]]/.test(editor.session.getLine(cursor.row)[cursor.column]))\n return true;\n var iterator2 = new TokenIterator(session, cursor.row, cursor.column + 1);\n if (!this.$matchTokenType(iterator2.getCurrentToken() || \"text\", SAFE_INSERT_IN_TOKENS))\n return false;\n }\n iterator.stepForward();\n return iterator.getCurrentTokenRow() !== cursor.row ||\n this.$matchTokenType(iterator.getCurrentToken() || \"text\", SAFE_INSERT_BEFORE_TOKENS);\n};\n\nCstyleBehaviour.$matchTokenType = function(token, types) {\n return types.indexOf(token.type || token) > -1;\n};\n\nCstyleBehaviour.recordAutoInsert = function(editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isAutoInsertedClosing(cursor, line, context.autoInsertedLineEnd[0]))\n context.autoInsertedBrackets = 0;\n context.autoInsertedRow = cursor.row;\n context.autoInsertedLineEnd = bracket + line.substr(cursor.column);\n context.autoInsertedBrackets++;\n};\n\nCstyleBehaviour.recordMaybeInsert = function(editor, session, bracket) {\n var cursor = editor.getCursorPosition();\n var line = session.doc.getLine(cursor.row);\n if (!this.isMaybeInsertedClosing(cursor, line))\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = cursor.row;\n context.maybeInsertedLineStart = line.substr(0, cursor.column) + bracket;\n context.maybeInsertedLineEnd = line.substr(cursor.column);\n context.maybeInsertedBrackets++;\n};\n\nCstyleBehaviour.isAutoInsertedClosing = function(cursor, line, bracket) {\n return context.autoInsertedBrackets > 0 &&\n cursor.row === context.autoInsertedRow &&\n bracket === context.autoInsertedLineEnd[0] &&\n line.substr(cursor.column) === context.autoInsertedLineEnd;\n};\n\nCstyleBehaviour.isMaybeInsertedClosing = function(cursor, line) {\n return context.maybeInsertedBrackets > 0 &&\n cursor.row === context.maybeInsertedRow &&\n line.substr(cursor.column) === context.maybeInsertedLineEnd &&\n line.substr(0, cursor.column) == context.maybeInsertedLineStart;\n};\n\nCstyleBehaviour.popAutoInsertedClosing = function() {\n context.autoInsertedLineEnd = context.autoInsertedLineEnd.substr(1);\n context.autoInsertedBrackets--;\n};\n\nCstyleBehaviour.clearMaybeInsertedClosing = function() {\n if (context) {\n context.maybeInsertedBrackets = 0;\n context.maybeInsertedRow = -1;\n }\n};\n\n\n\noop.inherits(CstyleBehaviour, Behaviour);\n\nexports.CstyleBehaviour = CstyleBehaviour;\n});\n\nace.define(\"ace/unicode\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\nvar wordChars = [48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2];\n\nvar code = 0;\nvar str = [];\nfor (var i = 0; i < wordChars.length; i += 2) {\n str.push(code += wordChars[i]);\n if (wordChars[i + 1])\n str.push(45, code += wordChars[i + 1]);\n}\n\nexports.wordChars = String.fromCharCode.apply(null, str);\n\n});\n\nace.define(\"ace/mode/text\",[\"require\",\"exports\",\"module\",\"ace/config\",\"ace/tokenizer\",\"ace/mode/text_highlight_rules\",\"ace/mode/behaviour/cstyle\",\"ace/unicode\",\"ace/lib/lang\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar config = require(\"../config\");\n\nvar Tokenizer = require(\"../tokenizer\").Tokenizer;\nvar TextHighlightRules = require(\"./text_highlight_rules\").TextHighlightRules;\nvar CstyleBehaviour = require(\"./behaviour/cstyle\").CstyleBehaviour;\nvar unicode = require(\"../unicode\");\nvar lang = require(\"../lib/lang\");\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\n\nvar Mode = function() {\n this.HighlightRules = TextHighlightRules;\n};\n\n(function() {\n this.$defaultBehaviour = new CstyleBehaviour();\n\n this.tokenRe = new RegExp(\"^[\" + unicode.wordChars + \"\\\\$_]+\", \"g\");\n\n this.nonTokenRe = new RegExp(\"^(?:[^\" + unicode.wordChars + \"\\\\$_]|\\\\s])+\", \"g\");\n\n this.getTokenizer = function() {\n if (!this.$tokenizer) {\n this.$highlightRules = this.$highlightRules || new this.HighlightRules(this.$highlightRuleConfig);\n this.$tokenizer = new Tokenizer(this.$highlightRules.getRules());\n }\n return this.$tokenizer;\n };\n\n this.lineCommentStart = \"\";\n this.blockComment = \"\";\n\n this.toggleCommentLines = function(state, session, startRow, endRow) {\n var doc = session.doc;\n\n var ignoreBlankLines = true;\n var shouldRemove = true;\n var minIndent = Infinity;\n var tabSize = session.getTabSize();\n var insertAtTabStop = false;\n\n if (!this.lineCommentStart) {\n if (!this.blockComment)\n return false;\n var lineCommentStart = this.blockComment.start;\n var lineCommentEnd = this.blockComment.end;\n var regexpStart = new RegExp(\"^(\\\\s*)(?:\" + lang.escapeRegExp(lineCommentStart) + \")\");\n var regexpEnd = new RegExp(\"(?:\" + lang.escapeRegExp(lineCommentEnd) + \")\\\\s*$\");\n\n var comment = function(line, i) {\n if (testRemove(line, i))\n return;\n if (!ignoreBlankLines || /\\S/.test(line)) {\n doc.insertInLine({row: i, column: line.length}, lineCommentEnd);\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n\n var uncomment = function(line, i) {\n var m;\n if (m = line.match(regexpEnd))\n doc.removeInLine(i, line.length - m[0].length, line.length);\n if (m = line.match(regexpStart))\n doc.removeInLine(i, m[1].length, m[0].length);\n };\n\n var testRemove = function(line, row) {\n if (regexpStart.test(line))\n return true;\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n if (tokens[i].type === \"comment\")\n return true;\n }\n };\n } else {\n if (Array.isArray(this.lineCommentStart)) {\n var regexpStart = this.lineCommentStart.map(lang.escapeRegExp).join(\"|\");\n var lineCommentStart = this.lineCommentStart[0];\n } else {\n var regexpStart = lang.escapeRegExp(this.lineCommentStart);\n var lineCommentStart = this.lineCommentStart;\n }\n regexpStart = new RegExp(\"^(\\\\s*)(?:\" + regexpStart + \") ?\");\n \n insertAtTabStop = session.getUseSoftTabs();\n\n var uncomment = function(line, i) {\n var m = line.match(regexpStart);\n if (!m) return;\n var start = m[1].length, end = m[0].length;\n if (!shouldInsertSpace(line, start, end) && m[0][end - 1] == \" \")\n end--;\n doc.removeInLine(i, start, end);\n };\n var commentWithSpace = lineCommentStart + \" \";\n var comment = function(line, i) {\n if (!ignoreBlankLines || /\\S/.test(line)) {\n if (shouldInsertSpace(line, minIndent, minIndent))\n doc.insertInLine({row: i, column: minIndent}, commentWithSpace);\n else\n doc.insertInLine({row: i, column: minIndent}, lineCommentStart);\n }\n };\n var testRemove = function(line, i) {\n return regexpStart.test(line);\n };\n \n var shouldInsertSpace = function(line, before, after) {\n var spaces = 0;\n while (before-- && line.charAt(before) == \" \")\n spaces++;\n if (spaces % tabSize != 0)\n return false;\n var spaces = 0;\n while (line.charAt(after++) == \" \")\n spaces++;\n if (tabSize > 2)\n return spaces % tabSize != tabSize - 1;\n else\n return spaces % tabSize == 0;\n };\n }\n\n function iter(fun) {\n for (var i = startRow; i <= endRow; i++)\n fun(doc.getLine(i), i);\n }\n\n\n var minEmptyLength = Infinity;\n iter(function(line, i) {\n var indent = line.search(/\\S/);\n if (indent !== -1) {\n if (indent < minIndent)\n minIndent = indent;\n if (shouldRemove && !testRemove(line, i))\n shouldRemove = false;\n } else if (minEmptyLength > line.length) {\n minEmptyLength = line.length;\n }\n });\n\n if (minIndent == Infinity) {\n minIndent = minEmptyLength;\n ignoreBlankLines = false;\n shouldRemove = false;\n }\n\n if (insertAtTabStop && minIndent % tabSize != 0)\n minIndent = Math.floor(minIndent / tabSize) * tabSize;\n\n iter(shouldRemove ? uncomment : comment);\n };\n\n this.toggleBlockComment = function(state, session, range, cursor) {\n var comment = this.blockComment;\n if (!comment)\n return;\n if (!comment.start && comment[0])\n comment = comment[0];\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n\n var sel = session.selection;\n var initialRange = session.selection.toOrientedRange();\n var startRow, colDiff;\n\n if (token && /comment/.test(token.type)) {\n var startRange, endRange;\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.start);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n startRange = new Range(row, column, row, column + comment.start.length);\n break;\n }\n token = iterator.stepBackward();\n }\n\n var iterator = new TokenIterator(session, cursor.row, cursor.column);\n var token = iterator.getCurrentToken();\n while (token && /comment/.test(token.type)) {\n var i = token.value.indexOf(comment.end);\n if (i != -1) {\n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn() + i;\n endRange = new Range(row, column, row, column + comment.end.length);\n break;\n }\n token = iterator.stepForward();\n }\n if (endRange)\n session.remove(endRange);\n if (startRange) {\n session.remove(startRange);\n startRow = startRange.start.row;\n colDiff = -comment.start.length;\n }\n } else {\n colDiff = comment.start.length;\n startRow = range.start.row;\n session.insert(range.end, comment.end);\n session.insert(range.start, comment.start);\n }\n if (initialRange.start.row == startRow)\n initialRange.start.column += colDiff;\n if (initialRange.end.row == startRow)\n initialRange.end.column += colDiff;\n session.selection.fromOrientedRange(initialRange);\n };\n\n this.getNextLineIndent = function(state, line, tab) {\n return this.$getIndent(line);\n };\n\n this.checkOutdent = function(state, line, input) {\n return false;\n };\n\n this.autoOutdent = function(state, doc, row) {\n };\n\n this.$getIndent = function(line) {\n return line.match(/^\\s*/)[0];\n };\n\n this.createWorker = function(session) {\n return null;\n };\n\n this.createModeDelegates = function (mapping) {\n this.$embeds = [];\n this.$modes = {};\n for (var i in mapping) {\n if (mapping[i]) {\n var Mode = mapping[i];\n var id = Mode.prototype.$id;\n var mode = config.$modes[id];\n if (!mode)\n config.$modes[id] = mode = new Mode();\n if (!config.$modes[i])\n config.$modes[i] = mode;\n this.$embeds.push(i);\n this.$modes[i] = mode;\n }\n }\n\n var delegations = [\"toggleBlockComment\", \"toggleCommentLines\", \"getNextLineIndent\", \n \"checkOutdent\", \"autoOutdent\", \"transformAction\", \"getCompletions\"];\n\n for (var i = 0; i < delegations.length; i++) {\n (function(scope) {\n var functionName = delegations[i];\n var defaultHandler = scope[functionName];\n scope[delegations[i]] = function() {\n return this.$delegator(functionName, arguments, defaultHandler);\n };\n }(this));\n }\n };\n\n this.$delegator = function(method, args, defaultHandler) {\n var state = args[0] || \"start\";\n if (typeof state != \"string\") {\n if (Array.isArray(state[2])) {\n var language = state[2][state[2].length - 1];\n var mode = this.$modes[language];\n if (mode)\n return mode[method].apply(mode, [state[1]].concat([].slice.call(args, 1)));\n }\n state = state[0] || \"start\";\n }\n \n for (var i = 0; i < this.$embeds.length; i++) {\n if (!this.$modes[this.$embeds[i]]) continue;\n\n var split = state.split(this.$embeds[i]);\n if (!split[0] && split[1]) {\n args[0] = split[1];\n var mode = this.$modes[this.$embeds[i]];\n return mode[method].apply(mode, args);\n }\n }\n var ret = defaultHandler.apply(this, args);\n return defaultHandler ? ret : undefined;\n };\n\n this.transformAction = function(state, action, editor, session, param) {\n if (this.$behaviour) {\n var behaviours = this.$behaviour.getBehaviours();\n for (var key in behaviours) {\n if (behaviours[key][action]) {\n var ret = behaviours[key][action].apply(this, arguments);\n if (ret) {\n return ret;\n }\n }\n }\n }\n };\n \n this.getKeywords = function(append) {\n if (!this.completionKeywords) {\n var rules = this.$tokenizer.rules;\n var completionKeywords = [];\n for (var rule in rules) {\n var ruleItr = rules[rule];\n for (var r = 0, l = ruleItr.length; r < l; r++) {\n if (typeof ruleItr[r].token === \"string\") {\n if (/keyword|support|storage/.test(ruleItr[r].token))\n completionKeywords.push(ruleItr[r].regex);\n }\n else if (typeof ruleItr[r].token === \"object\") {\n for (var a = 0, aLength = ruleItr[r].token.length; a < aLength; a++) { \n if (/keyword|support|storage/.test(ruleItr[r].token[a])) {\n var rule = ruleItr[r].regex.match(/\\(.+?\\)/g)[a];\n completionKeywords.push(rule.substr(1, rule.length - 2));\n }\n }\n }\n }\n }\n this.completionKeywords = completionKeywords;\n }\n if (!append)\n return this.$keywordList;\n return completionKeywords.concat(this.$keywordList || []);\n };\n \n this.$createKeywordList = function() {\n if (!this.$highlightRules)\n this.getTokenizer();\n return this.$keywordList = this.$highlightRules.$keywordList || [];\n };\n\n this.getCompletions = function(state, session, pos, prefix) {\n var keywords = this.$keywordList || this.$createKeywordList();\n return keywords.map(function(word) {\n return {\n name: word,\n value: word,\n score: 0,\n meta: \"keyword\"\n };\n });\n };\n\n this.$id = \"ace/mode/text\";\n}).call(Mode.prototype);\n\nexports.Mode = Mode;\n});\n\nace.define(\"ace/apply_delta\",[\"require\",\"exports\",\"module\"], function(require, exports, module) {\n\"use strict\";\n\nfunction throwDeltaError(delta, errorText){\n console.log(\"Invalid Delta:\", delta);\n throw \"Invalid Delta: \" + errorText;\n}\n\nfunction positionInDocument(docLines, position) {\n return position.row >= 0 && position.row < docLines.length &&\n position.column >= 0 && position.column <= docLines[position.row].length;\n}\n\nfunction validateDelta(docLines, delta) {\n if (delta.action != \"insert\" && delta.action != \"remove\")\n throwDeltaError(delta, \"delta.action must be 'insert' or 'remove'\");\n if (!(delta.lines instanceof Array))\n throwDeltaError(delta, \"delta.lines must be an Array\");\n if (!delta.start || !delta.end)\n throwDeltaError(delta, \"delta.start/end must be an present\");\n var start = delta.start;\n if (!positionInDocument(docLines, delta.start))\n throwDeltaError(delta, \"delta.start must be contained in document\");\n var end = delta.end;\n if (delta.action == \"remove\" && !positionInDocument(docLines, end))\n throwDeltaError(delta, \"delta.end must contained in document for 'remove' actions\");\n var numRangeRows = end.row - start.row;\n var numRangeLastLineChars = (end.column - (numRangeRows == 0 ? start.column : 0));\n if (numRangeRows != delta.lines.length - 1 || delta.lines[numRangeRows].length != numRangeLastLineChars)\n throwDeltaError(delta, \"delta.range must match delta lines\");\n}\n\nexports.applyDelta = function(docLines, delta, doNotValidate) {\n \n var row = delta.start.row;\n var startColumn = delta.start.column;\n var line = docLines[row] || \"\";\n switch (delta.action) {\n case \"insert\":\n var lines = delta.lines;\n if (lines.length === 1) {\n docLines[row] = line.substring(0, startColumn) + delta.lines[0] + line.substring(startColumn);\n } else {\n var args = [row, 1].concat(delta.lines);\n docLines.splice.apply(docLines, args);\n docLines[row] = line.substring(0, startColumn) + docLines[row];\n docLines[row + delta.lines.length - 1] += line.substring(startColumn);\n }\n break;\n case \"remove\":\n var endColumn = delta.end.column;\n var endRow = delta.end.row;\n if (row === endRow) {\n docLines[row] = line.substring(0, startColumn) + line.substring(endColumn);\n } else {\n docLines.splice(\n row, endRow - row + 1,\n line.substring(0, startColumn) + docLines[endRow].substring(endColumn)\n );\n }\n break;\n }\n};\n});\n\nace.define(\"ace/anchor\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\n\nvar Anchor = exports.Anchor = function(doc, row, column) {\n this.$onChange = this.onChange.bind(this);\n this.attach(doc);\n \n if (typeof column == \"undefined\")\n this.setPosition(row.row, row.column);\n else\n this.setPosition(row, column);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.getPosition = function() {\n return this.$clipPositionToDocument(this.row, this.column);\n };\n this.getDocument = function() {\n return this.document;\n };\n this.$insertRight = false;\n this.onChange = function(delta) {\n if (delta.start.row == delta.end.row && delta.start.row != this.row)\n return;\n\n if (delta.start.row > this.row)\n return;\n \n var point = $getTransformedPoint(delta, {row: this.row, column: this.column}, this.$insertRight);\n this.setPosition(point.row, point.column, true);\n };\n \n function $pointsInOrder(point1, point2, equalPointsInOrder) {\n var bColIsAfter = equalPointsInOrder ? point1.column <= point2.column : point1.column < point2.column;\n return (point1.row < point2.row) || (point1.row == point2.row && bColIsAfter);\n }\n \n function $getTransformedPoint(delta, point, moveIfEqual) {\n var deltaIsInsert = delta.action == \"insert\";\n var deltaRowShift = (deltaIsInsert ? 1 : -1) * (delta.end.row - delta.start.row);\n var deltaColShift = (deltaIsInsert ? 1 : -1) * (delta.end.column - delta.start.column);\n var deltaStart = delta.start;\n var deltaEnd = deltaIsInsert ? deltaStart : delta.end; // Collapse insert range.\n if ($pointsInOrder(point, deltaStart, moveIfEqual)) {\n return {\n row: point.row,\n column: point.column\n };\n }\n if ($pointsInOrder(deltaEnd, point, !moveIfEqual)) {\n return {\n row: point.row + deltaRowShift,\n column: point.column + (point.row == deltaEnd.row ? deltaColShift : 0)\n };\n }\n \n return {\n row: deltaStart.row,\n column: deltaStart.column\n };\n }\n this.setPosition = function(row, column, noClip) {\n var pos;\n if (noClip) {\n pos = {\n row: row,\n column: column\n };\n } else {\n pos = this.$clipPositionToDocument(row, column);\n }\n\n if (this.row == pos.row && this.column == pos.column)\n return;\n\n var old = {\n row: this.row,\n column: this.column\n };\n\n this.row = pos.row;\n this.column = pos.column;\n this._signal(\"change\", {\n old: old,\n value: pos\n });\n };\n this.detach = function() {\n this.document.off(\"change\", this.$onChange);\n };\n this.attach = function(doc) {\n this.document = doc || this.document;\n this.document.on(\"change\", this.$onChange);\n };\n this.$clipPositionToDocument = function(row, column) {\n var pos = {};\n\n if (row >= this.document.getLength()) {\n pos.row = Math.max(0, this.document.getLength() - 1);\n pos.column = this.document.getLine(pos.row).length;\n }\n else if (row < 0) {\n pos.row = 0;\n pos.column = 0;\n }\n else {\n pos.row = row;\n pos.column = Math.min(this.document.getLine(pos.row).length, Math.max(0, column));\n }\n\n if (column < 0)\n pos.column = 0;\n\n return pos;\n };\n\n}).call(Anchor.prototype);\n\n});\n\nace.define(\"ace/document\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/apply_delta\",\"ace/lib/event_emitter\",\"ace/range\",\"ace/anchor\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar applyDelta = require(\"./apply_delta\").applyDelta;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Range = require(\"./range\").Range;\nvar Anchor = require(\"./anchor\").Anchor;\n\nvar Document = function(textOrLines) {\n this.$lines = [\"\"];\n if (textOrLines.length === 0) {\n this.$lines = [\"\"];\n } else if (Array.isArray(textOrLines)) {\n this.insertMergedLines({row: 0, column: 0}, textOrLines);\n } else {\n this.insert({row: 0, column:0}, textOrLines);\n }\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setValue = function(text) {\n var len = this.getLength() - 1;\n this.remove(new Range(0, 0, len, this.getLine(len).length));\n this.insert({row: 0, column: 0}, text);\n };\n this.getValue = function() {\n return this.getAllLines().join(this.getNewLineCharacter());\n };\n this.createAnchor = function(row, column) {\n return new Anchor(this, row, column);\n };\n if (\"aaa\".split(/a/).length === 0) {\n this.$split = function(text) {\n return text.replace(/\\r\\n|\\r/g, \"\\n\").split(\"\\n\");\n };\n } else {\n this.$split = function(text) {\n return text.split(/\\r\\n|\\r|\\n/);\n };\n }\n\n\n this.$detectNewLine = function(text) {\n var match = text.match(/^.*?(\\r\\n|\\r|\\n)/m);\n this.$autoNewLine = match ? match[1] : \"\\n\";\n this._signal(\"changeNewLineMode\");\n };\n this.getNewLineCharacter = function() {\n switch (this.$newLineMode) {\n case \"windows\":\n return \"\\r\\n\";\n case \"unix\":\n return \"\\n\";\n default:\n return this.$autoNewLine || \"\\n\";\n }\n };\n\n this.$autoNewLine = \"\";\n this.$newLineMode = \"auto\";\n this.setNewLineMode = function(newLineMode) {\n if (this.$newLineMode === newLineMode)\n return;\n\n this.$newLineMode = newLineMode;\n this._signal(\"changeNewLineMode\");\n };\n this.getNewLineMode = function() {\n return this.$newLineMode;\n };\n this.isNewLine = function(text) {\n return (text == \"\\r\\n\" || text == \"\\r\" || text == \"\\n\");\n };\n this.getLine = function(row) {\n return this.$lines[row] || \"\";\n };\n this.getLines = function(firstRow, lastRow) {\n return this.$lines.slice(firstRow, lastRow + 1);\n };\n this.getAllLines = function() {\n return this.getLines(0, this.getLength());\n };\n this.getLength = function() {\n return this.$lines.length;\n };\n this.getTextRange = function(range) {\n return this.getLinesForRange(range).join(this.getNewLineCharacter());\n };\n this.getLinesForRange = function(range) {\n var lines;\n if (range.start.row === range.end.row) {\n lines = [this.getLine(range.start.row).substring(range.start.column, range.end.column)];\n } else {\n lines = this.getLines(range.start.row, range.end.row);\n lines[0] = (lines[0] || \"\").substring(range.start.column);\n var l = lines.length - 1;\n if (range.end.row - range.start.row == l)\n lines[l] = lines[l].substring(0, range.end.column);\n }\n return lines;\n };\n this.insertLines = function(row, lines) {\n console.warn(\"Use of document.insertLines is deprecated. Use the insertFullLines method instead.\");\n return this.insertFullLines(row, lines);\n };\n this.removeLines = function(firstRow, lastRow) {\n console.warn(\"Use of document.removeLines is deprecated. Use the removeFullLines method instead.\");\n return this.removeFullLines(firstRow, lastRow);\n };\n this.insertNewLine = function(position) {\n console.warn(\"Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead.\");\n return this.insertMergedLines(position, [\"\", \"\"]);\n };\n this.insert = function(position, text) {\n if (this.getLength() <= 1)\n this.$detectNewLine(text);\n \n return this.insertMergedLines(position, this.$split(text));\n };\n this.insertInLine = function(position, text) {\n var start = this.clippedPos(position.row, position.column);\n var end = this.pos(position.row, position.column + text.length);\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: [text]\n }, true);\n \n return this.clonePos(end);\n };\n \n this.clippedPos = function(row, column) {\n var length = this.getLength();\n if (row === undefined) {\n row = length;\n } else if (row < 0) {\n row = 0;\n } else if (row >= length) {\n row = length - 1;\n column = undefined;\n }\n var line = this.getLine(row);\n if (column == undefined)\n column = line.length;\n column = Math.min(Math.max(column, 0), line.length);\n return {row: row, column: column};\n };\n \n this.clonePos = function(pos) {\n return {row: pos.row, column: pos.column};\n };\n \n this.pos = function(row, column) {\n return {row: row, column: column};\n };\n \n this.$clipPosition = function(position) {\n var length = this.getLength();\n if (position.row >= length) {\n position.row = Math.max(0, length - 1);\n position.column = this.getLine(length - 1).length;\n } else {\n position.row = Math.max(0, position.row);\n position.column = Math.min(Math.max(position.column, 0), this.getLine(position.row).length);\n }\n return position;\n };\n this.insertFullLines = function(row, lines) {\n row = Math.min(Math.max(row, 0), this.getLength());\n var column = 0;\n if (row < this.getLength()) {\n lines = lines.concat([\"\"]);\n column = 0;\n } else {\n lines = [\"\"].concat(lines);\n row--;\n column = this.$lines[row].length;\n }\n this.insertMergedLines({row: row, column: column}, lines);\n }; \n this.insertMergedLines = function(position, lines) {\n var start = this.clippedPos(position.row, position.column);\n var end = {\n row: start.row + lines.length - 1,\n column: (lines.length == 1 ? start.column : 0) + lines[lines.length - 1].length\n };\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"insert\",\n lines: lines\n });\n \n return this.clonePos(end);\n };\n this.remove = function(range) {\n var start = this.clippedPos(range.start.row, range.start.column);\n var end = this.clippedPos(range.end.row, range.end.column);\n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({start: start, end: end})\n });\n return this.clonePos(start);\n };\n this.removeInLine = function(row, startColumn, endColumn) {\n var start = this.clippedPos(row, startColumn);\n var end = this.clippedPos(row, endColumn);\n \n this.applyDelta({\n start: start,\n end: end,\n action: \"remove\",\n lines: this.getLinesForRange({start: start, end: end})\n }, true);\n \n return this.clonePos(start);\n };\n this.removeFullLines = function(firstRow, lastRow) {\n firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);\n lastRow = Math.min(Math.max(0, lastRow ), this.getLength() - 1);\n var deleteFirstNewLine = lastRow == this.getLength() - 1 && firstRow > 0;\n var deleteLastNewLine = lastRow < this.getLength() - 1;\n var startRow = ( deleteFirstNewLine ? firstRow - 1 : firstRow );\n var startCol = ( deleteFirstNewLine ? this.getLine(startRow).length : 0 );\n var endRow = ( deleteLastNewLine ? lastRow + 1 : lastRow );\n var endCol = ( deleteLastNewLine ? 0 : this.getLine(endRow).length ); \n var range = new Range(startRow, startCol, endRow, endCol);\n var deletedLines = this.$lines.slice(firstRow, lastRow + 1);\n \n this.applyDelta({\n start: range.start,\n end: range.end,\n action: \"remove\",\n lines: this.getLinesForRange(range)\n });\n return deletedLines;\n };\n this.removeNewLine = function(row) {\n if (row < this.getLength() - 1 && row >= 0) {\n this.applyDelta({\n start: this.pos(row, this.getLine(row).length),\n end: this.pos(row + 1, 0),\n action: \"remove\",\n lines: [\"\", \"\"]\n });\n }\n };\n this.replace = function(range, text) {\n if (!(range instanceof Range))\n range = Range.fromPoints(range.start, range.end);\n if (text.length === 0 && range.isEmpty())\n return range.start;\n if (text == this.getTextRange(range))\n return range.end;\n\n this.remove(range);\n var end;\n if (text) {\n end = this.insert(range.start, text);\n }\n else {\n end = range.start;\n }\n \n return end;\n };\n this.applyDeltas = function(deltas) {\n for (var i=0; i=0; i--) {\n this.revertDelta(deltas[i]);\n }\n };\n this.applyDelta = function(delta, doNotValidate) {\n var isInsert = delta.action == \"insert\";\n if (isInsert ? delta.lines.length <= 1 && !delta.lines[0]\n : !Range.comparePoints(delta.start, delta.end)) {\n return;\n }\n \n if (isInsert && delta.lines.length > 20000) {\n this.$splitAndapplyLargeDelta(delta, 20000);\n }\n else {\n applyDelta(this.$lines, delta, doNotValidate);\n this._signal(\"change\", delta);\n }\n };\n \n this.$safeApplyDelta = function(delta) {\n var docLength = this.$lines.length;\n if (\n delta.action == \"remove\" && delta.start.row < docLength && delta.end.row < docLength\n || delta.action == \"insert\" && delta.start.row <= docLength\n ) {\n this.applyDelta(delta);\n }\n };\n \n this.$splitAndapplyLargeDelta = function(delta, MAX) {\n var lines = delta.lines;\n var l = lines.length - MAX + 1;\n var row = delta.start.row; \n var column = delta.start.column;\n for (var from = 0, to = 0; from < l; from = to) {\n to += MAX - 1;\n var chunk = lines.slice(from, to);\n chunk.push(\"\");\n this.applyDelta({\n start: this.pos(row + from, column),\n end: this.pos(row + to, column = 0),\n action: delta.action,\n lines: chunk\n }, true);\n }\n delta.lines = lines.slice(from);\n delta.start.row = row + from;\n delta.start.column = column;\n this.applyDelta(delta, true);\n };\n this.revertDelta = function(delta) {\n this.$safeApplyDelta({\n start: this.clonePos(delta.start),\n end: this.clonePos(delta.end),\n action: (delta.action == \"insert\" ? \"remove\" : \"insert\"),\n lines: delta.lines.slice()\n });\n };\n this.indexToPosition = function(index, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n for (var i = startRow || 0, l = lines.length; i < l; i++) {\n index -= lines[i].length + newlineLength;\n if (index < 0)\n return {row: i, column: index + lines[i].length + newlineLength};\n }\n return {row: l-1, column: index + lines[l-1].length + newlineLength};\n };\n this.positionToIndex = function(pos, startRow) {\n var lines = this.$lines || this.getAllLines();\n var newlineLength = this.getNewLineCharacter().length;\n var index = 0;\n var row = Math.min(pos.row, lines.length);\n for (var i = startRow || 0; i < row; ++i)\n index += lines[i].length + newlineLength;\n\n return index + pos.column;\n };\n\n}).call(Document.prototype);\n\nexports.Document = Document;\n});\n\nace.define(\"ace/background_tokenizer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\n\nvar BackgroundTokenizer = function(tokenizer, editor) {\n this.running = false;\n this.lines = [];\n this.states = [];\n this.currentLine = 0;\n this.tokenizer = tokenizer;\n\n var self = this;\n\n this.$worker = function() {\n if (!self.running) { return; }\n\n var workerStart = new Date();\n var currentLine = self.currentLine;\n var endLine = -1;\n var doc = self.doc;\n\n var startLine = currentLine;\n while (self.lines[currentLine])\n currentLine++;\n \n var len = doc.getLength();\n var processedLines = 0;\n self.running = false;\n while (currentLine < len) {\n self.$tokenizeRow(currentLine);\n endLine = currentLine;\n do {\n currentLine++;\n } while (self.lines[currentLine]);\n processedLines ++;\n if ((processedLines % 5 === 0) && (new Date() - workerStart) > 20) {\n self.running = setTimeout(self.$worker, 20);\n break;\n }\n }\n self.currentLine = currentLine;\n \n if (endLine == -1)\n endLine = currentLine;\n \n if (startLine <= endLine)\n self.fireUpdateEvent(startLine, endLine);\n };\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n this.setTokenizer = function(tokenizer) {\n this.tokenizer = tokenizer;\n this.lines = [];\n this.states = [];\n\n this.start(0);\n };\n this.setDocument = function(doc) {\n this.doc = doc;\n this.lines = [];\n this.states = [];\n\n this.stop();\n };\n this.fireUpdateEvent = function(firstRow, lastRow) {\n var data = {\n first: firstRow,\n last: lastRow\n };\n this._signal(\"update\", {data: data});\n };\n this.start = function(startRow) {\n this.currentLine = Math.min(startRow || 0, this.currentLine, this.doc.getLength());\n this.lines.splice(this.currentLine, this.lines.length);\n this.states.splice(this.currentLine, this.states.length);\n\n this.stop();\n this.running = setTimeout(this.$worker, 700);\n };\n \n this.scheduleStart = function() {\n if (!this.running)\n this.running = setTimeout(this.$worker, 700);\n };\n\n this.$updateOnChange = function(delta) {\n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n this.lines[startRow] = null;\n } else if (delta.action == \"remove\") {\n this.lines.splice(startRow, len + 1, null);\n this.states.splice(startRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(startRow, 1);\n this.lines.splice.apply(this.lines, args);\n this.states.splice.apply(this.states, args);\n }\n\n this.currentLine = Math.min(startRow, this.currentLine, this.doc.getLength());\n\n this.stop();\n };\n this.stop = function() {\n if (this.running)\n clearTimeout(this.running);\n this.running = false;\n };\n this.getTokens = function(row) {\n return this.lines[row] || this.$tokenizeRow(row);\n };\n this.getState = function(row) {\n if (this.currentLine == row)\n this.$tokenizeRow(row);\n return this.states[row] || \"start\";\n };\n\n this.$tokenizeRow = function(row) {\n var line = this.doc.getLine(row);\n var state = this.states[row - 1];\n\n var data = this.tokenizer.getLineTokens(line, state, row);\n\n if (this.states[row] + \"\" !== data.state + \"\") {\n this.states[row] = data.state;\n this.lines[row + 1] = null;\n if (this.currentLine > row + 1)\n this.currentLine = row + 1;\n } else if (this.currentLine == row) {\n this.currentLine = row + 1;\n }\n\n return this.lines[row] = data.tokens;\n };\n\n}).call(BackgroundTokenizer.prototype);\n\nexports.BackgroundTokenizer = BackgroundTokenizer;\n});\n\nace.define(\"ace/search_highlight\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\n\nvar SearchHighlight = function(regExp, clazz, type) {\n this.setRegexp(regExp);\n this.clazz = clazz;\n this.type = type || \"text\";\n};\n\n(function() {\n this.MAX_RANGES = 500;\n \n this.setRegexp = function(regExp) {\n if (this.regExp+\"\" == regExp+\"\")\n return;\n this.regExp = regExp;\n this.cache = [];\n };\n\n this.update = function(html, markerLayer, session, config) {\n if (!this.regExp)\n return;\n var start = config.firstRow, end = config.lastRow;\n\n for (var i = start; i <= end; i++) {\n var ranges = this.cache[i];\n if (ranges == null) {\n ranges = lang.getMatchOffsets(session.getLine(i), this.regExp);\n if (ranges.length > this.MAX_RANGES)\n ranges = ranges.slice(0, this.MAX_RANGES);\n ranges = ranges.map(function(match) {\n return new Range(i, match.offset, i, match.offset + match.length);\n });\n this.cache[i] = ranges.length ? ranges : \"\";\n }\n\n for (var j = ranges.length; j --; ) {\n markerLayer.drawSingleLineMarker(\n html, ranges[j].toScreenRange(session), this.clazz, config);\n }\n }\n };\n\n}).call(SearchHighlight.prototype);\n\nexports.SearchHighlight = SearchHighlight;\n});\n\nace.define(\"ace/edit_session/fold_line\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../range\").Range;\nfunction FoldLine(foldData, folds) {\n this.foldData = foldData;\n if (Array.isArray(folds)) {\n this.folds = folds;\n } else {\n folds = this.folds = [ folds ];\n }\n\n var last = folds[folds.length - 1];\n this.range = new Range(folds[0].start.row, folds[0].start.column,\n last.end.row, last.end.column);\n this.start = this.range.start;\n this.end = this.range.end;\n\n this.folds.forEach(function(fold) {\n fold.setFoldLine(this);\n }, this);\n}\n\n(function() {\n this.shiftRow = function(shift) {\n this.start.row += shift;\n this.end.row += shift;\n this.folds.forEach(function(fold) {\n fold.start.row += shift;\n fold.end.row += shift;\n });\n };\n\n this.addFold = function(fold) {\n if (fold.sameRow) {\n if (fold.start.row < this.startRow || fold.endRow > this.endRow) {\n throw new Error(\"Can't add a fold to this FoldLine as it has no connection\");\n }\n this.folds.push(fold);\n this.folds.sort(function(a, b) {\n return -a.range.compareEnd(b.start.row, b.start.column);\n });\n if (this.range.compareEnd(fold.start.row, fold.start.column) > 0) {\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (this.range.compareStart(fold.end.row, fold.end.column) < 0) {\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n }\n } else if (fold.start.row == this.end.row) {\n this.folds.push(fold);\n this.end.row = fold.end.row;\n this.end.column = fold.end.column;\n } else if (fold.end.row == this.start.row) {\n this.folds.unshift(fold);\n this.start.row = fold.start.row;\n this.start.column = fold.start.column;\n } else {\n throw new Error(\"Trying to add fold to FoldRow that doesn't have a matching row\");\n }\n fold.foldLine = this;\n };\n\n this.containsRow = function(row) {\n return row >= this.start.row && row <= this.end.row;\n };\n\n this.walk = function(callback, endRow, endColumn) {\n var lastEnd = 0,\n folds = this.folds,\n fold,\n cmp, stop, isNewRow = true;\n\n if (endRow == null) {\n endRow = this.end.row;\n endColumn = this.end.column;\n }\n\n for (var i = 0; i < folds.length; i++) {\n fold = folds[i];\n\n cmp = fold.range.compareStart(endRow, endColumn);\n if (cmp == -1) {\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n return;\n }\n\n stop = callback(null, fold.start.row, fold.start.column, lastEnd, isNewRow);\n stop = !stop && callback(fold.placeholder, fold.start.row, fold.start.column, lastEnd);\n if (stop || cmp === 0) {\n return;\n }\n isNewRow = !fold.sameRow;\n lastEnd = fold.end.column;\n }\n callback(null, endRow, endColumn, lastEnd, isNewRow);\n };\n\n this.getNextFoldTo = function(row, column) {\n var fold, cmp;\n for (var i = 0; i < this.folds.length; i++) {\n fold = this.folds[i];\n cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n return {\n fold: fold,\n kind: \"after\"\n };\n } else if (cmp === 0) {\n return {\n fold: fold,\n kind: \"inside\"\n };\n }\n }\n return null;\n };\n\n this.addRemoveChars = function(row, column, len) {\n var ret = this.getNextFoldTo(row, column),\n fold, folds;\n if (ret) {\n fold = ret.fold;\n if (ret.kind == \"inside\"\n && fold.start.column != column\n && fold.start.row != row)\n {\n window.console && window.console.log(row, column, fold);\n } else if (fold.start.row == row) {\n folds = this.folds;\n var i = folds.indexOf(fold);\n if (i === 0) {\n this.start.column += len;\n }\n for (i; i < folds.length; i++) {\n fold = folds[i];\n fold.start.column += len;\n if (!fold.sameRow) {\n return;\n }\n fold.end.column += len;\n }\n this.end.column += len;\n }\n }\n };\n\n this.split = function(row, column) {\n var pos = this.getNextFoldTo(row, column);\n \n if (!pos || pos.kind == \"inside\")\n return null;\n \n var fold = pos.fold;\n var folds = this.folds;\n var foldData = this.foldData;\n \n var i = folds.indexOf(fold);\n var foldBefore = folds[i - 1];\n this.end.row = foldBefore.end.row;\n this.end.column = foldBefore.end.column;\n folds = folds.splice(i, folds.length - i);\n\n var newFoldLine = new FoldLine(foldData, folds);\n foldData.splice(foldData.indexOf(this) + 1, 0, newFoldLine);\n return newFoldLine;\n };\n\n this.merge = function(foldLineNext) {\n var folds = foldLineNext.folds;\n for (var i = 0; i < folds.length; i++) {\n this.addFold(folds[i]);\n }\n var foldData = this.foldData;\n foldData.splice(foldData.indexOf(foldLineNext), 1);\n };\n\n this.toString = function() {\n var ret = [this.range.toString() + \": [\" ];\n\n this.folds.forEach(function(fold) {\n ret.push(\" \" + fold.toString());\n });\n ret.push(\"]\");\n return ret.join(\"\\n\");\n };\n\n this.idxToPosition = function(idx) {\n var lastFoldEndColumn = 0;\n\n for (var i = 0; i < this.folds.length; i++) {\n var fold = this.folds[i];\n\n idx -= fold.start.column - lastFoldEndColumn;\n if (idx < 0) {\n return {\n row: fold.start.row,\n column: fold.start.column + idx\n };\n }\n\n idx -= fold.placeholder.length;\n if (idx < 0) {\n return fold.start;\n }\n\n lastFoldEndColumn = fold.end.column;\n }\n\n return {\n row: this.end.row,\n column: this.end.column + idx\n };\n };\n}).call(FoldLine.prototype);\n\nexports.FoldLine = FoldLine;\n});\n\nace.define(\"ace/range_list\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar Range = require(\"./range\").Range;\nvar comparePoints = Range.comparePoints;\n\nvar RangeList = function() {\n this.ranges = [];\n this.$bias = 1;\n};\n\n(function() {\n this.comparePoints = comparePoints;\n\n this.pointIndex = function(pos, excludeEdges, startIndex) {\n var list = this.ranges;\n\n for (var i = startIndex || 0; i < list.length; i++) {\n var range = list[i];\n var cmpEnd = comparePoints(pos, range.end);\n if (cmpEnd > 0)\n continue;\n var cmpStart = comparePoints(pos, range.start);\n if (cmpEnd === 0)\n return excludeEdges && cmpStart !== 0 ? -i-2 : i;\n if (cmpStart > 0 || (cmpStart === 0 && !excludeEdges))\n return i;\n\n return -i-1;\n }\n return -i - 1;\n };\n\n this.add = function(range) {\n var excludeEdges = !range.isEmpty();\n var startIndex = this.pointIndex(range.start, excludeEdges);\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n\n var endIndex = this.pointIndex(range.end, excludeEdges, startIndex);\n\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n else\n endIndex++;\n return this.ranges.splice(startIndex, endIndex - startIndex, range);\n };\n\n this.addList = function(list) {\n var removed = [];\n for (var i = list.length; i--; ) {\n removed.push.apply(removed, this.add(list[i]));\n }\n return removed;\n };\n\n this.substractPoint = function(pos) {\n var i = this.pointIndex(pos);\n\n if (i >= 0)\n return this.ranges.splice(i, 1);\n };\n this.merge = function() {\n var removed = [];\n var list = this.ranges;\n \n list = list.sort(function(a, b) {\n return comparePoints(a.start, b.start);\n });\n \n var next = list[0], range;\n for (var i = 1; i < list.length; i++) {\n range = next;\n next = list[i];\n var cmp = comparePoints(range.end, next.start);\n if (cmp < 0)\n continue;\n\n if (cmp == 0 && !range.isEmpty() && !next.isEmpty())\n continue;\n\n if (comparePoints(range.end, next.end) < 0) {\n range.end.row = next.end.row;\n range.end.column = next.end.column;\n }\n\n list.splice(i, 1);\n removed.push(next);\n next = range;\n i--;\n }\n \n this.ranges = list;\n\n return removed;\n };\n\n this.contains = function(row, column) {\n return this.pointIndex({row: row, column: column}) >= 0;\n };\n\n this.containsPoint = function(pos) {\n return this.pointIndex(pos) >= 0;\n };\n\n this.rangeAtPoint = function(pos) {\n var i = this.pointIndex(pos);\n if (i >= 0)\n return this.ranges[i];\n };\n\n\n this.clipRows = function(startRow, endRow) {\n var list = this.ranges;\n if (list[0].start.row > endRow || list[list.length - 1].start.row < startRow)\n return [];\n\n var startIndex = this.pointIndex({row: startRow, column: 0});\n if (startIndex < 0)\n startIndex = -startIndex - 1;\n var endIndex = this.pointIndex({row: endRow, column: 0}, startIndex);\n if (endIndex < 0)\n endIndex = -endIndex - 1;\n\n var clipped = [];\n for (var i = startIndex; i < endIndex; i++) {\n clipped.push(list[i]);\n }\n return clipped;\n };\n\n this.removeAll = function() {\n return this.ranges.splice(0, this.ranges.length);\n };\n\n this.attach = function(session) {\n if (this.session)\n this.detach();\n\n this.session = session;\n this.onChange = this.$onChange.bind(this);\n\n this.session.on('change', this.onChange);\n };\n\n this.detach = function() {\n if (!this.session)\n return;\n this.session.removeListener('change', this.onChange);\n this.session = null;\n };\n\n this.$onChange = function(delta) {\n var start = delta.start;\n var end = delta.end;\n var startRow = start.row;\n var endRow = end.row;\n var ranges = this.ranges;\n for (var i = 0, n = ranges.length; i < n; i++) {\n var r = ranges[i];\n if (r.end.row >= startRow)\n break;\n }\n \n if (delta.action == \"insert\") {\n var lineDif = endRow - startRow;\n var colDiff = -start.column + end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n if (r.start.row > startRow)\n break;\n \n if (r.start.row == startRow && r.start.column >= start.column) {\n if (r.start.column == start.column && this.$bias <= 0) {\n } else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n if (r.end.row == startRow && r.end.column >= start.column) {\n if (r.end.column == start.column && this.$bias < 0) {\n continue;\n }\n if (r.end.column == start.column && colDiff > 0 && i < n - 1) {\n if (r.end.column > r.start.column && r.end.column == ranges[i+1].start.column)\n r.end.column -= colDiff;\n }\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n } else {\n var lineDif = startRow - endRow;\n var colDiff = start.column - end.column;\n for (; i < n; i++) {\n var r = ranges[i];\n \n if (r.start.row > endRow)\n break;\n \n if (r.end.row < endRow\n && (\n startRow < r.end.row \n || startRow == r.end.row && start.column < r.end.column\n )\n ) {\n r.end.row = startRow;\n r.end.column = start.column;\n }\n else if (r.end.row == endRow) {\n if (r.end.column <= end.column) {\n if (lineDif || r.end.column > start.column) {\n r.end.column = start.column;\n r.end.row = start.row;\n }\n }\n else {\n r.end.column += colDiff;\n r.end.row += lineDif;\n }\n }\n else if (r.end.row > endRow) {\n r.end.row += lineDif;\n }\n \n if (r.start.row < endRow\n && (\n startRow < r.start.row \n || startRow == r.start.row && start.column < r.start.column\n )\n ) {\n r.start.row = startRow;\n r.start.column = start.column;\n }\n else if (r.start.row == endRow) {\n if (r.start.column <= end.column) {\n if (lineDif || r.start.column > start.column) {\n r.start.column = start.column;\n r.start.row = start.row;\n }\n }\n else {\n r.start.column += colDiff;\n r.start.row += lineDif;\n }\n }\n else if (r.start.row > endRow) {\n r.start.row += lineDif;\n }\n }\n }\n\n if (lineDif != 0 && i < n) {\n for (; i < n; i++) {\n var r = ranges[i];\n r.start.row += lineDif;\n r.end.row += lineDif;\n }\n }\n };\n\n}).call(RangeList.prototype);\n\nexports.RangeList = RangeList;\n});\n\nace.define(\"ace/edit_session/fold\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/lib/oop\"], function(require, exports, module) {\n\"use strict\";\n\nvar RangeList = require(\"../range_list\").RangeList;\nvar oop = require(\"../lib/oop\");\nvar Fold = exports.Fold = function(range, placeholder) {\n this.foldLine = null;\n this.placeholder = placeholder;\n this.range = range;\n this.start = range.start;\n this.end = range.end;\n\n this.sameRow = range.start.row == range.end.row;\n this.subFolds = this.ranges = [];\n};\n\noop.inherits(Fold, RangeList);\n\n(function() {\n\n this.toString = function() {\n return '\"' + this.placeholder + '\" ' + this.range.toString();\n };\n\n this.setFoldLine = function(foldLine) {\n this.foldLine = foldLine;\n this.subFolds.forEach(function(fold) {\n fold.setFoldLine(foldLine);\n });\n };\n\n this.clone = function() {\n var range = this.range.clone();\n var fold = new Fold(range, this.placeholder);\n this.subFolds.forEach(function(subFold) {\n fold.subFolds.push(subFold.clone());\n });\n fold.collapseChildren = this.collapseChildren;\n return fold;\n };\n\n this.addSubFold = function(fold) {\n if (this.range.isEqual(fold))\n return;\n consumeRange(fold, this.start);\n\n var row = fold.start.row, column = fold.start.column;\n for (var i = 0, cmp = -1; i < this.subFolds.length; i++) {\n cmp = this.subFolds[i].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n var afterStart = this.subFolds[i];\n var firstConsumed = 0;\n\n if (cmp == 0) {\n if (afterStart.range.containsRange(fold))\n return afterStart.addSubFold(fold);\n else\n firstConsumed = 1;\n }\n var row = fold.range.end.row, column = fold.range.end.column;\n for (var j = i, cmp = -1; j < this.subFolds.length; j++) {\n cmp = this.subFolds[j].range.compare(row, column);\n if (cmp != 1)\n break;\n }\n if (cmp == 0) j++;\n var consumedFolds = this.subFolds.splice(i, j - i, fold);\n var last = cmp == 0 ? consumedFolds.length - 1 : consumedFolds.length;\n for (var k = firstConsumed; k < last; k++) {\n fold.addSubFold(consumedFolds[k]);\n }\n fold.setFoldLine(this.foldLine);\n\n return fold;\n };\n \n this.restoreRange = function(range) {\n return restoreRange(range, this.start);\n };\n\n}).call(Fold.prototype);\n\nfunction consumePoint(point, anchor) {\n point.row -= anchor.row;\n if (point.row == 0)\n point.column -= anchor.column;\n}\nfunction consumeRange(range, anchor) {\n consumePoint(range.start, anchor);\n consumePoint(range.end, anchor);\n}\nfunction restorePoint(point, anchor) {\n if (point.row == 0)\n point.column += anchor.column;\n point.row += anchor.row;\n}\nfunction restoreRange(range, anchor) {\n restorePoint(range.start, anchor);\n restorePoint(range.end, anchor);\n}\n\n});\n\nace.define(\"ace/edit_session/folding\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/edit_session/fold_line\",\"ace/edit_session/fold\",\"ace/token_iterator\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../range\").Range;\nvar FoldLine = require(\"./fold_line\").FoldLine;\nvar Fold = require(\"./fold\").Fold;\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\n\nfunction Folding() {\n this.getFoldAt = function(row, column, side) {\n var foldLine = this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var folds = foldLine.folds;\n for (var i = 0; i < folds.length; i++) {\n var range = folds[i].range;\n if (range.contains(row, column)) {\n if (side == 1 && range.isEnd(row, column) && !range.isEmpty()) {\n continue;\n } else if (side == -1 && range.isStart(row, column) && !range.isEmpty()) {\n continue;\n }\n return folds[i];\n }\n }\n };\n this.getFoldsInRange = function(range) {\n var start = range.start;\n var end = range.end;\n var foldLines = this.$foldData;\n var foundFolds = [];\n\n start.column += 1;\n end.column -= 1;\n\n for (var i = 0; i < foldLines.length; i++) {\n var cmp = foldLines[i].range.compareRange(range);\n if (cmp == 2) {\n continue;\n }\n else if (cmp == -2) {\n break;\n }\n\n var folds = foldLines[i].folds;\n for (var j = 0; j < folds.length; j++) {\n var fold = folds[j];\n cmp = fold.range.compareRange(range);\n if (cmp == -2) {\n break;\n } else if (cmp == 2) {\n continue;\n } else\n if (cmp == 42) {\n break;\n }\n foundFolds.push(fold);\n }\n }\n start.column -= 1;\n end.column += 1;\n\n return foundFolds;\n };\n\n this.getFoldsInRangeList = function(ranges) {\n if (Array.isArray(ranges)) {\n var folds = [];\n ranges.forEach(function(range) {\n folds = folds.concat(this.getFoldsInRange(range));\n }, this);\n } else {\n var folds = this.getFoldsInRange(ranges);\n }\n return folds;\n };\n this.getAllFolds = function() {\n var folds = [];\n var foldLines = this.$foldData;\n \n for (var i = 0; i < foldLines.length; i++)\n for (var j = 0; j < foldLines[i].folds.length; j++)\n folds.push(foldLines[i].folds[j]);\n\n return folds;\n };\n this.getFoldStringAt = function(row, column, trim, foldLine) {\n foldLine = foldLine || this.getFoldLine(row);\n if (!foldLine)\n return null;\n\n var lastFold = {\n end: { column: 0 }\n };\n var str, fold;\n for (var i = 0; i < foldLine.folds.length; i++) {\n fold = foldLine.folds[i];\n var cmp = fold.range.compareEnd(row, column);\n if (cmp == -1) {\n str = this\n .getLine(fold.start.row)\n .substring(lastFold.end.column, fold.start.column);\n break;\n }\n else if (cmp === 0) {\n return null;\n }\n lastFold = fold;\n }\n if (!str)\n str = this.getLine(fold.start.row).substring(lastFold.end.column);\n\n if (trim == -1)\n return str.substring(0, column - lastFold.end.column);\n else if (trim == 1)\n return str.substring(column - lastFold.end.column);\n else\n return str;\n };\n\n this.getFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.start.row <= docRow && foldLine.end.row >= docRow) {\n return foldLine;\n } else if (foldLine.end.row > docRow) {\n return null;\n }\n }\n return null;\n };\n this.getNextFoldLine = function(docRow, startFoldLine) {\n var foldData = this.$foldData;\n var i = 0;\n if (startFoldLine)\n i = foldData.indexOf(startFoldLine);\n if (i == -1)\n i = 0;\n for (i; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (foldLine.end.row >= docRow) {\n return foldLine;\n }\n }\n return null;\n };\n\n this.getFoldedRowCount = function(first, last) {\n var foldData = this.$foldData, rowCount = last-first+1;\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i],\n end = foldLine.end.row,\n start = foldLine.start.row;\n if (end >= last) {\n if (start < last) {\n if (start >= first)\n rowCount -= last-start;\n else\n rowCount = 0; // in one fold\n }\n break;\n } else if (end >= first){\n if (start >= first) // fold inside range\n rowCount -= end-start;\n else\n rowCount -= end-first+1;\n }\n }\n return rowCount;\n };\n\n this.$addFoldLine = function(foldLine) {\n this.$foldData.push(foldLine);\n this.$foldData.sort(function(a, b) {\n return a.start.row - b.start.row;\n });\n return foldLine;\n };\n this.addFold = function(placeholder, range) {\n var foldData = this.$foldData;\n var added = false;\n var fold;\n \n if (placeholder instanceof Fold)\n fold = placeholder;\n else {\n fold = new Fold(range, placeholder);\n fold.collapseChildren = range.collapseChildren;\n }\n this.$clipRangeToDocument(fold.range);\n\n var startRow = fold.start.row;\n var startColumn = fold.start.column;\n var endRow = fold.end.row;\n var endColumn = fold.end.column;\n\n var startFold = this.getFoldAt(startRow, startColumn, 1);\n var endFold = this.getFoldAt(endRow, endColumn, -1);\n if (startFold && endFold == startFold)\n return startFold.addSubFold(fold);\n\n if (startFold && !startFold.range.isStart(startRow, startColumn))\n this.removeFold(startFold);\n \n if (endFold && !endFold.range.isEnd(endRow, endColumn))\n this.removeFold(endFold);\n var folds = this.getFoldsInRange(fold.range);\n if (folds.length > 0) {\n this.removeFolds(folds);\n if (!fold.collapseChildren) {\n folds.forEach(function(subFold) {\n fold.addSubFold(subFold);\n });\n }\n }\n\n for (var i = 0; i < foldData.length; i++) {\n var foldLine = foldData[i];\n if (endRow == foldLine.start.row) {\n foldLine.addFold(fold);\n added = true;\n break;\n } else if (startRow == foldLine.end.row) {\n foldLine.addFold(fold);\n added = true;\n if (!fold.sameRow) {\n var foldLineNext = foldData[i + 1];\n if (foldLineNext && foldLineNext.start.row == endRow) {\n foldLine.merge(foldLineNext);\n break;\n }\n }\n break;\n } else if (endRow <= foldLine.start.row) {\n break;\n }\n }\n\n if (!added)\n foldLine = this.$addFoldLine(new FoldLine(this.$foldData, fold));\n\n if (this.$useWrapMode)\n this.$updateWrapData(foldLine.start.row, foldLine.start.row);\n else\n this.$updateRowLengthCache(foldLine.start.row, foldLine.start.row);\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"add\" });\n\n return fold;\n };\n\n this.addFolds = function(folds) {\n folds.forEach(function(fold) {\n this.addFold(fold);\n }, this);\n };\n\n this.removeFold = function(fold) {\n var foldLine = fold.foldLine;\n var startRow = foldLine.start.row;\n var endRow = foldLine.end.row;\n\n var foldLines = this.$foldData;\n var folds = foldLine.folds;\n if (folds.length == 1) {\n foldLines.splice(foldLines.indexOf(foldLine), 1);\n } else\n if (foldLine.range.isEnd(fold.end.row, fold.end.column)) {\n folds.pop();\n foldLine.end.row = folds[folds.length - 1].end.row;\n foldLine.end.column = folds[folds.length - 1].end.column;\n } else\n if (foldLine.range.isStart(fold.start.row, fold.start.column)) {\n folds.shift();\n foldLine.start.row = folds[0].start.row;\n foldLine.start.column = folds[0].start.column;\n } else\n if (fold.sameRow) {\n folds.splice(folds.indexOf(fold), 1);\n } else\n {\n var newFoldLine = foldLine.split(fold.start.row, fold.start.column);\n folds = newFoldLine.folds;\n folds.shift();\n newFoldLine.start.row = folds[0].start.row;\n newFoldLine.start.column = folds[0].start.column;\n }\n\n if (!this.$updating) {\n if (this.$useWrapMode)\n this.$updateWrapData(startRow, endRow);\n else\n this.$updateRowLengthCache(startRow, endRow);\n }\n this.$modified = true;\n this._signal(\"changeFold\", { data: fold, action: \"remove\" });\n };\n\n this.removeFolds = function(folds) {\n var cloneFolds = [];\n for (var i = 0; i < folds.length; i++) {\n cloneFolds.push(folds[i]);\n }\n\n cloneFolds.forEach(function(fold) {\n this.removeFold(fold);\n }, this);\n this.$modified = true;\n };\n\n this.expandFold = function(fold) {\n this.removeFold(fold);\n fold.subFolds.forEach(function(subFold) {\n fold.restoreRange(subFold);\n this.addFold(subFold);\n }, this);\n if (fold.collapseChildren > 0) {\n this.foldAll(fold.start.row+1, fold.end.row, fold.collapseChildren-1);\n }\n fold.subFolds = [];\n };\n\n this.expandFolds = function(folds) {\n folds.forEach(function(fold) {\n this.expandFold(fold);\n }, this);\n };\n\n this.unfold = function(location, expandInner) {\n var range, folds;\n if (location == null) {\n range = new Range(0, 0, this.getLength(), 0);\n if (expandInner == null) expandInner = true;\n } else if (typeof location == \"number\") {\n range = new Range(location, 0, location, this.getLine(location).length);\n } else if (\"row\" in location) {\n range = Range.fromPoints(location, location);\n } else if (Array.isArray(location)) {\n folds = [];\n location.forEach(function(range) {\n folds = folds.concat(this.unfold(range));\n }, this);\n return folds;\n } else {\n range = location;\n }\n \n folds = this.getFoldsInRangeList(range);\n var outermostFolds = folds;\n while (\n folds.length == 1\n && Range.comparePoints(folds[0].start, range.start) < 0 \n && Range.comparePoints(folds[0].end, range.end) > 0\n ) {\n this.expandFolds(folds);\n folds = this.getFoldsInRangeList(range);\n }\n \n if (expandInner != false) {\n this.removeFolds(folds);\n } else {\n this.expandFolds(folds);\n }\n if (outermostFolds.length)\n return outermostFolds;\n };\n this.isRowFolded = function(docRow, startFoldRow) {\n return !!this.getFoldLine(docRow, startFoldRow);\n };\n\n this.getRowFoldEnd = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.end.row : docRow;\n };\n\n this.getRowFoldStart = function(docRow, startFoldRow) {\n var foldLine = this.getFoldLine(docRow, startFoldRow);\n return foldLine ? foldLine.start.row : docRow;\n };\n\n this.getFoldDisplayLine = function(foldLine, endRow, endColumn, startRow, startColumn) {\n if (startRow == null)\n startRow = foldLine.start.row;\n if (startColumn == null)\n startColumn = 0;\n if (endRow == null)\n endRow = foldLine.end.row;\n if (endColumn == null)\n endColumn = this.getLine(endRow).length;\n var doc = this.doc;\n var textLine = \"\";\n\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n if (row < startRow)\n return;\n if (row == startRow) {\n if (column < startColumn)\n return;\n lastColumn = Math.max(startColumn, lastColumn);\n }\n\n if (placeholder != null) {\n textLine += placeholder;\n } else {\n textLine += doc.getLine(row).substring(lastColumn, column);\n }\n }, endRow, endColumn);\n return textLine;\n };\n\n this.getDisplayLine = function(row, endColumn, startRow, startColumn) {\n var foldLine = this.getFoldLine(row);\n\n if (!foldLine) {\n var line;\n line = this.doc.getLine(row);\n return line.substring(startColumn || 0, endColumn || line.length);\n } else {\n return this.getFoldDisplayLine(\n foldLine, row, endColumn, startRow, startColumn);\n }\n };\n\n this.$cloneFoldData = function() {\n var fd = [];\n fd = this.$foldData.map(function(foldLine) {\n var folds = foldLine.folds.map(function(fold) {\n return fold.clone();\n });\n return new FoldLine(fd, folds);\n });\n\n return fd;\n };\n\n this.toggleFold = function(tryToUnfold) {\n var selection = this.selection;\n var range = selection.getRange();\n var fold;\n var bracketPos;\n\n if (range.isEmpty()) {\n var cursor = range.start;\n fold = this.getFoldAt(cursor.row, cursor.column);\n\n if (fold) {\n this.expandFold(fold);\n return;\n } else if (bracketPos = this.findMatchingBracket(cursor)) {\n if (range.comparePoint(bracketPos) == 1) {\n range.end = bracketPos;\n } else {\n range.start = bracketPos;\n range.start.column++;\n range.end.column--;\n }\n } else if (bracketPos = this.findMatchingBracket({row: cursor.row, column: cursor.column + 1})) {\n if (range.comparePoint(bracketPos) == 1)\n range.end = bracketPos;\n else\n range.start = bracketPos;\n\n range.start.column++;\n } else {\n range = this.getCommentFoldRange(cursor.row, cursor.column) || range;\n }\n } else {\n var folds = this.getFoldsInRange(range);\n if (tryToUnfold && folds.length) {\n this.expandFolds(folds);\n return;\n } else if (folds.length == 1 ) {\n fold = folds[0];\n }\n }\n\n if (!fold)\n fold = this.getFoldAt(range.start.row, range.start.column);\n\n if (fold && fold.range.toString() == range.toString()) {\n this.expandFold(fold);\n return;\n }\n\n var placeholder = \"...\";\n if (!range.isMultiLine()) {\n placeholder = this.getTextRange(range);\n if (placeholder.length < 4)\n return;\n placeholder = placeholder.trim().substring(0, 2) + \"..\";\n }\n\n this.addFold(placeholder, range);\n };\n\n this.getCommentFoldRange = function(row, column, dir) {\n var iterator = new TokenIterator(this, row, column);\n var token = iterator.getCurrentToken();\n var type = token && token.type;\n if (token && /^comment|string/.test(type)) {\n type = type.match(/comment|string/)[0];\n if (type == \"comment\")\n type += \"|doc-start\";\n var re = new RegExp(type);\n var range = new Range();\n if (dir != 1) {\n do {\n token = iterator.stepBackward();\n } while (token && re.test(token.type));\n iterator.stepForward();\n }\n \n range.start.row = iterator.getCurrentTokenRow();\n range.start.column = iterator.getCurrentTokenColumn() + 2;\n\n iterator = new TokenIterator(this, row, column);\n \n if (dir != -1) {\n var lastRow = -1;\n do {\n token = iterator.stepForward();\n if (lastRow == -1) {\n var state = this.getState(iterator.$row);\n if (!re.test(state))\n lastRow = iterator.$row;\n } else if (iterator.$row > lastRow) {\n break;\n }\n } while (token && re.test(token.type));\n token = iterator.stepBackward();\n } else\n token = iterator.getCurrentToken();\n\n range.end.row = iterator.getCurrentTokenRow();\n range.end.column = iterator.getCurrentTokenColumn() + token.value.length - 2;\n return range;\n }\n };\n\n this.foldAll = function(startRow, endRow, depth, test) {\n if (depth == undefined)\n depth = 100000; // JSON.stringify doesn't hanle Infinity\n var foldWidgets = this.foldWidgets;\n if (!foldWidgets)\n return; // mode doesn't support folding\n endRow = endRow || this.getLength();\n startRow = startRow || 0;\n for (var row = startRow; row < endRow; row++) {\n if (foldWidgets[row] == null)\n foldWidgets[row] = this.getFoldWidget(row);\n if (foldWidgets[row] != \"start\")\n continue;\n \n if (test && !test(row)) continue;\n\n var range = this.getFoldWidgetRange(row);\n if (range && range.isMultiLine()\n && range.end.row <= endRow\n && range.start.row >= startRow\n ) {\n row = range.end.row;\n range.collapseChildren = depth;\n this.addFold(\"...\", range);\n }\n }\n };\n \n this.foldToLevel = function(level) {\n this.foldAll();\n while (level-- > 0)\n this.unfold(null, false);\n };\n \n this.foldAllComments = function() {\n var session = this;\n this.foldAll(null, null, null, function(row) {\n var tokens = session.getTokens(row);\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token.type == \"text\" && /^\\s+$/.test(token.value))\n continue;\n if (/comment/.test(token.type))\n return true;\n return false;\n }\n });\n };\n this.$foldStyles = {\n \"manual\": 1,\n \"markbegin\": 1,\n \"markbeginend\": 1\n };\n this.$foldStyle = \"markbegin\";\n this.setFoldStyle = function(style) {\n if (!this.$foldStyles[style])\n throw new Error(\"invalid fold style: \" + style + \"[\" + Object.keys(this.$foldStyles).join(\", \") + \"]\");\n \n if (this.$foldStyle == style)\n return;\n\n this.$foldStyle = style;\n \n if (style == \"manual\")\n this.unfold();\n var mode = this.$foldMode;\n this.$setFolding(null);\n this.$setFolding(mode);\n };\n\n this.$setFolding = function(foldMode) {\n if (this.$foldMode == foldMode)\n return;\n \n this.$foldMode = foldMode;\n \n this.off('change', this.$updateFoldWidgets);\n this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n this._signal(\"changeAnnotation\");\n \n if (!foldMode || this.$foldStyle == \"manual\") {\n this.foldWidgets = null;\n return;\n }\n \n this.foldWidgets = [];\n this.getFoldWidget = foldMode.getFoldWidget.bind(foldMode, this, this.$foldStyle);\n this.getFoldWidgetRange = foldMode.getFoldWidgetRange.bind(foldMode, this, this.$foldStyle);\n \n this.$updateFoldWidgets = this.updateFoldWidgets.bind(this);\n this.$tokenizerUpdateFoldWidgets = this.tokenizerUpdateFoldWidgets.bind(this);\n this.on('change', this.$updateFoldWidgets);\n this.on('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);\n };\n\n this.getParentFoldRangeData = function (row, ignoreCurrent) {\n var fw = this.foldWidgets;\n if (!fw || (ignoreCurrent && fw[row]))\n return {};\n\n var i = row - 1, firstRange;\n while (i >= 0) {\n var c = fw[i];\n if (c == null)\n c = fw[i] = this.getFoldWidget(i);\n\n if (c == \"start\") {\n var range = this.getFoldWidgetRange(i);\n if (!firstRange)\n firstRange = range;\n if (range && range.end.row >= row)\n break;\n }\n i--;\n }\n\n return {\n range: i !== -1 && range,\n firstRange: firstRange\n };\n };\n\n this.onFoldWidgetClick = function(row, e) {\n e = e.domEvent;\n var options = {\n children: e.shiftKey,\n all: e.ctrlKey || e.metaKey,\n siblings: e.altKey\n };\n \n var range = this.$toggleFoldWidget(row, options);\n if (!range) {\n var el = (e.target || e.srcElement);\n if (el && /ace_fold-widget/.test(el.className))\n el.className += \" ace_invalid\";\n }\n };\n \n this.$toggleFoldWidget = function(row, options) {\n if (!this.getFoldWidget)\n return;\n var type = this.getFoldWidget(row);\n var line = this.getLine(row);\n\n var dir = type === \"end\" ? -1 : 1;\n var fold = this.getFoldAt(row, dir === -1 ? 0 : line.length, dir);\n\n if (fold) {\n if (options.children || options.all)\n this.removeFold(fold);\n else\n this.expandFold(fold);\n return fold;\n }\n\n var range = this.getFoldWidgetRange(row, true);\n if (range && !range.isMultiLine()) {\n fold = this.getFoldAt(range.start.row, range.start.column, 1);\n if (fold && range.isEqual(fold.range)) {\n this.removeFold(fold);\n return fold;\n }\n }\n \n if (options.siblings) {\n var data = this.getParentFoldRangeData(row);\n if (data.range) {\n var startRow = data.range.start.row + 1;\n var endRow = data.range.end.row;\n }\n this.foldAll(startRow, endRow, options.all ? 10000 : 0);\n } else if (options.children) {\n endRow = range ? range.end.row : this.getLength();\n this.foldAll(row + 1, endRow, options.all ? 10000 : 0);\n } else if (range) {\n if (options.all) \n range.collapseChildren = 10000;\n this.addFold(\"...\", range);\n }\n \n return range;\n };\n \n \n \n this.toggleFoldWidget = function(toggleParent) {\n var row = this.selection.getCursor().row;\n row = this.getRowFoldStart(row);\n var range = this.$toggleFoldWidget(row, {});\n \n if (range)\n return;\n var data = this.getParentFoldRangeData(row, true);\n range = data.range || data.firstRange;\n \n if (range) {\n row = range.start.row;\n var fold = this.getFoldAt(row, this.getLine(row).length, 1);\n\n if (fold) {\n this.removeFold(fold);\n } else {\n this.addFold(\"...\", range);\n }\n }\n };\n\n this.updateFoldWidgets = function(delta) {\n var firstRow = delta.start.row;\n var len = delta.end.row - firstRow;\n\n if (len === 0) {\n this.foldWidgets[firstRow] = null;\n } else if (delta.action == 'remove') {\n this.foldWidgets.splice(firstRow, len + 1, null);\n } else {\n var args = Array(len + 1);\n args.unshift(firstRow, 1);\n this.foldWidgets.splice.apply(this.foldWidgets, args);\n }\n };\n this.tokenizerUpdateFoldWidgets = function(e) {\n var rows = e.data;\n if (rows.first != rows.last) {\n if (this.foldWidgets.length > rows.first)\n this.foldWidgets.splice(rows.first, this.foldWidgets.length);\n }\n };\n}\n\nexports.Folding = Folding;\n\n});\n\nace.define(\"ace/edit_session/bracket_match\",[\"require\",\"exports\",\"module\",\"ace/token_iterator\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar TokenIterator = require(\"../token_iterator\").TokenIterator;\nvar Range = require(\"../range\").Range;\n\n\nfunction BracketMatch() {\n\n this.findMatchingBracket = function(position, chr) {\n if (position.column == 0) return null;\n\n var charBeforeCursor = chr || this.getLine(position.row).charAt(position.column-1);\n if (charBeforeCursor == \"\") return null;\n\n var match = charBeforeCursor.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match)\n return null;\n\n if (match[1])\n return this.$findClosingBracket(match[1], position);\n else\n return this.$findOpeningBracket(match[2], position);\n };\n \n this.getBracketRange = function(pos) {\n var line = this.getLine(pos.row);\n var before = true, range;\n\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = {row: pos.row, column: pos.column + 1};\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n before = false;\n }\n if (!match)\n return null;\n\n if (match[1]) {\n var bracketPos = this.$findClosingBracket(match[1], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(pos, bracketPos);\n if (!before) {\n range.end.column++;\n range.start.column--;\n }\n range.cursor = range.end;\n } else {\n var bracketPos = this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return null;\n range = Range.fromPoints(bracketPos, pos);\n if (!before) {\n range.start.column++;\n range.end.column--;\n }\n range.cursor = range.start;\n }\n \n return range;\n };\n this.getMatchingBracketRanges = function(pos) {\n var line = this.getLine(pos.row);\n\n var chr = line.charAt(pos.column - 1);\n var match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n if (!match) {\n chr = line.charAt(pos.column);\n pos = {row: pos.row, column: pos.column + 1};\n match = chr && chr.match(/([\\(\\[\\{])|([\\)\\]\\}])/);\n }\n\n if (!match)\n return null;\n\n var startRange = new Range(pos.row, pos.column - 1, pos.row, pos.column);\n var bracketPos = match[1] ? this.$findClosingBracket(match[1], pos)\n : this.$findOpeningBracket(match[2], pos);\n if (!bracketPos)\n return [startRange];\n var endRange = new Range(bracketPos.row, bracketPos.column, bracketPos.row, bracketPos.column + 1);\n\n return [startRange, endRange];\n };\n\n this.$brackets = {\n \")\": \"(\",\n \"(\": \")\",\n \"]\": \"[\",\n \"[\": \"]\",\n \"{\": \"}\",\n \"}\": \"{\",\n \"<\": \">\",\n \">\": \"<\"\n };\n\n this.$findOpeningBracket = function(bracket, position, typeRe) {\n var openBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n \n if (!typeRe){\n typeRe = new RegExp(\n \"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"rparen\", \".paren\")\n .replace(/\\b(?:end)\\b/, \"(?:start|begin|end)\")\n + \")+\"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn() - 2;\n var value = token.value;\n \n while (true) {\n \n while (valueIndex >= 0) {\n var chr = value.charAt(valueIndex);\n if (chr == openBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex -= 1;\n }\n do {\n token = iterator.stepBackward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n \n value = token.value;\n valueIndex = value.length - 1;\n }\n \n return null;\n };\n\n this.$findClosingBracket = function(bracket, position, typeRe) {\n var closingBracket = this.$brackets[bracket];\n var depth = 1;\n\n var iterator = new TokenIterator(this, position.row, position.column);\n var token = iterator.getCurrentToken();\n if (!token)\n token = iterator.stepForward();\n if (!token)\n return;\n\n if (!typeRe){\n typeRe = new RegExp(\n \"(\\\\.?\" +\n token.type.replace(\".\", \"\\\\.\").replace(\"lparen\", \".paren\")\n .replace(/\\b(?:start|begin)\\b/, \"(?:start|begin|end)\")\n + \")+\"\n );\n }\n var valueIndex = position.column - iterator.getCurrentTokenColumn();\n\n while (true) {\n\n var value = token.value;\n var valueLength = value.length;\n while (valueIndex < valueLength) {\n var chr = value.charAt(valueIndex);\n if (chr == closingBracket) {\n depth -= 1;\n if (depth == 0) {\n return {row: iterator.getCurrentTokenRow(),\n column: valueIndex + iterator.getCurrentTokenColumn()};\n }\n }\n else if (chr == bracket) {\n depth += 1;\n }\n valueIndex += 1;\n }\n do {\n token = iterator.stepForward();\n } while (token && !typeRe.test(token.type));\n\n if (token == null)\n break;\n\n valueIndex = 0;\n }\n \n return null;\n };\n}\nexports.BracketMatch = BracketMatch;\n\n});\n\nace.define(\"ace/edit_session\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/bidihandler\",\"ace/config\",\"ace/lib/event_emitter\",\"ace/selection\",\"ace/mode/text\",\"ace/range\",\"ace/document\",\"ace/background_tokenizer\",\"ace/search_highlight\",\"ace/edit_session/folding\",\"ace/edit_session/bracket_match\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar BidiHandler = require(\"./bidihandler\").BidiHandler;\nvar config = require(\"./config\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar Selection = require(\"./selection\").Selection;\nvar TextMode = require(\"./mode/text\").Mode;\nvar Range = require(\"./range\").Range;\nvar Document = require(\"./document\").Document;\nvar BackgroundTokenizer = require(\"./background_tokenizer\").BackgroundTokenizer;\nvar SearchHighlight = require(\"./search_highlight\").SearchHighlight;\n\nvar EditSession = function(text, mode) {\n this.$breakpoints = [];\n this.$decorations = [];\n this.$frontMarkers = {};\n this.$backMarkers = {};\n this.$markerId = 1;\n this.$undoSelect = true;\n\n this.$foldData = [];\n this.id = \"session\" + (++EditSession.$uid);\n this.$foldData.toString = function() {\n return this.join(\"\\n\");\n };\n this.on(\"changeFold\", this.onChangeFold.bind(this));\n this.$onChange = this.onChange.bind(this);\n\n if (typeof text != \"object\" || !text.getLine)\n text = new Document(text);\n\n this.setDocument(text);\n this.selection = new Selection(this);\n this.$bidiHandler = new BidiHandler(this);\n\n config.resetOptions(this);\n this.setMode(mode);\n config._signal(\"session\", this);\n};\n\n\nEditSession.$uid = 0;\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setDocument = function(doc) {\n if (this.doc)\n this.doc.off(\"change\", this.$onChange);\n\n this.doc = doc;\n doc.on(\"change\", this.$onChange);\n\n if (this.bgTokenizer)\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.resetCaches();\n };\n this.getDocument = function() {\n return this.doc;\n };\n this.$resetRowCache = function(docRow) {\n if (!docRow) {\n this.$docRowCache = [];\n this.$screenRowCache = [];\n return;\n }\n var l = this.$docRowCache.length;\n var i = this.$getRowCacheIndex(this.$docRowCache, docRow) + 1;\n if (l > i) {\n this.$docRowCache.splice(i, l);\n this.$screenRowCache.splice(i, l);\n }\n };\n\n this.$getRowCacheIndex = function(cacheArray, val) {\n var low = 0;\n var hi = cacheArray.length - 1;\n\n while (low <= hi) {\n var mid = (low + hi) >> 1;\n var c = cacheArray[mid];\n\n if (val > c)\n low = mid + 1;\n else if (val < c)\n hi = mid - 1;\n else\n return mid;\n }\n\n return low -1;\n };\n\n this.resetCaches = function() {\n this.$modified = true;\n this.$wrapData = [];\n this.$rowLengthCache = [];\n this.$resetRowCache(0);\n if (this.bgTokenizer)\n this.bgTokenizer.start(0);\n };\n\n this.onChangeFold = function(e) {\n var fold = e.data;\n this.$resetRowCache(fold.start.row);\n };\n\n this.onChange = function(delta) {\n this.$modified = true;\n this.$bidiHandler.onChange(delta);\n this.$resetRowCache(delta.start.row);\n\n var removedFolds = this.$updateInternalDataOnChange(delta);\n if (!this.$fromUndo && this.$undoManager) {\n if (removedFolds && removedFolds.length) {\n this.$undoManager.add({\n action: \"removeFolds\",\n folds: removedFolds\n }, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n }\n this.$undoManager.add(delta, this.mergeUndoDeltas);\n this.mergeUndoDeltas = true;\n \n this.$informUndoManager.schedule();\n }\n\n this.bgTokenizer && this.bgTokenizer.$updateOnChange(delta);\n this._signal(\"change\", delta);\n };\n this.setValue = function(text) {\n this.doc.setValue(text);\n this.selection.moveTo(0, 0);\n\n this.$resetRowCache(0);\n this.setUndoManager(this.$undoManager);\n this.getUndoManager().reset();\n };\n this.getValue =\n this.toString = function() {\n return this.doc.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.getState = function(row) {\n return this.bgTokenizer.getState(row);\n };\n this.getTokens = function(row) {\n return this.bgTokenizer.getTokens(row);\n };\n this.getTokenAt = function(row, column) {\n var tokens = this.bgTokenizer.getTokens(row);\n var token, c = 0;\n if (column == null) {\n var i = tokens.length - 1;\n c = this.getLine(row).length;\n } else {\n for (var i = 0; i < tokens.length; i++) {\n c += tokens[i].value.length;\n if (c >= column)\n break;\n }\n }\n token = tokens[i];\n if (!token)\n return null;\n token.index = i;\n token.start = c - token.value.length;\n return token;\n };\n this.setUndoManager = function(undoManager) {\n this.$undoManager = undoManager;\n \n if (this.$informUndoManager)\n this.$informUndoManager.cancel();\n \n if (undoManager) {\n var self = this;\n undoManager.addSession(this);\n this.$syncInformUndoManager = function() {\n self.$informUndoManager.cancel();\n self.mergeUndoDeltas = false;\n };\n this.$informUndoManager = lang.delayedCall(this.$syncInformUndoManager);\n } else {\n this.$syncInformUndoManager = function() {};\n }\n };\n this.markUndoGroup = function() {\n if (this.$syncInformUndoManager)\n this.$syncInformUndoManager();\n };\n \n this.$defaultUndoManager = {\n undo: function() {},\n redo: function() {},\n hasUndo: function() {},\n hasRedo: function() {},\n reset: function() {},\n add: function() {},\n addSelection: function() {},\n startNewGroup: function() {},\n addSession: function() {}\n };\n this.getUndoManager = function() {\n return this.$undoManager || this.$defaultUndoManager;\n };\n this.getTabString = function() {\n if (this.getUseSoftTabs()) {\n return lang.stringRepeat(\" \", this.getTabSize());\n } else {\n return \"\\t\";\n }\n };\n this.setUseSoftTabs = function(val) {\n this.setOption(\"useSoftTabs\", val);\n };\n this.getUseSoftTabs = function() {\n return this.$useSoftTabs && !this.$mode.$indentWithTabs;\n };\n this.setTabSize = function(tabSize) {\n this.setOption(\"tabSize\", tabSize);\n };\n this.getTabSize = function() {\n return this.$tabSize;\n };\n this.isTabStop = function(position) {\n return this.$useSoftTabs && (position.column % this.$tabSize === 0);\n };\n this.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) {\n this.setOption(\"navigateWithinSoftTabs\", navigateWithinSoftTabs);\n };\n this.getNavigateWithinSoftTabs = function() {\n return this.$navigateWithinSoftTabs;\n };\n\n this.$overwrite = false;\n this.setOverwrite = function(overwrite) {\n this.setOption(\"overwrite\", overwrite);\n };\n this.getOverwrite = function() {\n return this.$overwrite;\n };\n this.toggleOverwrite = function() {\n this.setOverwrite(!this.$overwrite);\n };\n this.addGutterDecoration = function(row, className) {\n if (!this.$decorations[row])\n this.$decorations[row] = \"\";\n this.$decorations[row] += \" \" + className;\n this._signal(\"changeBreakpoint\", {});\n };\n this.removeGutterDecoration = function(row, className) {\n this.$decorations[row] = (this.$decorations[row] || \"\").replace(\" \" + className, \"\");\n this._signal(\"changeBreakpoint\", {});\n };\n this.getBreakpoints = function() {\n return this.$breakpoints;\n };\n this.setBreakpoints = function(rows) {\n this.$breakpoints = [];\n for (var i=0; i 0)\n inToken = !!line.charAt(column - 1).match(this.tokenRe);\n\n if (!inToken)\n inToken = !!line.charAt(column).match(this.tokenRe);\n\n if (inToken)\n var re = this.tokenRe;\n else if (/^\\s+$/.test(line.slice(column-1, column+1)))\n var re = /\\s/;\n else\n var re = this.nonTokenRe;\n\n var start = column;\n if (start > 0) {\n do {\n start--;\n }\n while (start >= 0 && line.charAt(start).match(re));\n start++;\n }\n\n var end = column;\n while (end < line.length && line.charAt(end).match(re)) {\n end++;\n }\n\n return new Range(row, start, row, end);\n };\n this.getAWordRange = function(row, column) {\n var wordRange = this.getWordRange(row, column);\n var line = this.getLine(wordRange.end.row);\n\n while (line.charAt(wordRange.end.column).match(/[ \\t]/)) {\n wordRange.end.column += 1;\n }\n return wordRange;\n };\n this.setNewLineMode = function(newLineMode) {\n this.doc.setNewLineMode(newLineMode);\n };\n this.getNewLineMode = function() {\n return this.doc.getNewLineMode();\n };\n this.setUseWorker = function(useWorker) { this.setOption(\"useWorker\", useWorker); };\n this.getUseWorker = function() { return this.$useWorker; };\n this.onReloadTokenizer = function(e) {\n var rows = e.data;\n this.bgTokenizer.start(rows.first);\n this._signal(\"tokenizerUpdate\", e);\n };\n\n this.$modes = config.$modes;\n this.$mode = null;\n this.$modeId = null;\n this.setMode = function(mode, cb) {\n if (mode && typeof mode === \"object\") {\n if (mode.getTokenizer)\n return this.$onChangeMode(mode);\n var options = mode;\n var path = options.path;\n } else {\n path = mode || \"ace/mode/text\";\n }\n if (!this.$modes[\"ace/mode/text\"])\n this.$modes[\"ace/mode/text\"] = new TextMode();\n\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n cb && cb();\n return;\n }\n this.$modeId = path;\n config.loadModule([\"mode\", path], function(m) {\n if (this.$modeId !== path)\n return cb && cb();\n if (this.$modes[path] && !options) {\n this.$onChangeMode(this.$modes[path]);\n } else if (m && m.Mode) {\n m = new m.Mode(options);\n if (!options) {\n this.$modes[path] = m;\n m.$id = path;\n }\n this.$onChangeMode(m);\n }\n cb && cb();\n }.bind(this));\n if (!this.$mode)\n this.$onChangeMode(this.$modes[\"ace/mode/text\"], true);\n };\n\n this.$onChangeMode = function(mode, $isPlaceholder) {\n if (!$isPlaceholder)\n this.$modeId = mode.$id;\n if (this.$mode === mode) \n return;\n \n var oldMode = this.$mode;\n this.$mode = mode;\n\n this.$stopWorker();\n\n if (this.$useWorker)\n this.$startWorker();\n\n var tokenizer = mode.getTokenizer();\n\n if(tokenizer.on !== undefined) {\n var onReloadTokenizer = this.onReloadTokenizer.bind(this);\n tokenizer.on(\"update\", onReloadTokenizer);\n }\n\n if (!this.bgTokenizer) {\n this.bgTokenizer = new BackgroundTokenizer(tokenizer);\n var _self = this;\n this.bgTokenizer.on(\"update\", function(e) {\n _self._signal(\"tokenizerUpdate\", e);\n });\n } else {\n this.bgTokenizer.setTokenizer(tokenizer);\n }\n\n this.bgTokenizer.setDocument(this.getDocument());\n\n this.tokenRe = mode.tokenRe;\n this.nonTokenRe = mode.nonTokenRe;\n\n \n if (!$isPlaceholder) {\n if (mode.attachToSession)\n mode.attachToSession(this);\n this.$options.wrapMethod.set.call(this, this.$wrapMethod);\n this.$setFolding(mode.foldingRules);\n this.bgTokenizer.start(0);\n this._emit(\"changeMode\", {oldMode: oldMode, mode: mode});\n }\n };\n\n this.$stopWorker = function() {\n if (this.$worker) {\n this.$worker.terminate();\n this.$worker = null;\n }\n };\n\n this.$startWorker = function() {\n try {\n this.$worker = this.$mode.createWorker(this);\n } catch (e) {\n config.warn(\"Could not load worker\", e);\n this.$worker = null;\n }\n };\n this.getMode = function() {\n return this.$mode;\n };\n\n this.$scrollTop = 0;\n this.setScrollTop = function(scrollTop) {\n if (this.$scrollTop === scrollTop || isNaN(scrollTop))\n return;\n\n this.$scrollTop = scrollTop;\n this._signal(\"changeScrollTop\", scrollTop);\n };\n this.getScrollTop = function() {\n return this.$scrollTop;\n };\n\n this.$scrollLeft = 0;\n this.setScrollLeft = function(scrollLeft) {\n if (this.$scrollLeft === scrollLeft || isNaN(scrollLeft))\n return;\n\n this.$scrollLeft = scrollLeft;\n this._signal(\"changeScrollLeft\", scrollLeft);\n };\n this.getScrollLeft = function() {\n return this.$scrollLeft;\n };\n this.getScreenWidth = function() {\n this.$computeWidth();\n if (this.lineWidgets) \n return Math.max(this.getLineWidgetMaxWidth(), this.screenWidth);\n return this.screenWidth;\n };\n \n this.getLineWidgetMaxWidth = function() {\n if (this.lineWidgetsWidth != null) return this.lineWidgetsWidth;\n var width = 0;\n this.lineWidgets.forEach(function(w) {\n if (w && w.screenWidth > width)\n width = w.screenWidth;\n });\n return this.lineWidgetWidth = width;\n };\n\n this.$computeWidth = function(force) {\n if (this.$modified || force) {\n this.$modified = false;\n\n if (this.$useWrapMode)\n return this.screenWidth = this.$wrapLimit;\n\n var lines = this.doc.getAllLines();\n var cache = this.$rowLengthCache;\n var longestScreenLine = 0;\n var foldIndex = 0;\n var foldLine = this.$foldData[foldIndex];\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n var len = lines.length;\n\n for (var i = 0; i < len; i++) {\n if (i > foldStart) {\n i = foldLine.end.row + 1;\n if (i >= len)\n break;\n foldLine = this.$foldData[foldIndex++];\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n\n if (cache[i] == null)\n cache[i] = this.$getStringScreenWidth(lines[i])[0];\n\n if (cache[i] > longestScreenLine)\n longestScreenLine = cache[i];\n }\n this.screenWidth = longestScreenLine;\n }\n };\n this.getLine = function(row) {\n return this.doc.getLine(row);\n };\n this.getLines = function(firstRow, lastRow) {\n return this.doc.getLines(firstRow, lastRow);\n };\n this.getLength = function() {\n return this.doc.getLength();\n };\n this.getTextRange = function(range) {\n return this.doc.getTextRange(range || this.selection.getRange());\n };\n this.insert = function(position, text) {\n return this.doc.insert(position, text);\n };\n this.remove = function(range) {\n return this.doc.remove(range);\n };\n this.removeFullLines = function(firstRow, lastRow){\n return this.doc.removeFullLines(firstRow, lastRow);\n };\n this.undoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n for (var i = deltas.length - 1; i != -1; i--) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.revertDelta(delta);\n } else if (delta.folds) {\n this.addFolds(delta.folds);\n }\n }\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionBefore)\n this.selection.fromJSON(deltas.selectionBefore);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, true));\n }\n this.$fromUndo = false;\n };\n this.redoChanges = function(deltas, dontSelect) {\n if (!deltas.length)\n return;\n\n this.$fromUndo = true;\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (delta.action == \"insert\" || delta.action == \"remove\") {\n this.doc.$safeApplyDelta(delta);\n }\n }\n\n if (!dontSelect && this.$undoSelect) {\n if (deltas.selectionAfter)\n this.selection.fromJSON(deltas.selectionAfter);\n else\n this.selection.setRange(this.$getUndoSelection(deltas, false));\n }\n this.$fromUndo = false;\n };\n this.setUndoSelect = function(enable) {\n this.$undoSelect = enable;\n };\n\n this.$getUndoSelection = function(deltas, isUndo) {\n function isInsert(delta) {\n return isUndo ? delta.action !== \"insert\" : delta.action === \"insert\";\n }\n\n var range, point;\n\n for (var i = 0; i < deltas.length; i++) {\n var delta = deltas[i];\n if (!delta.start) continue; // skip folds\n if (!range) {\n if (isInsert(delta)) {\n range = Range.fromPoints(delta.start, delta.end);\n } else {\n range = Range.fromPoints(delta.start, delta.start);\n }\n continue;\n }\n \n if (isInsert(delta)) {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range.setStart(point);\n }\n point = delta.end;\n if (range.compare(point.row, point.column) == 1) {\n range.setEnd(point);\n }\n } else {\n point = delta.start;\n if (range.compare(point.row, point.column) == -1) {\n range = Range.fromPoints(delta.start, delta.start);\n }\n }\n }\n return range;\n };\n this.replace = function(range, text) {\n return this.doc.replace(range, text);\n };\n this.moveText = function(fromRange, toPosition, copy) {\n var text = this.getTextRange(fromRange);\n var folds = this.getFoldsInRange(fromRange);\n\n var toRange = Range.fromPoints(toPosition, toPosition);\n if (!copy) {\n this.remove(fromRange);\n var rowDiff = fromRange.start.row - fromRange.end.row;\n var collDiff = rowDiff ? -fromRange.end.column : fromRange.start.column - fromRange.end.column;\n if (collDiff) {\n if (toRange.start.row == fromRange.end.row && toRange.start.column > fromRange.end.column)\n toRange.start.column += collDiff;\n if (toRange.end.row == fromRange.end.row && toRange.end.column > fromRange.end.column)\n toRange.end.column += collDiff;\n }\n if (rowDiff && toRange.start.row >= fromRange.end.row) {\n toRange.start.row += rowDiff;\n toRange.end.row += rowDiff;\n }\n }\n\n toRange.end = this.insert(toRange.start, text);\n if (folds.length) {\n var oldStart = fromRange.start;\n var newStart = toRange.start;\n var rowDiff = newStart.row - oldStart.row;\n var collDiff = newStart.column - oldStart.column;\n this.addFolds(folds.map(function(x) {\n x = x.clone();\n if (x.start.row == oldStart.row)\n x.start.column += collDiff;\n if (x.end.row == oldStart.row)\n x.end.column += collDiff;\n x.start.row += rowDiff;\n x.end.row += rowDiff;\n return x;\n }));\n }\n\n return toRange;\n };\n this.indentRows = function(startRow, endRow, indentString) {\n indentString = indentString.replace(/\\t/g, this.getTabString());\n for (var row=startRow; row<=endRow; row++)\n this.doc.insertInLine({row: row, column: 0}, indentString);\n };\n this.outdentRows = function (range) {\n var rowRange = range.collapseRows();\n var deleteRange = new Range(0, 0, 0, 0);\n var size = this.getTabSize();\n\n for (var i = rowRange.start.row; i <= rowRange.end.row; ++i) {\n var line = this.getLine(i);\n\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n for (var j = 0; j < size; ++j)\n if (line.charAt(j) != ' ')\n break;\n if (j < size && line.charAt(j) == '\\t') {\n deleteRange.start.column = j;\n deleteRange.end.column = j + 1;\n } else {\n deleteRange.start.column = 0;\n deleteRange.end.column = j;\n }\n this.remove(deleteRange);\n }\n };\n\n this.$moveLines = function(firstRow, lastRow, dir) {\n firstRow = this.getRowFoldStart(firstRow);\n lastRow = this.getRowFoldEnd(lastRow);\n if (dir < 0) {\n var row = this.getRowFoldStart(firstRow + dir);\n if (row < 0) return 0;\n var diff = row-firstRow;\n } else if (dir > 0) {\n var row = this.getRowFoldEnd(lastRow + dir);\n if (row > this.doc.getLength()-1) return 0;\n var diff = row-lastRow;\n } else {\n firstRow = this.$clipRowToDocument(firstRow);\n lastRow = this.$clipRowToDocument(lastRow);\n var diff = lastRow - firstRow + 1;\n }\n\n var range = new Range(firstRow, 0, lastRow, Number.MAX_VALUE);\n var folds = this.getFoldsInRange(range).map(function(x){\n x = x.clone();\n x.start.row += diff;\n x.end.row += diff;\n return x;\n });\n \n var lines = dir == 0\n ? this.doc.getLines(firstRow, lastRow)\n : this.doc.removeFullLines(firstRow, lastRow);\n this.doc.insertFullLines(firstRow+diff, lines);\n folds.length && this.addFolds(folds);\n return diff;\n };\n this.moveLinesUp = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, -1);\n };\n this.moveLinesDown = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 1);\n };\n this.duplicateLines = function(firstRow, lastRow) {\n return this.$moveLines(firstRow, lastRow, 0);\n };\n\n\n this.$clipRowToDocument = function(row) {\n return Math.max(0, Math.min(row, this.doc.getLength()-1));\n };\n\n this.$clipColumnToRow = function(row, column) {\n if (column < 0)\n return 0;\n return Math.min(this.doc.getLine(row).length, column);\n };\n\n\n this.$clipPositionToDocument = function(row, column) {\n column = Math.max(0, column);\n\n if (row < 0) {\n row = 0;\n column = 0;\n } else {\n var len = this.doc.getLength();\n if (row >= len) {\n row = len - 1;\n column = this.doc.getLine(len-1).length;\n } else {\n column = Math.min(this.doc.getLine(row).length, column);\n }\n }\n\n return {\n row: row,\n column: column\n };\n };\n\n this.$clipRangeToDocument = function(range) {\n if (range.start.row < 0) {\n range.start.row = 0;\n range.start.column = 0;\n } else {\n range.start.column = this.$clipColumnToRow(\n range.start.row,\n range.start.column\n );\n }\n\n var len = this.doc.getLength() - 1;\n if (range.end.row > len) {\n range.end.row = len;\n range.end.column = this.doc.getLine(len).length;\n } else {\n range.end.column = this.$clipColumnToRow(\n range.end.row,\n range.end.column\n );\n }\n return range;\n };\n this.$wrapLimit = 80;\n this.$useWrapMode = false;\n this.$wrapLimitRange = {\n min : null,\n max : null\n };\n this.setUseWrapMode = function(useWrapMode) {\n if (useWrapMode != this.$useWrapMode) {\n this.$useWrapMode = useWrapMode;\n this.$modified = true;\n this.$resetRowCache(0);\n if (useWrapMode) {\n var len = this.getLength();\n this.$wrapData = Array(len);\n this.$updateWrapData(0, len - 1);\n }\n\n this._signal(\"changeWrapMode\");\n }\n };\n this.getUseWrapMode = function() {\n return this.$useWrapMode;\n };\n this.setWrapLimitRange = function(min, max) {\n if (this.$wrapLimitRange.min !== min || this.$wrapLimitRange.max !== max) {\n this.$wrapLimitRange = { min: min, max: max };\n this.$modified = true;\n this.$bidiHandler.markAsDirty();\n if (this.$useWrapMode)\n this._signal(\"changeWrapMode\");\n }\n };\n this.adjustWrapLimit = function(desiredLimit, $printMargin) {\n var limits = this.$wrapLimitRange;\n if (limits.max < 0)\n limits = {min: $printMargin, max: $printMargin};\n var wrapLimit = this.$constrainWrapLimit(desiredLimit, limits.min, limits.max);\n if (wrapLimit != this.$wrapLimit && wrapLimit > 1) {\n this.$wrapLimit = wrapLimit;\n this.$modified = true;\n if (this.$useWrapMode) {\n this.$updateWrapData(0, this.getLength() - 1);\n this.$resetRowCache(0);\n this._signal(\"changeWrapLimit\");\n }\n return true;\n }\n return false;\n };\n\n this.$constrainWrapLimit = function(wrapLimit, min, max) {\n if (min)\n wrapLimit = Math.max(min, wrapLimit);\n\n if (max)\n wrapLimit = Math.min(max, wrapLimit);\n\n return wrapLimit;\n };\n this.getWrapLimit = function() {\n return this.$wrapLimit;\n };\n this.setWrapLimit = function (limit) {\n this.setWrapLimitRange(limit, limit);\n };\n this.getWrapLimitRange = function() {\n return {\n min : this.$wrapLimitRange.min,\n max : this.$wrapLimitRange.max\n };\n };\n\n this.$updateInternalDataOnChange = function(delta) {\n var useWrapMode = this.$useWrapMode;\n var action = delta.action;\n var start = delta.start;\n var end = delta.end;\n var firstRow = start.row;\n var lastRow = end.row;\n var len = lastRow - firstRow;\n var removedFolds = null;\n \n this.$updating = true;\n if (len != 0) {\n if (action === \"remove\") {\n this[useWrapMode ? \"$wrapData\" : \"$rowLengthCache\"].splice(firstRow, len);\n\n var foldLines = this.$foldData;\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n var foldLine = this.getFoldLine(end.row);\n var idx = 0;\n if (foldLine) {\n foldLine.addRemoveChars(end.row, end.column, start.column - end.column);\n foldLine.shiftRow(-len);\n\n var foldLineBefore = this.getFoldLine(firstRow);\n if (foldLineBefore && foldLineBefore !== foldLine) {\n foldLineBefore.merge(foldLine);\n foldLine = foldLineBefore;\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= end.row) {\n foldLine.shiftRow(-len);\n }\n }\n\n lastRow = firstRow;\n } else {\n var args = Array(len);\n args.unshift(firstRow, 0);\n var arr = useWrapMode ? this.$wrapData : this.$rowLengthCache;\n arr.splice.apply(arr, args);\n var foldLines = this.$foldData;\n var foldLine = this.getFoldLine(firstRow);\n var idx = 0;\n if (foldLine) {\n var cmp = foldLine.range.compareInside(start.row, start.column);\n if (cmp == 0) {\n foldLine = foldLine.split(start.row, start.column);\n if (foldLine) {\n foldLine.shiftRow(len);\n foldLine.addRemoveChars(lastRow, 0, end.column - start.column);\n }\n } else\n if (cmp == -1) {\n foldLine.addRemoveChars(firstRow, 0, end.column - start.column);\n foldLine.shiftRow(len);\n }\n idx = foldLines.indexOf(foldLine) + 1;\n }\n\n for (idx; idx < foldLines.length; idx++) {\n var foldLine = foldLines[idx];\n if (foldLine.start.row >= firstRow) {\n foldLine.shiftRow(len);\n }\n }\n }\n } else {\n len = Math.abs(delta.start.column - delta.end.column);\n if (action === \"remove\") {\n removedFolds = this.getFoldsInRange(delta);\n this.removeFolds(removedFolds);\n\n len = -len;\n }\n var foldLine = this.getFoldLine(firstRow);\n if (foldLine) {\n foldLine.addRemoveChars(firstRow, start.column, len);\n }\n }\n\n if (useWrapMode && this.$wrapData.length != this.doc.getLength()) {\n console.error(\"doc.getLength() and $wrapData.length have to be the same!\");\n }\n this.$updating = false;\n\n if (useWrapMode)\n this.$updateWrapData(firstRow, lastRow);\n else\n this.$updateRowLengthCache(firstRow, lastRow);\n\n return removedFolds;\n };\n\n this.$updateRowLengthCache = function(firstRow, lastRow, b) {\n this.$rowLengthCache[firstRow] = null;\n this.$rowLengthCache[lastRow] = null;\n };\n\n this.$updateWrapData = function(firstRow, lastRow) {\n var lines = this.doc.getAllLines();\n var tabSize = this.getTabSize();\n var wrapData = this.$wrapData;\n var wrapLimit = this.$wrapLimit;\n var tokens;\n var foldLine;\n\n var row = firstRow;\n lastRow = Math.min(lastRow, lines.length - 1);\n while (row <= lastRow) {\n foldLine = this.getFoldLine(row, foldLine);\n if (!foldLine) {\n tokens = this.$getDisplayTokens(lines[row]);\n wrapData[row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row ++;\n } else {\n tokens = [];\n foldLine.walk(function(placeholder, row, column, lastColumn) {\n var walkTokens;\n if (placeholder != null) {\n walkTokens = this.$getDisplayTokens(\n placeholder, tokens.length);\n walkTokens[0] = PLACEHOLDER_START;\n for (var i = 1; i < walkTokens.length; i++) {\n walkTokens[i] = PLACEHOLDER_BODY;\n }\n } else {\n walkTokens = this.$getDisplayTokens(\n lines[row].substring(lastColumn, column),\n tokens.length);\n }\n tokens = tokens.concat(walkTokens);\n }.bind(this),\n foldLine.end.row,\n lines[foldLine.end.row].length + 1\n );\n\n wrapData[foldLine.start.row] = this.$computeWrapSplits(tokens, wrapLimit, tabSize);\n row = foldLine.end.row + 1;\n }\n }\n };\n var CHAR = 1,\n CHAR_EXT = 2,\n PLACEHOLDER_START = 3,\n PLACEHOLDER_BODY = 4,\n PUNCTUATION = 9,\n SPACE = 10,\n TAB = 11,\n TAB_SPACE = 12;\n\n\n this.$computeWrapSplits = function(tokens, wrapLimit, tabSize) {\n if (tokens.length == 0) {\n return [];\n }\n\n var splits = [];\n var displayLength = tokens.length;\n var lastSplit = 0, lastDocSplit = 0;\n\n var isCode = this.$wrapAsCode;\n\n var indentedSoftWrap = this.$indentedSoftWrap;\n var maxIndent = wrapLimit <= Math.max(2 * tabSize, 8)\n || indentedSoftWrap === false ? 0 : Math.floor(wrapLimit / 2);\n\n function getWrapIndent() {\n var indentation = 0;\n if (maxIndent === 0)\n return indentation;\n if (indentedSoftWrap) {\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (token == SPACE)\n indentation += 1;\n else if (token == TAB)\n indentation += tabSize;\n else if (token == TAB_SPACE)\n continue;\n else\n break;\n }\n }\n if (isCode && indentedSoftWrap !== false)\n indentation += tabSize;\n return Math.min(indentation, maxIndent);\n }\n function addSplit(screenPos) {\n var len = screenPos - lastSplit;\n for (var i = lastSplit; i < screenPos; i++) {\n var ch = tokens[i];\n if (ch === 12 || ch === 2) len -= 1;\n }\n\n if (!splits.length) {\n indent = getWrapIndent();\n splits.indent = indent;\n }\n lastDocSplit += len;\n splits.push(lastDocSplit);\n lastSplit = screenPos;\n }\n var indent = 0;\n while (displayLength - lastSplit > wrapLimit - indent) {\n var split = lastSplit + wrapLimit - indent;\n if (tokens[split - 1] >= SPACE && tokens[split] >= SPACE) {\n addSplit(split);\n continue;\n }\n if (tokens[split] == PLACEHOLDER_START || tokens[split] == PLACEHOLDER_BODY) {\n for (split; split != lastSplit - 1; split--) {\n if (tokens[split] == PLACEHOLDER_START) {\n break;\n }\n }\n if (split > lastSplit) {\n addSplit(split);\n continue;\n }\n split = lastSplit + wrapLimit;\n for (split; split < tokens.length; split++) {\n if (tokens[split] != PLACEHOLDER_BODY) {\n break;\n }\n }\n if (split == tokens.length) {\n break; // Breaks the while-loop.\n }\n addSplit(split);\n continue;\n }\n var minSplit = Math.max(split - (wrapLimit -(wrapLimit>>2)), lastSplit - 1);\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n if (isCode) {\n while (split > minSplit && tokens[split] < PLACEHOLDER_START) {\n split --;\n }\n while (split > minSplit && tokens[split] == PUNCTUATION) {\n split --;\n }\n } else {\n while (split > minSplit && tokens[split] < SPACE) {\n split --;\n }\n }\n if (split > minSplit) {\n addSplit(++split);\n continue;\n }\n split = lastSplit + wrapLimit;\n if (tokens[split] == CHAR_EXT)\n split--;\n addSplit(split - indent);\n }\n return splits;\n };\n this.$getDisplayTokens = function(str, offset) {\n var arr = [];\n var tabSize;\n offset = offset || 0;\n\n for (var i = 0; i < str.length; i++) {\n var c = str.charCodeAt(i);\n if (c == 9) {\n tabSize = this.getScreenTabSize(arr.length + offset);\n arr.push(TAB);\n for (var n = 1; n < tabSize; n++) {\n arr.push(TAB_SPACE);\n }\n }\n else if (c == 32) {\n arr.push(SPACE);\n } else if((c > 39 && c < 48) || (c > 57 && c < 64)) {\n arr.push(PUNCTUATION);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n arr.push(CHAR, CHAR_EXT);\n } else {\n arr.push(CHAR);\n }\n }\n return arr;\n };\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn == 0)\n return [0, 0];\n if (maxScreenColumn == null)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n\n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charCodeAt(column);\n if (c == 9) {\n screenColumn += this.getScreenTabSize(screenColumn);\n }\n else if (c >= 0x1100 && isFullWidth(c)) {\n screenColumn += 2;\n } else {\n screenColumn += 1;\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n\n return [screenColumn, column];\n };\n\n this.lineWidgets = null;\n this.getRowLength = function(row) {\n var h = 1;\n if (this.lineWidgets)\n h += this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n \n if (!this.$useWrapMode || !this.$wrapData[row])\n return h;\n else\n return this.$wrapData[row].length + h;\n };\n this.getRowLineCount = function(row) {\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1;\n } else {\n return this.$wrapData[row].length + 1;\n }\n };\n\n this.getRowWrapIndent = function(screenRow) {\n if (this.$useWrapMode) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n var splits = this.$wrapData[pos.row];\n return splits.length && splits[0] < pos.column ? splits.indent : 0;\n } else {\n return 0;\n }\n };\n this.getScreenLastRowColumn = function(screenRow) {\n var pos = this.screenToDocumentPosition(screenRow, Number.MAX_VALUE);\n return this.documentToScreenColumn(pos.row, pos.column);\n };\n this.getDocumentLastRowColumn = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.getScreenLastRowColumn(screenRow);\n };\n this.getDocumentLastRowColumnPosition = function(docRow, docColumn) {\n var screenRow = this.documentToScreenRow(docRow, docColumn);\n return this.screenToDocumentPosition(screenRow, Number.MAX_VALUE / 10);\n };\n this.getRowSplitData = function(row) {\n if (!this.$useWrapMode) {\n return undefined;\n } else {\n return this.$wrapData[row];\n }\n };\n this.getScreenTabSize = function(screenColumn) {\n return this.$tabSize - (screenColumn % this.$tabSize | 0);\n };\n\n\n this.screenToDocumentRow = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).row;\n };\n\n\n this.screenToDocumentColumn = function(screenRow, screenColumn) {\n return this.screenToDocumentPosition(screenRow, screenColumn).column;\n };\n this.screenToDocumentPosition = function(screenRow, screenColumn, offsetX) {\n if (screenRow < 0)\n return {row: 0, column: 0};\n\n var line;\n var docRow = 0;\n var docColumn = 0;\n var column;\n var row = 0;\n var rowLength = 0;\n\n var rowCache = this.$screenRowCache;\n var i = this.$getRowCacheIndex(rowCache, screenRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var docRow = this.$docRowCache[i];\n var doCache = screenRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var maxRow = this.getLength() - 1;\n var foldLine = this.getNextFoldLine(docRow);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (row <= screenRow) {\n rowLength = this.getRowLength(docRow);\n if (row + rowLength > screenRow || docRow >= maxRow) {\n break;\n } else {\n row += rowLength;\n docRow++;\n if (docRow > foldStart) {\n docRow = foldLine.end.row+1;\n foldLine = this.getNextFoldLine(docRow, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n }\n\n if (doCache) {\n this.$docRowCache.push(docRow);\n this.$screenRowCache.push(row);\n }\n }\n\n if (foldLine && foldLine.start.row <= docRow) {\n line = this.getFoldDisplayLine(foldLine);\n docRow = foldLine.start.row;\n } else if (row + rowLength <= screenRow || docRow > maxRow) {\n return {\n row: maxRow,\n column: this.getLine(maxRow).length\n };\n } else {\n line = this.getLine(docRow);\n foldLine = null;\n }\n var wrapIndent = 0, splitIndex = Math.floor(screenRow - row);\n if (this.$useWrapMode) {\n var splits = this.$wrapData[docRow];\n if (splits) {\n column = splits[splitIndex];\n if(splitIndex > 0 && splits.length) {\n wrapIndent = splits.indent;\n docColumn = splits[splitIndex - 1] || splits[splits.length - 1];\n line = line.substring(docColumn);\n }\n }\n }\n\n if (offsetX !== undefined && this.$bidiHandler.isBidiRow(row + splitIndex, docRow, splitIndex))\n screenColumn = this.$bidiHandler.offsetToCol(offsetX);\n\n docColumn += this.$getStringScreenWidth(line, screenColumn - wrapIndent)[1];\n if (this.$useWrapMode && docColumn >= column)\n docColumn = column - 1;\n\n if (foldLine)\n return foldLine.idxToPosition(docColumn);\n\n return {row: docRow, column: docColumn};\n };\n this.documentToScreenPosition = function(docRow, docColumn) {\n if (typeof docColumn === \"undefined\")\n var pos = this.$clipPositionToDocument(docRow.row, docRow.column);\n else\n pos = this.$clipPositionToDocument(docRow, docColumn);\n\n docRow = pos.row;\n docColumn = pos.column;\n\n var screenRow = 0;\n var foldStartRow = null;\n var fold = null;\n fold = this.getFoldAt(docRow, docColumn, 1);\n if (fold) {\n docRow = fold.start.row;\n docColumn = fold.start.column;\n }\n\n var rowEnd, row = 0;\n\n\n var rowCache = this.$docRowCache;\n var i = this.$getRowCacheIndex(rowCache, docRow);\n var l = rowCache.length;\n if (l && i >= 0) {\n var row = rowCache[i];\n var screenRow = this.$screenRowCache[i];\n var doCache = docRow > rowCache[l - 1];\n } else {\n var doCache = !l;\n }\n\n var foldLine = this.getNextFoldLine(row);\n var foldStart = foldLine ?foldLine.start.row :Infinity;\n\n while (row < docRow) {\n if (row >= foldStart) {\n rowEnd = foldLine.end.row + 1;\n if (rowEnd > docRow)\n break;\n foldLine = this.getNextFoldLine(rowEnd, foldLine);\n foldStart = foldLine ?foldLine.start.row :Infinity;\n }\n else {\n rowEnd = row + 1;\n }\n\n screenRow += this.getRowLength(row);\n row = rowEnd;\n\n if (doCache) {\n this.$docRowCache.push(row);\n this.$screenRowCache.push(screenRow);\n }\n }\n var textLine = \"\";\n if (foldLine && row >= foldStart) {\n textLine = this.getFoldDisplayLine(foldLine, docRow, docColumn);\n foldStartRow = foldLine.start.row;\n } else {\n textLine = this.getLine(docRow).substring(0, docColumn);\n foldStartRow = docRow;\n }\n var wrapIndent = 0;\n if (this.$useWrapMode) {\n var wrapRow = this.$wrapData[foldStartRow];\n if (wrapRow) {\n var screenRowOffset = 0;\n while (textLine.length >= wrapRow[screenRowOffset]) {\n screenRow ++;\n screenRowOffset++;\n }\n textLine = textLine.substring(\n wrapRow[screenRowOffset - 1] || 0, textLine.length\n );\n wrapIndent = screenRowOffset > 0 ? wrapRow.indent : 0;\n }\n }\n \n if (this.lineWidgets && this.lineWidgets[row] && this.lineWidgets[row].rowsAbove)\n screenRow += this.lineWidgets[row].rowsAbove;\n\n return {\n row: screenRow,\n column: wrapIndent + this.$getStringScreenWidth(textLine)[0]\n };\n };\n this.documentToScreenColumn = function(row, docColumn) {\n return this.documentToScreenPosition(row, docColumn).column;\n };\n this.documentToScreenRow = function(docRow, docColumn) {\n return this.documentToScreenPosition(docRow, docColumn).row;\n };\n this.getScreenLength = function() {\n var screenRows = 0;\n var fold = null;\n if (!this.$useWrapMode) {\n screenRows = this.getLength();\n var foldData = this.$foldData;\n for (var i = 0; i < foldData.length; i++) {\n fold = foldData[i];\n screenRows -= fold.end.row - fold.start.row;\n }\n } else {\n var lastRow = this.$wrapData.length;\n var row = 0, i = 0;\n var fold = this.$foldData[i++];\n var foldStart = fold ? fold.start.row :Infinity;\n\n while (row < lastRow) {\n var splits = this.$wrapData[row];\n screenRows += splits ? splits.length + 1 : 1;\n row ++;\n if (row > foldStart) {\n row = fold.end.row+1;\n fold = this.$foldData[i++];\n foldStart = fold ?fold.start.row :Infinity;\n }\n }\n }\n if (this.lineWidgets)\n screenRows += this.$getWidgetScreenLength();\n\n return screenRows;\n };\n this.$setFontMetrics = function(fm) {\n if (!this.$enableVarChar) return;\n this.$getStringScreenWidth = function(str, maxScreenColumn, screenColumn) {\n if (maxScreenColumn === 0)\n return [0, 0];\n if (!maxScreenColumn)\n maxScreenColumn = Infinity;\n screenColumn = screenColumn || 0;\n \n var c, column;\n for (column = 0; column < str.length; column++) {\n c = str.charAt(column);\n if (c === \"\\t\") {\n screenColumn += this.getScreenTabSize(screenColumn);\n } else {\n screenColumn += fm.getCharacterWidth(c);\n }\n if (screenColumn > maxScreenColumn) {\n break;\n }\n }\n \n return [screenColumn, column];\n };\n };\n \n this.destroy = function() {\n if (this.bgTokenizer) {\n this.bgTokenizer.setDocument(null);\n this.bgTokenizer = null;\n }\n this.$stopWorker();\n this.removeAllListeners();\n if (this.doc) {\n this.doc.off(\"change\", this.$onChange);\n }\n this.selection.detach();\n };\n\n this.isFullWidth = isFullWidth;\n function isFullWidth(c) {\n if (c < 0x1100)\n return false;\n return c >= 0x1100 && c <= 0x115F ||\n c >= 0x11A3 && c <= 0x11A7 ||\n c >= 0x11FA && c <= 0x11FF ||\n c >= 0x2329 && c <= 0x232A ||\n c >= 0x2E80 && c <= 0x2E99 ||\n c >= 0x2E9B && c <= 0x2EF3 ||\n c >= 0x2F00 && c <= 0x2FD5 ||\n c >= 0x2FF0 && c <= 0x2FFB ||\n c >= 0x3000 && c <= 0x303E ||\n c >= 0x3041 && c <= 0x3096 ||\n c >= 0x3099 && c <= 0x30FF ||\n c >= 0x3105 && c <= 0x312D ||\n c >= 0x3131 && c <= 0x318E ||\n c >= 0x3190 && c <= 0x31BA ||\n c >= 0x31C0 && c <= 0x31E3 ||\n c >= 0x31F0 && c <= 0x321E ||\n c >= 0x3220 && c <= 0x3247 ||\n c >= 0x3250 && c <= 0x32FE ||\n c >= 0x3300 && c <= 0x4DBF ||\n c >= 0x4E00 && c <= 0xA48C ||\n c >= 0xA490 && c <= 0xA4C6 ||\n c >= 0xA960 && c <= 0xA97C ||\n c >= 0xAC00 && c <= 0xD7A3 ||\n c >= 0xD7B0 && c <= 0xD7C6 ||\n c >= 0xD7CB && c <= 0xD7FB ||\n c >= 0xF900 && c <= 0xFAFF ||\n c >= 0xFE10 && c <= 0xFE19 ||\n c >= 0xFE30 && c <= 0xFE52 ||\n c >= 0xFE54 && c <= 0xFE66 ||\n c >= 0xFE68 && c <= 0xFE6B ||\n c >= 0xFF01 && c <= 0xFF60 ||\n c >= 0xFFE0 && c <= 0xFFE6;\n }\n\n}).call(EditSession.prototype);\n\nrequire(\"./edit_session/folding\").Folding.call(EditSession.prototype);\nrequire(\"./edit_session/bracket_match\").BracketMatch.call(EditSession.prototype);\n\n\nconfig.defineOptions(EditSession.prototype, \"session\", {\n wrap: {\n set: function(value) {\n if (!value || value == \"off\")\n value = false;\n else if (value == \"free\")\n value = true;\n else if (value == \"printMargin\")\n value = -1;\n else if (typeof value == \"string\")\n value = parseInt(value, 10) || false;\n\n if (this.$wrap == value)\n return;\n this.$wrap = value;\n if (!value) {\n this.setUseWrapMode(false);\n } else {\n var col = typeof value == \"number\" ? value : null;\n this.setWrapLimitRange(col, col);\n this.setUseWrapMode(true);\n }\n },\n get: function() {\n if (this.getUseWrapMode()) {\n if (this.$wrap == -1)\n return \"printMargin\";\n if (!this.getWrapLimitRange().min)\n return \"free\";\n return this.$wrap;\n }\n return \"off\";\n },\n handlesSet: true\n }, \n wrapMethod: {\n set: function(val) {\n val = val == \"auto\"\n ? this.$mode.type != \"text\"\n : val != \"text\";\n if (val != this.$wrapAsCode) {\n this.$wrapAsCode = val;\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n }\n },\n initialValue: \"auto\"\n },\n indentedSoftWrap: {\n set: function() {\n if (this.$useWrapMode) {\n this.$useWrapMode = false;\n this.setUseWrapMode(true);\n }\n },\n initialValue: true \n },\n firstLineNumber: {\n set: function() {this._signal(\"changeBreakpoint\");},\n initialValue: 1\n },\n useWorker: {\n set: function(useWorker) {\n this.$useWorker = useWorker;\n\n this.$stopWorker();\n if (useWorker)\n this.$startWorker();\n },\n initialValue: true\n },\n useSoftTabs: {initialValue: true},\n tabSize: {\n set: function(tabSize) {\n tabSize = parseInt(tabSize);\n if (tabSize > 0 && this.$tabSize !== tabSize) {\n this.$modified = true;\n this.$rowLengthCache = [];\n this.$tabSize = tabSize;\n this._signal(\"changeTabSize\");\n }\n },\n initialValue: 4,\n handlesSet: true\n },\n navigateWithinSoftTabs: {initialValue: false},\n foldStyle: {\n set: function(val) {this.setFoldStyle(val);},\n handlesSet: true\n },\n overwrite: {\n set: function(val) {this._signal(\"changeOverwrite\");},\n initialValue: false\n },\n newLineMode: {\n set: function(val) {this.doc.setNewLineMode(val);},\n get: function() {return this.doc.getNewLineMode();},\n handlesSet: true\n },\n mode: {\n set: function(val) { this.setMode(val); },\n get: function() { return this.$modeId; },\n handlesSet: true\n }\n});\n\nexports.EditSession = EditSession;\n});\n\nace.define(\"ace/search\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/lib/oop\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"./lib/lang\");\nvar oop = require(\"./lib/oop\");\nvar Range = require(\"./range\").Range;\n\nvar Search = function() {\n this.$options = {};\n};\n\n(function() {\n this.set = function(options) {\n oop.mixin(this.$options, options);\n return this;\n };\n this.getOptions = function() {\n return lang.copyObject(this.$options);\n };\n this.setOptions = function(options) {\n this.$options = options;\n };\n this.find = function(session) {\n var options = this.$options;\n var iterator = this.$matchIterator(session, options);\n if (!iterator)\n return false;\n\n var firstRange = null;\n iterator.forEach(function(sr, sc, er, ec) {\n firstRange = new Range(sr, sc, er, ec);\n if (sc == ec && options.start && options.start.start\n && options.skipCurrent != false && firstRange.isEqual(options.start)\n ) {\n firstRange = null;\n return false;\n }\n \n return true;\n });\n\n return firstRange;\n };\n this.findAll = function(session) {\n var options = this.$options;\n if (!options.needle)\n return [];\n this.$assembleRegExp(options);\n\n var range = options.range;\n var lines = range\n ? session.getLines(range.start.row, range.end.row)\n : session.doc.getAllLines();\n\n var ranges = [];\n var re = options.re;\n if (options.$isMultiLine) {\n var len = re.length;\n var maxRow = lines.length - len;\n var prevRange;\n outer: for (var row = re.offset || 0; row <= maxRow; row++) {\n for (var j = 0; j < len; j++)\n if (lines[row + j].search(re[j]) == -1)\n continue outer;\n \n var startLine = lines[row];\n var line = lines[row + len - 1];\n var startIndex = startLine.length - startLine.match(re[0])[0].length;\n var endIndex = line.match(re[len - 1])[0].length;\n \n if (prevRange && prevRange.end.row === row &&\n prevRange.end.column > startIndex\n ) {\n continue;\n }\n ranges.push(prevRange = new Range(\n row, startIndex, row + len - 1, endIndex\n ));\n if (len > 2)\n row = row + len - 2;\n }\n } else {\n for (var i = 0; i < lines.length; i++) {\n var matches = lang.getMatchOffsets(lines[i], re);\n for (var j = 0; j < matches.length; j++) {\n var match = matches[j];\n ranges.push(new Range(i, match.offset, i, match.offset + match.length));\n }\n }\n }\n\n if (range) {\n var startColumn = range.start.column;\n var endColumn = range.start.column;\n var i = 0, j = ranges.length - 1;\n while (i < j && ranges[i].start.column < startColumn && ranges[i].start.row == range.start.row)\n i++;\n\n while (i < j && ranges[j].end.column > endColumn && ranges[j].end.row == range.end.row)\n j--;\n \n ranges = ranges.slice(i, j + 1);\n for (i = 0, j = ranges.length; i < j; i++) {\n ranges[i].start.row += range.start.row;\n ranges[i].end.row += range.start.row;\n }\n }\n\n return ranges;\n };\n this.replace = function(input, replacement) {\n var options = this.$options;\n\n var re = this.$assembleRegExp(options);\n if (options.$isMultiLine)\n return replacement;\n\n if (!re)\n return;\n\n var match = re.exec(input);\n if (!match || match[0].length != input.length)\n return null;\n \n replacement = input.replace(re, replacement);\n if (options.preserveCase) {\n replacement = replacement.split(\"\");\n for (var i = Math.min(input.length, input.length); i--; ) {\n var ch = input[i];\n if (ch && ch.toLowerCase() != ch)\n replacement[i] = replacement[i].toUpperCase();\n else\n replacement[i] = replacement[i].toLowerCase();\n }\n replacement = replacement.join(\"\");\n }\n \n return replacement;\n };\n\n this.$assembleRegExp = function(options, $disableFakeMultiline) {\n if (options.needle instanceof RegExp)\n return options.re = options.needle;\n\n var needle = options.needle;\n\n if (!options.needle)\n return options.re = false;\n\n if (!options.regExp)\n needle = lang.escapeRegExp(needle);\n\n if (options.wholeWord)\n needle = addWordBoundary(needle, options);\n\n var modifier = options.caseSensitive ? \"gm\" : \"gmi\";\n\n options.$isMultiLine = !$disableFakeMultiline && /[\\n\\r]/.test(needle);\n if (options.$isMultiLine)\n return options.re = this.$assembleMultilineRegExp(needle, modifier);\n\n try {\n var re = new RegExp(needle, modifier);\n } catch(e) {\n re = false;\n }\n return options.re = re;\n };\n\n this.$assembleMultilineRegExp = function(needle, modifier) {\n var parts = needle.replace(/\\r\\n|\\r|\\n/g, \"$\\n^\").split(\"\\n\");\n var re = [];\n for (var i = 0; i < parts.length; i++) try {\n re.push(new RegExp(parts[i], modifier));\n } catch(e) {\n return false;\n }\n return re;\n };\n\n this.$matchIterator = function(session, options) {\n var re = this.$assembleRegExp(options);\n if (!re)\n return false;\n var backwards = options.backwards == true;\n var skipCurrent = options.skipCurrent != false;\n\n var range = options.range;\n var start = options.start;\n if (!start)\n start = range ? range[backwards ? \"end\" : \"start\"] : session.selection.getRange();\n \n if (start.start)\n start = start[skipCurrent != backwards ? \"end\" : \"start\"];\n\n var firstRow = range ? range.start.row : 0;\n var lastRow = range ? range.end.row : session.getLength() - 1;\n \n if (backwards) {\n var forEach = function(callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row--; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = lastRow, firstRow = start.row; row >= firstRow; row--)\n if (forEachInLine(row, Number.MAX_VALUE, callback))\n return;\n };\n }\n else {\n var forEach = function(callback) {\n var row = start.row;\n if (forEachInLine(row, start.column, callback))\n return;\n for (row = row + 1; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n if (options.wrap == false)\n return;\n for (row = firstRow, lastRow = start.row; row <= lastRow; row++)\n if (forEachInLine(row, 0, callback))\n return;\n };\n }\n \n if (options.$isMultiLine) {\n var len = re.length;\n var forEachInLine = function(row, offset, callback) {\n var startRow = backwards ? row - len + 1 : row;\n if (startRow < 0 || startRow + len > session.getLength()) return;\n var line = session.getLine(startRow);\n var startIndex = line.search(re[0]);\n if (!backwards && startIndex < offset || startIndex === -1) return;\n for (var i = 1; i < len; i++) {\n line = session.getLine(startRow + i);\n if (line.search(re[i]) == -1)\n return;\n }\n var endIndex = line.match(re[len - 1])[0].length;\n if (backwards && endIndex > offset) return;\n if (callback(startRow, startIndex, startRow + len - 1, endIndex))\n return true;\n };\n }\n else if (backwards) {\n var forEachInLine = function(row, endIndex, callback) {\n var line = session.getLine(row);\n var matches = [];\n var m, last = 0;\n re.lastIndex = 0;\n while((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (!length) {\n if (last >= line.length) break;\n re.lastIndex = last += 1;\n }\n if (m.index + length > endIndex)\n break;\n matches.push(m.index, length);\n }\n for (var i = matches.length - 1; i >= 0; i -= 2) {\n var column = matches[i - 1];\n var length = matches[i];\n if (callback(row, column, row, column + length))\n return true;\n }\n };\n }\n else {\n var forEachInLine = function(row, startIndex, callback) {\n var line = session.getLine(row);\n var last;\n var m;\n re.lastIndex = startIndex;\n while((m = re.exec(line))) {\n var length = m[0].length;\n last = m.index;\n if (callback(row, last, row,last + length))\n return true;\n if (!length) {\n re.lastIndex = last += 1;\n if (last >= line.length) return false;\n }\n }\n };\n }\n return {forEach: forEach};\n };\n\n}).call(Search.prototype);\n\nfunction addWordBoundary(needle, options) {\n function wordBoundary(c) {\n if (/\\w/.test(c) || options.regExp) return \"\\\\b\";\n return \"\";\n }\n return wordBoundary(needle[0]) + needle\n + wordBoundary(needle[needle.length - 1]);\n}\n\nexports.Search = Search;\n});\n\nace.define(\"ace/keyboard/hash_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/keys\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar keyUtil = require(\"../lib/keys\");\nvar useragent = require(\"../lib/useragent\");\nvar KEY_MODS = keyUtil.KEY_MODS;\n\nfunction HashHandler(config, platform) {\n this.platform = platform || (useragent.isMac ? \"mac\" : \"win\");\n this.commands = {};\n this.commandKeyBinding = {};\n this.addCommands(config);\n this.$singleCommand = true;\n}\n\nfunction MultiHashHandler(config, platform) {\n HashHandler.call(this, config, platform);\n this.$singleCommand = false;\n}\n\nMultiHashHandler.prototype = HashHandler.prototype;\n\n(function() {\n \n\n this.addCommand = function(command) {\n if (this.commands[command.name])\n this.removeCommand(command);\n\n this.commands[command.name] = command;\n\n if (command.bindKey)\n this._buildKeyHash(command);\n };\n\n this.removeCommand = function(command, keepCommand) {\n var name = command && (typeof command === 'string' ? command : command.name);\n command = this.commands[name];\n if (!keepCommand)\n delete this.commands[name];\n var ckb = this.commandKeyBinding;\n for (var keyId in ckb) {\n var cmdGroup = ckb[keyId];\n if (cmdGroup == command) {\n delete ckb[keyId];\n } else if (Array.isArray(cmdGroup)) {\n var i = cmdGroup.indexOf(command);\n if (i != -1) {\n cmdGroup.splice(i, 1);\n if (cmdGroup.length == 1)\n ckb[keyId] = cmdGroup[0];\n }\n }\n }\n };\n\n this.bindKey = function(key, command, position) {\n if (typeof key == \"object\" && key) {\n if (position == undefined)\n position = key.position;\n key = key[this.platform];\n }\n if (!key)\n return;\n if (typeof command == \"function\")\n return this.addCommand({exec: command, bindKey: key, name: command.name || key});\n \n key.split(\"|\").forEach(function(keyPart) {\n var chain = \"\";\n if (keyPart.indexOf(\" \") != -1) {\n var parts = keyPart.split(/\\s+/);\n keyPart = parts.pop();\n parts.forEach(function(keyPart) {\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n chain += (chain ? \" \" : \"\") + id;\n this._addCommandToBinding(chain, \"chainKeys\");\n }, this);\n chain += \" \";\n }\n var binding = this.parseKeys(keyPart);\n var id = KEY_MODS[binding.hashId] + binding.key;\n this._addCommandToBinding(chain + id, command, position);\n }, this);\n };\n \n function getPosition(command) {\n return typeof command == \"object\" && command.bindKey\n && command.bindKey.position \n || (command.isDefault ? -100 : 0);\n }\n this._addCommandToBinding = function(keyId, command, position) {\n var ckb = this.commandKeyBinding, i;\n if (!command) {\n delete ckb[keyId];\n } else if (!ckb[keyId] || this.$singleCommand) {\n ckb[keyId] = command;\n } else {\n if (!Array.isArray(ckb[keyId])) {\n ckb[keyId] = [ckb[keyId]];\n } else if ((i = ckb[keyId].indexOf(command)) != -1) {\n ckb[keyId].splice(i, 1);\n }\n \n if (typeof position != \"number\") {\n position = getPosition(command);\n }\n\n var commands = ckb[keyId];\n for (i = 0; i < commands.length; i++) {\n var other = commands[i];\n var otherPos = getPosition(other);\n if (otherPos > position)\n break;\n }\n commands.splice(i, 0, command);\n }\n };\n\n this.addCommands = function(commands) {\n commands && Object.keys(commands).forEach(function(name) {\n var command = commands[name];\n if (!command)\n return;\n \n if (typeof command === \"string\")\n return this.bindKey(command, name);\n\n if (typeof command === \"function\")\n command = { exec: command };\n\n if (typeof command !== \"object\")\n return;\n\n if (!command.name)\n command.name = name;\n\n this.addCommand(command);\n }, this);\n };\n\n this.removeCommands = function(commands) {\n Object.keys(commands).forEach(function(name) {\n this.removeCommand(commands[name]);\n }, this);\n };\n\n this.bindKeys = function(keyList) {\n Object.keys(keyList).forEach(function(key) {\n this.bindKey(key, keyList[key]);\n }, this);\n };\n\n this._buildKeyHash = function(command) {\n this.bindKey(command.bindKey, command);\n };\n this.parseKeys = function(keys) {\n var parts = keys.toLowerCase().split(/[\\-\\+]([\\-\\+])?/).filter(function(x){return x;});\n var key = parts.pop();\n\n var keyCode = keyUtil[key];\n if (keyUtil.FUNCTION_KEYS[keyCode])\n key = keyUtil.FUNCTION_KEYS[keyCode].toLowerCase();\n else if (!parts.length)\n return {key: key, hashId: -1};\n else if (parts.length == 1 && parts[0] == \"shift\")\n return {key: key.toUpperCase(), hashId: -1};\n\n var hashId = 0;\n for (var i = parts.length; i--;) {\n var modifier = keyUtil.KEY_MODS[parts[i]];\n if (modifier == null) {\n if (typeof console != \"undefined\")\n console.error(\"invalid modifier \" + parts[i] + \" in \" + keys);\n return false;\n }\n hashId |= modifier;\n }\n return {key: key, hashId: hashId};\n };\n\n this.findKeyCommand = function findKeyCommand(hashId, keyString) {\n var key = KEY_MODS[hashId] + keyString;\n return this.commandKeyBinding[key];\n };\n\n this.handleKeyboard = function(data, hashId, keyString, keyCode) {\n if (keyCode < 0) return;\n var key = KEY_MODS[hashId] + keyString;\n var command = this.commandKeyBinding[key];\n if (data.$keyChain) {\n data.$keyChain += \" \" + key;\n command = this.commandKeyBinding[data.$keyChain] || command;\n }\n \n if (command) {\n if (command == \"chainKeys\" || command[command.length - 1] == \"chainKeys\") {\n data.$keyChain = data.$keyChain || key;\n return {command: \"null\"};\n }\n }\n \n if (data.$keyChain) {\n if ((!hashId || hashId == 4) && keyString.length == 1)\n data.$keyChain = data.$keyChain.slice(0, -key.length - 1); // wait for input\n else if (hashId == -1 || keyCode > 0)\n data.$keyChain = \"\"; // reset keyChain\n }\n return {command: command};\n };\n \n this.getStatusText = function(editor, data) {\n return data.$keyChain || \"\";\n };\n\n}).call(HashHandler.prototype);\n\nexports.HashHandler = HashHandler;\nexports.MultiHashHandler = MultiHashHandler;\n});\n\nace.define(\"ace/commands/command_manager\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/keyboard/hash_handler\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar MultiHashHandler = require(\"../keyboard/hash_handler\").MultiHashHandler;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\n\nvar CommandManager = function(platform, commands) {\n MultiHashHandler.call(this, commands, platform);\n this.byName = this.commands;\n this.setDefaultHandler(\"exec\", function(e) {\n return e.command.exec(e.editor, e.args || {});\n });\n};\n\noop.inherits(CommandManager, MultiHashHandler);\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.exec = function(command, editor, args) {\n if (Array.isArray(command)) {\n for (var i = command.length; i--; ) {\n if (this.exec(command[i], editor, args)) return true;\n }\n return false;\n }\n\n if (typeof command === \"string\")\n command = this.commands[command];\n\n if (!command)\n return false;\n\n if (editor && editor.$readOnly && !command.readOnly)\n return false;\n\n if (this.$checkCommandState != false && command.isAvailable && !command.isAvailable(editor))\n return false;\n\n var e = {editor: editor, command: command, args: args};\n e.returnValue = this._emit(\"exec\", e);\n this._signal(\"afterExec\", e);\n\n return e.returnValue === false ? false : true;\n };\n\n this.toggleRecording = function(editor) {\n if (this.$inReplay)\n return;\n\n editor && editor._emit(\"changeStatus\");\n if (this.recording) {\n this.macro.pop();\n this.off(\"exec\", this.$addCommandToMacro);\n\n if (!this.macro.length)\n this.macro = this.oldMacro;\n\n return this.recording = false;\n }\n if (!this.$addCommandToMacro) {\n this.$addCommandToMacro = function(e) {\n this.macro.push([e.command, e.args]);\n }.bind(this);\n }\n\n this.oldMacro = this.macro;\n this.macro = [];\n this.on(\"exec\", this.$addCommandToMacro);\n return this.recording = true;\n };\n\n this.replay = function(editor) {\n if (this.$inReplay || !this.macro)\n return;\n\n if (this.recording)\n return this.toggleRecording(editor);\n\n try {\n this.$inReplay = true;\n this.macro.forEach(function(x) {\n if (typeof x == \"string\")\n this.exec(x, editor);\n else\n this.exec(x[0], editor, x[1]);\n }, this);\n } finally {\n this.$inReplay = false;\n }\n };\n\n this.trimMacro = function(m) {\n return m.map(function(x){\n if (typeof x[0] != \"string\")\n x[0] = x[0].name;\n if (!x[1])\n x = x[0];\n return x;\n });\n };\n\n}).call(CommandManager.prototype);\n\nexports.CommandManager = CommandManager;\n\n});\n\nace.define(\"ace/commands/default_commands\",[\"require\",\"exports\",\"module\",\"ace/lib/lang\",\"ace/config\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar lang = require(\"../lib/lang\");\nvar config = require(\"../config\");\nvar Range = require(\"../range\").Range;\n\nfunction bindKey(win, mac) {\n return {win: win, mac: mac};\n}\nexports.commands = [{\n name: \"showSettingsMenu\",\n description: \"Show settings menu\",\n bindKey: bindKey(\"Ctrl-,\", \"Command-,\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/settings_menu\", function(module) {\n module.init(editor);\n editor.showSettingsMenu();\n });\n },\n readOnly: true\n}, {\n name: \"goToNextError\",\n description: \"Go to next error\",\n bindKey: bindKey(\"Alt-E\", \"F4\"),\n exec: function(editor) {\n config.loadModule(\"./ext/error_marker\", function(module) {\n module.showErrorMarker(editor, 1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"goToPreviousError\",\n description: \"Go to previous error\",\n bindKey: bindKey(\"Alt-Shift-E\", \"Shift-F4\"),\n exec: function(editor) {\n config.loadModule(\"./ext/error_marker\", function(module) {\n module.showErrorMarker(editor, -1);\n });\n },\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"selectall\",\n description: \"Select all\",\n bindKey: bindKey(\"Ctrl-A\", \"Command-A\"),\n exec: function(editor) { editor.selectAll(); },\n readOnly: true\n}, {\n name: \"centerselection\",\n description: \"Center selection\",\n bindKey: bindKey(null, \"Ctrl-L\"),\n exec: function(editor) { editor.centerSelection(); },\n readOnly: true\n}, {\n name: \"gotoline\",\n description: \"Go to line...\",\n bindKey: bindKey(\"Ctrl-L\", \"Command-L\"),\n exec: function(editor, line) {\n if (typeof line === \"number\" && !isNaN(line))\n editor.gotoLine(line);\n editor.prompt({ $type: \"gotoLine\" });\n },\n readOnly: true\n}, {\n name: \"fold\",\n bindKey: bindKey(\"Alt-L|Ctrl-F1\", \"Command-Alt-L|Command-F1\"),\n exec: function(editor) { editor.session.toggleFold(false); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"unfold\",\n bindKey: bindKey(\"Alt-Shift-L|Ctrl-Shift-F1\", \"Command-Alt-Shift-L|Command-Shift-F1\"),\n exec: function(editor) { editor.session.toggleFold(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"toggleFoldWidget\",\n description: \"Toggle fold widget\",\n bindKey: bindKey(\"F2\", \"F2\"),\n exec: function(editor) { editor.session.toggleFoldWidget(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"toggleParentFoldWidget\",\n description: \"Toggle parent fold widget\",\n bindKey: bindKey(\"Alt-F2\", \"Alt-F2\"),\n exec: function(editor) { editor.session.toggleFoldWidget(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldall\",\n description: \"Fold all\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function(editor) { editor.session.foldAll(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldAllComments\",\n description: \"Fold all comments\",\n bindKey: bindKey(null, \"Ctrl-Command-Option-0\"),\n exec: function(editor) { editor.session.foldAllComments(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"foldOther\",\n description: \"Fold other\",\n bindKey: bindKey(\"Alt-0\", \"Command-Option-0\"),\n exec: function(editor) { \n editor.session.foldAll();\n editor.session.unfold(editor.selection.getAllRanges());\n },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"unfoldall\",\n description: \"Unfold all\",\n bindKey: bindKey(\"Alt-Shift-0\", \"Command-Option-Shift-0\"),\n exec: function(editor) { editor.session.unfold(); },\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"findnext\",\n description: \"Find next\",\n bindKey: bindKey(\"Ctrl-K\", \"Command-G\"),\n exec: function(editor) { editor.findNext(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"findprevious\",\n description: \"Find previous\",\n bindKey: bindKey(\"Ctrl-Shift-K\", \"Command-Shift-G\"),\n exec: function(editor) { editor.findPrevious(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"center\",\n readOnly: true\n}, {\n name: \"selectOrFindNext\",\n description: \"Select or find next\",\n bindKey: bindKey(\"Alt-K\", \"Ctrl-G\"),\n exec: function(editor) {\n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findNext(); \n },\n readOnly: true\n}, {\n name: \"selectOrFindPrevious\",\n description: \"Select or find previous\",\n bindKey: bindKey(\"Alt-Shift-K\", \"Ctrl-Shift-G\"),\n exec: function(editor) { \n if (editor.selection.isEmpty())\n editor.selection.selectWord();\n else\n editor.findPrevious();\n },\n readOnly: true\n}, {\n name: \"find\",\n description: \"Find\",\n bindKey: bindKey(\"Ctrl-F\", \"Command-F\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor);});\n },\n readOnly: true\n}, {\n name: \"overwrite\",\n description: \"Overwrite\",\n bindKey: \"Insert\",\n exec: function(editor) { editor.toggleOverwrite(); },\n readOnly: true\n}, {\n name: \"selecttostart\",\n description: \"Select to start\",\n bindKey: bindKey(\"Ctrl-Shift-Home\", \"Command-Shift-Home|Command-Shift-Up\"),\n exec: function(editor) { editor.getSelection().selectFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"gotostart\",\n description: \"Go to start\",\n bindKey: bindKey(\"Ctrl-Home\", \"Command-Home|Command-Up\"),\n exec: function(editor) { editor.navigateFileStart(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"selectup\",\n description: \"Select up\",\n bindKey: bindKey(\"Shift-Up\", \"Shift-Up|Ctrl-Shift-P\"),\n exec: function(editor) { editor.getSelection().selectUp(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"golineup\",\n description: \"Go line up\",\n bindKey: bindKey(\"Up\", \"Up|Ctrl-P\"),\n exec: function(editor, args) { editor.navigateUp(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttoend\",\n description: \"Select to end\",\n bindKey: bindKey(\"Ctrl-Shift-End\", \"Command-Shift-End|Command-Shift-Down\"),\n exec: function(editor) { editor.getSelection().selectFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"gotoend\",\n description: \"Go to end\",\n bindKey: bindKey(\"Ctrl-End\", \"Command-End|Command-Down\"),\n exec: function(editor) { editor.navigateFileEnd(); },\n multiSelectAction: \"forEach\",\n readOnly: true,\n scrollIntoView: \"animate\",\n aceCommandGroup: \"fileJump\"\n}, {\n name: \"selectdown\",\n description: \"Select down\",\n bindKey: bindKey(\"Shift-Down\", \"Shift-Down|Ctrl-Shift-N\"),\n exec: function(editor) { editor.getSelection().selectDown(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"golinedown\",\n description: \"Go line down\",\n bindKey: bindKey(\"Down\", \"Down|Ctrl-N\"),\n exec: function(editor, args) { editor.navigateDown(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectwordleft\",\n description: \"Select word left\",\n bindKey: bindKey(\"Ctrl-Shift-Left\", \"Option-Shift-Left\"),\n exec: function(editor) { editor.getSelection().selectWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotowordleft\",\n description: \"Go to word left\",\n bindKey: bindKey(\"Ctrl-Left\", \"Option-Left\"),\n exec: function(editor) { editor.navigateWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttolinestart\",\n description: \"Select to line start\",\n bindKey: bindKey(\"Alt-Shift-Left\", \"Command-Shift-Left|Ctrl-Shift-A\"),\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotolinestart\",\n description: \"Go to line start\",\n bindKey: bindKey(\"Alt-Left|Home\", \"Command-Left|Home|Ctrl-A\"),\n exec: function(editor) { editor.navigateLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectleft\",\n description: \"Select left\",\n bindKey: bindKey(\"Shift-Left\", \"Shift-Left|Ctrl-Shift-B\"),\n exec: function(editor) { editor.getSelection().selectLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotoleft\",\n description: \"Go to left\",\n bindKey: bindKey(\"Left\", \"Left|Ctrl-B\"),\n exec: function(editor, args) { editor.navigateLeft(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectwordright\",\n description: \"Select word right\",\n bindKey: bindKey(\"Ctrl-Shift-Right\", \"Option-Shift-Right\"),\n exec: function(editor) { editor.getSelection().selectWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotowordright\",\n description: \"Go to word right\",\n bindKey: bindKey(\"Ctrl-Right\", \"Option-Right\"),\n exec: function(editor) { editor.navigateWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selecttolineend\",\n description: \"Select to line end\",\n bindKey: bindKey(\"Alt-Shift-Right\", \"Command-Shift-Right|Shift-End|Ctrl-Shift-E\"),\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotolineend\",\n description: \"Go to line end\",\n bindKey: bindKey(\"Alt-Right|End\", \"Command-Right|End|Ctrl-E\"),\n exec: function(editor) { editor.navigateLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectright\",\n description: \"Select right\",\n bindKey: bindKey(\"Shift-Right\", \"Shift-Right\"),\n exec: function(editor) { editor.getSelection().selectRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"gotoright\",\n description: \"Go to right\",\n bindKey: bindKey(\"Right\", \"Right|Ctrl-F\"),\n exec: function(editor, args) { editor.navigateRight(args.times); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectpagedown\",\n description: \"Select page down\",\n bindKey: \"Shift-PageDown\",\n exec: function(editor) { editor.selectPageDown(); },\n readOnly: true\n}, {\n name: \"pagedown\",\n description: \"Page down\",\n bindKey: bindKey(null, \"Option-PageDown\"),\n exec: function(editor) { editor.scrollPageDown(); },\n readOnly: true\n}, {\n name: \"gotopagedown\",\n description: \"Go to page down\",\n bindKey: bindKey(\"PageDown\", \"PageDown|Ctrl-V\"),\n exec: function(editor) { editor.gotoPageDown(); },\n readOnly: true\n}, {\n name: \"selectpageup\",\n description: \"Select page up\",\n bindKey: \"Shift-PageUp\",\n exec: function(editor) { editor.selectPageUp(); },\n readOnly: true\n}, {\n name: \"pageup\",\n description: \"Page up\",\n bindKey: bindKey(null, \"Option-PageUp\"),\n exec: function(editor) { editor.scrollPageUp(); },\n readOnly: true\n}, {\n name: \"gotopageup\",\n description: \"Go to page up\",\n bindKey: \"PageUp\",\n exec: function(editor) { editor.gotoPageUp(); },\n readOnly: true\n}, {\n name: \"scrollup\",\n description: \"Scroll up\",\n bindKey: bindKey(\"Ctrl-Up\", null),\n exec: function(e) { e.renderer.scrollBy(0, -2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: \"scrolldown\",\n description: \"Scroll down\",\n bindKey: bindKey(\"Ctrl-Down\", null),\n exec: function(e) { e.renderer.scrollBy(0, 2 * e.renderer.layerConfig.lineHeight); },\n readOnly: true\n}, {\n name: \"selectlinestart\",\n description: \"Select line start\",\n bindKey: \"Shift-Home\",\n exec: function(editor) { editor.getSelection().selectLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectlineend\",\n description: \"Select line end\",\n bindKey: \"Shift-End\",\n exec: function(editor) { editor.getSelection().selectLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"togglerecording\",\n description: \"Toggle recording\",\n bindKey: bindKey(\"Ctrl-Alt-E\", \"Command-Option-E\"),\n exec: function(editor) { editor.commands.toggleRecording(editor); },\n readOnly: true\n}, {\n name: \"replaymacro\",\n description: \"Replay macro\",\n bindKey: bindKey(\"Ctrl-Shift-E\", \"Command-Shift-E\"),\n exec: function(editor) { editor.commands.replay(editor); },\n readOnly: true\n}, {\n name: \"jumptomatching\",\n description: \"Jump to matching\",\n bindKey: bindKey(\"Ctrl-\\\\|Ctrl-P\", \"Command-\\\\\"),\n exec: function(editor) { editor.jumpToMatching(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"selecttomatching\",\n description: \"Select to matching\",\n bindKey: bindKey(\"Ctrl-Shift-\\\\|Ctrl-Shift-P\", \"Command-Shift-\\\\\"),\n exec: function(editor) { editor.jumpToMatching(true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"expandToMatching\",\n description: \"Expand to matching\",\n bindKey: bindKey(\"Ctrl-Shift-M\", \"Ctrl-Shift-M\"),\n exec: function(editor) { editor.jumpToMatching(true, true); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"animate\",\n readOnly: true\n}, {\n name: \"passKeysToBrowser\",\n description: \"Pass keys to browser\",\n bindKey: bindKey(null, null),\n exec: function() {},\n passEvent: true,\n readOnly: true\n}, {\n name: \"copy\",\n description: \"Copy\",\n exec: function(editor) {\n },\n readOnly: true\n},\n{\n name: \"cut\",\n description: \"Cut\",\n exec: function(editor) {\n var cutLine = editor.$copyWithEmptySelection && editor.selection.isEmpty();\n var range = cutLine ? editor.selection.getLineRange() : editor.selection.getRange();\n editor._emit(\"cut\", range);\n\n if (!range.isEmpty())\n editor.session.remove(range);\n editor.clearSelection();\n },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"paste\",\n description: \"Paste\",\n exec: function(editor, args) {\n editor.$handlePaste(args);\n },\n scrollIntoView: \"cursor\"\n}, {\n name: \"removeline\",\n description: \"Remove line\",\n bindKey: bindKey(\"Ctrl-D\", \"Command-D\"),\n exec: function(editor) { editor.removeLines(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEachLine\"\n}, {\n name: \"duplicateSelection\",\n description: \"Duplicate selection\",\n bindKey: bindKey(\"Ctrl-Shift-D\", \"Command-Shift-D\"),\n exec: function(editor) { editor.duplicateSelection(); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"sortlines\",\n description: \"Sort lines\",\n bindKey: bindKey(\"Ctrl-Alt-S\", \"Command-Alt-S\"),\n exec: function(editor) { editor.sortLines(); },\n scrollIntoView: \"selection\",\n multiSelectAction: \"forEachLine\"\n}, {\n name: \"togglecomment\",\n description: \"Toggle comment\",\n bindKey: bindKey(\"Ctrl-/\", \"Command-/\"),\n exec: function(editor) { editor.toggleCommentLines(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"toggleBlockComment\",\n description: \"Toggle block comment\",\n bindKey: bindKey(\"Ctrl-Shift-/\", \"Command-Shift-/\"),\n exec: function(editor) { editor.toggleBlockComment(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"modifyNumberUp\",\n description: \"Modify number up\",\n bindKey: bindKey(\"Ctrl-Shift-Up\", \"Alt-Shift-Up\"),\n exec: function(editor) { editor.modifyNumber(1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"modifyNumberDown\",\n description: \"Modify number down\",\n bindKey: bindKey(\"Ctrl-Shift-Down\", \"Alt-Shift-Down\"),\n exec: function(editor) { editor.modifyNumber(-1); },\n scrollIntoView: \"cursor\",\n multiSelectAction: \"forEach\"\n}, {\n name: \"replace\",\n description: \"Replace\",\n bindKey: bindKey(\"Ctrl-H\", \"Command-Option-F\"),\n exec: function(editor) {\n config.loadModule(\"ace/ext/searchbox\", function(e) {e.Search(editor, true);});\n }\n}, {\n name: \"undo\",\n description: \"Undo\",\n bindKey: bindKey(\"Ctrl-Z\", \"Command-Z\"),\n exec: function(editor) { editor.undo(); }\n}, {\n name: \"redo\",\n description: \"Redo\",\n bindKey: bindKey(\"Ctrl-Shift-Z|Ctrl-Y\", \"Command-Shift-Z|Command-Y\"),\n exec: function(editor) { editor.redo(); }\n}, {\n name: \"copylinesup\",\n description: \"Copy lines up\",\n bindKey: bindKey(\"Alt-Shift-Up\", \"Command-Option-Up\"),\n exec: function(editor) { editor.copyLinesUp(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"movelinesup\",\n description: \"Move lines up\",\n bindKey: bindKey(\"Alt-Up\", \"Option-Up\"),\n exec: function(editor) { editor.moveLinesUp(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"copylinesdown\",\n description: \"Copy lines down\",\n bindKey: bindKey(\"Alt-Shift-Down\", \"Command-Option-Down\"),\n exec: function(editor) { editor.copyLinesDown(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"movelinesdown\",\n description: \"Move lines down\",\n bindKey: bindKey(\"Alt-Down\", \"Option-Down\"),\n exec: function(editor) { editor.moveLinesDown(); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"del\",\n description: \"Delete\",\n bindKey: bindKey(\"Delete\", \"Delete|Ctrl-D|Shift-Delete\"),\n exec: function(editor) { editor.remove(\"right\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"backspace\",\n description: \"Backspace\",\n bindKey: bindKey(\n \"Shift-Backspace|Backspace\",\n \"Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H\"\n ),\n exec: function(editor) { editor.remove(\"left\"); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"cut_or_delete\",\n description: \"Cut or delete\",\n bindKey: bindKey(\"Shift-Delete\", null),\n exec: function(editor) { \n if (editor.selection.isEmpty()) {\n editor.remove(\"left\");\n } else {\n return false;\n }\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolinestart\",\n description: \"Remove to line start\",\n bindKey: bindKey(\"Alt-Backspace\", \"Command-Backspace\"),\n exec: function(editor) { editor.removeToLineStart(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolineend\",\n description: \"Remove to line end\",\n bindKey: bindKey(\"Alt-Delete\", \"Ctrl-K|Command-Delete\"),\n exec: function(editor) { editor.removeToLineEnd(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolinestarthard\",\n description: \"Remove to line start hard\",\n bindKey: bindKey(\"Ctrl-Shift-Backspace\", null),\n exec: function(editor) {\n var range = editor.selection.getRange();\n range.start.column = 0;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removetolineendhard\",\n description: \"Remove to line end hard\",\n bindKey: bindKey(\"Ctrl-Shift-Delete\", null),\n exec: function(editor) {\n var range = editor.selection.getRange();\n range.end.column = Number.MAX_VALUE;\n editor.session.remove(range);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removewordleft\",\n description: \"Remove word left\",\n bindKey: bindKey(\"Ctrl-Backspace\", \"Alt-Backspace|Ctrl-Alt-Backspace\"),\n exec: function(editor) { editor.removeWordLeft(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"removewordright\",\n description: \"Remove word right\",\n bindKey: bindKey(\"Ctrl-Delete\", \"Alt-Delete\"),\n exec: function(editor) { editor.removeWordRight(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"outdent\",\n description: \"Outdent\",\n bindKey: bindKey(\"Shift-Tab\", \"Shift-Tab\"),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"indent\",\n description: \"Indent\",\n bindKey: bindKey(\"Tab\", \"Tab\"),\n exec: function(editor) { editor.indent(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"blockoutdent\",\n description: \"Block outdent\",\n bindKey: bindKey(\"Ctrl-[\", \"Ctrl-[\"),\n exec: function(editor) { editor.blockOutdent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"blockindent\",\n description: \"Block indent\",\n bindKey: bindKey(\"Ctrl-]\", \"Ctrl-]\"),\n exec: function(editor) { editor.blockIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"selectionPart\"\n}, {\n name: \"insertstring\",\n description: \"Insert string\",\n exec: function(editor, str) { editor.insert(str); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"inserttext\",\n description: \"Insert text\",\n exec: function(editor, args) {\n editor.insert(lang.stringRepeat(args.text || \"\", args.times || 1));\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"splitline\",\n description: \"Split line\",\n bindKey: bindKey(null, \"Ctrl-O\"),\n exec: function(editor) { editor.splitLine(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"transposeletters\",\n description: \"Transpose letters\",\n bindKey: bindKey(\"Alt-Shift-X\", \"Ctrl-T\"),\n exec: function(editor) { editor.transposeLetters(); },\n multiSelectAction: function(editor) {editor.transposeSelections(1); },\n scrollIntoView: \"cursor\"\n}, {\n name: \"touppercase\",\n description: \"To uppercase\",\n bindKey: bindKey(\"Ctrl-U\", \"Ctrl-U\"),\n exec: function(editor) { editor.toUpperCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"tolowercase\",\n description: \"To lowercase\",\n bindKey: bindKey(\"Ctrl-Shift-U\", \"Ctrl-Shift-U\"),\n exec: function(editor) { editor.toLowerCase(); },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"autoindent\",\n description: \"Auto Indent\",\n bindKey: bindKey(null, null),\n exec: function(editor) { editor.autoIndent(); },\n multiSelectAction: \"forEachLine\",\n scrollIntoView: \"animate\"\n}, {\n name: \"expandtoline\",\n description: \"Expand to line\",\n bindKey: bindKey(\"Ctrl-Shift-L\", \"Command-Shift-L\"),\n exec: function(editor) {\n var range = editor.selection.getRange();\n\n range.start.column = range.end.column = 0;\n range.end.row++;\n editor.selection.setRange(range, false);\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"joinlines\",\n description: \"Join lines\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var isBackwards = editor.selection.isBackwards();\n var selectionStart = isBackwards ? editor.selection.getSelectionLead() : editor.selection.getSelectionAnchor();\n var selectionEnd = isBackwards ? editor.selection.getSelectionAnchor() : editor.selection.getSelectionLead();\n var firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length;\n var selectedText = editor.session.doc.getTextRange(editor.selection.getRange());\n var selectedCount = selectedText.replace(/\\n\\s*/, \" \").length;\n var insertLine = editor.session.doc.getLine(selectionStart.row);\n\n for (var i = selectionStart.row + 1; i <= selectionEnd.row + 1; i++) {\n var curLine = lang.stringTrimLeft(lang.stringTrimRight(editor.session.doc.getLine(i)));\n if (curLine.length !== 0) {\n curLine = \" \" + curLine;\n }\n insertLine += curLine;\n }\n\n if (selectionEnd.row + 1 < (editor.session.doc.getLength() - 1)) {\n insertLine += editor.session.doc.getNewLineCharacter();\n }\n\n editor.clearSelection();\n editor.session.doc.replace(new Range(selectionStart.row, 0, selectionEnd.row + 2, 0), insertLine);\n\n if (selectedCount > 0) {\n editor.selection.moveCursorTo(selectionStart.row, selectionStart.column);\n editor.selection.selectTo(selectionStart.row, selectionStart.column + selectedCount);\n } else {\n firstLineEndCol = editor.session.doc.getLine(selectionStart.row).length > firstLineEndCol ? (firstLineEndCol + 1) : firstLineEndCol;\n editor.selection.moveCursorTo(selectionStart.row, firstLineEndCol);\n }\n },\n multiSelectAction: \"forEach\",\n readOnly: true\n}, {\n name: \"invertSelection\",\n description: \"Invert selection\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n var endRow = editor.session.doc.getLength() - 1;\n var endCol = editor.session.doc.getLine(endRow).length;\n var ranges = editor.selection.rangeList.ranges;\n var newRanges = [];\n if (ranges.length < 1) {\n ranges = [editor.selection.getRange()];\n }\n\n for (var i = 0; i < ranges.length; i++) {\n if (i == (ranges.length - 1)) {\n if (!(ranges[i].end.row === endRow && ranges[i].end.column === endCol)) {\n newRanges.push(new Range(ranges[i].end.row, ranges[i].end.column, endRow, endCol));\n }\n }\n\n if (i === 0) {\n if (!(ranges[i].start.row === 0 && ranges[i].start.column === 0)) {\n newRanges.push(new Range(0, 0, ranges[i].start.row, ranges[i].start.column));\n }\n } else {\n newRanges.push(new Range(ranges[i-1].end.row, ranges[i-1].end.column, ranges[i].start.row, ranges[i].start.column));\n }\n }\n\n editor.exitMultiSelectMode();\n editor.clearSelection();\n\n for(var i = 0; i < newRanges.length; i++) {\n editor.selection.addRange(newRanges[i], false);\n }\n },\n readOnly: true,\n scrollIntoView: \"none\"\n}, {\n name: \"addLineAfter\",\n description: \"Add new line after the current line\",\n exec: function(editor) {\n editor.selection.clearSelection();\n editor.navigateLineEnd();\n editor.insert(\"\\n\");\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"addLineBefore\",\n description: \"Add new line before the current line\",\n exec: function(editor) {\n editor.selection.clearSelection();\n var cursor = editor.getCursorPosition();\n editor.selection.moveTo(cursor.row - 1, Number.MAX_VALUE);\n editor.insert(\"\\n\");\n if (cursor.row === 0) editor.navigateUp();\n },\n multiSelectAction: \"forEach\",\n scrollIntoView: \"cursor\"\n}, {\n name: \"openCommandPallete\",\n description: \"Open command pallete\",\n bindKey: bindKey(\"F1\", \"F1\"),\n exec: function(editor) {\n editor.prompt({ $type: \"commands\" });\n },\n readOnly: true\n}, {\n name: \"modeSelect\",\n description: \"Change language mode...\",\n bindKey: bindKey(null, null),\n exec: function(editor) {\n editor.prompt({ $type: \"modes\" });\n },\n readOnly: true\n}];\n\nfor (var i = 1; i < 9; i++) {\n exports.commands.push({\n name: \"foldToLevel\" + i,\n description: \"Fold To Level \" + i,\n level: i,\n exec: function(editor) { editor.session.foldToLevel(this.level); },\n scrollIntoView: \"center\",\n readOnly: true\n });\n}\n\n});\n\nace.define(\"ace/editor\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/useragent\",\"ace/keyboard/textinput\",\"ace/mouse/mouse_handler\",\"ace/mouse/fold_handler\",\"ace/keyboard/keybinding\",\"ace/edit_session\",\"ace/search\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/commands/command_manager\",\"ace/commands/default_commands\",\"ace/config\",\"ace/token_iterator\",\"ace/clipboard\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar lang = require(\"./lib/lang\");\nvar useragent = require(\"./lib/useragent\");\nvar TextInput = require(\"./keyboard/textinput\").TextInput;\nvar MouseHandler = require(\"./mouse/mouse_handler\").MouseHandler;\nvar FoldHandler = require(\"./mouse/fold_handler\").FoldHandler;\nvar KeyBinding = require(\"./keyboard/keybinding\").KeyBinding;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar Search = require(\"./search\").Search;\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar CommandManager = require(\"./commands/command_manager\").CommandManager;\nvar defaultCommands = require(\"./commands/default_commands\").commands;\nvar config = require(\"./config\");\nvar TokenIterator = require(\"./token_iterator\").TokenIterator;\n\nvar clipboard = require(\"./clipboard\");\nvar Editor = function(renderer, session, options) {\n this.$toDestroy = [];\n var container = renderer.getContainerElement();\n this.container = container;\n this.renderer = renderer;\n this.id = \"editor\" + (++Editor.$uid);\n\n this.commands = new CommandManager(useragent.isMac ? \"mac\" : \"win\", defaultCommands);\n if (typeof document == \"object\") {\n this.textInput = new TextInput(renderer.getTextAreaContainer(), this);\n this.renderer.textarea = this.textInput.getElement();\n this.$mouseHandler = new MouseHandler(this);\n new FoldHandler(this);\n }\n\n this.keyBinding = new KeyBinding(this);\n\n this.$search = new Search().set({\n wrap: true\n });\n\n this.$historyTracker = this.$historyTracker.bind(this);\n this.commands.on(\"exec\", this.$historyTracker);\n\n this.$initOperationListeners();\n \n this._$emitInputEvent = lang.delayedCall(function() {\n this._signal(\"input\", {});\n if (this.session && this.session.bgTokenizer)\n this.session.bgTokenizer.scheduleStart();\n }.bind(this));\n \n this.on(\"change\", function(_, _self) {\n _self._$emitInputEvent.schedule(31);\n });\n\n this.setSession(session || options && options.session || new EditSession(\"\"));\n config.resetOptions(this);\n if (options)\n this.setOptions(options);\n config._signal(\"editor\", this);\n};\n\nEditor.$uid = 0;\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$initOperationListeners = function() {\n this.commands.on(\"exec\", this.startOperation.bind(this), true);\n this.commands.on(\"afterExec\", this.endOperation.bind(this), true);\n\n this.$opResetTimer = lang.delayedCall(this.endOperation.bind(this, true));\n this.on(\"change\", function() {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.docChanged = true;\n }.bind(this), true);\n \n this.on(\"changeSelection\", function() {\n if (!this.curOp) {\n this.startOperation();\n this.curOp.selectionBefore = this.$lastSel;\n }\n this.curOp.selectionChanged = true;\n }.bind(this), true);\n };\n\n this.curOp = null;\n this.prevOp = {};\n this.startOperation = function(commandEvent) {\n if (this.curOp) {\n if (!commandEvent || this.curOp.command)\n return;\n this.prevOp = this.curOp;\n }\n if (!commandEvent) {\n this.previousCommand = null;\n commandEvent = {};\n }\n\n this.$opResetTimer.schedule();\n this.curOp = this.session.curOp = {\n command: commandEvent.command || {},\n args: commandEvent.args,\n scrollTop: this.renderer.scrollTop\n };\n this.curOp.selectionBefore = this.selection.toJSON();\n };\n\n this.endOperation = function(e) {\n if (this.curOp && this.session) {\n if (e && e.returnValue === false || !this.session)\n return (this.curOp = null);\n if (e == true && this.curOp.command && this.curOp.command.name == \"mouse\")\n return;\n this._signal(\"beforeEndOperation\");\n if (!this.curOp) return;\n var command = this.curOp.command;\n var scrollIntoView = command && command.scrollIntoView;\n if (scrollIntoView) {\n switch (scrollIntoView) {\n case \"center-animate\":\n scrollIntoView = \"animate\";\n case \"center\":\n this.renderer.scrollCursorIntoView(null, 0.5);\n break;\n case \"animate\":\n case \"cursor\":\n this.renderer.scrollCursorIntoView();\n break;\n case \"selectionPart\":\n var range = this.selection.getRange();\n var config = this.renderer.layerConfig;\n if (range.start.row >= config.lastRow || range.end.row <= config.firstRow) {\n this.renderer.scrollSelectionIntoView(this.selection.anchor, this.selection.lead);\n }\n break;\n default:\n break;\n }\n if (scrollIntoView == \"animate\")\n this.renderer.animateScrolling(this.curOp.scrollTop);\n }\n var sel = this.selection.toJSON();\n this.curOp.selectionAfter = sel;\n this.$lastSel = this.selection.toJSON();\n this.session.getUndoManager().addSelection(sel);\n this.prevOp = this.curOp;\n this.curOp = null;\n }\n };\n this.$mergeableCommands = [\"backspace\", \"del\", \"insertstring\"];\n this.$historyTracker = function(e) {\n if (!this.$mergeUndoDeltas)\n return;\n\n var prev = this.prevOp;\n var mergeableCommands = this.$mergeableCommands;\n var shouldMerge = prev.command && (e.command.name == prev.command.name);\n if (e.command.name == \"insertstring\") {\n var text = e.args;\n if (this.mergeNextCommand === undefined)\n this.mergeNextCommand = true;\n\n shouldMerge = shouldMerge\n && this.mergeNextCommand // previous command allows to coalesce with\n && (!/\\s/.test(text) || /\\s/.test(prev.args)); // previous insertion was of same type\n\n this.mergeNextCommand = true;\n } else {\n shouldMerge = shouldMerge\n && mergeableCommands.indexOf(e.command.name) !== -1; // the command is mergeable\n }\n\n if (\n this.$mergeUndoDeltas != \"always\"\n && Date.now() - this.sequenceStartTime > 2000\n ) {\n shouldMerge = false; // the sequence is too long\n }\n\n if (shouldMerge)\n this.session.mergeUndoDeltas = true;\n else if (mergeableCommands.indexOf(e.command.name) !== -1)\n this.sequenceStartTime = Date.now();\n };\n this.setKeyboardHandler = function(keyboardHandler, cb) {\n if (keyboardHandler && typeof keyboardHandler === \"string\" && keyboardHandler != \"ace\") {\n this.$keybindingId = keyboardHandler;\n var _self = this;\n config.loadModule([\"keybinding\", keyboardHandler], function(module) {\n if (_self.$keybindingId == keyboardHandler)\n _self.keyBinding.setKeyboardHandler(module && module.handler);\n cb && cb();\n });\n } else {\n this.$keybindingId = null;\n this.keyBinding.setKeyboardHandler(keyboardHandler);\n cb && cb();\n }\n };\n this.getKeyboardHandler = function() {\n return this.keyBinding.getKeyboardHandler();\n };\n this.setSession = function(session) {\n if (this.session == session)\n return;\n if (this.curOp) this.endOperation();\n this.curOp = {};\n\n var oldSession = this.session;\n if (oldSession) {\n this.session.off(\"change\", this.$onDocumentChange);\n this.session.off(\"changeMode\", this.$onChangeMode);\n this.session.off(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n this.session.off(\"changeTabSize\", this.$onChangeTabSize);\n this.session.off(\"changeWrapLimit\", this.$onChangeWrapLimit);\n this.session.off(\"changeWrapMode\", this.$onChangeWrapMode);\n this.session.off(\"changeFold\", this.$onChangeFold);\n this.session.off(\"changeFrontMarker\", this.$onChangeFrontMarker);\n this.session.off(\"changeBackMarker\", this.$onChangeBackMarker);\n this.session.off(\"changeBreakpoint\", this.$onChangeBreakpoint);\n this.session.off(\"changeAnnotation\", this.$onChangeAnnotation);\n this.session.off(\"changeOverwrite\", this.$onCursorChange);\n this.session.off(\"changeScrollTop\", this.$onScrollTopChange);\n this.session.off(\"changeScrollLeft\", this.$onScrollLeftChange);\n\n var selection = this.session.getSelection();\n selection.off(\"changeCursor\", this.$onCursorChange);\n selection.off(\"changeSelection\", this.$onSelectionChange);\n }\n\n this.session = session;\n if (session) {\n this.$onDocumentChange = this.onDocumentChange.bind(this);\n session.on(\"change\", this.$onDocumentChange);\n this.renderer.setSession(session);\n \n this.$onChangeMode = this.onChangeMode.bind(this);\n session.on(\"changeMode\", this.$onChangeMode);\n \n this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);\n session.on(\"tokenizerUpdate\", this.$onTokenizerUpdate);\n \n this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);\n session.on(\"changeTabSize\", this.$onChangeTabSize);\n \n this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);\n session.on(\"changeWrapLimit\", this.$onChangeWrapLimit);\n \n this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);\n session.on(\"changeWrapMode\", this.$onChangeWrapMode);\n \n this.$onChangeFold = this.onChangeFold.bind(this);\n session.on(\"changeFold\", this.$onChangeFold);\n \n this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);\n this.session.on(\"changeFrontMarker\", this.$onChangeFrontMarker);\n \n this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);\n this.session.on(\"changeBackMarker\", this.$onChangeBackMarker);\n \n this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);\n this.session.on(\"changeBreakpoint\", this.$onChangeBreakpoint);\n \n this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);\n this.session.on(\"changeAnnotation\", this.$onChangeAnnotation);\n \n this.$onCursorChange = this.onCursorChange.bind(this);\n this.session.on(\"changeOverwrite\", this.$onCursorChange);\n \n this.$onScrollTopChange = this.onScrollTopChange.bind(this);\n this.session.on(\"changeScrollTop\", this.$onScrollTopChange);\n \n this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);\n this.session.on(\"changeScrollLeft\", this.$onScrollLeftChange);\n \n this.selection = session.getSelection();\n this.selection.on(\"changeCursor\", this.$onCursorChange);\n \n this.$onSelectionChange = this.onSelectionChange.bind(this);\n this.selection.on(\"changeSelection\", this.$onSelectionChange);\n \n this.onChangeMode();\n \n this.onCursorChange();\n \n this.onScrollTopChange();\n this.onScrollLeftChange();\n this.onSelectionChange();\n this.onChangeFrontMarker();\n this.onChangeBackMarker();\n this.onChangeBreakpoint();\n this.onChangeAnnotation();\n this.session.getUseWrapMode() && this.renderer.adjustWrapLimit();\n this.renderer.updateFull();\n } else {\n this.selection = null;\n this.renderer.setSession(session);\n }\n\n this._signal(\"changeSession\", {\n session: session,\n oldSession: oldSession\n });\n \n this.curOp = null;\n \n oldSession && oldSession._signal(\"changeEditor\", {oldEditor: this});\n session && session._signal(\"changeEditor\", {editor: this});\n \n if (session && session.bgTokenizer)\n session.bgTokenizer.scheduleStart();\n };\n this.getSession = function() {\n return this.session;\n };\n this.setValue = function(val, cursorPos) {\n this.session.doc.setValue(val);\n\n if (!cursorPos)\n this.selectAll();\n else if (cursorPos == 1)\n this.navigateFileEnd();\n else if (cursorPos == -1)\n this.navigateFileStart();\n\n return val;\n };\n this.getValue = function() {\n return this.session.getValue();\n };\n this.getSelection = function() {\n return this.selection;\n };\n this.resize = function(force) {\n this.renderer.onResize(force);\n };\n this.setTheme = function(theme, cb) {\n this.renderer.setTheme(theme, cb);\n };\n this.getTheme = function() {\n return this.renderer.getTheme();\n };\n this.setStyle = function(style) {\n this.renderer.setStyle(style);\n };\n this.unsetStyle = function(style) {\n this.renderer.unsetStyle(style);\n };\n this.getFontSize = function () {\n return this.getOption(\"fontSize\") ||\n dom.computedStyle(this.container).fontSize;\n };\n this.setFontSize = function(size) {\n this.setOption(\"fontSize\", size);\n };\n\n this.$highlightBrackets = function() {\n if (this.$highlightPending) {\n return;\n }\n var self = this;\n this.$highlightPending = true;\n setTimeout(function () {\n self.$highlightPending = false;\n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n if (session.$bracketHighlight) {\n session.$bracketHighlight.markerIds.forEach(function(id) {\n session.removeMarker(id);\n });\n session.$bracketHighlight = null;\n }\n var ranges = session.getMatchingBracketRanges(self.getCursorPosition());\n if (!ranges && session.$mode.getMatching) \n ranges = session.$mode.getMatching(self.session);\n if (!ranges)\n return;\n\n var markerType = \"ace_bracket\";\n if (!Array.isArray(ranges)) {\n ranges = [ranges];\n } else if (ranges.length == 1) {\n markerType = \"ace_error_bracket\";\n }\n if (ranges.length == 2) {\n if (Range.comparePoints(ranges[0].end, ranges[1].start) == 0)\n ranges = [Range.fromPoints(ranges[0].start, ranges[1].end)];\n else if (Range.comparePoints(ranges[0].start, ranges[1].end) == 0)\n ranges = [Range.fromPoints(ranges[1].start, ranges[0].end)];\n }\n\n session.$bracketHighlight = {\n ranges: ranges,\n markerIds: ranges.map(function(range) {\n return session.addMarker(range, markerType, \"text\");\n })\n };\n }, 50);\n };\n this.$highlightTags = function() {\n if (this.$highlightTagPending)\n return;\n var self = this;\n this.$highlightTagPending = true;\n setTimeout(function() {\n self.$highlightTagPending = false;\n \n var session = self.session;\n if (!session || !session.bgTokenizer) return;\n \n var pos = self.getCursorPosition();\n var iterator = new TokenIterator(self.session, pos.row, pos.column);\n var token = iterator.getCurrentToken();\n \n if (!token || !/\\b(?:tag-open|tag-name)/.test(token.type)) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n return;\n }\n \n if (token.type.indexOf(\"tag-open\") !== -1) {\n token = iterator.stepForward();\n if (!token)\n return;\n }\n \n var tag = token.value;\n var currentTag = token.value;\n var depth = 0;\n var prevToken = iterator.stepBackward();\n \n if (prevToken.value === '<'){\n do {\n prevToken = token;\n token = iterator.stepForward();\n\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n currentTag = token.value;\n if (tag === currentTag) {\n if (prevToken.value === '<') {\n depth++;\n } else if (prevToken.value === '') { // self closing tag\n depth--;\n }\n }\n \n } while (token && depth >= 0);\n } else {\n do {\n token = prevToken;\n prevToken = iterator.stepBackward();\n\n if (token) {\n if (token.type.indexOf('tag-name') !== -1) {\n if (tag === token.value) {\n if (prevToken.value === '<') {\n depth++;\n } else if (prevToken.value === '') { // self closing tag\n var stepCount = 0;\n var tmpToken = prevToken;\n while (tmpToken) {\n if (tmpToken.type.indexOf('tag-name') !== -1 && tmpToken.value === tag) {\n depth--;\n break;\n } else if (tmpToken.value === '<') {\n break;\n }\n tmpToken = iterator.stepBackward();\n stepCount++;\n }\n for (var i = 0; i < stepCount; i++) {\n iterator.stepForward();\n }\n }\n }\n } while (prevToken && depth <= 0);\n iterator.stepForward();\n }\n \n if (!token) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n return;\n }\n \n var row = iterator.getCurrentTokenRow();\n var column = iterator.getCurrentTokenColumn();\n var range = new Range(row, column, row, column+token.value.length);\n var sbm = session.$backMarkers[session.$tagHighlight];\n if (session.$tagHighlight && sbm != undefined && range.compareRange(sbm.range) !== 0) {\n session.removeMarker(session.$tagHighlight);\n session.$tagHighlight = null;\n }\n \n if (!session.$tagHighlight)\n session.$tagHighlight = session.addMarker(range, \"ace_bracket\", \"text\");\n }, 50);\n };\n this.focus = function() {\n var _self = this;\n setTimeout(function() {\n if (!_self.isFocused())\n _self.textInput.focus();\n });\n this.textInput.focus();\n };\n this.isFocused = function() {\n return this.textInput.isFocused();\n };\n this.blur = function() {\n this.textInput.blur();\n };\n this.onFocus = function(e) {\n if (this.$isFocused)\n return;\n this.$isFocused = true;\n this.renderer.showCursor();\n this.renderer.visualizeFocus();\n this._emit(\"focus\", e);\n };\n this.onBlur = function(e) {\n if (!this.$isFocused)\n return;\n this.$isFocused = false;\n this.renderer.hideCursor();\n this.renderer.visualizeBlur();\n this._emit(\"blur\", e);\n };\n\n this.$cursorChange = function() {\n this.renderer.updateCursor();\n this.$highlightBrackets();\n this.$highlightTags();\n this.$updateHighlightActiveLine();\n };\n this.onDocumentChange = function(delta) {\n var wrap = this.session.$useWrapMode;\n var lastRow = (delta.start.row == delta.end.row ? delta.end.row : Infinity);\n this.renderer.updateLines(delta.start.row, lastRow, wrap);\n\n this._signal(\"change\", delta);\n this.$cursorChange();\n };\n\n this.onTokenizerUpdate = function(e) {\n var rows = e.data;\n this.renderer.updateLines(rows.first, rows.last);\n };\n\n\n this.onScrollTopChange = function() {\n this.renderer.scrollToY(this.session.getScrollTop());\n };\n\n this.onScrollLeftChange = function() {\n this.renderer.scrollToX(this.session.getScrollLeft());\n };\n this.onCursorChange = function() {\n this.$cursorChange();\n this._signal(\"changeSelection\");\n };\n\n this.$updateHighlightActiveLine = function() {\n var session = this.getSession();\n\n var highlight;\n if (this.$highlightActiveLine) {\n if (this.$selectionStyle != \"line\" || !this.selection.isMultiLine())\n highlight = this.getCursorPosition();\n if (this.renderer.theme && this.renderer.theme.$selectionColorConflict && !this.selection.isEmpty())\n highlight = false;\n if (this.renderer.$maxLines && this.session.getLength() === 1 && !(this.renderer.$minLines > 1))\n highlight = false;\n }\n\n if (session.$highlightLineMarker && !highlight) {\n session.removeMarker(session.$highlightLineMarker.id);\n session.$highlightLineMarker = null;\n } else if (!session.$highlightLineMarker && highlight) {\n var range = new Range(highlight.row, highlight.column, highlight.row, Infinity);\n range.id = session.addMarker(range, \"ace_active-line\", \"screenLine\");\n session.$highlightLineMarker = range;\n } else if (highlight) {\n session.$highlightLineMarker.start.row = highlight.row;\n session.$highlightLineMarker.end.row = highlight.row;\n session.$highlightLineMarker.start.column = highlight.column;\n session._signal(\"changeBackMarker\");\n }\n };\n\n this.onSelectionChange = function(e) {\n var session = this.session;\n\n if (session.$selectionMarker) {\n session.removeMarker(session.$selectionMarker);\n }\n session.$selectionMarker = null;\n\n if (!this.selection.isEmpty()) {\n var range = this.selection.getRange();\n var style = this.getSelectionStyle();\n session.$selectionMarker = session.addMarker(range, \"ace_selection\", style);\n } else {\n this.$updateHighlightActiveLine();\n }\n\n var re = this.$highlightSelectedWord && this.$getSelectionHighLightRegexp();\n this.session.highlight(re);\n\n this._signal(\"changeSelection\");\n };\n\n this.$getSelectionHighLightRegexp = function() {\n var session = this.session;\n\n var selection = this.getSelectionRange();\n if (selection.isEmpty() || selection.isMultiLine())\n return;\n\n var startColumn = selection.start.column;\n var endColumn = selection.end.column;\n var line = session.getLine(selection.start.row);\n \n var needle = line.substring(startColumn, endColumn);\n if (needle.length > 5000 || !/[\\w\\d]/.test(needle))\n return;\n\n var re = this.$search.$assembleRegExp({\n wholeWord: true,\n caseSensitive: true,\n needle: needle\n });\n \n var wordWithBoundary = line.substring(startColumn - 1, endColumn + 1);\n if (!re.test(wordWithBoundary))\n return;\n \n return re;\n };\n\n\n this.onChangeFrontMarker = function() {\n this.renderer.updateFrontMarkers();\n };\n\n this.onChangeBackMarker = function() {\n this.renderer.updateBackMarkers();\n };\n\n\n this.onChangeBreakpoint = function() {\n this.renderer.updateBreakpoints();\n };\n\n this.onChangeAnnotation = function() {\n this.renderer.setAnnotations(this.session.getAnnotations());\n };\n\n\n this.onChangeMode = function(e) {\n this.renderer.updateText();\n this._emit(\"changeMode\", e);\n };\n\n\n this.onChangeWrapLimit = function() {\n this.renderer.updateFull();\n };\n\n this.onChangeWrapMode = function() {\n this.renderer.onResize(true);\n };\n\n\n this.onChangeFold = function() {\n this.$updateHighlightActiveLine();\n this.renderer.updateFull();\n };\n this.getSelectedText = function() {\n return this.session.getTextRange(this.getSelectionRange());\n };\n this.getCopyText = function() {\n var text = this.getSelectedText();\n var nl = this.session.doc.getNewLineCharacter();\n var copyLine= false;\n if (!text && this.$copyWithEmptySelection) {\n copyLine = true;\n var ranges = this.selection.getAllRanges();\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (i && ranges[i - 1].start.row == range.start.row)\n continue;\n text += this.session.getLine(range.start.row) + nl;\n }\n }\n var e = {text: text};\n this._signal(\"copy\", e);\n clipboard.lineMode = copyLine ? e.text : false;\n return e.text;\n };\n this.onCopy = function() {\n this.commands.exec(\"copy\", this);\n };\n this.onCut = function() {\n this.commands.exec(\"cut\", this);\n };\n this.onPaste = function(text, event) {\n var e = {text: text, event: event};\n this.commands.exec(\"paste\", this, e);\n };\n \n this.$handlePaste = function(e) {\n if (typeof e == \"string\") \n e = {text: e};\n this._signal(\"paste\", e);\n var text = e.text;\n\n var lineMode = text === clipboard.lineMode;\n var session = this.session;\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode) {\n if (lineMode)\n session.insert({ row: this.selection.lead.row, column: 0 }, text);\n else\n this.insert(text);\n } else if (lineMode) {\n this.selection.rangeList.ranges.forEach(function(range) {\n session.insert({ row: range.start.row, column: 0 }, text);\n });\n } else {\n var lines = text.split(/\\r\\n|\\r|\\n/);\n var ranges = this.selection.rangeList.ranges;\n \n var isFullLine = lines.length == 2 && (!lines[0] || !lines[1]);\n if (lines.length != ranges.length || isFullLine)\n return this.commands.exec(\"insertstring\", this, text);\n \n for (var i = ranges.length; i--;) {\n var range = ranges[i];\n if (!range.isEmpty())\n session.remove(range);\n \n session.insert(range.start, lines[i]);\n }\n }\n };\n\n this.execCommand = function(command, args) {\n return this.commands.exec(command, this, args);\n };\n this.insert = function(text, pasted) {\n var session = this.session;\n var mode = session.getMode();\n var cursor = this.getCursorPosition();\n\n if (this.getBehavioursEnabled() && !pasted) {\n var transform = mode.transformAction(session.getState(cursor.row), 'insertion', this, session, text);\n if (transform) {\n if (text !== transform.text) {\n if (!this.inVirtualSelectionMode) {\n this.session.mergeUndoDeltas = false;\n this.mergeNextCommand = false;\n }\n }\n text = transform.text;\n\n }\n }\n \n if (text == \"\\t\")\n text = this.session.getTabString();\n if (!this.selection.isEmpty()) {\n var range = this.getSelectionRange();\n cursor = this.session.remove(range);\n this.clearSelection();\n }\n else if (this.session.getOverwrite() && text.indexOf(\"\\n\") == -1) {\n var range = new Range.fromPoints(cursor, cursor);\n range.end.column += text.length;\n this.session.remove(range);\n }\n\n if (text == \"\\n\" || text == \"\\r\\n\") {\n var line = session.getLine(cursor.row);\n if (cursor.column > line.search(/\\S|$/)) {\n var d = line.substr(cursor.column).search(/\\S|$/);\n session.doc.removeInLine(cursor.row, cursor.column, cursor.column + d);\n }\n }\n this.clearSelection();\n\n var start = cursor.column;\n var lineState = session.getState(cursor.row);\n var line = session.getLine(cursor.row);\n var shouldOutdent = mode.checkOutdent(lineState, line, text);\n session.insert(cursor, text);\n\n if (transform && transform.selection) {\n if (transform.selection.length == 2) { // Transform relative to the current column\n this.selection.setSelectionRange(\n new Range(cursor.row, start + transform.selection[0],\n cursor.row, start + transform.selection[1]));\n } else { // Transform relative to the current row.\n this.selection.setSelectionRange(\n new Range(cursor.row + transform.selection[0],\n transform.selection[1],\n cursor.row + transform.selection[2],\n transform.selection[3]));\n }\n }\n if (this.$enableAutoIndent) {\n if (session.getDocument().isNewLine(text)) {\n var lineIndent = mode.getNextLineIndent(lineState, line.slice(0, cursor.column), session.getTabString());\n\n session.insert({row: cursor.row+1, column: 0}, lineIndent);\n }\n if (shouldOutdent)\n mode.autoOutdent(lineState, session, cursor.row);\n }\n };\n\n this.autoIndent = function () {\n var session = this.session;\n var mode = session.getMode();\n\n var startRow, endRow;\n if (this.selection.isEmpty()) {\n startRow = 0;\n endRow = session.doc.getLength() - 1;\n } else {\n var selectedRange = this.getSelectionRange();\n\n startRow = selectedRange.start.row;\n endRow = selectedRange.end.row;\n }\n\n var prevLineState = \"\";\n var prevLine = \"\";\n var lineIndent = \"\";\n var line, currIndent, range;\n var tab = session.getTabString();\n\n for (var row = startRow; row <= endRow; row++) {\n if (row > 0) {\n prevLineState = session.getState(row - 1);\n prevLine = session.getLine(row - 1);\n lineIndent = mode.getNextLineIndent(prevLineState, prevLine, tab);\n }\n\n line = session.getLine(row);\n currIndent = mode.$getIndent(line);\n if (lineIndent !== currIndent) {\n if (currIndent.length > 0) {\n range = new Range(row, 0, row, currIndent.length);\n session.remove(range);\n }\n if (lineIndent.length > 0) {\n session.insert({row: row, column: 0}, lineIndent);\n }\n }\n\n mode.autoOutdent(prevLineState, session, row);\n }\n };\n\n\n this.onTextInput = function(text, composition) {\n if (!composition)\n return this.keyBinding.onTextInput(text);\n \n this.startOperation({command: { name: \"insertstring\" }});\n var applyComposition = this.applyComposition.bind(this, text, composition);\n if (this.selection.rangeCount)\n this.forEachSelection(applyComposition);\n else\n applyComposition();\n this.endOperation();\n };\n \n this.applyComposition = function(text, composition) {\n if (composition.extendLeft || composition.extendRight) {\n var r = this.selection.getRange();\n r.start.column -= composition.extendLeft;\n r.end.column += composition.extendRight;\n if (r.start.column < 0) {\n r.start.row--;\n r.start.column += this.session.getLine(r.start.row).length + 1;\n }\n this.selection.setRange(r);\n if (!text && !r.isEmpty())\n this.remove();\n }\n if (text || !this.selection.isEmpty())\n this.insert(text, true);\n if (composition.restoreStart || composition.restoreEnd) {\n var r = this.selection.getRange();\n r.start.column -= composition.restoreStart;\n r.end.column -= composition.restoreEnd;\n this.selection.setRange(r);\n }\n };\n\n this.onCommandKey = function(e, hashId, keyCode) {\n return this.keyBinding.onCommandKey(e, hashId, keyCode);\n };\n this.setOverwrite = function(overwrite) {\n this.session.setOverwrite(overwrite);\n };\n this.getOverwrite = function() {\n return this.session.getOverwrite();\n };\n this.toggleOverwrite = function() {\n this.session.toggleOverwrite();\n };\n this.setScrollSpeed = function(speed) {\n this.setOption(\"scrollSpeed\", speed);\n };\n this.getScrollSpeed = function() {\n return this.getOption(\"scrollSpeed\");\n };\n this.setDragDelay = function(dragDelay) {\n this.setOption(\"dragDelay\", dragDelay);\n };\n this.getDragDelay = function() {\n return this.getOption(\"dragDelay\");\n };\n this.setSelectionStyle = function(val) {\n this.setOption(\"selectionStyle\", val);\n };\n this.getSelectionStyle = function() {\n return this.getOption(\"selectionStyle\");\n };\n this.setHighlightActiveLine = function(shouldHighlight) {\n this.setOption(\"highlightActiveLine\", shouldHighlight);\n };\n this.getHighlightActiveLine = function() {\n return this.getOption(\"highlightActiveLine\");\n };\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption(\"highlightGutterLine\");\n };\n this.setHighlightSelectedWord = function(shouldHighlight) {\n this.setOption(\"highlightSelectedWord\", shouldHighlight);\n };\n this.getHighlightSelectedWord = function() {\n return this.$highlightSelectedWord;\n };\n\n this.setAnimatedScroll = function(shouldAnimate){\n this.renderer.setAnimatedScroll(shouldAnimate);\n };\n\n this.getAnimatedScroll = function(){\n return this.renderer.getAnimatedScroll();\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.renderer.setShowInvisibles(showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.renderer.getShowInvisibles();\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.renderer.setDisplayIndentGuides(display);\n };\n\n this.getDisplayIndentGuides = function() {\n return this.renderer.getDisplayIndentGuides();\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.renderer.setShowPrintMargin(showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.renderer.getShowPrintMargin();\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.renderer.setPrintMarginColumn(showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.renderer.getPrintMarginColumn();\n };\n this.setReadOnly = function(readOnly) {\n this.setOption(\"readOnly\", readOnly);\n };\n this.getReadOnly = function() {\n return this.getOption(\"readOnly\");\n };\n this.setBehavioursEnabled = function (enabled) {\n this.setOption(\"behavioursEnabled\", enabled);\n };\n this.getBehavioursEnabled = function () {\n return this.getOption(\"behavioursEnabled\");\n };\n this.setWrapBehavioursEnabled = function (enabled) {\n this.setOption(\"wrapBehavioursEnabled\", enabled);\n };\n this.getWrapBehavioursEnabled = function () {\n return this.getOption(\"wrapBehavioursEnabled\");\n };\n this.setShowFoldWidgets = function(show) {\n this.setOption(\"showFoldWidgets\", show);\n\n };\n this.getShowFoldWidgets = function() {\n return this.getOption(\"showFoldWidgets\");\n };\n\n this.setFadeFoldWidgets = function(fade) {\n this.setOption(\"fadeFoldWidgets\", fade);\n };\n\n this.getFadeFoldWidgets = function() {\n return this.getOption(\"fadeFoldWidgets\");\n };\n this.remove = function(dir) {\n if (this.selection.isEmpty()){\n if (dir == \"left\")\n this.selection.selectLeft();\n else\n this.selection.selectRight();\n }\n\n var range = this.getSelectionRange();\n if (this.getBehavioursEnabled()) {\n var session = this.session;\n var state = session.getState(range.start.row);\n var new_range = session.getMode().transformAction(state, 'deletion', this, session, range);\n\n if (range.end.column === 0) {\n var text = session.getTextRange(range);\n if (text[text.length - 1] == \"\\n\") {\n var line = session.getLine(range.end.row);\n if (/^\\s+$/.test(line)) {\n range.end.column = line.length;\n }\n }\n }\n if (new_range)\n range = new_range;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.removeWordRight = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordRight();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeWordLeft = function() {\n if (this.selection.isEmpty())\n this.selection.selectWordLeft();\n\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineStart = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineStart();\n if (this.selection.isEmpty())\n this.selection.selectLeft();\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n };\n this.removeToLineEnd = function() {\n if (this.selection.isEmpty())\n this.selection.selectLineEnd();\n\n var range = this.getSelectionRange();\n if (range.start.column == range.end.column && range.start.row == range.end.row) {\n range.end.column = 0;\n range.end.row++;\n }\n\n this.session.remove(range);\n this.clearSelection();\n };\n this.splitLine = function() {\n if (!this.selection.isEmpty()) {\n this.session.remove(this.getSelectionRange());\n this.clearSelection();\n }\n\n var cursor = this.getCursorPosition();\n this.insert(\"\\n\");\n this.moveCursorToPosition(cursor);\n };\n this.transposeLetters = function() {\n if (!this.selection.isEmpty()) {\n return;\n }\n\n var cursor = this.getCursorPosition();\n var column = cursor.column;\n if (column === 0)\n return;\n\n var line = this.session.getLine(cursor.row);\n var swap, range;\n if (column < line.length) {\n swap = line.charAt(column) + line.charAt(column-1);\n range = new Range(cursor.row, column-1, cursor.row, column+1);\n }\n else {\n swap = line.charAt(column-1) + line.charAt(column-2);\n range = new Range(cursor.row, column-2, cursor.row, column);\n }\n this.session.replace(range, swap);\n this.session.selection.moveToPosition(range.end);\n };\n this.toLowerCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toLowerCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.toUpperCase = function() {\n var originalRange = this.getSelectionRange();\n if (this.selection.isEmpty()) {\n this.selection.selectWord();\n }\n\n var range = this.getSelectionRange();\n var text = this.session.getTextRange(range);\n this.session.replace(range, text.toUpperCase());\n this.selection.setSelectionRange(originalRange);\n };\n this.indent = function() {\n var session = this.session;\n var range = this.getSelectionRange();\n\n if (range.start.row < range.end.row) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n } else if (range.start.column < range.end.column) {\n var text = session.getTextRange(range);\n if (!/^\\s+$/.test(text)) {\n var rows = this.$getSelectedRows();\n session.indentRows(rows.first, rows.last, \"\\t\");\n return;\n }\n }\n \n var line = session.getLine(range.start.row);\n var position = range.start;\n var size = session.getTabSize();\n var column = session.documentToScreenColumn(position.row, position.column);\n\n if (this.session.getUseSoftTabs()) {\n var count = (size - column % size);\n var indentString = lang.stringRepeat(\" \", count);\n } else {\n var count = column % size;\n while (line[range.start.column - 1] == \" \" && count) {\n range.start.column--;\n count--;\n }\n this.selection.setSelectionRange(range);\n indentString = \"\\t\";\n }\n return this.insert(indentString);\n };\n this.blockIndent = function() {\n var rows = this.$getSelectedRows();\n this.session.indentRows(rows.first, rows.last, \"\\t\");\n };\n this.blockOutdent = function() {\n var selection = this.session.getSelection();\n this.session.outdentRows(selection.getRange());\n };\n this.sortLines = function() {\n var rows = this.$getSelectedRows();\n var session = this.session;\n\n var lines = [];\n for (var i = rows.first; i <= rows.last; i++)\n lines.push(session.getLine(i));\n\n lines.sort(function(a, b) {\n if (a.toLowerCase() < b.toLowerCase()) return -1;\n if (a.toLowerCase() > b.toLowerCase()) return 1;\n return 0;\n });\n\n var deleteRange = new Range(0, 0, 0, 0);\n for (var i = rows.first; i <= rows.last; i++) {\n var line = session.getLine(i);\n deleteRange.start.row = i;\n deleteRange.end.row = i;\n deleteRange.end.column = line.length;\n session.replace(deleteRange, lines[i-rows.first]);\n }\n };\n this.toggleCommentLines = function() {\n var state = this.session.getState(this.getCursorPosition().row);\n var rows = this.$getSelectedRows();\n this.session.getMode().toggleCommentLines(state, this.session, rows.first, rows.last);\n };\n\n this.toggleBlockComment = function() {\n var cursor = this.getCursorPosition();\n var state = this.session.getState(cursor.row);\n var range = this.getSelectionRange();\n this.session.getMode().toggleBlockComment(state, this.session, range, cursor);\n };\n this.getNumberAt = function(row, column) {\n var _numberRx = /[\\-]?[0-9]+(?:\\.[0-9]+)?/g;\n _numberRx.lastIndex = 0;\n\n var s = this.session.getLine(row);\n while (_numberRx.lastIndex < column) {\n var m = _numberRx.exec(s);\n if(m.index <= column && m.index+m[0].length >= column){\n var number = {\n value: m[0],\n start: m.index,\n end: m.index+m[0].length\n };\n return number;\n }\n }\n return null;\n };\n this.modifyNumber = function(amount) {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n var charRange = new Range(row, column-1, row, column);\n\n var c = this.session.getTextRange(charRange);\n if (!isNaN(parseFloat(c)) && isFinite(c)) {\n var nr = this.getNumberAt(row, column);\n if (nr) {\n var fp = nr.value.indexOf(\".\") >= 0 ? nr.start + nr.value.indexOf(\".\") + 1 : nr.end;\n var decimals = nr.start + nr.value.length - fp;\n\n var t = parseFloat(nr.value);\n t *= Math.pow(10, decimals);\n\n\n if(fp !== nr.end && column < fp){\n amount *= Math.pow(10, nr.end - column - 1);\n } else {\n amount *= Math.pow(10, nr.end - column);\n }\n\n t += amount;\n t /= Math.pow(10, decimals);\n var nnr = t.toFixed(decimals);\n var replaceRange = new Range(row, nr.start, row, nr.end);\n this.session.replace(replaceRange, nnr);\n this.moveCursorTo(row, Math.max(nr.start +1, column + nnr.length - nr.value.length));\n\n }\n } else {\n this.toggleWord();\n }\n };\n\n this.$toggleWordPairs = [\n [\"first\", \"last\"],\n [\"true\", \"false\"],\n [\"yes\", \"no\"],\n [\"width\", \"height\"],\n [\"top\", \"bottom\"],\n [\"right\", \"left\"],\n [\"on\", \"off\"],\n [\"x\", \"y\"],\n [\"get\", \"set\"],\n [\"max\", \"min\"],\n [\"horizontal\", \"vertical\"],\n [\"show\", \"hide\"],\n [\"add\", \"remove\"],\n [\"up\", \"down\"],\n [\"before\", \"after\"],\n [\"even\", \"odd\"],\n [\"in\", \"out\"],\n [\"inside\", \"outside\"],\n [\"next\", \"previous\"],\n [\"increase\", \"decrease\"],\n [\"attach\", \"detach\"],\n [\"&&\", \"||\"],\n [\"==\", \"!=\"]\n ];\n\n this.toggleWord = function () {\n var row = this.selection.getCursor().row;\n var column = this.selection.getCursor().column;\n this.selection.selectWord();\n var currentState = this.getSelectedText();\n var currWordStart = this.selection.getWordRange().start.column;\n var wordParts = currentState.replace(/([a-z]+|[A-Z]+)(?=[A-Z_]|$)/g, '$1 ').split(/\\s/);\n var delta = column - currWordStart - 1;\n if (delta < 0) delta = 0;\n var curLength = 0, itLength = 0;\n var that = this;\n if (currentState.match(/[A-Za-z0-9_]+/)) {\n wordParts.forEach(function (item, i) {\n itLength = curLength + item.length;\n if (delta >= curLength && delta <= itLength) {\n currentState = item;\n that.selection.clearSelection();\n that.moveCursorTo(row, curLength + currWordStart);\n that.selection.selectTo(row, itLength + currWordStart);\n }\n curLength = itLength;\n });\n }\n\n var wordPairs = this.$toggleWordPairs;\n var reg;\n for (var i = 0; i < wordPairs.length; i++) {\n var item = wordPairs[i];\n for (var j = 0; j <= 1; j++) {\n var negate = +!j;\n var firstCondition = currentState.match(new RegExp('^\\\\s?_?(' + lang.escapeRegExp(item[j]) + ')\\\\s?$', 'i'));\n if (firstCondition) {\n var secondCondition = currentState.match(new RegExp('([_]|^|\\\\s)(' + lang.escapeRegExp(firstCondition[1]) + ')($|\\\\s)', 'g'));\n if (secondCondition) {\n reg = currentState.replace(new RegExp(lang.escapeRegExp(item[j]), 'i'), function (result) {\n var res = item[negate];\n if (result.toUpperCase() == result) {\n res = res.toUpperCase();\n } else if (result.charAt(0).toUpperCase() == result.charAt(0)) {\n res = res.substr(0, 0) + item[negate].charAt(0).toUpperCase() + res.substr(1);\n }\n return res;\n });\n this.insert(reg);\n reg = \"\";\n }\n }\n }\n }\n };\n this.removeLines = function() {\n var rows = this.$getSelectedRows();\n this.session.removeFullLines(rows.first, rows.last);\n this.clearSelection();\n };\n\n this.duplicateSelection = function() {\n var sel = this.selection;\n var doc = this.session;\n var range = sel.getRange();\n var reverse = sel.isBackwards();\n if (range.isEmpty()) {\n var row = range.start.row;\n doc.duplicateLines(row, row);\n } else {\n var point = reverse ? range.start : range.end;\n var endPoint = doc.insert(point, doc.getTextRange(range), false);\n range.start = point;\n range.end = endPoint;\n\n sel.setSelectionRange(range, reverse);\n }\n };\n this.moveLinesDown = function() {\n this.$moveLines(1, false);\n };\n this.moveLinesUp = function() {\n this.$moveLines(-1, false);\n };\n this.moveText = function(range, toPosition, copy) {\n return this.session.moveText(range, toPosition, copy);\n };\n this.copyLinesUp = function() {\n this.$moveLines(-1, true);\n };\n this.copyLinesDown = function() {\n this.$moveLines(1, true);\n };\n this.$moveLines = function(dir, copy) {\n var rows, moved;\n var selection = this.selection;\n if (!selection.inMultiSelectMode || this.inVirtualSelectionMode) {\n var range = selection.toOrientedRange();\n rows = this.$getSelectedRows(range);\n moved = this.session.$moveLines(rows.first, rows.last, copy ? 0 : dir);\n if (copy && dir == -1) moved = 0;\n range.moveBy(moved, 0);\n selection.fromOrientedRange(range);\n } else {\n var ranges = selection.rangeList.ranges;\n selection.rangeList.detach(this.session);\n this.inVirtualSelectionMode = true;\n \n var diff = 0;\n var totalDiff = 0;\n var l = ranges.length;\n for (var i = 0; i < l; i++) {\n var rangeIndex = i;\n ranges[i].moveBy(diff, 0);\n rows = this.$getSelectedRows(ranges[i]);\n var first = rows.first;\n var last = rows.last;\n while (++i < l) {\n if (totalDiff) ranges[i].moveBy(totalDiff, 0);\n var subRows = this.$getSelectedRows(ranges[i]);\n if (copy && subRows.first != last)\n break;\n else if (!copy && subRows.first > last + 1)\n break;\n last = subRows.last;\n }\n i--;\n diff = this.session.$moveLines(first, last, copy ? 0 : dir);\n if (copy && dir == -1) rangeIndex = i + 1;\n while (rangeIndex <= i) {\n ranges[rangeIndex].moveBy(diff, 0);\n rangeIndex++;\n }\n if (!copy) diff = 0;\n totalDiff += diff;\n }\n \n selection.fromOrientedRange(selection.ranges[0]);\n selection.rangeList.attach(this.session);\n this.inVirtualSelectionMode = false;\n }\n };\n this.$getSelectedRows = function(range) {\n range = (range || this.getSelectionRange()).collapseRows();\n\n return {\n first: this.session.getRowFoldStart(range.start.row),\n last: this.session.getRowFoldEnd(range.end.row)\n };\n };\n\n this.onCompositionStart = function(compositionState) {\n this.renderer.showComposition(compositionState);\n };\n\n this.onCompositionUpdate = function(text) {\n this.renderer.setCompositionText(text);\n };\n\n this.onCompositionEnd = function() {\n this.renderer.hideComposition();\n };\n this.getFirstVisibleRow = function() {\n return this.renderer.getFirstVisibleRow();\n };\n this.getLastVisibleRow = function() {\n return this.renderer.getLastVisibleRow();\n };\n this.isRowVisible = function(row) {\n return (row >= this.getFirstVisibleRow() && row <= this.getLastVisibleRow());\n };\n this.isRowFullyVisible = function(row) {\n return (row >= this.renderer.getFirstFullyVisibleRow() && row <= this.renderer.getLastFullyVisibleRow());\n };\n this.$getVisibleRowCount = function() {\n return this.renderer.getScrollBottomRow() - this.renderer.getScrollTopRow() + 1;\n };\n\n this.$moveByPage = function(dir, select) {\n var renderer = this.renderer;\n var config = this.renderer.layerConfig;\n var rows = dir * Math.floor(config.height / config.lineHeight);\n\n if (select === true) {\n this.selection.$moveSelection(function(){\n this.moveCursorBy(rows, 0);\n });\n } else if (select === false) {\n this.selection.moveCursorBy(rows, 0);\n this.selection.clearSelection();\n }\n\n var scrollTop = renderer.scrollTop;\n\n renderer.scrollBy(0, rows * config.lineHeight);\n if (select != null)\n renderer.scrollCursorIntoView(null, 0.5);\n\n renderer.animateScrolling(scrollTop);\n };\n this.selectPageDown = function() {\n this.$moveByPage(1, true);\n };\n this.selectPageUp = function() {\n this.$moveByPage(-1, true);\n };\n this.gotoPageDown = function() {\n this.$moveByPage(1, false);\n };\n this.gotoPageUp = function() {\n this.$moveByPage(-1, false);\n };\n this.scrollPageDown = function() {\n this.$moveByPage(1);\n };\n this.scrollPageUp = function() {\n this.$moveByPage(-1);\n };\n this.scrollToRow = function(row) {\n this.renderer.scrollToRow(row);\n };\n this.scrollToLine = function(line, center, animate, callback) {\n this.renderer.scrollToLine(line, center, animate, callback);\n };\n this.centerSelection = function() {\n var range = this.getSelectionRange();\n var pos = {\n row: Math.floor(range.start.row + (range.end.row - range.start.row) / 2),\n column: Math.floor(range.start.column + (range.end.column - range.start.column) / 2)\n };\n this.renderer.alignCursor(pos, 0.5);\n };\n this.getCursorPosition = function() {\n return this.selection.getCursor();\n };\n this.getCursorPositionScreen = function() {\n return this.session.documentToScreenPosition(this.getCursorPosition());\n };\n this.getSelectionRange = function() {\n return this.selection.getRange();\n };\n this.selectAll = function() {\n this.selection.selectAll();\n };\n this.clearSelection = function() {\n this.selection.clearSelection();\n };\n this.moveCursorTo = function(row, column) {\n this.selection.moveCursorTo(row, column);\n };\n this.moveCursorToPosition = function(pos) {\n this.selection.moveCursorToPosition(pos);\n };\n this.jumpToMatching = function(select, expand) {\n var cursor = this.getCursorPosition();\n var iterator = new TokenIterator(this.session, cursor.row, cursor.column);\n var prevToken = iterator.getCurrentToken();\n var token = prevToken || iterator.stepForward();\n\n if (!token) return;\n var matchType;\n var found = false;\n var depth = {};\n var i = cursor.column - token.start;\n var bracketType;\n var brackets = {\n \")\": \"(\",\n \"(\": \"(\",\n \"]\": \"[\",\n \"[\": \"[\",\n \"{\": \"{\",\n \"}\": \"{\"\n };\n \n do {\n if (token.value.match(/[{}()\\[\\]]/g)) {\n for (; i < token.value.length && !found; i++) {\n if (!brackets[token.value[i]]) {\n continue;\n }\n\n bracketType = brackets[token.value[i]] + '.' + token.type.replace(\"rparen\", \"lparen\");\n\n if (isNaN(depth[bracketType])) {\n depth[bracketType] = 0;\n }\n\n switch (token.value[i]) {\n case '(':\n case '[':\n case '{':\n depth[bracketType]++;\n break;\n case ')':\n case ']':\n case '}':\n depth[bracketType]--;\n\n if (depth[bracketType] === -1) {\n matchType = 'bracket';\n found = true;\n }\n break;\n }\n }\n }\n else if (token.type.indexOf('tag-name') !== -1) {\n if (isNaN(depth[token.value])) {\n depth[token.value] = 0;\n }\n \n if (prevToken.value === '<') {\n depth[token.value]++;\n }\n else if (prevToken.value === '= 0; --i) {\n if(this.$tryReplace(ranges[i], replacement)) {\n replaced++;\n }\n }\n\n this.selection.setSelectionRange(selection);\n\n return replaced;\n };\n\n this.$tryReplace = function(range, replacement) {\n var input = this.session.getTextRange(range);\n replacement = this.$search.replace(input, replacement);\n if (replacement !== null) {\n range.end = this.session.replace(range, replacement);\n return range;\n } else {\n return null;\n }\n };\n this.getLastSearchOptions = function() {\n return this.$search.getOptions();\n };\n this.find = function(needle, options, animate) {\n if (!options)\n options = {};\n\n if (typeof needle == \"string\" || needle instanceof RegExp)\n options.needle = needle;\n else if (typeof needle == \"object\")\n oop.mixin(options, needle);\n\n var range = this.selection.getRange();\n if (options.needle == null) {\n needle = this.session.getTextRange(range)\n || this.$search.$options.needle;\n if (!needle) {\n range = this.session.getWordRange(range.start.row, range.start.column);\n needle = this.session.getTextRange(range);\n }\n this.$search.set({needle: needle});\n }\n\n this.$search.set(options);\n if (!options.start)\n this.$search.set({start: range});\n\n var newRange = this.$search.find(this.session);\n if (options.preventScroll)\n return newRange;\n if (newRange) {\n this.revealRange(newRange, animate);\n return newRange;\n }\n if (options.backwards)\n range.start = range.end;\n else\n range.end = range.start;\n this.selection.setRange(range);\n };\n this.findNext = function(options, animate) {\n this.find({skipCurrent: true, backwards: false}, options, animate);\n };\n this.findPrevious = function(options, animate) {\n this.find(options, {skipCurrent: true, backwards: true}, animate);\n };\n\n this.revealRange = function(range, animate) {\n this.session.unfold(range);\n this.selection.setSelectionRange(range);\n\n var scrollTop = this.renderer.scrollTop;\n this.renderer.scrollSelectionIntoView(range.start, range.end, 0.5);\n if (animate !== false)\n this.renderer.animateScrolling(scrollTop);\n };\n this.undo = function() {\n this.session.getUndoManager().undo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.redo = function() {\n this.session.getUndoManager().redo(this.session);\n this.renderer.scrollCursorIntoView(null, 0.5);\n };\n this.destroy = function() {\n if (this.$toDestroy) {\n this.$toDestroy.forEach(function(el) {\n el.destroy();\n });\n this.$toDestroy = null;\n }\n if (this.$mouseHandler)\n this.$mouseHandler.destroy();\n this.renderer.destroy();\n this._signal(\"destroy\", this);\n if (this.session)\n this.session.destroy();\n if (this._$emitInputEvent)\n this._$emitInputEvent.cancel();\n this.removeAllListeners();\n };\n this.setAutoScrollEditorIntoView = function(enable) {\n if (!enable)\n return;\n var rect;\n var self = this;\n var shouldScroll = false;\n if (!this.$scrollAnchor)\n this.$scrollAnchor = document.createElement(\"div\");\n var scrollAnchor = this.$scrollAnchor;\n scrollAnchor.style.cssText = \"position:absolute\";\n this.container.insertBefore(scrollAnchor, this.container.firstChild);\n var onChangeSelection = this.on(\"changeSelection\", function() {\n shouldScroll = true;\n });\n var onBeforeRender = this.renderer.on(\"beforeRender\", function() {\n if (shouldScroll)\n rect = self.renderer.container.getBoundingClientRect();\n });\n var onAfterRender = this.renderer.on(\"afterRender\", function() {\n if (shouldScroll && rect && (self.isFocused()\n || self.searchBox && self.searchBox.isFocused())\n ) {\n var renderer = self.renderer;\n var pos = renderer.$cursorLayer.$pixelPos;\n var config = renderer.layerConfig;\n var top = pos.top - config.offset;\n if (pos.top >= 0 && top + rect.top < 0) {\n shouldScroll = true;\n } else if (pos.top < config.height &&\n pos.top + rect.top + config.lineHeight > window.innerHeight) {\n shouldScroll = false;\n } else {\n shouldScroll = null;\n }\n if (shouldScroll != null) {\n scrollAnchor.style.top = top + \"px\";\n scrollAnchor.style.left = pos.left + \"px\";\n scrollAnchor.style.height = config.lineHeight + \"px\";\n scrollAnchor.scrollIntoView(shouldScroll);\n }\n shouldScroll = rect = null;\n }\n });\n this.setAutoScrollEditorIntoView = function(enable) {\n if (enable)\n return;\n delete this.setAutoScrollEditorIntoView;\n this.off(\"changeSelection\", onChangeSelection);\n this.renderer.off(\"afterRender\", onAfterRender);\n this.renderer.off(\"beforeRender\", onBeforeRender);\n };\n };\n\n\n this.$resetCursorStyle = function() {\n var style = this.$cursorStyle || \"ace\";\n var cursorLayer = this.renderer.$cursorLayer;\n if (!cursorLayer)\n return;\n cursorLayer.setSmoothBlinking(/smooth/.test(style));\n cursorLayer.isBlinking = !this.$readOnly && style != \"wide\";\n dom.setCssClass(cursorLayer.element, \"ace_slim-cursors\", /slim/.test(style));\n };\n this.prompt = function(message, options, callback) {\n var editor = this;\n config.loadModule(\"./ext/prompt\", function (module) {\n module.prompt(editor, message, options, callback);\n });\n };\n\n}).call(Editor.prototype);\n\n\n\nconfig.defineOptions(Editor.prototype, \"editor\", {\n selectionStyle: {\n set: function(style) {\n this.onSelectionChange();\n this._signal(\"changeSelectionStyle\", {data: style});\n },\n initialValue: \"line\"\n },\n highlightActiveLine: {\n set: function() {this.$updateHighlightActiveLine();},\n initialValue: true\n },\n highlightSelectedWord: {\n set: function(shouldHighlight) {this.$onSelectionChange();},\n initialValue: true\n },\n readOnly: {\n set: function(readOnly) {\n this.textInput.setReadOnly(readOnly);\n this.$resetCursorStyle(); \n },\n initialValue: false\n },\n copyWithEmptySelection: {\n set: function(value) {\n this.textInput.setCopyWithEmptySelection(value);\n },\n initialValue: false\n },\n cursorStyle: {\n set: function(val) { this.$resetCursorStyle(); },\n values: [\"ace\", \"slim\", \"smooth\", \"wide\"],\n initialValue: \"ace\"\n },\n mergeUndoDeltas: {\n values: [false, true, \"always\"],\n initialValue: true\n },\n behavioursEnabled: {initialValue: true},\n wrapBehavioursEnabled: {initialValue: true},\n enableAutoIndent: {initialValue: true},\n autoScrollEditorIntoView: {\n set: function(val) {this.setAutoScrollEditorIntoView(val);}\n },\n keyboardHandler: {\n set: function(val) { this.setKeyboardHandler(val); },\n get: function() { return this.$keybindingId; },\n handlesSet: true\n },\n value: {\n set: function(val) { this.session.setValue(val); },\n get: function() { return this.getValue(); },\n handlesSet: true,\n hidden: true\n },\n session: {\n set: function(val) { this.setSession(val); },\n get: function() { return this.session; },\n handlesSet: true,\n hidden: true\n },\n \n showLineNumbers: {\n set: function(show) {\n this.renderer.$gutterLayer.setShowLineNumbers(show);\n this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER);\n if (show && this.$relativeLineNumbers)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n },\n initialValue: true\n },\n relativeLineNumbers: {\n set: function(value) {\n if (this.$showLineNumbers && value)\n relativeNumberRenderer.attach(this);\n else\n relativeNumberRenderer.detach(this);\n }\n },\n placeholder: {\n set: function(message) {\n if (!this.$updatePlaceholder) {\n this.$updatePlaceholder = function() {\n var value = this.session && (this.renderer.$composition || this.getValue());\n if (value && this.renderer.placeholderNode) {\n this.renderer.off(\"afterRender\", this.$updatePlaceholder);\n dom.removeCssClass(this.container, \"ace_hasPlaceholder\");\n this.renderer.placeholderNode.remove();\n this.renderer.placeholderNode = null;\n } else if (!value && !this.renderer.placeholderNode) {\n this.renderer.on(\"afterRender\", this.$updatePlaceholder);\n dom.addCssClass(this.container, \"ace_hasPlaceholder\");\n var el = dom.createElement(\"div\");\n el.className = \"ace_placeholder\";\n el.textContent = this.$placeholder || \"\";\n this.renderer.placeholderNode = el;\n this.renderer.content.appendChild(this.renderer.placeholderNode);\n } else if (!value && this.renderer.placeholderNode) {\n this.renderer.placeholderNode.textContent = this.$placeholder || \"\";\n }\n }.bind(this);\n this.on(\"input\", this.$updatePlaceholder);\n }\n this.$updatePlaceholder();\n }\n },\n\n hScrollBarAlwaysVisible: \"renderer\",\n vScrollBarAlwaysVisible: \"renderer\",\n highlightGutterLine: \"renderer\",\n animatedScroll: \"renderer\",\n showInvisibles: \"renderer\",\n showPrintMargin: \"renderer\",\n printMarginColumn: \"renderer\",\n printMargin: \"renderer\",\n fadeFoldWidgets: \"renderer\",\n showFoldWidgets: \"renderer\",\n displayIndentGuides: \"renderer\",\n showGutter: \"renderer\",\n fontSize: \"renderer\",\n fontFamily: \"renderer\",\n maxLines: \"renderer\",\n minLines: \"renderer\",\n scrollPastEnd: \"renderer\",\n fixedWidthGutter: \"renderer\",\n theme: \"renderer\",\n hasCssTransforms: \"renderer\",\n maxPixelHeight: \"renderer\",\n useTextareaForIME: \"renderer\",\n\n scrollSpeed: \"$mouseHandler\",\n dragDelay: \"$mouseHandler\",\n dragEnabled: \"$mouseHandler\",\n focusTimeout: \"$mouseHandler\",\n tooltipFollowsMouse: \"$mouseHandler\",\n\n firstLineNumber: \"session\",\n overwrite: \"session\",\n newLineMode: \"session\",\n useWorker: \"session\",\n useSoftTabs: \"session\",\n navigateWithinSoftTabs: \"session\",\n tabSize: \"session\",\n wrap: \"session\",\n indentedSoftWrap: \"session\",\n foldStyle: \"session\",\n mode: \"session\"\n});\n\n\nvar relativeNumberRenderer = {\n getText: function(session, row) {\n return (Math.abs(session.selection.lead.row - row) || (row + 1 + (row < 9 ? \"\\xb7\" : \"\"))) + \"\";\n },\n getWidth: function(session, lastLineNumber, config) {\n return Math.max(\n lastLineNumber.toString().length,\n (config.lastRow + 1).toString().length,\n 2\n ) * config.characterWidth;\n },\n update: function(e, editor) {\n editor.renderer.$loop.schedule(editor.renderer.CHANGE_GUTTER);\n },\n attach: function(editor) {\n editor.renderer.$gutterLayer.$renderer = this;\n editor.on(\"changeSelection\", this.update);\n this.update(null, editor);\n },\n detach: function(editor) {\n if (editor.renderer.$gutterLayer.$renderer == this)\n editor.renderer.$gutterLayer.$renderer = null;\n editor.off(\"changeSelection\", this.update);\n this.update(null, editor);\n }\n};\n\nexports.Editor = Editor;\n});\n\nace.define(\"ace/undomanager\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar UndoManager = function() {\n this.$maxRev = 0;\n this.$fromUndo = false;\n this.reset();\n};\n\n(function() {\n \n this.addSession = function(session) {\n this.$session = session;\n };\n this.add = function(delta, allowMerge, session) {\n if (this.$fromUndo) return;\n if (delta == this.$lastDelta) return;\n if (!this.$keepRedoStack) this.$redoStack.length = 0;\n if (allowMerge === false || !this.lastDeltas) {\n this.lastDeltas = [];\n this.$undoStack.push(this.lastDeltas);\n delta.id = this.$rev = ++this.$maxRev;\n }\n if (delta.action == \"remove\" || delta.action == \"insert\")\n this.$lastDelta = delta;\n this.lastDeltas.push(delta);\n };\n \n this.addSelection = function(selection, rev) {\n this.selections.push({\n value: selection,\n rev: rev || this.$rev\n });\n };\n \n this.startNewGroup = function() {\n this.lastDeltas = null;\n return this.$rev;\n };\n \n this.markIgnored = function(from, to) {\n if (to == null) to = this.$rev + 1;\n var stack = this.$undoStack;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id <= from)\n break;\n if (delta.id < to)\n delta.ignore = true;\n }\n this.lastDeltas = null;\n };\n \n this.getSelection = function(rev, after) {\n var stack = this.selections;\n for (var i = stack.length; i--;) {\n var selection = stack[i];\n if (selection.rev < rev) {\n if (after)\n selection = stack[i + 1];\n return selection;\n }\n }\n };\n \n this.getRevision = function() {\n return this.$rev;\n };\n \n this.getDeltas = function(from, to) {\n if (to == null) to = this.$rev + 1;\n var stack = this.$undoStack;\n var end = null, start = 0;\n for (var i = stack.length; i--;) {\n var delta = stack[i][0];\n if (delta.id < to && !end)\n end = i+1;\n if (delta.id <= from) {\n start = i + 1;\n break;\n }\n }\n return stack.slice(start, end);\n };\n \n this.getChangedRanges = function(from, to) {\n if (to == null) to = this.$rev + 1;\n \n };\n \n this.getChangedLines = function(from, to) {\n if (to == null) to = this.$rev + 1;\n \n };\n this.undo = function(session, dontSelect) {\n this.lastDeltas = null;\n var stack = this.$undoStack;\n \n if (!rearrangeUndoStack(stack, stack.length))\n return;\n \n if (!session)\n session = this.$session;\n \n if (this.$redoStackBaseRev !== this.$rev && this.$redoStack.length)\n this.$redoStack = [];\n \n this.$fromUndo = true;\n \n var deltaSet = stack.pop();\n var undoSelectionRange = null;\n if (deltaSet) {\n undoSelectionRange = session.undoChanges(deltaSet, dontSelect);\n this.$redoStack.push(deltaSet);\n this.$syncRev();\n }\n \n this.$fromUndo = false;\n\n return undoSelectionRange;\n };\n this.redo = function(session, dontSelect) {\n this.lastDeltas = null;\n \n if (!session)\n session = this.$session;\n \n this.$fromUndo = true;\n if (this.$redoStackBaseRev != this.$rev) {\n var diff = this.getDeltas(this.$redoStackBaseRev, this.$rev + 1);\n rebaseRedoStack(this.$redoStack, diff);\n this.$redoStackBaseRev = this.$rev;\n this.$redoStack.forEach(function(x) {\n x[0].id = ++this.$maxRev;\n }, this);\n }\n var deltaSet = this.$redoStack.pop();\n var redoSelectionRange = null;\n \n if (deltaSet) {\n redoSelectionRange = session.redoChanges(deltaSet, dontSelect);\n this.$undoStack.push(deltaSet);\n this.$syncRev();\n }\n this.$fromUndo = false;\n \n return redoSelectionRange;\n };\n \n this.$syncRev = function() {\n var stack = this.$undoStack;\n var nextDelta = stack[stack.length - 1];\n var id = nextDelta && nextDelta[0].id || 0;\n this.$redoStackBaseRev = id;\n this.$rev = id;\n };\n this.reset = function() {\n this.lastDeltas = null;\n this.$lastDelta = null;\n this.$undoStack = [];\n this.$redoStack = [];\n this.$rev = 0;\n this.mark = 0;\n this.$redoStackBaseRev = this.$rev;\n this.selections = [];\n };\n this.canUndo = function() {\n return this.$undoStack.length > 0;\n };\n this.canRedo = function() {\n return this.$redoStack.length > 0;\n };\n this.bookmark = function(rev) {\n if (rev == undefined)\n rev = this.$rev;\n this.mark = rev;\n };\n this.isAtBookmark = function() {\n return this.$rev === this.mark;\n };\n \n this.toJSON = function() {\n \n };\n \n this.fromJSON = function() {\n \n };\n \n this.hasUndo = this.canUndo;\n this.hasRedo = this.canRedo;\n this.isClean = this.isAtBookmark;\n this.markClean = this.bookmark;\n \n this.$prettyPrint = function(delta) {\n if (delta) return stringifyDelta(delta);\n return stringifyDelta(this.$undoStack) + \"\\n---\\n\" + stringifyDelta(this.$redoStack);\n };\n}).call(UndoManager.prototype);\n\nfunction rearrangeUndoStack(stack, pos) {\n for (var i = pos; i--; ) {\n var deltaSet = stack[i];\n if (deltaSet && !deltaSet[0].ignore) {\n while(i < pos - 1) {\n var swapped = swapGroups(stack[i], stack[i + 1]);\n stack[i] = swapped[0];\n stack[i + 1] = swapped[1];\n i++;\n }\n return true;\n }\n }\n}\n\nvar Range = require(\"./range\").Range;\nvar cmp = Range.comparePoints;\nvar comparePoints = Range.comparePoints;\n\nfunction $updateMarkers(delta) {\n var isInsert = delta.action == \"insert\";\n var start = delta.start;\n var end = delta.end;\n var rowShift = (end.row - start.row) * (isInsert ? 1 : -1);\n var colShift = (end.column - start.column) * (isInsert ? 1 : -1);\n if (isInsert) end = start;\n\n for (var i in this.marks) {\n var point = this.marks[i];\n var cmp = comparePoints(point, start);\n if (cmp < 0) {\n continue; // delta starts after the range\n }\n if (cmp === 0) {\n if (isInsert) {\n if (point.bias == 1) {\n cmp = 1;\n }\n else {\n point.bias == -1;\n continue;\n }\n }\n }\n var cmp2 = isInsert ? cmp : comparePoints(point, end);\n if (cmp2 > 0) {\n point.row += rowShift;\n point.column += point.row == end.row ? colShift : 0;\n continue;\n }\n if (!isInsert && cmp2 <= 0) {\n point.row = start.row;\n point.column = start.column;\n if (cmp2 === 0)\n point.bias = 1;\n }\n }\n}\n\n\n\nfunction clonePos(pos) {\n return {row: pos.row,column: pos.column};\n}\nfunction cloneDelta(d) {\n return {\n start: clonePos(d.start),\n end: clonePos(d.end),\n action: d.action,\n lines: d.lines.slice()\n };\n}\nfunction stringifyDelta(d) {\n d = d || this;\n if (Array.isArray(d)) {\n return d.map(stringifyDelta).join(\"\\n\");\n }\n var type = \"\";\n if (d.action) {\n type = d.action == \"insert\" ? \"+\" : \"-\";\n type += \"[\" + d.lines + \"]\";\n } else if (d.value) {\n if (Array.isArray(d.value)) {\n type = d.value.map(stringifyRange).join(\"\\n\");\n } else {\n type = stringifyRange(d.value);\n }\n }\n if (d.start) {\n type += stringifyRange(d);\n }\n if (d.id || d.rev) {\n type += \"\\t(\" + (d.id || d.rev) + \")\";\n }\n return type;\n}\nfunction stringifyRange(r) {\n return r.start.row + \":\" + r.start.column \n + \"=>\" + r.end.row + \":\" + r.end.column;\n}\n\nfunction swap(d1, d2) {\n var i1 = d1.action == \"insert\";\n var i2 = d2.action == \"insert\";\n \n if (i1 && i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n } else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n } else {\n return null;\n }\n } else if (i1 && !i2) {\n if (cmp(d2.start, d1.end) >= 0) {\n shift(d2, d1, -1);\n } else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n } else {\n return null;\n }\n } else if (!i1 && i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n } else if (cmp(d2.start, d1.start) <= 0) {\n shift(d1, d2, +1);\n } else {\n return null;\n }\n } else if (!i1 && !i2) {\n if (cmp(d2.start, d1.start) >= 0) {\n shift(d2, d1, +1);\n } else if (cmp(d2.end, d1.start) <= 0) {\n shift(d1, d2, -1);\n } else {\n return null;\n }\n }\n return [d2, d1];\n}\nfunction swapGroups(ds1, ds2) {\n for (var i = ds1.length; i--; ) {\n for (var j = 0; j < ds2.length; j++) {\n if (!swap(ds1[i], ds2[j])) {\n while (i < ds1.length) {\n while (j--) {\n swap(ds2[j], ds1[i]);\n }\n j = ds2.length;\n i++;\n } \n return [ds1, ds2];\n }\n }\n }\n ds1.selectionBefore = ds2.selectionBefore = \n ds1.selectionAfter = ds2.selectionAfter = null;\n return [ds2, ds1];\n}\nfunction xform(d1, c1) {\n var i1 = d1.action == \"insert\";\n var i2 = c1.action == \"insert\";\n \n if (i1 && i2) {\n if (cmp(d1.start, c1.start) < 0) {\n shift(c1, d1, 1);\n } else {\n shift(d1, c1, 1);\n }\n } else if (i1 && !i2) {\n if (cmp(d1.start, c1.end) >= 0) {\n shift(d1, c1, -1);\n } else if (cmp(d1.start, c1.start) <= 0) {\n shift(c1, d1, +1);\n } else {\n shift(d1, Range.fromPoints(c1.start, d1.start), -1);\n shift(c1, d1, +1);\n }\n } else if (!i1 && i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n } else if (cmp(c1.start, d1.start) <= 0) {\n shift(d1, c1, +1);\n } else {\n shift(c1, Range.fromPoints(d1.start, c1.start), -1);\n shift(d1, c1, +1);\n }\n } else if (!i1 && !i2) {\n if (cmp(c1.start, d1.end) >= 0) {\n shift(c1, d1, -1);\n } else if (cmp(c1.end, d1.start) <= 0) {\n shift(d1, c1, -1);\n } else {\n var before, after;\n if (cmp(d1.start, c1.start) < 0) {\n before = d1;\n d1 = splitDelta(d1, c1.start);\n }\n if (cmp(d1.end, c1.end) > 0) {\n after = splitDelta(d1, c1.end);\n }\n\n shiftPos(c1.end, d1.start, d1.end, -1);\n if (after && !before) {\n d1.lines = after.lines;\n d1.start = after.start;\n d1.end = after.end;\n after = d1;\n }\n\n return [c1, before, after].filter(Boolean);\n }\n }\n return [c1, d1];\n}\n \nfunction shift(d1, d2, dir) {\n shiftPos(d1.start, d2.start, d2.end, dir);\n shiftPos(d1.end, d2.start, d2.end, dir);\n}\nfunction shiftPos(pos, start, end, dir) {\n if (pos.row == (dir == 1 ? start : end).row) {\n pos.column += dir * (end.column - start.column);\n }\n pos.row += dir * (end.row - start.row);\n}\nfunction splitDelta(c, pos) {\n var lines = c.lines;\n var end = c.end;\n c.end = clonePos(pos); \n var rowsBefore = c.end.row - c.start.row;\n var otherLines = lines.splice(rowsBefore, lines.length);\n \n var col = rowsBefore ? pos.column : pos.column - c.start.column;\n lines.push(otherLines[0].substring(0, col));\n otherLines[0] = otherLines[0].substr(col) ; \n var rest = {\n start: clonePos(pos),\n end: end,\n lines: otherLines,\n action: c.action\n };\n return rest;\n}\n\nfunction moveDeltasByOne(redoStack, d) {\n d = cloneDelta(d);\n for (var j = redoStack.length; j--;) {\n var deltaSet = redoStack[j];\n for (var i = 0; i < deltaSet.length; i++) {\n var x = deltaSet[i];\n var xformed = xform(x, d);\n d = xformed[0];\n if (xformed.length != 2) {\n if (xformed[2]) {\n deltaSet.splice(i + 1, 1, xformed[1], xformed[2]);\n i++;\n } else if (!xformed[1]) {\n deltaSet.splice(i, 1);\n i--;\n }\n }\n }\n if (!deltaSet.length) {\n redoStack.splice(j, 1); \n }\n }\n return redoStack;\n}\nfunction rebaseRedoStack(redoStack, deltaSets) {\n for (var i = 0; i < deltaSets.length; i++) {\n var deltas = deltaSets[i];\n for (var j = 0; j < deltas.length; j++) {\n moveDeltasByOne(redoStack, deltas[j]);\n }\n }\n}\n\nexports.UndoManager = UndoManager;\n\n});\n\nace.define(\"ace/layer/lines\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"../lib/dom\");\n\nvar Lines = function(element, canvasHeight) {\n this.element = element;\n this.canvasHeight = canvasHeight || 500000;\n this.element.style.height = (this.canvasHeight * 2) + \"px\";\n \n this.cells = [];\n this.cellCache = [];\n this.$offsetCoefficient = 0;\n};\n\n(function() {\n \n this.moveContainer = function(config) {\n dom.translate(this.element, 0, -((config.firstRowScreen * config.lineHeight) % this.canvasHeight) - config.offset * this.$offsetCoefficient);\n }; \n \n this.pageChanged = function(oldConfig, newConfig) {\n return (\n Math.floor((oldConfig.firstRowScreen * oldConfig.lineHeight) / this.canvasHeight) !==\n Math.floor((newConfig.firstRowScreen * newConfig.lineHeight) / this.canvasHeight)\n );\n };\n \n this.computeLineTop = function(row, config, session) {\n var screenTop = config.firstRowScreen * config.lineHeight;\n var screenPage = Math.floor(screenTop / this.canvasHeight);\n var lineTop = session.documentToScreenRow(row, 0) * config.lineHeight;\n return lineTop - (screenPage * this.canvasHeight);\n };\n \n this.computeLineHeight = function(row, config, session) {\n return config.lineHeight * session.getRowLineCount(row);\n };\n \n this.getLength = function() {\n return this.cells.length;\n };\n \n this.get = function(index) {\n return this.cells[index];\n };\n \n this.shift = function() {\n this.$cacheCell(this.cells.shift());\n };\n \n this.pop = function() {\n this.$cacheCell(this.cells.pop());\n };\n \n this.push = function(cell) {\n if (Array.isArray(cell)) {\n this.cells.push.apply(this.cells, cell);\n var fragment = dom.createFragment(this.element);\n for (var i=0; i foldStart) {\n row = fold.end.row + 1;\n fold = session.getNextFoldLine(row, fold);\n foldStart = fold ? fold.start.row : Infinity;\n }\n if (row > lastRow) {\n while (this.$lines.getLength() > index + 1)\n this.$lines.pop();\n \n break;\n }\n\n cell = this.$lines.get(++index);\n if (cell) {\n cell.row = row;\n } else {\n cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$lines.push(cell);\n }\n\n this.$renderCell(cell, config, fold, row);\n row++;\n }\n \n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n\n this.$updateGutterWidth = function(config) {\n var session = this.session;\n \n var gutterRenderer = session.gutterRenderer || this.$renderer;\n \n var firstLineNumber = session.$firstLineNumber;\n var lastLineText = this.$lines.last() ? this.$lines.last().text : \"\";\n \n if (this.$fixedWidth || session.$useWrapMode)\n lastLineText = session.getLength() + firstLineNumber - 1;\n\n var gutterWidth = gutterRenderer \n ? gutterRenderer.getWidth(session, lastLineText, config)\n : lastLineText.toString().length * config.characterWidth;\n \n var padding = this.$padding || this.$computePadding();\n gutterWidth += padding.left + padding.right;\n if (gutterWidth !== this.gutterWidth && !isNaN(gutterWidth)) {\n this.gutterWidth = gutterWidth;\n this.element.parentNode.style.width = \n this.element.style.width = Math.ceil(this.gutterWidth) + \"px\";\n this._signal(\"changeGutterWidth\", gutterWidth);\n }\n };\n \n this.$updateCursorRow = function() {\n if (!this.$highlightGutterLine)\n return;\n \n var position = this.session.selection.getCursor();\n if (this.$cursorRow === position.row)\n return;\n \n this.$cursorRow = position.row;\n };\n \n this.updateLineHighlight = function() {\n if (!this.$highlightGutterLine)\n return;\n var row = this.session.selection.cursor.row;\n this.$cursorRow = row;\n\n if (this.$cursorCell && this.$cursorCell.row == row)\n return;\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n var cells = this.$lines.cells;\n this.$cursorCell = null;\n for (var i = 0; i < cells.length; i++) {\n var cell = cells[i];\n if (cell.row >= this.$cursorRow) {\n if (cell.row > this.$cursorRow) {\n var fold = this.session.getFoldLine(this.$cursorRow);\n if (i > 0 && fold && fold.start.row == cells[i - 1].row)\n cell = cells[i - 1];\n else\n break;\n }\n cell.element.className = \"ace_gutter-active-line \" + cell.element.className;\n this.$cursorCell = cell;\n break;\n }\n }\n };\n \n this.scrollLines = function(config) {\n var oldConfig = this.config;\n this.config = config;\n \n this.$updateCursorRow();\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n \n this.$lines.moveContainer(config);\n\n var lastRow = Math.min(config.lastRow + config.gutterOffset, // needed to compensate for hor scollbar\n this.session.getLength() - 1);\n var oldLastRow = this.oldLastRow;\n this.oldLastRow = lastRow;\n \n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n\n if (oldConfig.firstRow < config.firstRow)\n for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)\n this.$lines.shift();\n\n if (oldLastRow > lastRow)\n for (var row=this.session.getFoldedRowCount(lastRow + 1, oldLastRow); row>0; row--)\n this.$lines.pop();\n\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLines(config, config.firstRow, oldConfig.firstRow - 1));\n }\n\n if (lastRow > oldLastRow) {\n this.$lines.push(this.$renderLines(config, oldLastRow + 1, lastRow));\n }\n \n this.updateLineHighlight();\n \n this._signal(\"afterRender\");\n this.$updateGutterWidth(config);\n };\n\n this.$renderLines = function(config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n\n var cell = this.$lines.createCell(row, config, this.session, onCreateCell);\n this.$renderCell(cell, config, foldLine, row);\n fragment.push(cell);\n\n row++;\n }\n return fragment;\n };\n \n this.$renderCell = function(cell, config, fold, row) {\n var element = cell.element;\n \n var session = this.session;\n \n var textNode = element.childNodes[0];\n var foldWidget = element.childNodes[1];\n\n var firstLineNumber = session.$firstLineNumber;\n \n var breakpoints = session.$breakpoints;\n var decorations = session.$decorations;\n var gutterRenderer = session.gutterRenderer || this.$renderer;\n var foldWidgets = this.$showFoldWidgets && session.foldWidgets;\n var foldStart = fold ? fold.start.row : Number.MAX_VALUE;\n \n var className = \"ace_gutter-cell \";\n if (this.$highlightGutterLine) {\n if (row == this.$cursorRow || (fold && row < this.$cursorRow && row >= foldStart && this.$cursorRow <= fold.end.row)) {\n className += \"ace_gutter-active-line \";\n if (this.$cursorCell != cell) {\n if (this.$cursorCell)\n this.$cursorCell.element.className = this.$cursorCell.element.className.replace(\"ace_gutter-active-line \", \"\");\n this.$cursorCell = cell;\n }\n }\n }\n \n if (breakpoints[row])\n className += breakpoints[row];\n if (decorations[row])\n className += decorations[row];\n if (this.$annotations[row])\n className += this.$annotations[row].className;\n if (element.className != className)\n element.className = className;\n\n if (foldWidgets) {\n var c = foldWidgets[row];\n if (c == null)\n c = foldWidgets[row] = session.getFoldWidget(row);\n }\n\n if (c) {\n var className = \"ace_fold-widget ace_\" + c;\n if (c == \"start\" && row == foldStart && row < fold.end.row)\n className += \" ace_closed\";\n else\n className += \" ace_open\";\n if (foldWidget.className != className)\n foldWidget.className = className;\n\n var foldHeight = config.lineHeight + \"px\";\n dom.setStyle(foldWidget.style, \"height\", foldHeight);\n dom.setStyle(foldWidget.style, \"display\", \"inline-block\");\n } else {\n if (foldWidget) {\n dom.setStyle(foldWidget.style, \"display\", \"none\");\n }\n }\n \n var text = (gutterRenderer\n ? gutterRenderer.getText(session, row)\n : row + firstLineNumber).toString();\n \n if (text !== textNode.data) {\n textNode.data = text;\n }\n \n dom.setStyle(cell.element.style, \"height\", this.$lines.computeLineHeight(row, config, session) + \"px\");\n dom.setStyle(cell.element.style, \"top\", this.$lines.computeLineTop(row, config, session) + \"px\");\n \n cell.text = text;\n return cell;\n };\n\n this.$fixedWidth = false;\n \n this.$highlightGutterLine = true;\n this.$renderer = \"\";\n this.setHighlightGutterLine = function(highlightGutterLine) {\n this.$highlightGutterLine = highlightGutterLine;\n };\n \n this.$showLineNumbers = true;\n this.$renderer = \"\";\n this.setShowLineNumbers = function(show) {\n this.$renderer = !show && {\n getWidth: function() {return 0;},\n getText: function() {return \"\";}\n };\n };\n \n this.getShowLineNumbers = function() {\n return this.$showLineNumbers;\n };\n \n this.$showFoldWidgets = true;\n this.setShowFoldWidgets = function(show) {\n if (show)\n dom.addCssClass(this.element, \"ace_folding-enabled\");\n else\n dom.removeCssClass(this.element, \"ace_folding-enabled\");\n\n this.$showFoldWidgets = show;\n this.$padding = null;\n };\n \n this.getShowFoldWidgets = function() {\n return this.$showFoldWidgets;\n };\n\n this.$computePadding = function() {\n if (!this.element.firstChild)\n return {left: 0, right: 0};\n var style = dom.computedStyle(this.element.firstChild);\n this.$padding = {};\n this.$padding.left = (parseInt(style.borderLeftWidth) || 0)\n + (parseInt(style.paddingLeft) || 0) + 1;\n this.$padding.right = (parseInt(style.borderRightWidth) || 0)\n + (parseInt(style.paddingRight) || 0);\n return this.$padding;\n };\n\n this.getRegion = function(point) {\n var padding = this.$padding || this.$computePadding();\n var rect = this.element.getBoundingClientRect();\n if (point.x < padding.left + rect.left)\n return \"markers\";\n if (this.$showFoldWidgets && point.x > rect.right - padding.right)\n return \"foldWidgets\";\n };\n\n}).call(Gutter.prototype);\n\nfunction onCreateCell(element) {\n var textNode = document.createTextNode('');\n element.appendChild(textNode);\n \n var foldWidget = dom.createElement(\"span\");\n element.appendChild(foldWidget);\n \n return element;\n}\n\nexports.Gutter = Gutter;\n\n});\n\nace.define(\"ace/layer/marker\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../range\").Range;\nvar dom = require(\"../lib/dom\");\n\nvar Marker = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_marker-layer\";\n parentEl.appendChild(this.element);\n};\n\n(function() {\n\n this.$padding = 0;\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n this.setSession = function(session) {\n this.session = session;\n };\n \n this.setMarkers = function(markers) {\n this.markers = markers;\n };\n \n this.elt = function(className, css) {\n var x = this.i != -1 && this.element.childNodes[this.i];\n if (!x) {\n x = document.createElement(\"div\");\n this.element.appendChild(x);\n this.i = -1;\n } else {\n this.i++;\n }\n x.style.cssText = css;\n x.className = className;\n };\n\n this.update = function(config) {\n if (!config) return;\n\n this.config = config;\n\n this.i = 0;\n var html;\n for (var key in this.markers) {\n var marker = this.markers[key];\n\n if (!marker.range) {\n marker.update(html, this, this.session, config);\n continue;\n }\n\n var range = marker.range.clipRows(config.firstRow, config.lastRow);\n if (range.isEmpty()) continue;\n\n range = range.toScreenRange(this.session);\n if (marker.renderer) {\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n marker.renderer(html, range, left, top, config);\n } else if (marker.type == \"fullLine\") {\n this.drawFullLineMarker(html, range, marker.clazz, config);\n } else if (marker.type == \"screenLine\") {\n this.drawScreenLineMarker(html, range, marker.clazz, config);\n } else if (range.isMultiLine()) {\n if (marker.type == \"text\")\n this.drawTextMarker(html, range, marker.clazz, config);\n else\n this.drawMultiLineMarker(html, range, marker.clazz, config);\n } else {\n this.drawSingleLineMarker(html, range, marker.clazz + \" ace_start\" + \" ace_br15\", config);\n }\n }\n if (this.i !=-1) {\n while (this.i < this.element.childElementCount)\n this.element.removeChild(this.element.lastChild);\n }\n };\n\n this.$getTop = function(row, layerConfig) {\n return (row - layerConfig.firstRowScreen) * layerConfig.lineHeight;\n };\n\n function getBorderClass(tl, tr, br, bl) {\n return (tl ? 1 : 0) | (tr ? 2 : 0) | (br ? 4 : 0) | (bl ? 8 : 0);\n }\n this.drawTextMarker = function(stringBuilder, range, clazz, layerConfig, extraStyle) {\n var session = this.session;\n var start = range.start.row;\n var end = range.end.row;\n var row = start;\n var prev = 0; \n var curr = 0;\n var next = session.getScreenLastRowColumn(row);\n var lineRange = new Range(row, range.start.column, row, curr);\n for (; row <= end; row++) {\n lineRange.start.row = lineRange.end.row = row;\n lineRange.start.column = row == start ? range.start.column : session.getRowWrapIndent(row);\n lineRange.end.column = next;\n prev = curr;\n curr = next;\n next = row + 1 < end ? session.getScreenLastRowColumn(row + 1) : row == end ? 0 : range.end.column;\n this.drawSingleLineMarker(stringBuilder, lineRange, \n clazz + (row == start ? \" ace_start\" : \"\") + \" ace_br\"\n + getBorderClass(row == start || row == start + 1 && range.start.column, prev < curr, curr > next, row == end),\n layerConfig, row == end ? 0 : 1, extraStyle);\n }\n };\n this.drawMultiLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var padding = this.$padding;\n var height = config.lineHeight;\n var top = this.$getTop(range.start.row, config);\n var left = padding + range.start.column * config.characterWidth;\n extraStyle = extraStyle || \"\";\n\n if (this.session.$bidiHandler.isBidiRow(range.start.row)) {\n var range1 = range.clone();\n range1.end.row = range1.start.row;\n range1.end.column = this.session.getLine(range1.start.row).length;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br1 ace_start\", config, null, extraStyle);\n } else {\n this.elt(\n clazz + \" ace_br1 ace_start\",\n \"height:\"+ height+ \"px;\"+ \"right:0;\"+ \"top:\"+top+ \"px;left:\"+ left+ \"px;\" + (extraStyle || \"\")\n );\n }\n if (this.session.$bidiHandler.isBidiRow(range.end.row)) {\n var range1 = range.clone();\n range1.start.row = range1.end.row;\n range1.start.column = 0;\n this.drawBidiSingleLineMarker(stringBuilder, range1, clazz + \" ace_br12\", config, null, extraStyle);\n } else {\n top = this.$getTop(range.end.row, config);\n var width = range.end.column * config.characterWidth;\n\n this.elt(\n clazz + \" ace_br12\",\n \"height:\"+ height+ \"px;\"+\n \"width:\"+ width+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:\"+ padding+ \"px;\"+ (extraStyle || \"\")\n );\n }\n height = (range.end.row - range.start.row - 1) * config.lineHeight;\n if (height <= 0)\n return;\n top = this.$getTop(range.start.row + 1, config);\n \n var radiusClass = (range.start.column ? 1 : 0) | (range.end.column ? 0 : 8);\n\n this.elt(\n clazz + (radiusClass ? \" ace_br\" + radiusClass : \"\"),\n \"height:\"+ height+ \"px;\"+\n \"right:0;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:\"+ padding+ \"px;\"+ (extraStyle || \"\")\n );\n };\n this.drawSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\n if (this.session.$bidiHandler.isBidiRow(range.start.row))\n return this.drawBidiSingleLineMarker(stringBuilder, range, clazz, config, extraLength, extraStyle);\n var height = config.lineHeight;\n var width = (range.end.column + (extraLength || 0) - range.start.column) * config.characterWidth;\n\n var top = this.$getTop(range.start.row, config);\n var left = this.$padding + range.start.column * config.characterWidth;\n\n this.elt(\n clazz,\n \"height:\"+ height+ \"px;\"+\n \"width:\"+ width+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:\"+ left+ \"px;\"+ (extraStyle || \"\")\n );\n };\n this.drawBidiSingleLineMarker = function(stringBuilder, range, clazz, config, extraLength, extraStyle) {\n var height = config.lineHeight, top = this.$getTop(range.start.row, config), padding = this.$padding;\n var selections = this.session.$bidiHandler.getSelections(range.start.column, range.end.column);\n\n selections.forEach(function(selection) {\n this.elt(\n clazz,\n \"height:\" + height + \"px;\" +\n \"width:\" + selection.width + (extraLength || 0) + \"px;\" +\n \"top:\" + top + \"px;\" +\n \"left:\" + (padding + selection.left) + \"px;\" + (extraStyle || \"\")\n );\n }, this);\n };\n\n this.drawFullLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n if (range.start.row != range.end.row)\n height += this.$getTop(range.end.row, config) - top;\n\n this.elt(\n clazz,\n \"height:\"+ height+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:0;right:0;\"+ (extraStyle || \"\")\n );\n };\n \n this.drawScreenLineMarker = function(stringBuilder, range, clazz, config, extraStyle) {\n var top = this.$getTop(range.start.row, config);\n var height = config.lineHeight;\n\n this.elt(\n clazz,\n \"height:\"+ height+ \"px;\"+\n \"top:\"+ top+ \"px;\"+\n \"left:0;right:0;\"+ (extraStyle || \"\")\n );\n };\n\n}).call(Marker.prototype);\n\nexports.Marker = Marker;\n\n});\n\nace.define(\"ace/layer/text\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/layer/lines\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar Lines = require(\"./lines\").Lines;\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\n\nvar Text = function(parentEl) {\n this.dom = dom; \n this.element = this.dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_text-layer\";\n parentEl.appendChild(this.element);\n this.$updateEolChar = this.$updateEolChar.bind(this);\n this.$lines = new Lines(this.element);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n\n this.EOF_CHAR = \"\\xB6\";\n this.EOL_CHAR_LF = \"\\xAC\";\n this.EOL_CHAR_CRLF = \"\\xa4\";\n this.EOL_CHAR = this.EOL_CHAR_LF;\n this.TAB_CHAR = \"\\u2014\"; //\"\\u21E5\";\n this.SPACE_CHAR = \"\\xB7\";\n this.$padding = 0;\n this.MAX_LINE_LENGTH = 10000;\n\n this.$updateEolChar = function() {\n var doc = this.session.doc;\n var unixMode = doc.getNewLineCharacter() == \"\\n\" && doc.getNewLineMode() != \"windows\";\n var EOL_CHAR = unixMode ? this.EOL_CHAR_LF : this.EOL_CHAR_CRLF;\n if (this.EOL_CHAR != EOL_CHAR) {\n this.EOL_CHAR = EOL_CHAR;\n return true;\n }\n };\n\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.element.style.margin = \"0 \" + padding + \"px\";\n };\n\n this.getLineHeight = function() {\n return this.$fontMetrics.$characterSize.height || 0;\n };\n\n this.getCharacterWidth = function() {\n return this.$fontMetrics.$characterSize.width || 0;\n };\n \n this.$setFontMetrics = function(measure) {\n this.$fontMetrics = measure;\n this.$fontMetrics.on(\"changeCharacterSize\", function(e) {\n this._signal(\"changeCharacterSize\", e);\n }.bind(this));\n this.$pollSizeChanges();\n };\n\n this.checkForSizeChanges = function() {\n this.$fontMetrics.checkForSizeChanges();\n };\n this.$pollSizeChanges = function() {\n return this.$pollSizeChangesTimer = this.$fontMetrics.$pollSizeChanges();\n };\n this.setSession = function(session) {\n this.session = session;\n if (session)\n this.$computeTabString();\n };\n\n this.showInvisibles = false;\n this.showSpaces = false;\n this.showTabs = false;\n this.showEOL = false;\n this.setShowInvisibles = function(showInvisibles) {\n if (this.showInvisibles == showInvisibles)\n return false;\n\n this.showInvisibles = showInvisibles;\n if (typeof showInvisibles == \"string\") {\n this.showSpaces = /tab/i.test(showInvisibles);\n this.showTabs = /space/i.test(showInvisibles);\n this.showEOL = /eol/i.test(showInvisibles);\n } else {\n this.showSpaces = this.showTabs = this.showEOL = showInvisibles;\n }\n this.$computeTabString();\n return true;\n };\n\n this.displayIndentGuides = true;\n this.setDisplayIndentGuides = function(display) {\n if (this.displayIndentGuides == display)\n return false;\n\n this.displayIndentGuides = display;\n this.$computeTabString();\n return true;\n };\n\n this.$tabStrings = [];\n this.onChangeTabSize =\n this.$computeTabString = function() {\n var tabSize = this.session.getTabSize();\n this.tabSize = tabSize;\n var tabStr = this.$tabStrings = [0];\n for (var i = 1; i < tabSize + 1; i++) {\n if (this.showTabs) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_tab\";\n span.textContent = lang.stringRepeat(this.TAB_CHAR, i);\n tabStr.push(span);\n } else {\n tabStr.push(this.dom.createTextNode(lang.stringRepeat(\" \", i), this.element));\n }\n }\n if (this.displayIndentGuides) {\n this.$indentGuideRe = /\\s\\S| \\t|\\t |\\s$/;\n var className = \"ace_indent-guide\";\n var spaceClass = this.showSpaces ? \" ace_invisible ace_invisible_space\" : \"\";\n var spaceContent = this.showSpaces\n ? lang.stringRepeat(this.SPACE_CHAR, this.tabSize)\n : lang.stringRepeat(\" \", this.tabSize);\n\n var tabClass = this.showTabs ? \" ace_invisible ace_invisible_tab\" : \"\";\n var tabContent = this.showTabs \n ? lang.stringRepeat(this.TAB_CHAR, this.tabSize)\n : spaceContent;\n\n var span = this.dom.createElement(\"span\");\n span.className = className + spaceClass;\n span.textContent = spaceContent;\n this.$tabStrings[\" \"] = span;\n \n var span = this.dom.createElement(\"span\");\n span.className = className + tabClass;\n span.textContent = tabContent;\n this.$tabStrings[\"\\t\"] = span;\n }\n };\n\n this.updateLines = function(config, firstRow, lastRow) {\n if (this.config.lastRow != config.lastRow ||\n this.config.firstRow != config.firstRow) {\n return this.update(config);\n }\n \n this.config = config;\n\n var first = Math.max(firstRow, config.firstRow);\n var last = Math.min(lastRow, config.lastRow);\n\n var lineElements = this.element.childNodes;\n var lineElementsIdx = 0;\n\n for (var row = config.firstRow; row < first; row++) {\n var foldLine = this.session.getFoldLine(row);\n if (foldLine) {\n if (foldLine.containsRow(first)) {\n first = foldLine.start.row;\n break;\n } else {\n row = foldLine.end.row;\n }\n }\n lineElementsIdx ++;\n }\n\n var heightChanged = false;\n var row = first;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row :Infinity;\n }\n if (row > last)\n break;\n\n var lineElement = lineElements[lineElementsIdx++];\n if (lineElement) {\n this.dom.removeChildren(lineElement);\n this.$renderLine(\n lineElement, row, row == foldStart ? foldLine : false\n );\n\n if (heightChanged)\n lineElement.style.top = this.$lines.computeLineTop(row, config, this.session) + \"px\";\n\n var height = (config.lineHeight * this.session.getRowLength(row)) + \"px\";\n if (lineElement.style.height != height) {\n heightChanged = true;\n lineElement.style.height = height;\n }\n }\n row++;\n }\n if (heightChanged) {\n while (lineElementsIdx < this.$lines.cells.length) {\n var cell = this.$lines.cells[lineElementsIdx++];\n cell.element.style.top = this.$lines.computeLineTop(cell.row, config, this.session) + \"px\";\n }\n }\n };\n\n this.scrollLines = function(config) {\n var oldConfig = this.config;\n this.config = config;\n\n if (this.$lines.pageChanged(oldConfig, config))\n return this.update(config);\n \n this.$lines.moveContainer(config);\n \n var lastRow = config.lastRow;\n var oldLastRow = oldConfig ? oldConfig.lastRow : -1;\n\n if (!oldConfig || oldLastRow < config.firstRow)\n return this.update(config);\n\n if (lastRow < oldConfig.firstRow)\n return this.update(config);\n\n if (!oldConfig || oldConfig.lastRow < config.firstRow)\n return this.update(config);\n\n if (config.lastRow < oldConfig.firstRow)\n return this.update(config);\n\n if (oldConfig.firstRow < config.firstRow)\n for (var row=this.session.getFoldedRowCount(oldConfig.firstRow, config.firstRow - 1); row>0; row--)\n this.$lines.shift();\n\n if (oldConfig.lastRow > config.lastRow)\n for (var row=this.session.getFoldedRowCount(config.lastRow + 1, oldConfig.lastRow); row>0; row--)\n this.$lines.pop();\n\n if (config.firstRow < oldConfig.firstRow) {\n this.$lines.unshift(this.$renderLinesFragment(config, config.firstRow, oldConfig.firstRow - 1));\n }\n\n if (config.lastRow > oldConfig.lastRow) {\n this.$lines.push(this.$renderLinesFragment(config, oldConfig.lastRow + 1, config.lastRow));\n }\n };\n\n this.$renderLinesFragment = function(config, firstRow, lastRow) {\n var fragment = [];\n var row = firstRow;\n var foldLine = this.session.getNextFoldLine(row);\n var foldStart = foldLine ? foldLine.start.row : Infinity;\n\n while (true) {\n if (row > foldStart) {\n row = foldLine.end.row+1;\n foldLine = this.session.getNextFoldLine(row, foldLine);\n foldStart = foldLine ? foldLine.start.row : Infinity;\n }\n if (row > lastRow)\n break;\n\n var line = this.$lines.createCell(row, config, this.session);\n \n var lineEl = line.element;\n this.dom.removeChildren(lineEl);\n dom.setStyle(lineEl.style, \"height\", this.$lines.computeLineHeight(row, config, this.session) + \"px\");\n dom.setStyle(lineEl.style, \"top\", this.$lines.computeLineTop(row, config, this.session) + \"px\");\n this.$renderLine(lineEl, row, row == foldStart ? foldLine : false);\n\n if (this.$useLineGroups()) {\n lineEl.className = \"ace_line_group\";\n } else {\n lineEl.className = \"ace_line\";\n }\n fragment.push(line);\n\n row++;\n }\n return fragment;\n };\n\n this.update = function(config) {\n this.$lines.moveContainer(config);\n \n this.config = config;\n\n var firstRow = config.firstRow;\n var lastRow = config.lastRow;\n\n var lines = this.$lines;\n while (lines.getLength())\n lines.pop();\n \n lines.push(this.$renderLinesFragment(config, firstRow, lastRow));\n };\n\n this.$textToken = {\n \"text\": true,\n \"rparen\": true,\n \"lparen\": true\n };\n\n this.$renderToken = function(parent, screenColumn, token, value) {\n var self = this;\n var re = /(\\t)|( +)|([\\x00-\\x1f\\x80-\\xa0\\xad\\u1680\\u180E\\u2000-\\u200f\\u2028\\u2029\\u202F\\u205F\\uFEFF\\uFFF9-\\uFFFC]+)|(\\u3000)|([\\u1100-\\u115F\\u11A3-\\u11A7\\u11FA-\\u11FF\\u2329-\\u232A\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3001-\\u303E\\u3041-\\u3096\\u3099-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u3190-\\u31BA\\u31C0-\\u31E3\\u31F0-\\u321E\\u3220-\\u3247\\u3250-\\u32FE\\u3300-\\u4DBF\\u4E00-\\uA48C\\uA490-\\uA4C6\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFAFF\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFF01-\\uFF60\\uFFE0-\\uFFE6]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;\n \n var valueFragment = this.dom.createFragment(this.element);\n\n var m;\n var i = 0;\n while (m = re.exec(value)) {\n var tab = m[1];\n var simpleSpace = m[2];\n var controlCharacter = m[3];\n var cjkSpace = m[4];\n var cjk = m[5];\n \n if (!self.showSpaces && simpleSpace)\n continue;\n\n var before = i != m.index ? value.slice(i, m.index) : \"\";\n\n i = m.index + m[0].length;\n \n if (before) {\n valueFragment.appendChild(this.dom.createTextNode(before, this.element));\n }\n \n if (tab) {\n var tabSize = self.session.getScreenTabSize(screenColumn + m.index);\n valueFragment.appendChild(self.$tabStrings[tabSize].cloneNode(true));\n screenColumn += tabSize - 1;\n } else if (simpleSpace) {\n if (self.showSpaces) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, simpleSpace.length);\n valueFragment.appendChild(span);\n } else {\n valueFragment.appendChild(this.com.createTextNode(simpleSpace, this.element));\n }\n } else if (controlCharacter) {\n var span = this.dom.createElement(\"span\");\n span.className = \"ace_invisible ace_invisible_space ace_invalid\";\n span.textContent = lang.stringRepeat(self.SPACE_CHAR, controlCharacter.length);\n valueFragment.appendChild(span);\n } else if (cjkSpace) {\n screenColumn += 1;\n \n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = self.showSpaces ? \"ace_cjk ace_invisible ace_invisible_space\" : \"ace_cjk\";\n span.textContent = self.showSpaces ? self.SPACE_CHAR : cjkSpace;\n valueFragment.appendChild(span);\n } else if (cjk) {\n screenColumn += 1;\n var span = this.dom.createElement(\"span\");\n span.style.width = (self.config.characterWidth * 2) + \"px\";\n span.className = \"ace_cjk\";\n span.textContent = cjk;\n valueFragment.appendChild(span);\n }\n }\n \n valueFragment.appendChild(this.dom.createTextNode(i ? value.slice(i) : value, this.element));\n\n if (!this.$textToken[token.type]) {\n var classes = \"ace_\" + token.type.replace(/\\./g, \" ace_\");\n var span = this.dom.createElement(\"span\");\n if (token.type == \"fold\")\n span.style.width = (token.value.length * this.config.characterWidth) + \"px\";\n \n span.className = classes;\n span.appendChild(valueFragment);\n \n parent.appendChild(span);\n }\n else {\n parent.appendChild(valueFragment);\n }\n \n return screenColumn + value.length;\n };\n\n this.renderIndentGuide = function(parent, value, max) {\n var cols = value.search(this.$indentGuideRe);\n if (cols <= 0 || cols >= max)\n return value;\n if (value[0] == \" \") {\n cols -= cols % this.tabSize;\n var count = cols/this.tabSize;\n for (var i=0; i= splitChars) {\n screenColumn = this.$renderToken(\n lineEl, screenColumn,\n token, value.substring(0, splitChars - chars)\n );\n value = value.substring(splitChars - chars);\n chars = splitChars;\n\n lineEl = this.$createLineElement();\n parent.appendChild(lineEl);\n\n lineEl.appendChild(this.dom.createTextNode(lang.stringRepeat(\"\\xa0\", splits.indent), this.element));\n\n split ++;\n screenColumn = 0;\n splitChars = splits[split] || Number.MAX_VALUE;\n }\n if (value.length != 0) {\n chars += value.length;\n screenColumn = this.$renderToken(\n lineEl, screenColumn, token, value\n );\n }\n }\n }\n \n if (splits[splits.length - 1] > this.MAX_LINE_LENGTH)\n this.$renderOverflowMessage(lineEl, screenColumn, null, \"\", true);\n };\n\n this.$renderSimpleLine = function(parent, tokens) {\n var screenColumn = 0;\n var token = tokens[0];\n var value = token.value;\n if (this.displayIndentGuides)\n value = this.renderIndentGuide(parent, value);\n if (value)\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n for (var i = 1; i < tokens.length; i++) {\n token = tokens[i];\n value = token.value;\n if (screenColumn + value.length > this.MAX_LINE_LENGTH)\n return this.$renderOverflowMessage(parent, screenColumn, token, value);\n screenColumn = this.$renderToken(parent, screenColumn, token, value);\n }\n };\n \n this.$renderOverflowMessage = function(parent, screenColumn, token, value, hide) {\n token && this.$renderToken(parent, screenColumn, token,\n value.slice(0, this.MAX_LINE_LENGTH - screenColumn));\n \n var overflowEl = this.dom.createElement(\"span\");\n overflowEl.className = \"ace_inline_button ace_keyword ace_toggle_wrap\";\n overflowEl.textContent = hide ? \"\" : \"\";\n \n parent.appendChild(overflowEl); \n };\n this.$renderLine = function(parent, row, foldLine) {\n if (!foldLine && foldLine != false)\n foldLine = this.session.getFoldLine(row);\n\n if (foldLine)\n var tokens = this.$getFoldLineTokens(row, foldLine);\n else\n var tokens = this.session.getTokens(row);\n\n var lastLineEl = parent;\n if (tokens.length) {\n var splits = this.session.getRowSplitData(row);\n if (splits && splits.length) {\n this.$renderWrappedLine(parent, tokens, splits);\n var lastLineEl = parent.lastChild;\n } else {\n var lastLineEl = parent;\n if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n this.$renderSimpleLine(lastLineEl, tokens);\n }\n } else if (this.$useLineGroups()) {\n lastLineEl = this.$createLineElement();\n parent.appendChild(lastLineEl);\n }\n\n if (this.showEOL && lastLineEl) {\n if (foldLine)\n row = foldLine.end.row;\n\n var invisibleEl = this.dom.createElement(\"span\");\n invisibleEl.className = \"ace_invisible ace_invisible_eol\";\n invisibleEl.textContent = row == this.session.getLength() - 1 ? this.EOF_CHAR : this.EOL_CHAR;\n \n lastLineEl.appendChild(invisibleEl);\n }\n };\n\n this.$getFoldLineTokens = function(row, foldLine) {\n var session = this.session;\n var renderTokens = [];\n\n function addTokens(tokens, from, to) {\n var idx = 0, col = 0;\n while ((col + tokens[idx].value.length) < from) {\n col += tokens[idx].value.length;\n idx++;\n\n if (idx == tokens.length)\n return;\n }\n if (col != from) {\n var value = tokens[idx].value.substring(from - col);\n if (value.length > (to - from))\n value = value.substring(0, to - from);\n\n renderTokens.push({\n type: tokens[idx].type,\n value: value\n });\n\n col = from + value.length;\n idx += 1;\n }\n\n while (col < to && idx < tokens.length) {\n var value = tokens[idx].value;\n if (value.length + col > to) {\n renderTokens.push({\n type: tokens[idx].type,\n value: value.substring(0, to - col)\n });\n } else\n renderTokens.push(tokens[idx]);\n col += value.length;\n idx += 1;\n }\n }\n\n var tokens = session.getTokens(row);\n foldLine.walk(function(placeholder, row, column, lastColumn, isNewRow) {\n if (placeholder != null) {\n renderTokens.push({\n type: \"fold\",\n value: placeholder\n });\n } else {\n if (isNewRow)\n tokens = session.getTokens(row);\n\n if (tokens.length)\n addTokens(tokens, lastColumn, column);\n }\n }, foldLine.end.row, this.session.getLine(foldLine.end.row).length);\n\n return renderTokens;\n };\n\n this.$useLineGroups = function() {\n return this.session.getUseWrapMode();\n };\n\n this.destroy = function() {};\n}).call(Text.prototype);\n\nexports.Text = Text;\n\n});\n\nace.define(\"ace/layer/cursor\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"../lib/dom\");\n\nvar Cursor = function(parentEl) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_layer ace_cursor-layer\";\n parentEl.appendChild(this.element);\n \n this.isVisible = false;\n this.isBlinking = true;\n this.blinkInterval = 1000;\n this.smoothBlinking = false;\n\n this.cursors = [];\n this.cursor = this.addCursor();\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.$updateCursors = this.$updateOpacity.bind(this);\n};\n\n(function() {\n \n this.$updateOpacity = function(val) {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n dom.setStyle(cursors[i].style, \"opacity\", val ? \"\" : \"0\");\n };\n\n this.$startCssAnimation = function() {\n var cursors = this.cursors;\n for (var i = cursors.length; i--; )\n cursors[i].style.animationDuration = this.blinkInterval + \"ms\";\n\n this.$isAnimating = true;\n setTimeout(function() {\n if (this.$isAnimating) {\n dom.addCssClass(this.element, \"ace_animate-blinking\");\n }\n }.bind(this));\n };\n \n this.$stopCssAnimation = function() {\n this.$isAnimating = false;\n dom.removeCssClass(this.element, \"ace_animate-blinking\");\n };\n\n this.$padding = 0;\n this.setPadding = function(padding) {\n this.$padding = padding;\n };\n\n this.setSession = function(session) {\n this.session = session;\n };\n\n this.setBlinking = function(blinking) {\n if (blinking != this.isBlinking) {\n this.isBlinking = blinking;\n this.restartTimer();\n }\n };\n\n this.setBlinkInterval = function(blinkInterval) {\n if (blinkInterval != this.blinkInterval) {\n this.blinkInterval = blinkInterval;\n this.restartTimer();\n }\n };\n\n this.setSmoothBlinking = function(smoothBlinking) {\n if (smoothBlinking != this.smoothBlinking) {\n this.smoothBlinking = smoothBlinking;\n dom.setCssClass(this.element, \"ace_smooth-blinking\", smoothBlinking);\n this.$updateCursors(true);\n this.restartTimer();\n }\n };\n\n this.addCursor = function() {\n var el = dom.createElement(\"div\");\n el.className = \"ace_cursor\";\n this.element.appendChild(el);\n this.cursors.push(el);\n return el;\n };\n\n this.removeCursor = function() {\n if (this.cursors.length > 1) {\n var el = this.cursors.pop();\n el.parentNode.removeChild(el);\n return el;\n }\n };\n\n this.hideCursor = function() {\n this.isVisible = false;\n dom.addCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n\n this.showCursor = function() {\n this.isVisible = true;\n dom.removeCssClass(this.element, \"ace_hidden-cursors\");\n this.restartTimer();\n };\n\n this.restartTimer = function() {\n var update = this.$updateCursors;\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n this.$stopCssAnimation();\n\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = false;\n dom.removeCssClass(this.element, \"ace_smooth-blinking\");\n }\n \n update(true);\n\n if (!this.isBlinking || !this.blinkInterval || !this.isVisible) {\n this.$stopCssAnimation();\n return;\n }\n\n if (this.smoothBlinking) {\n this.$isSmoothBlinking = true;\n setTimeout(function() {\n if (this.$isSmoothBlinking) {\n dom.addCssClass(this.element, \"ace_smooth-blinking\");\n }\n }.bind(this));\n }\n \n if (dom.HAS_CSS_ANIMATION) {\n this.$startCssAnimation();\n } else {\n var blink = function(){\n this.timeoutId = setTimeout(function() {\n update(false);\n }, 0.6 * this.blinkInterval);\n }.bind(this);\n \n this.intervalId = setInterval(function() {\n update(true);\n blink();\n }, this.blinkInterval);\n blink();\n }\n };\n\n this.getPixelPosition = function(position, onScreen) {\n if (!this.config || !this.session)\n return {left : 0, top : 0};\n\n if (!position)\n position = this.session.selection.getCursor();\n var pos = this.session.documentToScreenPosition(position);\n var cursorLeft = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, position.row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : pos.column * this.config.characterWidth);\n\n var cursorTop = (pos.row - (onScreen ? this.config.firstRowScreen : 0)) *\n this.config.lineHeight;\n\n return {left : cursorLeft, top : cursorTop};\n };\n\n this.isCursorInView = function(pixelPos, config) {\n return pixelPos.top >= 0 && pixelPos.top < config.maxHeight;\n };\n\n this.update = function(config) {\n this.config = config;\n\n var selections = this.session.$selectionMarkers;\n var i = 0, cursorIndex = 0;\n\n if (selections === undefined || selections.length === 0){\n selections = [{cursor: null}];\n }\n\n for (var i = 0, n = selections.length; i < n; i++) {\n var pixelPos = this.getPixelPosition(selections[i].cursor, true);\n if ((pixelPos.top > config.height + config.offset ||\n pixelPos.top < 0) && i > 1) {\n continue;\n }\n\n var element = this.cursors[cursorIndex++] || this.addCursor();\n var style = element.style;\n \n if (!this.drawCursor) {\n if (!this.isCursorInView(pixelPos, config)) {\n dom.setStyle(style, \"display\", \"none\");\n } else {\n dom.setStyle(style, \"display\", \"block\");\n dom.translate(element, pixelPos.left, pixelPos.top);\n dom.setStyle(style, \"width\", Math.round(config.characterWidth) + \"px\");\n dom.setStyle(style, \"height\", config.lineHeight + \"px\");\n }\n } else {\n this.drawCursor(element, pixelPos, config, selections[i], this.session);\n }\n }\n while (this.cursors.length > cursorIndex)\n this.removeCursor();\n\n var overwrite = this.session.getOverwrite();\n this.$setOverwrite(overwrite);\n this.$pixelPos = pixelPos;\n this.restartTimer();\n };\n \n this.drawCursor = null;\n\n this.$setOverwrite = function(overwrite) {\n if (overwrite != this.overwrite) {\n this.overwrite = overwrite;\n if (overwrite)\n dom.addCssClass(this.element, \"ace_overwrite-cursors\");\n else\n dom.removeCssClass(this.element, \"ace_overwrite-cursors\");\n }\n };\n\n this.destroy = function() {\n clearInterval(this.intervalId);\n clearTimeout(this.timeoutId);\n };\n\n}).call(Cursor.prototype);\n\nexports.Cursor = Cursor;\n\n});\n\nace.define(\"ace/scrollbar\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar MAX_SCROLL_H = 0x8000;\nvar ScrollBar = function(parent) {\n this.element = dom.createElement(\"div\");\n this.element.className = \"ace_scrollbar ace_scrollbar\" + this.classSuffix;\n\n this.inner = dom.createElement(\"div\");\n this.inner.className = \"ace_scrollbar-inner\";\n this.inner.textContent = \"\\xa0\";\n this.element.appendChild(this.inner);\n\n parent.appendChild(this.element);\n\n this.setVisible(false);\n this.skipEvent = false;\n\n event.addListener(this.element, \"scroll\", this.onScroll.bind(this));\n event.addListener(this.element, \"mousedown\", event.preventDefault);\n};\n\n(function() {\n oop.implement(this, EventEmitter);\n\n this.setVisible = function(isVisible) {\n this.element.style.display = isVisible ? \"\" : \"none\";\n this.isVisible = isVisible;\n this.coeff = 1;\n };\n}).call(ScrollBar.prototype);\nvar VScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollTop = 0;\n this.scrollHeight = 0;\n renderer.$scrollbarWidth = \n this.width = dom.scrollbarWidth(parent.ownerDocument);\n this.inner.style.width =\n this.element.style.width = (this.width || 15) + 5 + \"px\";\n this.$minWidth = 0;\n};\n\noop.inherits(VScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = '-v';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollTop = this.element.scrollTop;\n if (this.coeff != 1) {\n var h = this.element.clientHeight / this.scrollHeight;\n this.scrollTop = this.scrollTop * (1 - h) / (this.coeff - h);\n }\n this._emit(\"scroll\", {data: this.scrollTop});\n }\n this.skipEvent = false;\n };\n this.getWidth = function() {\n return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0);\n };\n this.setHeight = function(height) {\n this.element.style.height = height + \"px\";\n };\n this.setInnerHeight = \n this.setScrollHeight = function(height) {\n this.scrollHeight = height;\n if (height > MAX_SCROLL_H) {\n this.coeff = MAX_SCROLL_H / height;\n height = MAX_SCROLL_H;\n } else if (this.coeff != 1) {\n this.coeff = 1;\n }\n this.inner.style.height = height + \"px\";\n };\n this.setScrollTop = function(scrollTop) {\n if (this.scrollTop != scrollTop) {\n this.skipEvent = true;\n this.scrollTop = scrollTop;\n this.element.scrollTop = scrollTop * this.coeff;\n }\n };\n\n}).call(VScrollBar.prototype);\nvar HScrollBar = function(parent, renderer) {\n ScrollBar.call(this, parent);\n this.scrollLeft = 0;\n this.height = renderer.$scrollbarWidth;\n this.inner.style.height =\n this.element.style.height = (this.height || 15) + 5 + \"px\";\n};\n\noop.inherits(HScrollBar, ScrollBar);\n\n(function() {\n\n this.classSuffix = '-h';\n this.onScroll = function() {\n if (!this.skipEvent) {\n this.scrollLeft = this.element.scrollLeft;\n this._emit(\"scroll\", {data: this.scrollLeft});\n }\n this.skipEvent = false;\n };\n this.getHeight = function() {\n return this.isVisible ? this.height : 0;\n };\n this.setWidth = function(width) {\n this.element.style.width = width + \"px\";\n };\n this.setInnerWidth = function(width) {\n this.inner.style.width = width + \"px\";\n };\n this.setScrollWidth = function(width) {\n this.inner.style.width = width + \"px\";\n };\n this.setScrollLeft = function(scrollLeft) {\n if (this.scrollLeft != scrollLeft) {\n this.skipEvent = true;\n this.scrollLeft = this.element.scrollLeft = scrollLeft;\n }\n };\n\n}).call(HScrollBar.prototype);\n\n\nexports.ScrollBar = VScrollBar; // backward compatibility\nexports.ScrollBarV = VScrollBar; // backward compatibility\nexports.ScrollBarH = HScrollBar; // backward compatibility\n\nexports.VScrollBar = VScrollBar;\nexports.HScrollBar = HScrollBar;\n});\n\nace.define(\"ace/renderloop\",[\"require\",\"exports\",\"module\",\"ace/lib/event\"], function(require, exports, module) {\n\"use strict\";\n\nvar event = require(\"./lib/event\");\n\n\nvar RenderLoop = function(onRender, win) {\n this.onRender = onRender;\n this.pending = false;\n this.changes = 0;\n this.$recursionLimit = 2;\n this.window = win || window;\n var _self = this;\n this._flush = function(ts) {\n _self.pending = false;\n var changes = _self.changes;\n\n if (changes) {\n event.blockIdle(100);\n _self.changes = 0;\n _self.onRender(changes);\n }\n \n if (_self.changes) {\n if (_self.$recursionLimit-- < 0) return;\n _self.schedule();\n } else {\n _self.$recursionLimit = 2;\n }\n };\n};\n\n(function() {\n\n this.schedule = function(change) {\n this.changes = this.changes | change;\n if (this.changes && !this.pending) {\n event.nextFrame(this._flush);\n this.pending = true;\n }\n };\n\n this.clear = function(change) {\n var changes = this.changes;\n this.changes = 0;\n return changes;\n };\n\n}).call(RenderLoop.prototype);\n\nexports.RenderLoop = RenderLoop;\n});\n\nace.define(\"ace/layer/font_metrics\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/lib/lang\",\"ace/lib/event\",\"ace/lib/useragent\",\"ace/lib/event_emitter\"], function(require, exports, module) {\n\nvar oop = require(\"../lib/oop\");\nvar dom = require(\"../lib/dom\");\nvar lang = require(\"../lib/lang\");\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\n\nvar CHAR_COUNT = 256;\nvar USE_OBSERVER = typeof ResizeObserver == \"function\";\nvar L = 200;\n\nvar FontMetrics = exports.FontMetrics = function(parentEl) {\n this.el = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.el.style, true);\n \n this.$main = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$main.style);\n \n this.$measureNode = dom.createElement(\"div\");\n this.$setMeasureNodeStyles(this.$measureNode.style);\n \n \n this.el.appendChild(this.$main);\n this.el.appendChild(this.$measureNode);\n parentEl.appendChild(this.el);\n \n this.$measureNode.textContent = lang.stringRepeat(\"X\", CHAR_COUNT);\n \n this.$characterSize = {width: 0, height: 0};\n \n \n if (USE_OBSERVER)\n this.$addObserver();\n else\n this.checkForSizeChanges();\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n \n this.$characterSize = {width: 0, height: 0};\n \n this.$setMeasureNodeStyles = function(style, isRoot) {\n style.width = style.height = \"auto\";\n style.left = style.top = \"0px\";\n style.visibility = \"hidden\";\n style.position = \"absolute\";\n style.whiteSpace = \"pre\";\n\n if (useragent.isIE < 8) {\n style[\"font-family\"] = \"inherit\";\n } else {\n style.font = \"inherit\";\n }\n style.overflow = isRoot ? \"hidden\" : \"visible\";\n };\n\n this.checkForSizeChanges = function(size) {\n if (size === undefined)\n size = this.$measureSizes();\n if (size && (this.$characterSize.width !== size.width || this.$characterSize.height !== size.height)) {\n this.$measureNode.style.fontWeight = \"bold\";\n var boldSize = this.$measureSizes();\n this.$measureNode.style.fontWeight = \"\";\n this.$characterSize = size;\n this.charSizes = Object.create(null);\n this.allowBoldFonts = boldSize && boldSize.width === size.width && boldSize.height === size.height;\n this._emit(\"changeCharacterSize\", {data: size});\n }\n };\n \n this.$addObserver = function() {\n var self = this;\n this.$observer = new window.ResizeObserver(function(e) {\n self.checkForSizeChanges();\n });\n this.$observer.observe(this.$measureNode);\n };\n\n this.$pollSizeChanges = function() {\n if (this.$pollSizeChangesTimer || this.$observer)\n return this.$pollSizeChangesTimer;\n var self = this;\n \n return this.$pollSizeChangesTimer = event.onIdle(function cb() {\n self.checkForSizeChanges();\n event.onIdle(cb, 500);\n }, 500);\n };\n \n this.setPolling = function(val) {\n if (val) {\n this.$pollSizeChanges();\n } else if (this.$pollSizeChangesTimer) {\n clearInterval(this.$pollSizeChangesTimer);\n this.$pollSizeChangesTimer = 0;\n }\n };\n\n this.$measureSizes = function(node) {\n var size = {\n height: (node || this.$measureNode).clientHeight,\n width: (node || this.$measureNode).clientWidth / CHAR_COUNT\n };\n if (size.width === 0 || size.height === 0)\n return null;\n return size;\n };\n\n this.$measureCharWidth = function(ch) {\n this.$main.textContent = lang.stringRepeat(ch, CHAR_COUNT);\n var rect = this.$main.getBoundingClientRect();\n return rect.width / CHAR_COUNT;\n };\n \n this.getCharacterWidth = function(ch) {\n var w = this.charSizes[ch];\n if (w === undefined) {\n w = this.charSizes[ch] = this.$measureCharWidth(ch) / this.$characterSize.width;\n }\n return w;\n };\n\n this.destroy = function() {\n clearInterval(this.$pollSizeChangesTimer);\n if (this.$observer)\n this.$observer.disconnect();\n if (this.el && this.el.parentNode)\n this.el.parentNode.removeChild(this.el);\n };\n\n \n this.$getZoom = function getZoom(element) {\n if (!element || !element.parentElement) return 1;\n return (window.getComputedStyle(element).zoom || 1) * getZoom(element.parentElement);\n };\n this.$initTransformMeasureNodes = function() {\n var t = function(t, l) {\n return [\"div\", {\n style: \"position: absolute;top:\" + t + \"px;left:\" + l + \"px;\"\n }];\n };\n this.els = dom.buildDom([t(0, 0), t(L, 0), t(0, L), t(L, L)], this.el);\n };\n this.transformCoordinates = function(clientPos, elPos) {\n if (clientPos) {\n var zoom = this.$getZoom(this.el);\n clientPos = mul(1 / zoom, clientPos);\n }\n function solve(l1, l2, r) {\n var det = l1[1] * l2[0] - l1[0] * l2[1];\n return [\n (-l2[1] * r[0] + l2[0] * r[1]) / det,\n (+l1[1] * r[0] - l1[0] * r[1]) / det\n ];\n }\n function sub(a, b) { return [a[0] - b[0], a[1] - b[1]]; }\n function add(a, b) { return [a[0] + b[0], a[1] + b[1]]; }\n function mul(a, b) { return [a * b[0], a * b[1]]; }\n\n if (!this.els)\n this.$initTransformMeasureNodes();\n \n function p(el) {\n var r = el.getBoundingClientRect();\n return [r.left, r.top];\n }\n\n var a = p(this.els[0]);\n var b = p(this.els[1]);\n var c = p(this.els[2]);\n var d = p(this.els[3]);\n\n var h = solve(sub(d, b), sub(d, c), sub(add(b, c), add(d, a)));\n\n var m1 = mul(1 + h[0], sub(b, a));\n var m2 = mul(1 + h[1], sub(c, a));\n \n if (elPos) {\n var x = elPos;\n var k = h[0] * x[0] / L + h[1] * x[1] / L + 1;\n var ut = add(mul(x[0], m1), mul(x[1], m2));\n return add(mul(1 / k / L, ut), a);\n }\n var u = sub(clientPos, a);\n var f = solve(sub(m1, mul(h[0], u)), sub(m2, mul(h[1], u)), u);\n return mul(L, f);\n };\n \n}).call(FontMetrics.prototype);\n\n});\n\nace.define(\"ace/virtual_renderer\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/dom\",\"ace/config\",\"ace/layer/gutter\",\"ace/layer/marker\",\"ace/layer/text\",\"ace/layer/cursor\",\"ace/scrollbar\",\"ace/scrollbar\",\"ace/renderloop\",\"ace/layer/font_metrics\",\"ace/lib/event_emitter\",\"ace/lib/useragent\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar dom = require(\"./lib/dom\");\nvar config = require(\"./config\");\nvar GutterLayer = require(\"./layer/gutter\").Gutter;\nvar MarkerLayer = require(\"./layer/marker\").Marker;\nvar TextLayer = require(\"./layer/text\").Text;\nvar CursorLayer = require(\"./layer/cursor\").Cursor;\nvar HScrollBar = require(\"./scrollbar\").HScrollBar;\nvar VScrollBar = require(\"./scrollbar\").VScrollBar;\nvar RenderLoop = require(\"./renderloop\").RenderLoop;\nvar FontMetrics = require(\"./layer/font_metrics\").FontMetrics;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar editorCss = \"\\\n.ace_br1 {border-top-left-radius : 3px;}\\\n.ace_br2 {border-top-right-radius : 3px;}\\\n.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}\\\n.ace_br4 {border-bottom-right-radius: 3px;}\\\n.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}\\\n.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}\\\n.ace_br8 {border-bottom-left-radius : 3px;}\\\n.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}\\\n.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\\\n.ace_editor {\\\nposition: relative;\\\noverflow: hidden;\\\npadding: 0;\\\nfont: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\\\ndirection: ltr;\\\ntext-align: left;\\\n-webkit-tap-highlight-color: rgba(0, 0, 0, 0);\\\n}\\\n.ace_scroller {\\\nposition: absolute;\\\noverflow: hidden;\\\ntop: 0;\\\nbottom: 0;\\\nbackground-color: inherit;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\ncursor: text;\\\n}\\\n.ace_content {\\\nposition: absolute;\\\nbox-sizing: border-box;\\\nmin-width: 100%;\\\ncontain: style size layout;\\\nfont-variant-ligatures: no-common-ligatures;\\\n}\\\n.ace_dragging .ace_scroller:before{\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\nbottom: 0;\\\ncontent: '';\\\nbackground: rgba(250, 250, 250, 0.01);\\\nz-index: 1000;\\\n}\\\n.ace_dragging.ace_dark .ace_scroller:before{\\\nbackground: rgba(0, 0, 0, 0.01);\\\n}\\\n.ace_selecting, .ace_selecting * {\\\ncursor: text !important;\\\n}\\\n.ace_gutter {\\\nposition: absolute;\\\noverflow : hidden;\\\nwidth: auto;\\\ntop: 0;\\\nbottom: 0;\\\nleft: 0;\\\ncursor: default;\\\nz-index: 4;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\ncontain: style size layout;\\\n}\\\n.ace_gutter-active-line {\\\nposition: absolute;\\\nleft: 0;\\\nright: 0;\\\n}\\\n.ace_scroller.ace_scroll-left {\\\nbox-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;\\\n}\\\n.ace_gutter-cell {\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\npadding-left: 19px;\\\npadding-right: 6px;\\\nbackground-repeat: no-repeat;\\\n}\\\n.ace_gutter-cell.ace_error {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==\\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_warning {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==\\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_gutter-cell.ace_info {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=\\\");\\\nbackground-position: 2px center;\\\n}\\\n.ace_dark .ace_gutter-cell.ace_info {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_scrollbar {\\\ncontain: strict;\\\nposition: absolute;\\\nright: 0;\\\nbottom: 0;\\\nz-index: 6;\\\n}\\\n.ace_scrollbar-inner {\\\nposition: absolute;\\\ncursor: text;\\\nleft: 0;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-v{\\\noverflow-x: hidden;\\\noverflow-y: scroll;\\\ntop: 0;\\\n}\\\n.ace_scrollbar-h {\\\noverflow-x: scroll;\\\noverflow-y: hidden;\\\nleft: 0;\\\n}\\\n.ace_print-margin {\\\nposition: absolute;\\\nheight: 100%;\\\n}\\\n.ace_text-input {\\\nposition: absolute;\\\nz-index: 0;\\\nwidth: 0.5em;\\\nheight: 1em;\\\nopacity: 0;\\\nbackground: transparent;\\\n-moz-appearance: none;\\\nappearance: none;\\\nborder: none;\\\nresize: none;\\\noutline: none;\\\noverflow: hidden;\\\nfont: inherit;\\\npadding: 0 1px;\\\nmargin: 0 -1px;\\\ncontain: strict;\\\n-ms-user-select: text;\\\n-moz-user-select: text;\\\n-webkit-user-select: text;\\\nuser-select: text;\\\nwhite-space: pre!important;\\\n}\\\n.ace_text-input.ace_composition {\\\nbackground: transparent;\\\ncolor: inherit;\\\nz-index: 1000;\\\nopacity: 1;\\\n}\\\n.ace_composition_placeholder { color: transparent }\\\n.ace_composition_marker { \\\nborder-bottom: 1px solid;\\\nposition: absolute;\\\nborder-radius: 0;\\\nmargin-top: 1px;\\\n}\\\n[ace_nocontext=true] {\\\ntransform: none!important;\\\nfilter: none!important;\\\nclip-path: none!important;\\\nmask : none!important;\\\ncontain: none!important;\\\nperspective: none!important;\\\nmix-blend-mode: initial!important;\\\nz-index: auto;\\\n}\\\n.ace_layer {\\\nz-index: 1;\\\nposition: absolute;\\\noverflow: hidden;\\\nword-wrap: normal;\\\nwhite-space: pre;\\\nheight: 100%;\\\nwidth: 100%;\\\nbox-sizing: border-box;\\\npointer-events: none;\\\n}\\\n.ace_gutter-layer {\\\nposition: relative;\\\nwidth: auto;\\\ntext-align: right;\\\npointer-events: auto;\\\nheight: 1000000px;\\\ncontain: style size layout;\\\n}\\\n.ace_text-layer {\\\nfont: inherit !important;\\\nposition: absolute;\\\nheight: 1000000px;\\\nwidth: 1000000px;\\\ncontain: style size layout;\\\n}\\\n.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {\\\ncontain: style size layout;\\\nposition: absolute;\\\ntop: 0;\\\nleft: 0;\\\nright: 0;\\\n}\\\n.ace_hidpi .ace_text-layer,\\\n.ace_hidpi .ace_gutter-layer,\\\n.ace_hidpi .ace_content,\\\n.ace_hidpi .ace_gutter {\\\ncontain: strict;\\\nwill-change: transform;\\\n}\\\n.ace_hidpi .ace_text-layer > .ace_line, \\\n.ace_hidpi .ace_text-layer > .ace_line_group {\\\ncontain: strict;\\\n}\\\n.ace_cjk {\\\ndisplay: inline-block;\\\ntext-align: center;\\\n}\\\n.ace_cursor-layer {\\\nz-index: 4;\\\n}\\\n.ace_cursor {\\\nz-index: 4;\\\nposition: absolute;\\\nbox-sizing: border-box;\\\nborder-left: 2px solid;\\\ntransform: translatez(0);\\\n}\\\n.ace_multiselect .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_slim-cursors .ace_cursor {\\\nborder-left-width: 1px;\\\n}\\\n.ace_overwrite-cursors .ace_cursor {\\\nborder-left-width: 0;\\\nborder-bottom: 1px solid;\\\n}\\\n.ace_hidden-cursors .ace_cursor {\\\nopacity: 0.2;\\\n}\\\n.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {\\\nopacity: 0;\\\n}\\\n.ace_smooth-blinking .ace_cursor {\\\ntransition: opacity 0.18s;\\\n}\\\n.ace_animate-blinking .ace_cursor {\\\nanimation-duration: 1000ms;\\\nanimation-timing-function: step-end;\\\nanimation-name: blink-ace-animate;\\\nanimation-iteration-count: infinite;\\\n}\\\n.ace_animate-blinking.ace_smooth-blinking .ace_cursor {\\\nanimation-duration: 1000ms;\\\nanimation-timing-function: ease-in-out;\\\nanimation-name: blink-ace-animate-smooth;\\\n}\\\n@keyframes blink-ace-animate {\\\nfrom, to { opacity: 1; }\\\n60% { opacity: 0; }\\\n}\\\n@keyframes blink-ace-animate-smooth {\\\nfrom, to { opacity: 1; }\\\n45% { opacity: 1; }\\\n60% { opacity: 0; }\\\n85% { opacity: 0; }\\\n}\\\n.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\\\nposition: absolute;\\\nz-index: 3;\\\n}\\\n.ace_marker-layer .ace_selection {\\\nposition: absolute;\\\nz-index: 5;\\\n}\\\n.ace_marker-layer .ace_bracket {\\\nposition: absolute;\\\nz-index: 6;\\\n}\\\n.ace_marker-layer .ace_error_bracket {\\\nposition: absolute;\\\nborder-bottom: 1px solid #DE5555;\\\nborder-radius: 0;\\\n}\\\n.ace_marker-layer .ace_active-line {\\\nposition: absolute;\\\nz-index: 2;\\\n}\\\n.ace_marker-layer .ace_selected-word {\\\nposition: absolute;\\\nz-index: 4;\\\nbox-sizing: border-box;\\\n}\\\n.ace_line .ace_fold {\\\nbox-sizing: border-box;\\\ndisplay: inline-block;\\\nheight: 11px;\\\nmargin-top: -2px;\\\nvertical-align: middle;\\\nbackground-image:\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=\\\");\\\nbackground-repeat: no-repeat, repeat-x;\\\nbackground-position: center center, top left;\\\ncolor: transparent;\\\nborder: 1px solid black;\\\nborder-radius: 2px;\\\ncursor: pointer;\\\npointer-events: auto;\\\n}\\\n.ace_dark .ace_fold {\\\n}\\\n.ace_fold:hover{\\\nbackground-image:\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII=\\\"),\\\nurl(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_tooltip {\\\nbackground-color: #FFF;\\\nbackground-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));\\\nborder: 1px solid gray;\\\nborder-radius: 1px;\\\nbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);\\\ncolor: black;\\\nmax-width: 100%;\\\npadding: 3px 4px;\\\nposition: fixed;\\\nz-index: 999999;\\\nbox-sizing: border-box;\\\ncursor: default;\\\nwhite-space: pre;\\\nword-wrap: break-word;\\\nline-height: normal;\\\nfont-style: normal;\\\nfont-weight: normal;\\\nletter-spacing: normal;\\\npointer-events: none;\\\n}\\\n.ace_folding-enabled > .ace_gutter-cell {\\\npadding-right: 13px;\\\n}\\\n.ace_fold-widget {\\\nbox-sizing: border-box;\\\nmargin: 0 -12px 0 1px;\\\ndisplay: none;\\\nwidth: 11px;\\\nvertical-align: top;\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==\\\");\\\nbackground-repeat: no-repeat;\\\nbackground-position: center;\\\nborder-radius: 3px;\\\nborder: 1px solid transparent;\\\ncursor: pointer;\\\n}\\\n.ace_folding-enabled .ace_fold-widget {\\\ndisplay: inline-block; \\\n}\\\n.ace_fold-widget.ace_end {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_fold-widget.ace_closed {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==\\\");\\\n}\\\n.ace_fold-widget:hover {\\\nborder: 1px solid rgba(0, 0, 0, 0.3);\\\nbackground-color: rgba(255, 255, 255, 0.2);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);\\\n}\\\n.ace_fold-widget:active {\\\nborder: 1px solid rgba(0, 0, 0, 0.4);\\\nbackground-color: rgba(0, 0, 0, 0.05);\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);\\\n}\\\n.ace_dark .ace_fold-widget {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_end {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_dark .ace_fold-widget.ace_closed {\\\nbackground-image: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\\\");\\\n}\\\n.ace_dark .ace_fold-widget:hover {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\nbackground-color: rgba(255, 255, 255, 0.1);\\\n}\\\n.ace_dark .ace_fold-widget:active {\\\nbox-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);\\\n}\\\n.ace_inline_button {\\\nborder: 1px solid lightgray;\\\ndisplay: inline-block;\\\nmargin: -1px 8px;\\\npadding: 0 5px;\\\npointer-events: auto;\\\ncursor: pointer;\\\n}\\\n.ace_inline_button:hover {\\\nborder-color: gray;\\\nbackground: rgba(200,200,200,0.2);\\\ndisplay: inline-block;\\\npointer-events: auto;\\\n}\\\n.ace_fold-widget.ace_invalid {\\\nbackground-color: #FFB4B4;\\\nborder-color: #DE5555;\\\n}\\\n.ace_fade-fold-widgets .ace_fold-widget {\\\ntransition: opacity 0.4s ease 0.05s;\\\nopacity: 0;\\\n}\\\n.ace_fade-fold-widgets:hover .ace_fold-widget {\\\ntransition: opacity 0.05s ease 0.05s;\\\nopacity:1;\\\n}\\\n.ace_underline {\\\ntext-decoration: underline;\\\n}\\\n.ace_bold {\\\nfont-weight: bold;\\\n}\\\n.ace_nobold .ace_bold {\\\nfont-weight: normal;\\\n}\\\n.ace_italic {\\\nfont-style: italic;\\\n}\\\n.ace_error-marker {\\\nbackground-color: rgba(255, 0, 0,0.2);\\\nposition: absolute;\\\nz-index: 9;\\\n}\\\n.ace_highlight-marker {\\\nbackground-color: rgba(255, 255, 0,0.2);\\\nposition: absolute;\\\nz-index: 8;\\\n}\\\n.ace_mobile-menu {\\\nposition: absolute;\\\nline-height: 1.5;\\\nborder-radius: 4px;\\\n-ms-user-select: none;\\\n-moz-user-select: none;\\\n-webkit-user-select: none;\\\nuser-select: none;\\\nbackground: white;\\\nbox-shadow: 1px 3px 2px grey;\\\nborder: 1px solid #dcdcdc;\\\ncolor: black;\\\n}\\\n.ace_dark > .ace_mobile-menu {\\\nbackground: #333;\\\ncolor: #ccc;\\\nbox-shadow: 1px 3px 2px grey;\\\nborder: 1px solid #444;\\\n}\\\n.ace_mobile-button {\\\npadding: 2px;\\\ncursor: pointer;\\\noverflow: hidden;\\\n}\\\n.ace_mobile-button:hover {\\\nbackground-color: #eee;\\\nopacity:1;\\\n}\\\n.ace_mobile-button:active {\\\nbackground-color: #ddd;\\\n}\\\n.ace_placeholder {\\\nfont-family: arial;\\\ntransform: scale(0.9);\\\ntransform-origin: left;\\\nwhite-space: pre;\\\nopacity: 0.7;\\\nmargin: 0 10px;\\\n}\";\n\nvar useragent = require(\"./lib/useragent\");\nvar HIDE_TEXTAREA = useragent.isIE;\n\ndom.importCssString(editorCss, \"ace_editor.css\", false);\n\nvar VirtualRenderer = function(container, theme) {\n var _self = this;\n\n this.container = container || dom.createElement(\"div\");\n\n dom.addCssClass(this.container, \"ace_editor\");\n if (dom.HI_DPI) dom.addCssClass(this.container, \"ace_hidpi\");\n\n this.setTheme(theme);\n if (config.get(\"useStrictCSP\") == null) \n config.set(\"useStrictCSP\", false);\n\n this.$gutter = dom.createElement(\"div\");\n this.$gutter.className = \"ace_gutter\";\n this.container.appendChild(this.$gutter);\n this.$gutter.setAttribute(\"aria-hidden\", true);\n\n this.scroller = dom.createElement(\"div\");\n this.scroller.className = \"ace_scroller\";\n \n this.container.appendChild(this.scroller);\n\n this.content = dom.createElement(\"div\");\n this.content.className = \"ace_content\";\n this.scroller.appendChild(this.content);\n\n this.$gutterLayer = new GutterLayer(this.$gutter);\n this.$gutterLayer.on(\"changeGutterWidth\", this.onGutterResize.bind(this));\n\n this.$markerBack = new MarkerLayer(this.content);\n\n var textLayer = this.$textLayer = new TextLayer(this.content);\n this.canvas = textLayer.element;\n\n this.$markerFront = new MarkerLayer(this.content);\n\n this.$cursorLayer = new CursorLayer(this.content);\n this.$horizScroll = false;\n this.$vScroll = false;\n\n this.scrollBar = \n this.scrollBarV = new VScrollBar(this.container, this);\n this.scrollBarH = new HScrollBar(this.container, this);\n this.scrollBarV.on(\"scroll\", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollTop(e.data - _self.scrollMargin.top);\n });\n this.scrollBarH.on(\"scroll\", function(e) {\n if (!_self.$scrollAnimation)\n _self.session.setScrollLeft(e.data - _self.scrollMargin.left);\n });\n\n this.scrollTop = 0;\n this.scrollLeft = 0;\n\n this.cursorPos = {\n row : 0,\n column : 0\n };\n\n this.$fontMetrics = new FontMetrics(this.container);\n this.$textLayer.$setFontMetrics(this.$fontMetrics);\n this.$textLayer.on(\"changeCharacterSize\", function(e) {\n _self.updateCharacterSize();\n _self.onResize(true, _self.gutterWidth, _self.$size.width, _self.$size.height);\n _self._signal(\"changeCharacterSize\", e);\n });\n\n this.$size = {\n width: 0,\n height: 0,\n scrollerHeight: 0,\n scrollerWidth: 0,\n $dirty: true\n };\n\n this.layerConfig = {\n width : 1,\n padding : 0,\n firstRow : 0,\n firstRowScreen: 0,\n lastRow : 0,\n lineHeight : 0,\n characterWidth : 0,\n minHeight : 1,\n maxHeight : 1,\n offset : 0,\n height : 1,\n gutterOffset: 1\n };\n \n this.scrollMargin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n \n this.margin = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n v: 0,\n h: 0\n };\n \n this.$keepTextAreaAtCursor = !useragent.isIOS;\n\n this.$loop = new RenderLoop(\n this.$renderChanges.bind(this),\n this.container.ownerDocument.defaultView\n );\n this.$loop.schedule(this.CHANGE_FULL);\n\n this.updateCharacterSize();\n this.setPadding(4);\n config.resetOptions(this);\n config._signal(\"renderer\", this);\n};\n\n(function() {\n\n this.CHANGE_CURSOR = 1;\n this.CHANGE_MARKER = 2;\n this.CHANGE_GUTTER = 4;\n this.CHANGE_SCROLL = 8;\n this.CHANGE_LINES = 16;\n this.CHANGE_TEXT = 32;\n this.CHANGE_SIZE = 64;\n this.CHANGE_MARKER_BACK = 128;\n this.CHANGE_MARKER_FRONT = 256;\n this.CHANGE_FULL = 512;\n this.CHANGE_H_SCROLL = 1024;\n\n oop.implement(this, EventEmitter);\n\n this.updateCharacterSize = function() {\n if (this.$textLayer.allowBoldFonts != this.$allowBoldFonts) {\n this.$allowBoldFonts = this.$textLayer.allowBoldFonts;\n this.setStyle(\"ace_nobold\", !this.$allowBoldFonts);\n }\n\n this.layerConfig.characterWidth =\n this.characterWidth = this.$textLayer.getCharacterWidth();\n this.layerConfig.lineHeight =\n this.lineHeight = this.$textLayer.getLineHeight();\n this.$updatePrintMargin();\n dom.setStyle(this.scroller.style, \"line-height\", this.lineHeight + \"px\");\n };\n this.setSession = function(session) {\n if (this.session)\n this.session.doc.off(\"changeNewLineMode\", this.onChangeNewLineMode);\n \n this.session = session;\n if (session && this.scrollMargin.top && session.getScrollTop() <= 0)\n session.setScrollTop(-this.scrollMargin.top);\n\n this.$cursorLayer.setSession(session);\n this.$markerBack.setSession(session);\n this.$markerFront.setSession(session);\n this.$gutterLayer.setSession(session);\n this.$textLayer.setSession(session);\n if (!session)\n return;\n \n this.$loop.schedule(this.CHANGE_FULL);\n this.session.$setFontMetrics(this.$fontMetrics);\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n \n this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this);\n this.onChangeNewLineMode();\n this.session.doc.on(\"changeNewLineMode\", this.onChangeNewLineMode);\n };\n this.updateLines = function(firstRow, lastRow, force) {\n if (lastRow === undefined)\n lastRow = Infinity;\n\n if (!this.$changedLines) {\n this.$changedLines = {\n firstRow: firstRow,\n lastRow: lastRow\n };\n }\n else {\n if (this.$changedLines.firstRow > firstRow)\n this.$changedLines.firstRow = firstRow;\n\n if (this.$changedLines.lastRow < lastRow)\n this.$changedLines.lastRow = lastRow;\n }\n if (this.$changedLines.lastRow < this.layerConfig.firstRow) {\n if (force)\n this.$changedLines.lastRow = this.layerConfig.lastRow;\n else\n return;\n }\n if (this.$changedLines.firstRow > this.layerConfig.lastRow)\n return;\n this.$loop.schedule(this.CHANGE_LINES);\n };\n\n this.onChangeNewLineMode = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n this.$textLayer.$updateEolChar();\n this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR);\n };\n \n this.onChangeTabSize = function() {\n this.$loop.schedule(this.CHANGE_TEXT | this.CHANGE_MARKER);\n this.$textLayer.onChangeTabSize();\n };\n this.updateText = function() {\n this.$loop.schedule(this.CHANGE_TEXT);\n };\n this.updateFull = function(force) {\n if (force)\n this.$renderChanges(this.CHANGE_FULL, true);\n else\n this.$loop.schedule(this.CHANGE_FULL);\n };\n this.updateFontSize = function() {\n this.$textLayer.checkForSizeChanges();\n };\n\n this.$changes = 0;\n this.$updateSizeAsync = function() {\n if (this.$loop.pending)\n this.$size.$dirty = true;\n else\n this.onResize();\n };\n this.onResize = function(force, gutterWidth, width, height) {\n if (this.resizing > 2)\n return;\n else if (this.resizing > 0)\n this.resizing++;\n else\n this.resizing = force ? 1 : 0;\n var el = this.container;\n if (!height)\n height = el.clientHeight || el.scrollHeight;\n if (!width)\n width = el.clientWidth || el.scrollWidth;\n var changes = this.$updateCachedSize(force, gutterWidth, width, height);\n\n \n if (!this.$size.scrollerHeight || (!width && !height))\n return this.resizing = 0;\n\n if (force)\n this.$gutterLayer.$padding = null;\n\n if (force)\n this.$renderChanges(changes | this.$changes, true);\n else\n this.$loop.schedule(changes | this.$changes);\n\n if (this.resizing)\n this.resizing = 0;\n this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null;\n };\n \n this.$updateCachedSize = function(force, gutterWidth, width, height) {\n height -= (this.$extraHeight || 0);\n var changes = 0;\n var size = this.$size;\n var oldSize = {\n width: size.width,\n height: size.height,\n scrollerHeight: size.scrollerHeight,\n scrollerWidth: size.scrollerWidth\n };\n if (height && (force || size.height != height)) {\n size.height = height;\n changes |= this.CHANGE_SIZE;\n\n size.scrollerHeight = size.height;\n if (this.$horizScroll)\n size.scrollerHeight -= this.scrollBarH.getHeight();\n this.scrollBarV.element.style.bottom = this.scrollBarH.getHeight() + \"px\";\n\n changes = changes | this.CHANGE_SCROLL;\n }\n\n if (width && (force || size.width != width)) {\n changes |= this.CHANGE_SIZE;\n size.width = width;\n \n if (gutterWidth == null)\n gutterWidth = this.$showGutter ? this.$gutter.offsetWidth : 0;\n \n this.gutterWidth = gutterWidth;\n \n dom.setStyle(this.scrollBarH.element.style, \"left\", gutterWidth + \"px\");\n dom.setStyle(this.scroller.style, \"left\", gutterWidth + this.margin.left + \"px\");\n size.scrollerWidth = Math.max(0, width - gutterWidth - this.scrollBarV.getWidth() - this.margin.h);\n dom.setStyle(this.$gutter.style, \"left\", this.margin.left + \"px\");\n \n var right = this.scrollBarV.getWidth() + \"px\";\n dom.setStyle(this.scrollBarH.element.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"right\", right);\n dom.setStyle(this.scroller.style, \"bottom\", this.scrollBarH.getHeight());\n\n if (this.session && this.session.getUseWrapMode() && this.adjustWrapLimit() || force) {\n changes |= this.CHANGE_FULL;\n }\n }\n \n size.$dirty = !width || !height;\n\n if (changes)\n this._signal(\"resize\", oldSize);\n\n return changes;\n };\n\n this.onGutterResize = function(width) {\n var gutterWidth = this.$showGutter ? width : 0;\n if (gutterWidth != this.gutterWidth)\n this.$changes |= this.$updateCachedSize(true, gutterWidth, this.$size.width, this.$size.height);\n\n if (this.session.getUseWrapMode() && this.adjustWrapLimit()) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else if (this.$size.$dirty) {\n this.$loop.schedule(this.CHANGE_FULL);\n } else {\n this.$computeLayerConfig();\n }\n };\n this.adjustWrapLimit = function() {\n var availableWidth = this.$size.scrollerWidth - this.$padding * 2;\n var limit = Math.floor(availableWidth / this.characterWidth);\n return this.session.adjustWrapLimit(limit, this.$showPrintMargin && this.$printMarginColumn);\n };\n this.setAnimatedScroll = function(shouldAnimate){\n this.setOption(\"animatedScroll\", shouldAnimate);\n };\n this.getAnimatedScroll = function() {\n return this.$animatedScroll;\n };\n this.setShowInvisibles = function(showInvisibles) {\n this.setOption(\"showInvisibles\", showInvisibles);\n this.session.$bidiHandler.setShowInvisibles(showInvisibles);\n };\n this.getShowInvisibles = function() {\n return this.getOption(\"showInvisibles\");\n };\n this.getDisplayIndentGuides = function() {\n return this.getOption(\"displayIndentGuides\");\n };\n\n this.setDisplayIndentGuides = function(display) {\n this.setOption(\"displayIndentGuides\", display);\n };\n this.setShowPrintMargin = function(showPrintMargin) {\n this.setOption(\"showPrintMargin\", showPrintMargin);\n };\n this.getShowPrintMargin = function() {\n return this.getOption(\"showPrintMargin\");\n };\n this.setPrintMarginColumn = function(showPrintMargin) {\n this.setOption(\"printMarginColumn\", showPrintMargin);\n };\n this.getPrintMarginColumn = function() {\n return this.getOption(\"printMarginColumn\");\n };\n this.getShowGutter = function(){\n return this.getOption(\"showGutter\");\n };\n this.setShowGutter = function(show){\n return this.setOption(\"showGutter\", show);\n };\n\n this.getFadeFoldWidgets = function(){\n return this.getOption(\"fadeFoldWidgets\");\n };\n\n this.setFadeFoldWidgets = function(show) {\n this.setOption(\"fadeFoldWidgets\", show);\n };\n\n this.setHighlightGutterLine = function(shouldHighlight) {\n this.setOption(\"highlightGutterLine\", shouldHighlight);\n };\n\n this.getHighlightGutterLine = function() {\n return this.getOption(\"highlightGutterLine\");\n };\n\n this.$updatePrintMargin = function() {\n if (!this.$showPrintMargin && !this.$printMarginEl)\n return;\n\n if (!this.$printMarginEl) {\n var containerEl = dom.createElement(\"div\");\n containerEl.className = \"ace_layer ace_print-margin-layer\";\n this.$printMarginEl = dom.createElement(\"div\");\n this.$printMarginEl.className = \"ace_print-margin\";\n containerEl.appendChild(this.$printMarginEl);\n this.content.insertBefore(containerEl, this.content.firstChild);\n }\n\n var style = this.$printMarginEl.style;\n style.left = Math.round(this.characterWidth * this.$printMarginColumn + this.$padding) + \"px\";\n style.visibility = this.$showPrintMargin ? \"visible\" : \"hidden\";\n \n if (this.session && this.session.$wrap == -1)\n this.adjustWrapLimit();\n };\n this.getContainerElement = function() {\n return this.container;\n };\n this.getMouseEventTarget = function() {\n return this.scroller;\n };\n this.getTextAreaContainer = function() {\n return this.container;\n };\n this.$moveTextAreaToCursor = function() {\n if (this.$isMousePressed) return;\n var style = this.textarea.style;\n var composition = this.$composition;\n if (!this.$keepTextAreaAtCursor && !composition) {\n dom.translate(this.textarea, -100, 0);\n return;\n }\n var pixelPos = this.$cursorLayer.$pixelPos;\n if (!pixelPos)\n return;\n if (composition && composition.markerRange)\n pixelPos = this.$cursorLayer.getPixelPosition(composition.markerRange.start, true);\n \n var config = this.layerConfig;\n var posTop = pixelPos.top;\n var posLeft = pixelPos.left;\n posTop -= config.offset;\n\n var h = composition && composition.useTextareaForIME ? this.lineHeight : HIDE_TEXTAREA ? 0 : 1;\n if (posTop < 0 || posTop > config.height - h) {\n dom.translate(this.textarea, 0, 0);\n return;\n }\n\n var w = 1;\n var maxTop = this.$size.height - h;\n if (!composition) {\n posTop += this.lineHeight;\n }\n else {\n if (composition.useTextareaForIME) {\n var val = this.textarea.value;\n w = this.characterWidth * (this.session.$getStringScreenWidth(val)[0]);\n }\n else {\n posTop += this.lineHeight + 2;\n }\n }\n \n posLeft -= this.scrollLeft;\n if (posLeft > this.$size.scrollerWidth - w)\n posLeft = this.$size.scrollerWidth - w;\n\n posLeft += this.gutterWidth + this.margin.left;\n\n dom.setStyle(style, \"height\", h + \"px\");\n dom.setStyle(style, \"width\", w + \"px\");\n dom.translate(this.textarea, Math.min(posLeft, this.$size.scrollerWidth - w), Math.min(posTop, maxTop));\n };\n this.getFirstVisibleRow = function() {\n return this.layerConfig.firstRow;\n };\n this.getFirstFullyVisibleRow = function() {\n return this.layerConfig.firstRow + (this.layerConfig.offset === 0 ? 0 : 1);\n };\n this.getLastFullyVisibleRow = function() {\n var config = this.layerConfig;\n var lastRow = config.lastRow;\n var top = this.session.documentToScreenRow(lastRow, 0) * config.lineHeight;\n if (top - this.session.getScrollTop() > config.height - config.lineHeight)\n return lastRow - 1;\n return lastRow;\n };\n this.getLastVisibleRow = function() {\n return this.layerConfig.lastRow;\n };\n\n this.$padding = null;\n this.setPadding = function(padding) {\n this.$padding = padding;\n this.$textLayer.setPadding(padding);\n this.$cursorLayer.setPadding(padding);\n this.$markerFront.setPadding(padding);\n this.$markerBack.setPadding(padding);\n this.$loop.schedule(this.CHANGE_FULL);\n this.$updatePrintMargin();\n };\n \n this.setScrollMargin = function(top, bottom, left, right) {\n var sm = this.scrollMargin;\n sm.top = top|0;\n sm.bottom = bottom|0;\n sm.right = right|0;\n sm.left = left|0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n if (sm.top && this.scrollTop <= 0 && this.session)\n this.session.setScrollTop(-sm.top);\n this.updateFull();\n };\n \n this.setMargin = function(top, bottom, left, right) {\n var sm = this.margin;\n sm.top = top|0;\n sm.bottom = bottom|0;\n sm.right = right|0;\n sm.left = left|0;\n sm.v = sm.top + sm.bottom;\n sm.h = sm.left + sm.right;\n this.$updateCachedSize(true, this.gutterWidth, this.$size.width, this.$size.height);\n this.updateFull();\n };\n this.getHScrollBarAlwaysVisible = function() {\n return this.$hScrollBarAlwaysVisible;\n };\n this.setHScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption(\"hScrollBarAlwaysVisible\", alwaysVisible);\n };\n this.getVScrollBarAlwaysVisible = function() {\n return this.$vScrollBarAlwaysVisible;\n };\n this.setVScrollBarAlwaysVisible = function(alwaysVisible) {\n this.setOption(\"vScrollBarAlwaysVisible\", alwaysVisible);\n };\n\n this.$updateScrollBarV = function() {\n var scrollHeight = this.layerConfig.maxHeight;\n var scrollerHeight = this.$size.scrollerHeight;\n if (!this.$maxLines && this.$scrollPastEnd) {\n scrollHeight -= (scrollerHeight - this.lineHeight) * this.$scrollPastEnd;\n if (this.scrollTop > scrollHeight - scrollerHeight) {\n scrollHeight = this.scrollTop + scrollerHeight;\n this.scrollBarV.scrollTop = null;\n }\n }\n this.scrollBarV.setScrollHeight(scrollHeight + this.scrollMargin.v);\n this.scrollBarV.setScrollTop(this.scrollTop + this.scrollMargin.top);\n };\n this.$updateScrollBarH = function() {\n this.scrollBarH.setScrollWidth(this.layerConfig.width + 2 * this.$padding + this.scrollMargin.h);\n this.scrollBarH.setScrollLeft(this.scrollLeft + this.scrollMargin.left);\n };\n \n this.$frozen = false;\n this.freeze = function() {\n this.$frozen = true;\n };\n \n this.unfreeze = function() {\n this.$frozen = false;\n };\n\n this.$renderChanges = function(changes, force) {\n if (this.$changes) {\n changes |= this.$changes;\n this.$changes = 0;\n }\n if ((!this.session || !this.container.offsetWidth || this.$frozen) || (!changes && !force)) {\n this.$changes |= changes;\n return; \n } \n if (this.$size.$dirty) {\n this.$changes |= changes;\n return this.onResize(true);\n }\n if (!this.lineHeight) {\n this.$textLayer.checkForSizeChanges();\n }\n \n this._signal(\"beforeRender\", changes);\n \n if (this.session && this.session.$bidiHandler)\n this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);\n\n var config = this.layerConfig;\n if (changes & this.CHANGE_FULL ||\n changes & this.CHANGE_SIZE ||\n changes & this.CHANGE_TEXT ||\n changes & this.CHANGE_LINES ||\n changes & this.CHANGE_SCROLL ||\n changes & this.CHANGE_H_SCROLL\n ) {\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n if (config.firstRow != this.layerConfig.firstRow && config.firstRowScreen == this.layerConfig.firstRowScreen) {\n var st = this.scrollTop + (config.firstRow - this.layerConfig.firstRow) * this.lineHeight;\n if (st > 0) {\n this.scrollTop = st;\n changes = changes | this.CHANGE_SCROLL;\n changes |= this.$computeLayerConfig() | this.$loop.clear();\n }\n }\n config = this.layerConfig;\n this.$updateScrollBarV();\n if (changes & this.CHANGE_H_SCROLL)\n this.$updateScrollBarH();\n \n dom.translate(this.content, -this.scrollLeft, -config.offset);\n \n var width = config.width + 2 * this.$padding + \"px\";\n var height = config.minHeight + \"px\";\n \n dom.setStyle(this.content.style, \"width\", width);\n dom.setStyle(this.content.style, \"height\", height);\n }\n if (changes & this.CHANGE_H_SCROLL) {\n dom.translate(this.content, -this.scrollLeft, -config.offset);\n this.scroller.className = this.scrollLeft <= 0 ? \"ace_scroller\" : \"ace_scroller ace_scroll-left\";\n }\n if (changes & this.CHANGE_FULL) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n if (changes & this.CHANGE_SCROLL) {\n this.$changedLines = null;\n if (changes & this.CHANGE_TEXT || changes & this.CHANGE_LINES)\n this.$textLayer.update(config);\n else\n this.$textLayer.scrollLines(config);\n\n if (this.$showGutter) {\n if (changes & this.CHANGE_GUTTER || changes & this.CHANGE_LINES)\n this.$gutterLayer.update(config);\n else\n this.$gutterLayer.scrollLines(config);\n }\n this.$markerBack.update(config);\n this.$markerFront.update(config);\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n this._signal(\"afterRender\", changes);\n return;\n }\n\n if (changes & this.CHANGE_TEXT) {\n this.$changedLines = null;\n this.$textLayer.update(config);\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_LINES) {\n if (this.$updateLines() || (changes & this.CHANGE_GUTTER) && this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_TEXT || changes & this.CHANGE_GUTTER) {\n if (this.$showGutter)\n this.$gutterLayer.update(config);\n }\n else if (changes & this.CHANGE_CURSOR) {\n if (this.$highlightGutterLine)\n this.$gutterLayer.updateLineHighlight(config);\n }\n\n if (changes & this.CHANGE_CURSOR) {\n this.$cursorLayer.update(config);\n this.$moveTextAreaToCursor();\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_FRONT)) {\n this.$markerFront.update(config);\n }\n\n if (changes & (this.CHANGE_MARKER | this.CHANGE_MARKER_BACK)) {\n this.$markerBack.update(config);\n }\n\n this._signal(\"afterRender\", changes);\n };\n\n \n this.$autosize = function() {\n var height = this.session.getScreenLength() * this.lineHeight;\n var maxHeight = this.$maxLines * this.lineHeight;\n var desiredHeight = Math.min(maxHeight, \n Math.max((this.$minLines || 1) * this.lineHeight, height)\n ) + this.scrollMargin.v + (this.$extraHeight || 0);\n if (this.$horizScroll)\n desiredHeight += this.scrollBarH.getHeight();\n if (this.$maxPixelHeight && desiredHeight > this.$maxPixelHeight)\n desiredHeight = this.$maxPixelHeight;\n \n var hideScrollbars = desiredHeight <= 2 * this.lineHeight;\n var vScroll = !hideScrollbars && height > maxHeight;\n \n if (desiredHeight != this.desiredHeight ||\n this.$size.height != this.desiredHeight || vScroll != this.$vScroll) {\n if (vScroll != this.$vScroll) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n \n var w = this.container.clientWidth;\n this.container.style.height = desiredHeight + \"px\";\n this.$updateCachedSize(true, this.$gutterWidth, w, desiredHeight);\n this.desiredHeight = desiredHeight;\n \n this._signal(\"autosize\");\n }\n };\n \n this.$computeLayerConfig = function() {\n var session = this.session;\n var size = this.$size;\n \n var hideScrollbars = size.height <= 2 * this.lineHeight;\n var screenLines = this.session.getScreenLength();\n var maxHeight = screenLines * this.lineHeight;\n\n var longestLine = this.$getLongestLine();\n \n var horizScroll = !hideScrollbars && (this.$hScrollBarAlwaysVisible ||\n size.scrollerWidth - longestLine - 2 * this.$padding < 0);\n\n var hScrollChanged = this.$horizScroll !== horizScroll;\n if (hScrollChanged) {\n this.$horizScroll = horizScroll;\n this.scrollBarH.setVisible(horizScroll);\n }\n var vScrollBefore = this.$vScroll; // autosize can change vscroll value in which case we need to update longestLine\n if (this.$maxLines && this.lineHeight > 1)\n this.$autosize();\n\n var minHeight = size.scrollerHeight + this.lineHeight;\n \n var scrollPastEnd = !this.$maxLines && this.$scrollPastEnd\n ? (size.scrollerHeight - this.lineHeight) * this.$scrollPastEnd\n : 0;\n maxHeight += scrollPastEnd;\n \n var sm = this.scrollMargin;\n this.session.setScrollTop(Math.max(-sm.top,\n Math.min(this.scrollTop, maxHeight - size.scrollerHeight + sm.bottom)));\n\n this.session.setScrollLeft(Math.max(-sm.left, Math.min(this.scrollLeft, \n longestLine + 2 * this.$padding - size.scrollerWidth + sm.right)));\n \n var vScroll = !hideScrollbars && (this.$vScrollBarAlwaysVisible ||\n size.scrollerHeight - maxHeight + scrollPastEnd < 0 || this.scrollTop > sm.top);\n var vScrollChanged = vScrollBefore !== vScroll;\n if (vScrollChanged) {\n this.$vScroll = vScroll;\n this.scrollBarV.setVisible(vScroll);\n }\n\n var offset = this.scrollTop % this.lineHeight;\n var lineCount = Math.ceil(minHeight / this.lineHeight) - 1;\n var firstRow = Math.max(0, Math.round((this.scrollTop - offset) / this.lineHeight));\n var lastRow = firstRow + lineCount;\n var firstRowScreen, firstRowHeight;\n var lineHeight = this.lineHeight;\n firstRow = session.screenToDocumentRow(firstRow, 0);\n var foldLine = session.getFoldLine(firstRow);\n if (foldLine) {\n firstRow = foldLine.start.row;\n }\n\n firstRowScreen = session.documentToScreenRow(firstRow, 0);\n firstRowHeight = session.getRowLength(firstRow) * lineHeight;\n\n lastRow = Math.min(session.screenToDocumentRow(lastRow, 0), session.getLength() - 1);\n minHeight = size.scrollerHeight + session.getRowLength(lastRow) * lineHeight +\n firstRowHeight;\n\n offset = this.scrollTop - firstRowScreen * lineHeight;\n\n var changes = 0;\n if (this.layerConfig.width != longestLine || hScrollChanged) \n changes = this.CHANGE_H_SCROLL;\n if (hScrollChanged || vScrollChanged) {\n changes |= this.$updateCachedSize(true, this.gutterWidth, size.width, size.height);\n this._signal(\"scrollbarVisibilityChanged\");\n if (vScrollChanged)\n longestLine = this.$getLongestLine();\n }\n \n this.layerConfig = {\n width : longestLine,\n padding : this.$padding,\n firstRow : firstRow,\n firstRowScreen: firstRowScreen,\n lastRow : lastRow,\n lineHeight : lineHeight,\n characterWidth : this.characterWidth,\n minHeight : minHeight,\n maxHeight : maxHeight,\n offset : offset,\n gutterOffset : lineHeight ? Math.max(0, Math.ceil((offset + size.height - size.scrollerHeight) / lineHeight)) : 0,\n height : this.$size.scrollerHeight\n };\n\n if (this.session.$bidiHandler)\n this.session.$bidiHandler.setContentWidth(longestLine - this.$padding);\n\n return changes;\n };\n\n this.$updateLines = function() {\n if (!this.$changedLines) return;\n var firstRow = this.$changedLines.firstRow;\n var lastRow = this.$changedLines.lastRow;\n this.$changedLines = null;\n\n var layerConfig = this.layerConfig;\n\n if (firstRow > layerConfig.lastRow + 1) { return; }\n if (lastRow < layerConfig.firstRow) { return; }\n if (lastRow === Infinity) {\n if (this.$showGutter)\n this.$gutterLayer.update(layerConfig);\n this.$textLayer.update(layerConfig);\n return;\n }\n this.$textLayer.updateLines(layerConfig, firstRow, lastRow);\n return true;\n };\n\n this.$getLongestLine = function() {\n var charCount = this.session.getScreenWidth();\n if (this.showInvisibles && !this.session.$useWrapMode)\n charCount += 1;\n \n if (this.$textLayer && charCount > this.$textLayer.MAX_LINE_LENGTH)\n charCount = this.$textLayer.MAX_LINE_LENGTH + 30;\n\n return Math.max(this.$size.scrollerWidth - 2 * this.$padding, Math.round(charCount * this.characterWidth));\n };\n this.updateFrontMarkers = function() {\n this.$markerFront.setMarkers(this.session.getMarkers(true));\n this.$loop.schedule(this.CHANGE_MARKER_FRONT);\n };\n this.updateBackMarkers = function() {\n this.$markerBack.setMarkers(this.session.getMarkers());\n this.$loop.schedule(this.CHANGE_MARKER_BACK);\n };\n this.addGutterDecoration = function(row, className){\n this.$gutterLayer.addGutterDecoration(row, className);\n };\n this.removeGutterDecoration = function(row, className){\n this.$gutterLayer.removeGutterDecoration(row, className);\n };\n this.updateBreakpoints = function(rows) {\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.setAnnotations = function(annotations) {\n this.$gutterLayer.setAnnotations(annotations);\n this.$loop.schedule(this.CHANGE_GUTTER);\n };\n this.updateCursor = function() {\n this.$loop.schedule(this.CHANGE_CURSOR);\n };\n this.hideCursor = function() {\n this.$cursorLayer.hideCursor();\n };\n this.showCursor = function() {\n this.$cursorLayer.showCursor();\n };\n\n this.scrollSelectionIntoView = function(anchor, lead, offset) {\n this.scrollCursorIntoView(anchor, offset);\n this.scrollCursorIntoView(lead, offset);\n };\n this.scrollCursorIntoView = function(cursor, offset, $viewMargin) {\n if (this.$size.scrollerHeight === 0)\n return;\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n\n var left = pos.left;\n var top = pos.top;\n \n var topMargin = $viewMargin && $viewMargin.top || 0;\n var bottomMargin = $viewMargin && $viewMargin.bottom || 0;\n \n var scrollTop = this.$scrollAnimation ? this.session.getScrollTop() : this.scrollTop;\n \n if (scrollTop + topMargin > top) {\n if (offset && scrollTop + topMargin > top + this.lineHeight)\n top -= offset * this.$size.scrollerHeight;\n if (top === 0)\n top = -this.scrollMargin.top;\n this.session.setScrollTop(top);\n } else if (scrollTop + this.$size.scrollerHeight - bottomMargin < top + this.lineHeight) {\n if (offset && scrollTop + this.$size.scrollerHeight - bottomMargin < top - this.lineHeight)\n top += offset * this.$size.scrollerHeight;\n this.session.setScrollTop(top + this.lineHeight + bottomMargin - this.$size.scrollerHeight);\n }\n\n var scrollLeft = this.scrollLeft;\n\n if (scrollLeft > left) {\n if (left < this.$padding + 2 * this.layerConfig.characterWidth)\n left = -this.scrollMargin.left;\n this.session.setScrollLeft(left);\n } else if (scrollLeft + this.$size.scrollerWidth < left + this.characterWidth) {\n this.session.setScrollLeft(Math.round(left + this.characterWidth - this.$size.scrollerWidth));\n } else if (scrollLeft <= this.$padding && left - scrollLeft < this.characterWidth) {\n this.session.setScrollLeft(0);\n }\n };\n this.getScrollTop = function() {\n return this.session.getScrollTop();\n };\n this.getScrollLeft = function() {\n return this.session.getScrollLeft();\n };\n this.getScrollTopRow = function() {\n return this.scrollTop / this.lineHeight;\n };\n this.getScrollBottomRow = function() {\n return Math.max(0, Math.floor((this.scrollTop + this.$size.scrollerHeight) / this.lineHeight) - 1);\n };\n this.scrollToRow = function(row) {\n this.session.setScrollTop(row * this.lineHeight);\n };\n\n this.alignCursor = function(cursor, alignment) {\n if (typeof cursor == \"number\")\n cursor = {row: cursor, column: 0};\n\n var pos = this.$cursorLayer.getPixelPosition(cursor);\n var h = this.$size.scrollerHeight - this.lineHeight;\n var offset = pos.top - h * (alignment || 0);\n\n this.session.setScrollTop(offset);\n return offset;\n };\n\n this.STEPS = 8;\n this.$calcSteps = function(fromValue, toValue){\n var i = 0;\n var l = this.STEPS;\n var steps = [];\n\n var func = function(t, x_min, dx) {\n return dx * (Math.pow(t - 1, 3) + 1) + x_min;\n };\n\n for (i = 0; i < l; ++i)\n steps.push(func(i / this.STEPS, fromValue, toValue - fromValue));\n\n return steps;\n };\n this.scrollToLine = function(line, center, animate, callback) {\n var pos = this.$cursorLayer.getPixelPosition({row: line, column: 0});\n var offset = pos.top;\n if (center)\n offset -= this.$size.scrollerHeight / 2;\n\n var initialScroll = this.scrollTop;\n this.session.setScrollTop(offset);\n if (animate !== false)\n this.animateScrolling(initialScroll, callback);\n };\n\n this.animateScrolling = function(fromValue, callback) {\n var toValue = this.scrollTop;\n if (!this.$animatedScroll)\n return;\n var _self = this;\n \n if (fromValue == toValue)\n return;\n \n if (this.$scrollAnimation) {\n var oldSteps = this.$scrollAnimation.steps;\n if (oldSteps.length) {\n fromValue = oldSteps[0];\n if (fromValue == toValue)\n return;\n }\n }\n \n var steps = _self.$calcSteps(fromValue, toValue);\n this.$scrollAnimation = {from: fromValue, to: toValue, steps: steps};\n\n clearInterval(this.$timer);\n\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n this.$timer = setInterval(function() {\n if (!_self.session) \n return clearInterval(_self.$timer);\n if (steps.length) {\n _self.session.setScrollTop(steps.shift());\n _self.session.$scrollTop = toValue;\n } else if (toValue != null) {\n _self.session.$scrollTop = -1;\n _self.session.setScrollTop(toValue);\n toValue = null;\n } else {\n _self.$timer = clearInterval(_self.$timer);\n _self.$scrollAnimation = null;\n callback && callback();\n }\n }, 10);\n };\n this.scrollToY = function(scrollTop) {\n if (this.scrollTop !== scrollTop) {\n this.$loop.schedule(this.CHANGE_SCROLL);\n this.scrollTop = scrollTop;\n }\n };\n this.scrollToX = function(scrollLeft) {\n if (this.scrollLeft !== scrollLeft)\n this.scrollLeft = scrollLeft;\n this.$loop.schedule(this.CHANGE_H_SCROLL);\n };\n this.scrollTo = function(x, y) {\n this.session.setScrollTop(y);\n this.session.setScrollLeft(x);\n };\n this.scrollBy = function(deltaX, deltaY) {\n deltaY && this.session.setScrollTop(this.session.getScrollTop() + deltaY);\n deltaX && this.session.setScrollLeft(this.session.getScrollLeft() + deltaX);\n };\n this.isScrollableBy = function(deltaX, deltaY) {\n if (deltaY < 0 && this.session.getScrollTop() >= 1 - this.scrollMargin.top)\n return true;\n if (deltaY > 0 && this.session.getScrollTop() + this.$size.scrollerHeight\n - this.layerConfig.maxHeight < -1 + this.scrollMargin.bottom)\n return true;\n if (deltaX < 0 && this.session.getScrollLeft() >= 1 - this.scrollMargin.left)\n return true;\n if (deltaX > 0 && this.session.getScrollLeft() + this.$size.scrollerWidth\n - this.layerConfig.width < -1 + this.scrollMargin.right)\n return true;\n };\n\n this.pixelToScreenCoordinates = function(x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = {top:0, left: 0};\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n } else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n \n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n\n return {row: row, column: col, side: offset - col > 0 ? 1 : -1, offsetX: offsetX};\n };\n\n this.screenToTextCoordinates = function(x, y) {\n var canvasPos;\n if (this.$hasCssTransforms) {\n canvasPos = {top:0, left: 0};\n var p = this.$fontMetrics.transformCoordinates([x, y]);\n x = p[1] - this.gutterWidth - this.margin.left;\n y = p[0];\n } else {\n canvasPos = this.scroller.getBoundingClientRect();\n }\n\n var offsetX = x + this.scrollLeft - canvasPos.left - this.$padding;\n var offset = offsetX / this.characterWidth;\n var col = this.$blockCursor ? Math.floor(offset) : Math.round(offset);\n\n var row = Math.floor((y + this.scrollTop - canvasPos.top) / this.lineHeight);\n\n return this.session.screenToDocumentPosition(row, Math.max(col, 0), offsetX);\n };\n this.textToScreenCoordinates = function(row, column) {\n var canvasPos = this.scroller.getBoundingClientRect();\n var pos = this.session.documentToScreenPosition(row, column);\n\n var x = this.$padding + (this.session.$bidiHandler.isBidiRow(pos.row, row)\n ? this.session.$bidiHandler.getPosLeft(pos.column)\n : Math.round(pos.column * this.characterWidth));\n \n var y = pos.row * this.lineHeight;\n\n return {\n pageX: canvasPos.left + x - this.scrollLeft,\n pageY: canvasPos.top + y - this.scrollTop\n };\n };\n this.visualizeFocus = function() {\n dom.addCssClass(this.container, \"ace_focus\");\n };\n this.visualizeBlur = function() {\n dom.removeCssClass(this.container, \"ace_focus\");\n };\n this.showComposition = function(composition) {\n this.$composition = composition;\n if (!composition.cssText) {\n composition.cssText = this.textarea.style.cssText;\n }\n if (composition.useTextareaForIME == undefined)\n composition.useTextareaForIME = this.$useTextareaForIME;\n \n if (this.$useTextareaForIME) {\n dom.addCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = \"\";\n this.$moveTextAreaToCursor();\n this.$cursorLayer.element.style.display = \"none\";\n }\n else {\n composition.markerId = this.session.addMarker(composition.markerRange, \"ace_composition_marker\", \"text\");\n }\n };\n this.setCompositionText = function(text) {\n var cursor = this.session.selection.cursor;\n this.addToken(text, \"composition_placeholder\", cursor.row, cursor.column);\n this.$moveTextAreaToCursor();\n };\n this.hideComposition = function() {\n if (!this.$composition)\n return;\n \n if (this.$composition.markerId)\n this.session.removeMarker(this.$composition.markerId);\n\n dom.removeCssClass(this.textarea, \"ace_composition\");\n this.textarea.style.cssText = this.$composition.cssText;\n var cursor = this.session.selection.cursor;\n this.removeExtraToken(cursor.row, cursor.column);\n this.$composition = null;\n this.$cursorLayer.element.style.display = \"\";\n };\n \n this.addToken = function(text, type, row, column) {\n var session = this.session;\n session.bgTokenizer.lines[row] = null;\n var newToken = {type: type, value: text};\n var tokens = session.getTokens(row);\n if (column == null) {\n tokens.push(newToken);\n } else {\n var l = 0;\n for (var i =0; i < tokens.length; i++) {\n var token = tokens[i];\n l += token.value.length;\n if (column <= l) {\n var diff = token.value.length - (l - column);\n var before = token.value.slice(0, diff);\n var after = token.value.slice(diff);\n \n tokens.splice(i, 1, {type: token.type, value: before}, newToken, {type: token.type, value: after});\n break;\n }\n }\n }\n this.updateLines(row, row);\n };\n\n this.removeExtraToken = function(row, column) {\n this.updateLines(row, row);\n };\n this.setTheme = function(theme, cb) {\n var _self = this;\n this.$themeId = theme;\n _self._dispatchEvent('themeChange',{theme:theme});\n\n if (!theme || typeof theme == \"string\") {\n var moduleName = theme || this.$options.theme.initialValue;\n config.loadModule([\"theme\", moduleName], afterLoad);\n } else {\n afterLoad(theme);\n }\n\n function afterLoad(module) {\n if (_self.$themeId != theme)\n return cb && cb();\n if (!module || !module.cssClass)\n throw new Error(\"couldn't load module \" + theme + \" or it didn't call define\");\n if (module.$id)\n _self.$themeId = module.$id;\n dom.importCssString(\n module.cssText,\n module.cssClass,\n _self.container\n );\n\n if (_self.theme)\n dom.removeCssClass(_self.container, _self.theme.cssClass);\n\n var padding = \"padding\" in module ? module.padding \n : \"padding\" in (_self.theme || {}) ? 4 : _self.$padding;\n if (_self.$padding && padding != _self.$padding)\n _self.setPadding(padding);\n _self.$theme = module.cssClass;\n\n _self.theme = module;\n dom.addCssClass(_self.container, module.cssClass);\n dom.setCssClass(_self.container, \"ace_dark\", module.isDark);\n if (_self.$size) {\n _self.$size.width = 0;\n _self.$updateSizeAsync();\n }\n\n _self._dispatchEvent('themeLoaded', {theme:module});\n cb && cb();\n }\n };\n this.getTheme = function() {\n return this.$themeId;\n };\n this.setStyle = function(style, include) {\n dom.setCssClass(this.container, style, include !== false);\n };\n this.unsetStyle = function(style) {\n dom.removeCssClass(this.container, style);\n };\n \n this.setCursorStyle = function(style) {\n dom.setStyle(this.scroller.style, \"cursor\", style);\n };\n this.setMouseCursor = function(cursorStyle) {\n dom.setStyle(this.scroller.style, \"cursor\", cursorStyle);\n };\n \n this.attachToShadowRoot = function() {\n dom.importCssString(editorCss, \"ace_editor.css\", this.container);\n };\n this.destroy = function() {\n this.freeze();\n this.$fontMetrics.destroy();\n this.$cursorLayer.destroy();\n this.removeAllListeners();\n this.container.textContent = \"\";\n };\n\n}).call(VirtualRenderer.prototype);\n\n\nconfig.defineOptions(VirtualRenderer.prototype, \"renderer\", {\n animatedScroll: {initialValue: false},\n showInvisibles: {\n set: function(value) {\n if (this.$textLayer.setShowInvisibles(value))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: false\n },\n showPrintMargin: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: true\n },\n printMarginColumn: {\n set: function() { this.$updatePrintMargin(); },\n initialValue: 80\n },\n printMargin: {\n set: function(val) {\n if (typeof val == \"number\")\n this.$printMarginColumn = val;\n this.$showPrintMargin = !!val;\n this.$updatePrintMargin();\n },\n get: function() {\n return this.$showPrintMargin && this.$printMarginColumn; \n }\n },\n showGutter: {\n set: function(show){\n this.$gutter.style.display = show ? \"block\" : \"none\";\n this.$loop.schedule(this.CHANGE_FULL);\n this.onGutterResize();\n },\n initialValue: true\n },\n fadeFoldWidgets: {\n set: function(show) {\n dom.setCssClass(this.$gutter, \"ace_fade-fold-widgets\", show);\n },\n initialValue: false\n },\n showFoldWidgets: {\n set: function(show) {\n this.$gutterLayer.setShowFoldWidgets(show);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n displayIndentGuides: {\n set: function(show) {\n if (this.$textLayer.setDisplayIndentGuides(show))\n this.$loop.schedule(this.CHANGE_TEXT);\n },\n initialValue: true\n },\n highlightGutterLine: {\n set: function(shouldHighlight) {\n this.$gutterLayer.setHighlightGutterLine(shouldHighlight);\n this.$loop.schedule(this.CHANGE_GUTTER);\n },\n initialValue: true\n },\n hScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$hScrollBarAlwaysVisible || !this.$horizScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n vScrollBarAlwaysVisible: {\n set: function(val) {\n if (!this.$vScrollBarAlwaysVisible || !this.$vScroll)\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: false\n },\n fontSize: {\n set: function(size) {\n if (typeof size == \"number\")\n size = size + \"px\";\n this.container.style.fontSize = size;\n this.updateFontSize();\n },\n initialValue: 12\n },\n fontFamily: {\n set: function(name) {\n this.container.style.fontFamily = name;\n this.updateFontSize();\n }\n },\n maxLines: {\n set: function(val) {\n this.updateFull();\n }\n },\n minLines: {\n set: function(val) {\n if (!(this.$minLines < 0x1ffffffffffff))\n this.$minLines = 0;\n this.updateFull();\n }\n },\n maxPixelHeight: {\n set: function(val) {\n this.updateFull();\n },\n initialValue: 0\n },\n scrollPastEnd: {\n set: function(val) {\n val = +val || 0;\n if (this.$scrollPastEnd == val)\n return;\n this.$scrollPastEnd = val;\n this.$loop.schedule(this.CHANGE_SCROLL);\n },\n initialValue: 0,\n handlesSet: true\n },\n fixedWidthGutter: {\n set: function(val) {\n this.$gutterLayer.$fixedWidth = !!val;\n this.$loop.schedule(this.CHANGE_GUTTER);\n }\n },\n theme: {\n set: function(val) { this.setTheme(val); },\n get: function() { return this.$themeId || this.theme; },\n initialValue: \"./theme/textmate\",\n handlesSet: true\n },\n hasCssTransforms: {\n },\n useTextareaForIME: {\n initialValue: !useragent.isMobile && !useragent.isIE\n }\n});\n\nexports.VirtualRenderer = VirtualRenderer;\n});\n\nace.define(\"ace/worker/worker_client\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/net\",\"ace/lib/event_emitter\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"../lib/oop\");\nvar net = require(\"../lib/net\");\nvar EventEmitter = require(\"../lib/event_emitter\").EventEmitter;\nvar config = require(\"../config\");\n\nfunction $workerBlob(workerUrl) {\n var script = \"importScripts('\" + net.qualifyURL(workerUrl) + \"');\";\n try {\n return new Blob([script], {\"type\": \"application/javascript\"});\n } catch (e) { // Backwards-compatibility\n var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;\n var blobBuilder = new BlobBuilder();\n blobBuilder.append(script);\n return blobBuilder.getBlob(\"application/javascript\");\n }\n}\n\nfunction createWorker(workerUrl) {\n if (typeof Worker == \"undefined\")\n return { postMessage: function() {}, terminate: function() {} };\n if (config.get(\"loadWorkerFromBlob\")) {\n var blob = $workerBlob(workerUrl);\n var URL = window.URL || window.webkitURL;\n var blobURL = URL.createObjectURL(blob);\n return new Worker(blobURL);\n }\n return new Worker(workerUrl);\n}\n\nvar WorkerClient = function(worker) {\n if (!worker.postMessage)\n worker = this.$createWorkerFromOldConfig.apply(this, arguments);\n\n this.$worker = worker;\n this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this);\n this.changeListener = this.changeListener.bind(this);\n this.onMessage = this.onMessage.bind(this);\n\n this.callbackId = 1;\n this.callbacks = {};\n\n this.$worker.onmessage = this.onMessage;\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createWorkerFromOldConfig = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) {\n if (require.nameToUrl && !require.toUrl)\n require.toUrl = require.nameToUrl;\n\n if (config.get(\"packaged\") || !require.toUrl) {\n workerUrl = workerUrl || config.moduleUrl(mod, \"worker\");\n } else {\n var normalizePath = this.$normalizePath;\n workerUrl = workerUrl || normalizePath(require.toUrl(\"ace/worker/worker.js\", null, \"_\"));\n\n var tlns = {};\n topLevelNamespaces.forEach(function(ns) {\n tlns[ns] = normalizePath(require.toUrl(ns, null, \"_\").replace(/(\\.js)?(\\?.*)?$/, \"\"));\n });\n }\n\n this.$worker = createWorker(workerUrl);\n if (importScripts) {\n this.send(\"importScripts\", importScripts);\n }\n this.$worker.postMessage({\n init : true,\n tlns : tlns,\n module : mod,\n classname : classname\n });\n return this.$worker;\n };\n\n this.onMessage = function(e) {\n var msg = e.data;\n switch (msg.type) {\n case \"event\":\n this._signal(msg.name, {data: msg.data});\n break;\n case \"call\":\n var callback = this.callbacks[msg.id];\n if (callback) {\n callback(msg.data);\n delete this.callbacks[msg.id];\n }\n break;\n case \"error\":\n this.reportError(msg.data);\n break;\n case \"log\":\n window.console && console.log && console.log.apply(console, msg.data);\n break;\n }\n };\n \n this.reportError = function(err) {\n window.console && console.error && console.error(err);\n };\n\n this.$normalizePath = function(path) {\n return net.qualifyURL(path);\n };\n\n this.terminate = function() {\n this._signal(\"terminate\", {});\n this.deltaQueue = null;\n this.$worker.terminate();\n this.$worker = null;\n if (this.$doc)\n this.$doc.off(\"change\", this.changeListener);\n this.$doc = null;\n };\n\n this.send = function(cmd, args) {\n this.$worker.postMessage({command: cmd, args: args});\n };\n\n this.call = function(cmd, args, callback) {\n if (callback) {\n var id = this.callbackId++;\n this.callbacks[id] = callback;\n args.push(id);\n }\n this.send(cmd, args);\n };\n\n this.emit = function(event, data) {\n try {\n if (data.data && data.data.err)\n data.data.err = {message: data.data.err.message, stack: data.data.err.stack, code: data.data.err.code};\n this.$worker.postMessage({event: event, data: {data: data.data}});\n }\n catch(ex) {\n console.error(ex.stack);\n }\n };\n\n this.attachToDocument = function(doc) {\n if (this.$doc)\n this.terminate();\n\n this.$doc = doc;\n this.call(\"setValue\", [doc.getValue()]);\n doc.on(\"change\", this.changeListener);\n };\n\n this.changeListener = function(delta) {\n if (!this.deltaQueue) {\n this.deltaQueue = [];\n setTimeout(this.$sendDeltaQueue, 0);\n }\n if (delta.action == \"insert\")\n this.deltaQueue.push(delta.start, delta.lines);\n else\n this.deltaQueue.push(delta.start, delta.end);\n };\n\n this.$sendDeltaQueue = function() {\n var q = this.deltaQueue;\n if (!q) return;\n this.deltaQueue = null;\n if (q.length > 50 && q.length > this.$doc.getLength() >> 1) {\n this.call(\"setValue\", [this.$doc.getValue()]);\n } else\n this.emit(\"change\", {data: q});\n };\n\n}).call(WorkerClient.prototype);\n\n\nvar UIWorkerClient = function(topLevelNamespaces, mod, classname) {\n var main = null;\n var emitSync = false;\n var sender = Object.create(EventEmitter);\n\n var messageBuffer = [];\n var workerClient = new WorkerClient({\n messageBuffer: messageBuffer,\n terminate: function() {},\n postMessage: function(e) {\n messageBuffer.push(e);\n if (!main) return;\n if (emitSync)\n setTimeout(processNext);\n else\n processNext();\n }\n });\n\n workerClient.setEmitSync = function(val) { emitSync = val; };\n\n var processNext = function() {\n var msg = messageBuffer.shift();\n if (msg.command)\n main[msg.command].apply(main, msg.args);\n else if (msg.event)\n sender._signal(msg.event, msg.data);\n };\n\n sender.postMessage = function(msg) {\n workerClient.onMessage({data: msg});\n };\n sender.callback = function(data, callbackId) {\n this.postMessage({type: \"call\", id: callbackId, data: data});\n };\n sender.emit = function(name, data) {\n this.postMessage({type: \"event\", name: name, data: data});\n };\n\n config.loadModule([\"worker\", mod], function(Main) {\n main = new Main[classname](sender);\n while (messageBuffer.length)\n processNext();\n });\n\n return workerClient;\n};\n\nexports.UIWorkerClient = UIWorkerClient;\nexports.WorkerClient = WorkerClient;\nexports.createWorker = createWorker;\n\n\n});\n\nace.define(\"ace/placeholder\",[\"require\",\"exports\",\"module\",\"ace/range\",\"ace/lib/event_emitter\",\"ace/lib/oop\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"./range\").Range;\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\nvar oop = require(\"./lib/oop\");\n\nvar PlaceHolder = function(session, length, pos, others, mainClass, othersClass) {\n var _self = this;\n this.length = length;\n this.session = session;\n this.doc = session.getDocument();\n this.mainClass = mainClass;\n this.othersClass = othersClass;\n this.$onUpdate = this.onUpdate.bind(this);\n this.doc.on(\"change\", this.$onUpdate);\n this.$others = others;\n \n this.$onCursorChange = function() {\n setTimeout(function() {\n _self.onCursorChange();\n });\n };\n \n this.$pos = pos;\n var undoStack = session.getUndoManager().$undoStack || session.getUndoManager().$undostack || {length: -1};\n this.$undoStackDepth = undoStack.length;\n this.setup();\n\n session.selection.on(\"changeCursor\", this.$onCursorChange);\n};\n\n(function() {\n\n oop.implement(this, EventEmitter);\n this.setup = function() {\n var _self = this;\n var doc = this.doc;\n var session = this.session;\n \n this.selectionBefore = session.selection.toJSON();\n if (session.selection.inMultiSelectMode)\n session.selection.toSingleRange();\n\n this.pos = doc.createAnchor(this.$pos.row, this.$pos.column);\n var pos = this.pos;\n pos.$insertRight = true;\n pos.detach();\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column + this.length), this.mainClass, null, false);\n this.others = [];\n this.$others.forEach(function(other) {\n var anchor = doc.createAnchor(other.row, other.column);\n anchor.$insertRight = true;\n anchor.detach();\n _self.others.push(anchor);\n });\n session.setUndoSelect(false);\n };\n this.showOtherMarkers = function() {\n if (this.othersActive) return;\n var session = this.session;\n var _self = this;\n this.othersActive = true;\n this.others.forEach(function(anchor) {\n anchor.markerId = session.addMarker(new Range(anchor.row, anchor.column, anchor.row, anchor.column+_self.length), _self.othersClass, null, false);\n });\n };\n this.hideOtherMarkers = function() {\n if (!this.othersActive) return;\n this.othersActive = false;\n for (var i = 0; i < this.others.length; i++) {\n this.session.removeMarker(this.others[i].markerId);\n }\n };\n this.onUpdate = function(delta) {\n if (this.$updating)\n return this.updateAnchors(delta);\n \n var range = delta;\n if (range.start.row !== range.end.row) return;\n if (range.start.row !== this.pos.row) return;\n this.$updating = true;\n var lengthDiff = delta.action === \"insert\" ? range.end.column - range.start.column : range.start.column - range.end.column;\n var inMainRange = range.start.column >= this.pos.column && range.start.column <= this.pos.column + this.length + 1;\n var distanceFromStart = range.start.column - this.pos.column;\n \n this.updateAnchors(delta);\n \n if (inMainRange)\n this.length += lengthDiff;\n\n if (inMainRange && !this.session.$fromUndo) {\n if (delta.action === 'insert') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n this.doc.insertMergedLines(newPos, delta.lines);\n }\n } else if (delta.action === 'remove') {\n for (var i = this.others.length - 1; i >= 0; i--) {\n var otherPos = this.others[i];\n var newPos = {row: otherPos.row, column: otherPos.column + distanceFromStart};\n this.doc.remove(new Range(newPos.row, newPos.column, newPos.row, newPos.column - lengthDiff));\n }\n }\n }\n \n this.$updating = false;\n this.updateMarkers();\n };\n \n this.updateAnchors = function(delta) {\n this.pos.onChange(delta);\n for (var i = this.others.length; i--;)\n this.others[i].onChange(delta);\n this.updateMarkers();\n };\n \n this.updateMarkers = function() {\n if (this.$updating)\n return;\n var _self = this;\n var session = this.session;\n var updateMarker = function(pos, className) {\n session.removeMarker(pos.markerId);\n pos.markerId = session.addMarker(new Range(pos.row, pos.column, pos.row, pos.column+_self.length), className, null, false);\n };\n updateMarker(this.pos, this.mainClass);\n for (var i = this.others.length; i--;)\n updateMarker(this.others[i], this.othersClass);\n };\n\n this.onCursorChange = function(event) {\n if (this.$updating || !this.session) return;\n var pos = this.session.selection.getCursor();\n if (pos.row === this.pos.row && pos.column >= this.pos.column && pos.column <= this.pos.column + this.length) {\n this.showOtherMarkers();\n this._emit(\"cursorEnter\", event);\n } else {\n this.hideOtherMarkers();\n this._emit(\"cursorLeave\", event);\n }\n }; \n this.detach = function() {\n this.session.removeMarker(this.pos && this.pos.markerId);\n this.hideOtherMarkers();\n this.doc.off(\"change\", this.$onUpdate);\n this.session.selection.off(\"changeCursor\", this.$onCursorChange);\n this.session.setUndoSelect(true);\n this.session = null;\n };\n this.cancel = function() {\n if (this.$undoStackDepth === -1)\n return;\n var undoManager = this.session.getUndoManager();\n var undosRequired = (undoManager.$undoStack || undoManager.$undostack).length - this.$undoStackDepth;\n for (var i = 0; i < undosRequired; i++) {\n undoManager.undo(this.session, true);\n }\n if (this.selectionBefore)\n this.session.selection.fromJSON(this.selectionBefore);\n };\n}).call(PlaceHolder.prototype);\n\n\nexports.PlaceHolder = PlaceHolder;\n});\n\nace.define(\"ace/mouse/multi_select_handler\",[\"require\",\"exports\",\"module\",\"ace/lib/event\",\"ace/lib/useragent\"], function(require, exports, module) {\n\nvar event = require(\"../lib/event\");\nvar useragent = require(\"../lib/useragent\");\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\n\nfunction onMouseDown(e) {\n var ev = e.domEvent;\n var alt = ev.altKey;\n var shift = ev.shiftKey;\n var ctrl = ev.ctrlKey;\n var accel = e.getAccelKey();\n var button = e.getButton();\n \n if (ctrl && useragent.isMac)\n button = ev.button;\n\n if (e.editor.inMultiSelectMode && button == 2) {\n e.editor.textInput.onContextMenu(e.domEvent);\n return;\n }\n \n if (!ctrl && !alt && !accel) {\n if (button === 0 && e.editor.inMultiSelectMode)\n e.editor.exitMultiSelectMode();\n return;\n }\n \n if (button !== 0)\n return;\n\n var editor = e.editor;\n var selection = editor.selection;\n var isMultiSelect = editor.inMultiSelectMode;\n var pos = e.getDocumentPosition();\n var cursor = selection.getCursor();\n var inSelection = e.inSelection() || (selection.isEmpty() && isSamePoint(pos, cursor));\n\n var mouseX = e.x, mouseY = e.y;\n var onMouseSelection = function(e) {\n mouseX = e.clientX;\n mouseY = e.clientY;\n };\n \n var session = editor.session;\n var screenAnchor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var screenCursor = screenAnchor;\n \n var selectionMode;\n if (editor.$mouseHandler.$enableJumpToDef) {\n if (ctrl && alt || accel && alt)\n selectionMode = shift ? \"block\" : \"add\";\n else if (alt && editor.$blockSelectEnabled)\n selectionMode = \"block\";\n } else {\n if (accel && !alt) {\n selectionMode = \"add\";\n if (!isMultiSelect && shift)\n return;\n } else if (alt && editor.$blockSelectEnabled) {\n selectionMode = \"block\";\n }\n }\n \n if (selectionMode && useragent.isMac && ev.ctrlKey) {\n editor.$mouseHandler.cancelContextMenu();\n }\n\n if (selectionMode == \"add\") {\n if (!isMultiSelect && inSelection)\n return; // dragging\n\n if (!isMultiSelect) {\n var range = selection.toOrientedRange();\n editor.addSelectionMarker(range);\n }\n\n var oldRange = selection.rangeList.rangeAtPoint(pos);\n \n editor.inVirtualSelectionMode = true;\n \n if (shift) {\n oldRange = null;\n range = selection.ranges[0] || range;\n editor.removeSelectionMarker(range);\n }\n editor.once(\"mouseup\", function() {\n var tmpSel = selection.toOrientedRange();\n\n if (oldRange && tmpSel.isEmpty() && isSamePoint(oldRange.cursor, tmpSel.cursor))\n selection.substractPoint(tmpSel.cursor);\n else {\n if (shift) {\n selection.substractPoint(range.cursor);\n } else if (range) {\n editor.removeSelectionMarker(range);\n selection.addRange(range);\n }\n selection.addRange(tmpSel);\n }\n editor.inVirtualSelectionMode = false;\n });\n\n } else if (selectionMode == \"block\") {\n e.stop();\n editor.inVirtualSelectionMode = true; \n var initialRange;\n var rectSel = [];\n var blockSelect = function() {\n var newCursor = editor.renderer.pixelToScreenCoordinates(mouseX, mouseY);\n var cursor = session.screenToDocumentPosition(newCursor.row, newCursor.column, newCursor.offsetX);\n\n if (isSamePoint(screenCursor, newCursor) && isSamePoint(cursor, selection.lead))\n return;\n screenCursor = newCursor;\n \n editor.selection.moveToPosition(cursor);\n editor.renderer.scrollCursorIntoView();\n\n editor.removeSelectionMarkers(rectSel);\n rectSel = selection.rectangularRangeBlock(screenCursor, screenAnchor);\n if (editor.$mouseHandler.$clickSelection && rectSel.length == 1 && rectSel[0].isEmpty())\n rectSel[0] = editor.$mouseHandler.$clickSelection.clone();\n rectSel.forEach(editor.addSelectionMarker, editor);\n editor.updateSelectionMarkers();\n };\n if (isMultiSelect && !accel) {\n selection.toSingleRange();\n } else if (!isMultiSelect && accel) {\n initialRange = selection.toOrientedRange();\n editor.addSelectionMarker(initialRange);\n }\n \n if (shift)\n screenAnchor = session.documentToScreenPosition(selection.lead); \n else\n selection.moveToPosition(pos);\n \n screenCursor = {row: -1, column: -1};\n\n var onMouseSelectionEnd = function(e) {\n blockSelect();\n clearInterval(timerId);\n editor.removeSelectionMarkers(rectSel);\n if (!rectSel.length)\n rectSel = [selection.toOrientedRange()];\n if (initialRange) {\n editor.removeSelectionMarker(initialRange);\n selection.toSingleRange(initialRange);\n }\n for (var i = 0; i < rectSel.length; i++)\n selection.addRange(rectSel[i]);\n editor.inVirtualSelectionMode = false;\n editor.$mouseHandler.$clickSelection = null;\n };\n\n var onSelectionInterval = blockSelect;\n\n event.capture(editor.container, onMouseSelection, onMouseSelectionEnd);\n var timerId = setInterval(function() {onSelectionInterval();}, 20);\n\n return e.preventDefault();\n }\n}\n\n\nexports.onMouseDown = onMouseDown;\n\n});\n\nace.define(\"ace/commands/multi_select_commands\",[\"require\",\"exports\",\"module\",\"ace/keyboard/hash_handler\"], function(require, exports, module) {\nexports.defaultCommands = [{\n name: \"addCursorAbove\",\n description: \"Add cursor above\",\n exec: function(editor) { editor.selectMoreLines(-1); },\n bindKey: {win: \"Ctrl-Alt-Up\", mac: \"Ctrl-Alt-Up\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorBelow\",\n description: \"Add cursor below\",\n exec: function(editor) { editor.selectMoreLines(1); },\n bindKey: {win: \"Ctrl-Alt-Down\", mac: \"Ctrl-Alt-Down\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorAboveSkipCurrent\",\n description: \"Add cursor above (skip current)\",\n exec: function(editor) { editor.selectMoreLines(-1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Up\", mac: \"Ctrl-Alt-Shift-Up\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"addCursorBelowSkipCurrent\",\n description: \"Add cursor below (skip current)\",\n exec: function(editor) { editor.selectMoreLines(1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Down\", mac: \"Ctrl-Alt-Shift-Down\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectMoreBefore\",\n description: \"Select more before\",\n exec: function(editor) { editor.selectMore(-1); },\n bindKey: {win: \"Ctrl-Alt-Left\", mac: \"Ctrl-Alt-Left\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectMoreAfter\",\n description: \"Select more after\",\n exec: function(editor) { editor.selectMore(1); },\n bindKey: {win: \"Ctrl-Alt-Right\", mac: \"Ctrl-Alt-Right\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectNextBefore\",\n description: \"Select next before\",\n exec: function(editor) { editor.selectMore(-1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Left\", mac: \"Ctrl-Alt-Shift-Left\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"selectNextAfter\",\n description: \"Select next after\",\n exec: function(editor) { editor.selectMore(1, true); },\n bindKey: {win: \"Ctrl-Alt-Shift-Right\", mac: \"Ctrl-Alt-Shift-Right\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}, {\n name: \"toggleSplitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function(editor) {\n if (editor.multiSelect.rangeCount > 1)\n editor.multiSelect.joinSelections();\n else\n editor.multiSelect.splitIntoLines();\n },\n bindKey: {win: \"Ctrl-Alt-L\", mac: \"Ctrl-Alt-L\"},\n readOnly: true\n}, {\n name: \"splitSelectionIntoLines\",\n description: \"Split into lines\",\n exec: function(editor) { editor.multiSelect.splitIntoLines(); },\n readOnly: true\n}, {\n name: \"alignCursors\",\n description: \"Align cursors\",\n exec: function(editor) { editor.alignCursors(); },\n bindKey: {win: \"Ctrl-Alt-A\", mac: \"Ctrl-Alt-A\"},\n scrollIntoView: \"cursor\"\n}, {\n name: \"findAll\",\n description: \"Find all\",\n exec: function(editor) { editor.findAll(); },\n bindKey: {win: \"Ctrl-Alt-K\", mac: \"Ctrl-Alt-G\"},\n scrollIntoView: \"cursor\",\n readOnly: true\n}];\nexports.multiSelectCommands = [{\n name: \"singleSelection\",\n description: \"Single selection\",\n bindKey: \"esc\",\n exec: function(editor) { editor.exitMultiSelectMode(); },\n scrollIntoView: \"cursor\",\n readOnly: true,\n isAvailable: function(editor) {return editor && editor.inMultiSelectMode;}\n}];\n\nvar HashHandler = require(\"../keyboard/hash_handler\").HashHandler;\nexports.keyboardHandler = new HashHandler(exports.multiSelectCommands);\n\n});\n\nace.define(\"ace/multi_select\",[\"require\",\"exports\",\"module\",\"ace/range_list\",\"ace/range\",\"ace/selection\",\"ace/mouse/multi_select_handler\",\"ace/lib/event\",\"ace/lib/lang\",\"ace/commands/multi_select_commands\",\"ace/search\",\"ace/edit_session\",\"ace/editor\",\"ace/config\"], function(require, exports, module) {\n\nvar RangeList = require(\"./range_list\").RangeList;\nvar Range = require(\"./range\").Range;\nvar Selection = require(\"./selection\").Selection;\nvar onMouseDown = require(\"./mouse/multi_select_handler\").onMouseDown;\nvar event = require(\"./lib/event\");\nvar lang = require(\"./lib/lang\");\nvar commands = require(\"./commands/multi_select_commands\");\nexports.commands = commands.defaultCommands.concat(commands.multiSelectCommands);\nvar Search = require(\"./search\").Search;\nvar search = new Search();\n\nfunction find(session, needle, dir) {\n search.$options.wrap = true;\n search.$options.needle = needle;\n search.$options.backwards = dir == -1;\n return search.find(session);\n}\nvar EditSession = require(\"./edit_session\").EditSession;\n(function() {\n this.getSelectionMarkers = function() {\n return this.$selectionMarkers;\n };\n}).call(EditSession.prototype);\n(function() {\n this.ranges = null;\n this.rangeList = null;\n this.addRange = function(range, $blockChangeEvents) {\n if (!range)\n return;\n\n if (!this.inMultiSelectMode && this.rangeCount === 0) {\n var oldRange = this.toOrientedRange();\n this.rangeList.add(oldRange);\n this.rangeList.add(range);\n if (this.rangeList.ranges.length != 2) {\n this.rangeList.removeAll();\n return $blockChangeEvents || this.fromOrientedRange(range);\n }\n this.rangeList.removeAll();\n this.rangeList.add(oldRange);\n this.$onAddRange(oldRange);\n }\n\n if (!range.cursor)\n range.cursor = range.end;\n\n var removed = this.rangeList.add(range);\n\n this.$onAddRange(range);\n\n if (removed.length)\n this.$onRemoveRange(removed);\n\n if (this.rangeCount > 1 && !this.inMultiSelectMode) {\n this._signal(\"multiSelect\");\n this.inMultiSelectMode = true;\n this.session.$undoSelect = false;\n this.rangeList.attach(this.session);\n }\n\n return $blockChangeEvents || this.fromOrientedRange(range);\n };\n this.toSingleRange = function(range) {\n range = range || this.ranges[0];\n var removed = this.rangeList.removeAll();\n if (removed.length)\n this.$onRemoveRange(removed);\n\n range && this.fromOrientedRange(range);\n };\n this.substractPoint = function(pos) {\n var removed = this.rangeList.substractPoint(pos);\n if (removed) {\n this.$onRemoveRange(removed);\n return removed[0];\n }\n };\n this.mergeOverlappingRanges = function() {\n var removed = this.rangeList.merge();\n if (removed.length)\n this.$onRemoveRange(removed);\n };\n\n this.$onAddRange = function(range) {\n this.rangeCount = this.rangeList.ranges.length;\n this.ranges.unshift(range);\n this._signal(\"addRange\", {range: range});\n };\n\n this.$onRemoveRange = function(removed) {\n this.rangeCount = this.rangeList.ranges.length;\n if (this.rangeCount == 1 && this.inMultiSelectMode) {\n var lastRange = this.rangeList.ranges.pop();\n removed.push(lastRange);\n this.rangeCount = 0;\n }\n\n for (var i = removed.length; i--; ) {\n var index = this.ranges.indexOf(removed[i]);\n this.ranges.splice(index, 1);\n }\n\n this._signal(\"removeRange\", {ranges: removed});\n\n if (this.rangeCount === 0 && this.inMultiSelectMode) {\n this.inMultiSelectMode = false;\n this._signal(\"singleSelect\");\n this.session.$undoSelect = true;\n this.rangeList.detach(this.session);\n }\n\n lastRange = lastRange || this.ranges[0];\n if (lastRange && !lastRange.isEqual(this.getRange()))\n this.fromOrientedRange(lastRange);\n };\n this.$initRangeList = function() {\n if (this.rangeList)\n return;\n\n this.rangeList = new RangeList();\n this.ranges = [];\n this.rangeCount = 0;\n };\n this.getAllRanges = function() {\n return this.rangeCount ? this.rangeList.ranges.concat() : [this.getRange()];\n };\n this.splitIntoLines = function () {\n var ranges = this.ranges.length ? this.ranges : [this.getRange()];\n var newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var row = range.start.row;\n var endRow = range.end.row;\n if (row === endRow) {\n newRanges.push(range.clone());\n } else {\n newRanges.push(new Range(row, range.start.column, row, this.session.getLine(row).length));\n while (++row < endRow)\n newRanges.push(this.getLineRange(row, true));\n newRanges.push(new Range(endRow, 0, endRow, range.end.column));\n }\n if (i == 0 && !this.isBackwards())\n newRanges = newRanges.reverse();\n }\n this.toSingleRange();\n for (var i = newRanges.length; i--;)\n this.addRange(newRanges[i]);\n };\n \n this.joinSelections = function () {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n };\n this.toggleBlockSelection = function () {\n if (this.rangeCount > 1) {\n var ranges = this.rangeList.ranges;\n var lastRange = ranges[ranges.length - 1];\n var range = Range.fromPoints(ranges[0].start, lastRange.end);\n\n this.toSingleRange();\n this.setSelectionRange(range, lastRange.cursor == lastRange.start);\n } else {\n var cursor = this.session.documentToScreenPosition(this.cursor);\n var anchor = this.session.documentToScreenPosition(this.anchor);\n\n var rectSel = this.rectangularRangeBlock(cursor, anchor);\n rectSel.forEach(this.addRange, this);\n }\n };\n this.rectangularRangeBlock = function(screenCursor, screenAnchor, includeEmptyLines) {\n var rectSel = [];\n\n var xBackwards = screenCursor.column < screenAnchor.column;\n if (xBackwards) {\n var startColumn = screenCursor.column;\n var endColumn = screenAnchor.column;\n var startOffsetX = screenCursor.offsetX;\n var endOffsetX = screenAnchor.offsetX;\n } else {\n var startColumn = screenAnchor.column;\n var endColumn = screenCursor.column;\n var startOffsetX = screenAnchor.offsetX;\n var endOffsetX = screenCursor.offsetX;\n }\n\n var yBackwards = screenCursor.row < screenAnchor.row;\n if (yBackwards) {\n var startRow = screenCursor.row;\n var endRow = screenAnchor.row;\n } else {\n var startRow = screenAnchor.row;\n var endRow = screenCursor.row;\n }\n\n if (startColumn < 0)\n startColumn = 0;\n if (startRow < 0)\n startRow = 0;\n\n if (startRow == endRow)\n includeEmptyLines = true;\n\n var docEnd;\n for (var row = startRow; row <= endRow; row++) {\n var range = Range.fromPoints(\n this.session.screenToDocumentPosition(row, startColumn, startOffsetX),\n this.session.screenToDocumentPosition(row, endColumn, endOffsetX)\n );\n if (range.isEmpty()) {\n if (docEnd && isSamePoint(range.end, docEnd))\n break;\n docEnd = range.end;\n }\n range.cursor = xBackwards ? range.start : range.end;\n rectSel.push(range);\n }\n\n if (yBackwards)\n rectSel.reverse();\n\n if (!includeEmptyLines) {\n var end = rectSel.length - 1;\n while (rectSel[end].isEmpty() && end > 0)\n end--;\n if (end > 0) {\n var start = 0;\n while (rectSel[start].isEmpty())\n start++;\n }\n for (var i = end; i >= start; i--) {\n if (rectSel[i].isEmpty())\n rectSel.splice(i, 1);\n }\n }\n\n return rectSel;\n };\n}).call(Selection.prototype);\nvar Editor = require(\"./editor\").Editor;\n(function() {\n this.updateSelectionMarkers = function() {\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n this.addSelectionMarker = function(orientedRange) {\n if (!orientedRange.cursor)\n orientedRange.cursor = orientedRange.end;\n\n var style = this.getSelectionStyle();\n orientedRange.marker = this.session.addMarker(orientedRange, \"ace_selection\", style);\n\n this.session.$selectionMarkers.push(orientedRange);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n return orientedRange;\n };\n this.removeSelectionMarker = function(range) {\n if (!range.marker)\n return;\n this.session.removeMarker(range.marker);\n var index = this.session.$selectionMarkers.indexOf(range);\n if (index != -1)\n this.session.$selectionMarkers.splice(index, 1);\n this.session.selectionMarkerCount = this.session.$selectionMarkers.length;\n };\n\n this.removeSelectionMarkers = function(ranges) {\n var markerList = this.session.$selectionMarkers;\n for (var i = ranges.length; i--; ) {\n var range = ranges[i];\n if (!range.marker)\n continue;\n this.session.removeMarker(range.marker);\n var index = markerList.indexOf(range);\n if (index != -1)\n markerList.splice(index, 1);\n }\n this.session.selectionMarkerCount = markerList.length;\n };\n\n this.$onAddRange = function(e) {\n this.addSelectionMarker(e.range);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onRemoveRange = function(e) {\n this.removeSelectionMarkers(e.ranges);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onMultiSelect = function(e) {\n if (this.inMultiSelectMode)\n return;\n this.inMultiSelectMode = true;\n\n this.setStyle(\"ace_multiselect\");\n this.keyBinding.addKeyboardHandler(commands.keyboardHandler);\n this.commands.setDefaultHandler(\"exec\", this.$onMultiSelectExec);\n\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n };\n\n this.$onSingleSelect = function(e) {\n if (this.session.multiSelect.inVirtualMode)\n return;\n this.inMultiSelectMode = false;\n\n this.unsetStyle(\"ace_multiselect\");\n this.keyBinding.removeKeyboardHandler(commands.keyboardHandler);\n\n this.commands.removeDefaultHandler(\"exec\", this.$onMultiSelectExec);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n this._emit(\"changeSelection\");\n };\n\n this.$onMultiSelectExec = function(e) {\n var command = e.command;\n var editor = e.editor;\n if (!editor.multiSelect)\n return;\n if (!command.multiSelectAction) {\n var result = command.exec(editor, e.args || {});\n editor.multiSelect.addRange(editor.multiSelect.toOrientedRange());\n editor.multiSelect.mergeOverlappingRanges();\n } else if (command.multiSelectAction == \"forEach\") {\n result = editor.forEachSelection(command, e.args);\n } else if (command.multiSelectAction == \"forEachLine\") {\n result = editor.forEachSelection(command, e.args, true);\n } else if (command.multiSelectAction == \"single\") {\n editor.exitMultiSelectMode();\n result = command.exec(editor, e.args || {});\n } else {\n result = command.multiSelectAction(editor, e.args || {});\n }\n return result;\n }; \n this.forEachSelection = function(cmd, args, options) {\n if (this.inVirtualSelectionMode)\n return;\n var keepOrder = options && options.keepOrder;\n var $byLines = options == true || options && options.$byLines;\n var session = this.session;\n var selection = this.selection;\n var rangeList = selection.rangeList;\n var ranges = (keepOrder ? selection : rangeList).ranges;\n var result;\n \n if (!ranges.length)\n return cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n \n var reg = selection._eventRegistry;\n selection._eventRegistry = {};\n\n var tmpSel = new Selection(session);\n this.inVirtualSelectionMode = true;\n for (var i = ranges.length; i--;) {\n if ($byLines) {\n while (i > 0 && ranges[i].start.row == ranges[i - 1].end.row)\n i--;\n }\n tmpSel.fromOrientedRange(ranges[i]);\n tmpSel.index = i;\n this.selection = session.selection = tmpSel;\n var cmdResult = cmd.exec ? cmd.exec(this, args || {}) : cmd(this, args || {});\n if (!result && cmdResult !== undefined)\n result = cmdResult;\n tmpSel.toOrientedRange(ranges[i]);\n }\n tmpSel.detach();\n\n this.selection = session.selection = selection;\n this.inVirtualSelectionMode = false;\n selection._eventRegistry = reg;\n selection.mergeOverlappingRanges();\n if (selection.ranges[0])\n selection.fromOrientedRange(selection.ranges[0]);\n \n var anim = this.renderer.$scrollAnimation;\n this.onCursorChange();\n this.onSelectionChange();\n if (anim && anim.from == anim.to)\n this.renderer.animateScrolling(anim.from);\n \n return result;\n };\n this.exitMultiSelectMode = function() {\n if (!this.inMultiSelectMode || this.inVirtualSelectionMode)\n return;\n this.multiSelect.toSingleRange();\n };\n\n this.getSelectedText = function() {\n var text = \"\";\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var ranges = this.multiSelect.rangeList.ranges;\n var buf = [];\n for (var i = 0; i < ranges.length; i++) {\n buf.push(this.session.getTextRange(ranges[i]));\n }\n var nl = this.session.getDocument().getNewLineCharacter();\n text = buf.join(nl);\n if (text.length == (buf.length - 1) * nl.length)\n text = \"\";\n } else if (!this.selection.isEmpty()) {\n text = this.session.getTextRange(this.getSelectionRange());\n }\n return text;\n };\n \n this.$checkMultiselectChange = function(e, anchor) {\n if (this.inMultiSelectMode && !this.inVirtualSelectionMode) {\n var range = this.multiSelect.ranges[0];\n if (this.multiSelect.isEmpty() && anchor == this.multiSelect.anchor)\n return;\n var pos = anchor == this.multiSelect.anchor\n ? range.cursor == range.start ? range.end : range.start\n : range.cursor;\n if (pos.row != anchor.row \n || this.session.$clipPositionToDocument(pos.row, pos.column).column != anchor.column)\n this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange());\n else\n this.multiSelect.mergeOverlappingRanges();\n }\n };\n this.findAll = function(needle, options, additive) {\n options = options || {};\n options.needle = needle || options.needle;\n if (options.needle == undefined) {\n var range = this.selection.isEmpty()\n ? this.selection.getWordRange()\n : this.selection.getRange();\n options.needle = this.session.getTextRange(range);\n } \n this.$search.set(options);\n \n var ranges = this.$search.findAll(this.session);\n if (!ranges.length)\n return 0;\n\n var selection = this.multiSelect;\n\n if (!additive)\n selection.toSingleRange(ranges[0]);\n\n for (var i = ranges.length; i--; )\n selection.addRange(ranges[i], true);\n if (range && selection.rangeList.rangeAtPoint(range.start))\n selection.addRange(range, true);\n \n return ranges.length;\n };\n this.selectMoreLines = function(dir, skip) {\n var range = this.selection.toOrientedRange();\n var isBackwards = range.cursor == range.end;\n\n var screenLead = this.session.documentToScreenPosition(range.cursor);\n if (this.selection.$desiredColumn)\n screenLead.column = this.selection.$desiredColumn;\n\n var lead = this.session.screenToDocumentPosition(screenLead.row + dir, screenLead.column);\n\n if (!range.isEmpty()) {\n var screenAnchor = this.session.documentToScreenPosition(isBackwards ? range.end : range.start);\n var anchor = this.session.screenToDocumentPosition(screenAnchor.row + dir, screenAnchor.column);\n } else {\n var anchor = lead;\n }\n\n if (isBackwards) {\n var newRange = Range.fromPoints(lead, anchor);\n newRange.cursor = newRange.start;\n } else {\n var newRange = Range.fromPoints(anchor, lead);\n newRange.cursor = newRange.end;\n }\n\n newRange.desiredColumn = screenLead.column;\n if (!this.selection.inMultiSelectMode) {\n this.selection.addRange(range);\n } else {\n if (skip)\n var toRemove = range.cursor;\n }\n\n this.selection.addRange(newRange);\n if (toRemove)\n this.selection.substractPoint(toRemove);\n };\n this.transposeSelections = function(dir) {\n var session = this.session;\n var sel = session.multiSelect;\n var all = sel.ranges;\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n if (range.isEmpty()) {\n var tmp = session.getWordRange(range.start.row, range.start.column);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n range.end.row = tmp.end.row;\n range.end.column = tmp.end.column;\n }\n }\n sel.mergeOverlappingRanges();\n\n var words = [];\n for (var i = all.length; i--; ) {\n var range = all[i];\n words.unshift(session.getTextRange(range));\n }\n\n if (dir < 0)\n words.unshift(words.pop());\n else\n words.push(words.shift());\n\n for (var i = all.length; i--; ) {\n var range = all[i];\n var tmp = range.clone();\n session.replace(range, words[i]);\n range.start.row = tmp.start.row;\n range.start.column = tmp.start.column;\n }\n sel.fromOrientedRange(sel.ranges[0]);\n };\n this.selectMore = function(dir, skip, stopAtFirst) {\n var session = this.session;\n var sel = session.multiSelect;\n\n var range = sel.toOrientedRange();\n if (range.isEmpty()) {\n range = session.getWordRange(range.start.row, range.start.column);\n range.cursor = dir == -1 ? range.start : range.end;\n this.multiSelect.addRange(range);\n if (stopAtFirst)\n return;\n }\n var needle = session.getTextRange(range);\n\n var newRange = find(session, needle, dir);\n if (newRange) {\n newRange.cursor = dir == -1 ? newRange.start : newRange.end;\n this.session.unfold(newRange);\n this.multiSelect.addRange(newRange);\n this.renderer.scrollCursorIntoView(null, 0.5);\n }\n if (skip)\n this.multiSelect.substractPoint(range.cursor);\n };\n this.alignCursors = function() {\n var session = this.session;\n var sel = session.multiSelect;\n var ranges = sel.ranges;\n var row = -1;\n var sameRowRanges = ranges.filter(function(r) {\n if (r.cursor.row == row)\n return true;\n row = r.cursor.row;\n });\n \n if (!ranges.length || sameRowRanges.length == ranges.length - 1) {\n var range = this.selection.getRange();\n var fr = range.start.row, lr = range.end.row;\n var guessRange = fr == lr;\n if (guessRange) {\n var max = this.session.getLength();\n var line;\n do {\n line = this.session.getLine(lr);\n } while (/[=:]/.test(line) && ++lr < max);\n do {\n line = this.session.getLine(fr);\n } while (/[=:]/.test(line) && --fr > 0);\n \n if (fr < 0) fr = 0;\n if (lr >= max) lr = max - 1;\n }\n var lines = this.session.removeFullLines(fr, lr);\n lines = this.$reAlignText(lines, guessRange);\n this.session.insert({row: fr, column: 0}, lines.join(\"\\n\") + \"\\n\");\n if (!guessRange) {\n range.start.column = 0;\n range.end.column = lines[lines.length - 1].length;\n }\n this.selection.setRange(range);\n } else {\n sameRowRanges.forEach(function(r) {\n sel.substractPoint(r.cursor);\n });\n\n var maxCol = 0;\n var minSpace = Infinity;\n var spaceOffsets = ranges.map(function(r) {\n var p = r.cursor;\n var line = session.getLine(p.row);\n var spaceOffset = line.substr(p.column).search(/\\S/g);\n if (spaceOffset == -1)\n spaceOffset = 0;\n\n if (p.column > maxCol)\n maxCol = p.column;\n if (spaceOffset < minSpace)\n minSpace = spaceOffset;\n return spaceOffset;\n });\n ranges.forEach(function(r, i) {\n var p = r.cursor;\n var l = maxCol - p.column;\n var d = spaceOffsets[i] - minSpace;\n if (l > d)\n session.insert(p, lang.stringRepeat(\" \", l - d));\n else\n session.remove(new Range(p.row, p.column, p.row, p.column - l + d));\n\n r.start.column = r.end.column = maxCol;\n r.start.row = r.end.row = p.row;\n r.cursor = r.end;\n });\n sel.fromOrientedRange(ranges[0]);\n this.renderer.updateCursor();\n this.renderer.updateBackMarkers();\n }\n };\n\n this.$reAlignText = function(lines, forceLeft) {\n var isLeftAligned = true, isRightAligned = true;\n var startW, textW, endW;\n\n return lines.map(function(line) {\n var m = line.match(/(\\s*)(.*?)(\\s*)([=:].*)/);\n if (!m)\n return [line];\n\n if (startW == null) {\n startW = m[1].length;\n textW = m[2].length;\n endW = m[3].length;\n return m;\n }\n\n if (startW + textW + endW != m[1].length + m[2].length + m[3].length)\n isRightAligned = false;\n if (startW != m[1].length)\n isLeftAligned = false;\n\n if (startW > m[1].length)\n startW = m[1].length;\n if (textW < m[2].length)\n textW = m[2].length;\n if (endW > m[3].length)\n endW = m[3].length;\n\n return m;\n }).map(forceLeft ? alignLeft :\n isLeftAligned ? isRightAligned ? alignRight : alignLeft : unAlign);\n\n function spaces(n) {\n return lang.stringRepeat(\" \", n);\n }\n\n function alignLeft(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(textW - m[2].length + endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function alignRight(m) {\n return !m[2] ? m[0] : spaces(startW + textW - m[2].length) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n function unAlign(m) {\n return !m[2] ? m[0] : spaces(startW) + m[2]\n + spaces(endW)\n + m[4].replace(/^([=:])\\s+/, \"$1 \");\n }\n };\n}).call(Editor.prototype);\n\n\nfunction isSamePoint(p1, p2) {\n return p1.row == p2.row && p1.column == p2.column;\n}\nexports.onSessionChange = function(e) {\n var session = e.session;\n if (session && !session.multiSelect) {\n session.$selectionMarkers = [];\n session.selection.$initRangeList();\n session.multiSelect = session.selection;\n }\n this.multiSelect = session && session.multiSelect;\n\n var oldSession = e.oldSession;\n if (oldSession) {\n oldSession.multiSelect.off(\"addRange\", this.$onAddRange);\n oldSession.multiSelect.off(\"removeRange\", this.$onRemoveRange);\n oldSession.multiSelect.off(\"multiSelect\", this.$onMultiSelect);\n oldSession.multiSelect.off(\"singleSelect\", this.$onSingleSelect);\n oldSession.multiSelect.lead.off(\"change\", this.$checkMultiselectChange);\n oldSession.multiSelect.anchor.off(\"change\", this.$checkMultiselectChange);\n }\n\n if (session) {\n session.multiSelect.on(\"addRange\", this.$onAddRange);\n session.multiSelect.on(\"removeRange\", this.$onRemoveRange);\n session.multiSelect.on(\"multiSelect\", this.$onMultiSelect);\n session.multiSelect.on(\"singleSelect\", this.$onSingleSelect);\n session.multiSelect.lead.on(\"change\", this.$checkMultiselectChange);\n session.multiSelect.anchor.on(\"change\", this.$checkMultiselectChange);\n }\n\n if (session && this.inMultiSelectMode != session.selection.inMultiSelectMode) {\n if (session.selection.inMultiSelectMode)\n this.$onMultiSelect();\n else\n this.$onSingleSelect();\n }\n};\nfunction MultiSelect(editor) {\n if (editor.$multiselectOnSessionChange)\n return;\n editor.$onAddRange = editor.$onAddRange.bind(editor);\n editor.$onRemoveRange = editor.$onRemoveRange.bind(editor);\n editor.$onMultiSelect = editor.$onMultiSelect.bind(editor);\n editor.$onSingleSelect = editor.$onSingleSelect.bind(editor);\n editor.$multiselectOnSessionChange = exports.onSessionChange.bind(editor);\n editor.$checkMultiselectChange = editor.$checkMultiselectChange.bind(editor);\n\n editor.$multiselectOnSessionChange(editor);\n editor.on(\"changeSession\", editor.$multiselectOnSessionChange);\n\n editor.on(\"mousedown\", onMouseDown);\n editor.commands.addCommands(commands.defaultCommands);\n\n addAltCursorListeners(editor);\n}\n\nfunction addAltCursorListeners(editor){\n if (!editor.textInput) return;\n var el = editor.textInput.getElement();\n var altCursor = false;\n event.addListener(el, \"keydown\", function(e) {\n var altDown = e.keyCode == 18 && !(e.ctrlKey || e.shiftKey || e.metaKey);\n if (editor.$blockSelectEnabled && altDown) {\n if (!altCursor) {\n editor.renderer.setMouseCursor(\"crosshair\");\n altCursor = true;\n }\n } else if (altCursor) {\n reset();\n }\n }, editor);\n\n event.addListener(el, \"keyup\", reset, editor);\n event.addListener(el, \"blur\", reset, editor);\n function reset(e) {\n if (altCursor) {\n editor.renderer.setMouseCursor(\"\");\n altCursor = false;\n }\n }\n}\n\nexports.MultiSelect = MultiSelect;\n\n\nrequire(\"./config\").defineOptions(Editor.prototype, \"editor\", {\n enableMultiselect: {\n set: function(val) {\n MultiSelect(this);\n if (val) {\n this.on(\"changeSession\", this.$multiselectOnSessionChange);\n this.on(\"mousedown\", onMouseDown);\n } else {\n this.off(\"changeSession\", this.$multiselectOnSessionChange);\n this.off(\"mousedown\", onMouseDown);\n }\n },\n value: true\n },\n enableBlockSelect: {\n set: function(val) {\n this.$blockSelectEnabled = val;\n },\n value: true\n }\n});\n\n\n\n});\n\nace.define(\"ace/mode/folding/fold_mode\",[\"require\",\"exports\",\"module\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\n\nvar Range = require(\"../../range\").Range;\n\nvar FoldMode = exports.FoldMode = function() {};\n\n(function() {\n\n this.foldingStartMarker = null;\n this.foldingStopMarker = null;\n this.getFoldWidget = function(session, foldStyle, row) {\n var line = session.getLine(row);\n if (this.foldingStartMarker.test(line))\n return \"start\";\n if (foldStyle == \"markbeginend\"\n && this.foldingStopMarker\n && this.foldingStopMarker.test(line))\n return \"end\";\n return \"\";\n };\n\n this.getFoldWidgetRange = function(session, foldStyle, row) {\n return null;\n };\n\n this.indentationBlock = function(session, row, column) {\n var re = /\\S/;\n var line = session.getLine(row);\n var startLevel = line.search(re);\n if (startLevel == -1)\n return;\n\n var startColumn = column || line.length;\n var maxRow = session.getLength();\n var startRow = row;\n var endRow = row;\n\n while (++row < maxRow) {\n var level = session.getLine(row).search(re);\n\n if (level == -1)\n continue;\n\n if (level <= startLevel) {\n var token = session.getTokenAt(row, 0);\n if (!token || token.type !== \"string\")\n break;\n }\n\n endRow = row;\n }\n\n if (endRow > startRow) {\n var endColumn = session.getLine(endRow).length;\n return new Range(startRow, startColumn, endRow, endColumn);\n }\n };\n\n this.openingBracketBlock = function(session, bracket, row, column, typeRe) {\n var start = {row: row, column: column + 1};\n var end = session.$findClosingBracket(bracket, start, typeRe);\n if (!end)\n return;\n\n var fw = session.foldWidgets[end.row];\n if (fw == null)\n fw = session.getFoldWidget(end.row);\n\n if (fw == \"start\" && end.row > start.row) {\n end.row --;\n end.column = session.getLine(end.row).length;\n }\n return Range.fromPoints(start, end);\n };\n\n this.closingBracketBlock = function(session, bracket, row, column, typeRe) {\n var end = {row: row, column: column};\n var start = session.$findOpeningBracket(bracket, end);\n\n if (!start)\n return;\n\n start.column++;\n end.column--;\n\n return Range.fromPoints(start, end);\n };\n}).call(FoldMode.prototype);\n\n});\n\nace.define(\"ace/theme/textmate\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nexports.isDark = false;\nexports.cssClass = \"ace-tm\";\nexports.cssText = \".ace-tm .ace_gutter {\\\nbackground: #f0f0f0;\\\ncolor: #333;\\\n}\\\n.ace-tm .ace_print-margin {\\\nwidth: 1px;\\\nbackground: #e8e8e8;\\\n}\\\n.ace-tm .ace_fold {\\\nbackground-color: #6B72E6;\\\n}\\\n.ace-tm {\\\nbackground-color: #FFFFFF;\\\ncolor: black;\\\n}\\\n.ace-tm .ace_cursor {\\\ncolor: black;\\\n}\\\n.ace-tm .ace_invisible {\\\ncolor: rgb(191, 191, 191);\\\n}\\\n.ace-tm .ace_storage,\\\n.ace-tm .ace_keyword {\\\ncolor: blue;\\\n}\\\n.ace-tm .ace_constant {\\\ncolor: rgb(197, 6, 11);\\\n}\\\n.ace-tm .ace_constant.ace_buildin {\\\ncolor: rgb(88, 72, 246);\\\n}\\\n.ace-tm .ace_constant.ace_language {\\\ncolor: rgb(88, 92, 246);\\\n}\\\n.ace-tm .ace_constant.ace_library {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_invalid {\\\nbackground-color: rgba(255, 0, 0, 0.1);\\\ncolor: red;\\\n}\\\n.ace-tm .ace_support.ace_function {\\\ncolor: rgb(60, 76, 114);\\\n}\\\n.ace-tm .ace_support.ace_constant {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-tm .ace_support.ace_type,\\\n.ace-tm .ace_support.ace_class {\\\ncolor: rgb(109, 121, 222);\\\n}\\\n.ace-tm .ace_keyword.ace_operator {\\\ncolor: rgb(104, 118, 135);\\\n}\\\n.ace-tm .ace_string {\\\ncolor: rgb(3, 106, 7);\\\n}\\\n.ace-tm .ace_comment {\\\ncolor: rgb(76, 136, 107);\\\n}\\\n.ace-tm .ace_comment.ace_doc {\\\ncolor: rgb(0, 102, 255);\\\n}\\\n.ace-tm .ace_comment.ace_doc.ace_tag {\\\ncolor: rgb(128, 159, 191);\\\n}\\\n.ace-tm .ace_constant.ace_numeric {\\\ncolor: rgb(0, 0, 205);\\\n}\\\n.ace-tm .ace_variable {\\\ncolor: rgb(49, 132, 149);\\\n}\\\n.ace-tm .ace_xml-pe {\\\ncolor: rgb(104, 104, 91);\\\n}\\\n.ace-tm .ace_entity.ace_name.ace_function {\\\ncolor: #0000A2;\\\n}\\\n.ace-tm .ace_heading {\\\ncolor: rgb(12, 7, 255);\\\n}\\\n.ace-tm .ace_list {\\\ncolor:rgb(185, 6, 144);\\\n}\\\n.ace-tm .ace_meta.ace_tag {\\\ncolor:rgb(0, 22, 142);\\\n}\\\n.ace-tm .ace_string.ace_regex {\\\ncolor: rgb(255, 0, 0)\\\n}\\\n.ace-tm .ace_marker-layer .ace_selection {\\\nbackground: rgb(181, 213, 255);\\\n}\\\n.ace-tm.ace_multiselect .ace_selection.ace_start {\\\nbox-shadow: 0 0 3px 0px white;\\\n}\\\n.ace-tm .ace_marker-layer .ace_step {\\\nbackground: rgb(252, 255, 0);\\\n}\\\n.ace-tm .ace_marker-layer .ace_stack {\\\nbackground: rgb(164, 229, 101);\\\n}\\\n.ace-tm .ace_marker-layer .ace_bracket {\\\nmargin: -1px 0 0 -1px;\\\nborder: 1px solid rgb(192, 192, 192);\\\n}\\\n.ace-tm .ace_marker-layer .ace_active-line {\\\nbackground: rgba(0, 0, 0, 0.07);\\\n}\\\n.ace-tm .ace_gutter-active-line {\\\nbackground-color : #dcdcdc;\\\n}\\\n.ace-tm .ace_marker-layer .ace_selected-word {\\\nbackground: rgb(250, 250, 255);\\\nborder: 1px solid rgb(200, 200, 250);\\\n}\\\n.ace-tm .ace_indent-guide {\\\nbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\\n}\\\n\";\nexports.$id = \"ace/theme/textmate\";\n\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n});\n\nace.define(\"ace/line_widgets\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nvar dom = require(\"./lib/dom\");\n\nfunction LineWidgets(session) {\n this.session = session;\n this.session.widgetManager = this;\n this.session.getRowLength = this.getRowLength;\n this.session.$getWidgetScreenLength = this.$getWidgetScreenLength;\n this.updateOnChange = this.updateOnChange.bind(this);\n this.renderWidgets = this.renderWidgets.bind(this);\n this.measureWidgets = this.measureWidgets.bind(this);\n this.session._changedWidgets = [];\n this.$onChangeEditor = this.$onChangeEditor.bind(this);\n \n this.session.on(\"change\", this.updateOnChange);\n this.session.on(\"changeFold\", this.updateOnFold);\n this.session.on(\"changeEditor\", this.$onChangeEditor);\n}\n\n(function() {\n this.getRowLength = function(row) {\n var h;\n if (this.lineWidgets)\n h = this.lineWidgets[row] && this.lineWidgets[row].rowCount || 0;\n else \n h = 0;\n if (!this.$useWrapMode || !this.$wrapData[row]) {\n return 1 + h;\n } else {\n return this.$wrapData[row].length + 1 + h;\n }\n };\n\n this.$getWidgetScreenLength = function() {\n var screenRows = 0;\n this.lineWidgets.forEach(function(w){\n if (w && w.rowCount && !w.hidden)\n screenRows += w.rowCount;\n });\n return screenRows;\n }; \n \n this.$onChangeEditor = function(e) {\n this.attach(e.editor);\n };\n \n this.attach = function(editor) {\n if (editor && editor.widgetManager && editor.widgetManager != this)\n editor.widgetManager.detach();\n\n if (this.editor == editor)\n return;\n\n this.detach();\n this.editor = editor;\n \n if (editor) {\n editor.widgetManager = this;\n editor.renderer.on(\"beforeRender\", this.measureWidgets);\n editor.renderer.on(\"afterRender\", this.renderWidgets);\n }\n };\n this.detach = function(e) {\n var editor = this.editor;\n if (!editor)\n return;\n \n this.editor = null;\n editor.widgetManager = null;\n \n editor.renderer.off(\"beforeRender\", this.measureWidgets);\n editor.renderer.off(\"afterRender\", this.renderWidgets);\n var lineWidgets = this.session.lineWidgets;\n lineWidgets && lineWidgets.forEach(function(w) {\n if (w && w.el && w.el.parentNode) {\n w._inDocument = false;\n w.el.parentNode.removeChild(w.el);\n }\n });\n };\n\n this.updateOnFold = function(e, session) {\n var lineWidgets = session.lineWidgets;\n if (!lineWidgets || !e.action)\n return;\n var fold = e.data;\n var start = fold.start.row;\n var end = fold.end.row;\n var hide = e.action == \"add\";\n for (var i = start + 1; i < end; i++) {\n if (lineWidgets[i])\n lineWidgets[i].hidden = hide;\n }\n if (lineWidgets[end]) {\n if (hide) {\n if (!lineWidgets[start])\n lineWidgets[start] = lineWidgets[end];\n else\n lineWidgets[end].hidden = hide;\n } else {\n if (lineWidgets[start] == lineWidgets[end])\n lineWidgets[start] = undefined;\n lineWidgets[end].hidden = hide;\n }\n }\n };\n \n this.updateOnChange = function(delta) {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n \n var startRow = delta.start.row;\n var len = delta.end.row - startRow;\n\n if (len === 0) {\n } else if (delta.action == \"remove\") {\n var removed = lineWidgets.splice(startRow + 1, len);\n if (!lineWidgets[startRow] && removed[removed.length - 1]) {\n lineWidgets[startRow] = removed.pop();\n }\n removed.forEach(function(w) {\n w && this.removeLineWidget(w);\n }, this);\n this.$updateRows();\n } else {\n var args = new Array(len);\n if (lineWidgets[startRow] && lineWidgets[startRow].column != null) {\n if (delta.start.column > lineWidgets[startRow].column)\n startRow++;\n }\n args.unshift(startRow, 0);\n lineWidgets.splice.apply(lineWidgets, args);\n this.$updateRows();\n }\n };\n \n this.$updateRows = function() {\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets) return;\n var noWidgets = true;\n lineWidgets.forEach(function(w, i) {\n if (w) {\n noWidgets = false;\n w.row = i;\n while (w.$oldWidget) {\n w.$oldWidget.row = i;\n w = w.$oldWidget;\n }\n }\n });\n if (noWidgets)\n this.session.lineWidgets = null;\n };\n\n this.$registerLineWidget = function(w) {\n if (!this.session.lineWidgets)\n this.session.lineWidgets = new Array(this.session.getLength());\n \n var old = this.session.lineWidgets[w.row];\n if (old) {\n w.$oldWidget = old;\n if (old.el && old.el.parentNode) {\n old.el.parentNode.removeChild(old.el);\n old._inDocument = false;\n }\n }\n \n this.session.lineWidgets[w.row] = w;\n return w;\n };\n \n this.addLineWidget = function(w) {\n this.$registerLineWidget(w);\n w.session = this.session;\n \n if (!this.editor) return w;\n \n var renderer = this.editor.renderer;\n if (w.html && !w.el) {\n w.el = dom.createElement(\"div\");\n w.el.innerHTML = w.html;\n }\n if (w.el) {\n dom.addCssClass(w.el, \"ace_lineWidgetContainer\");\n w.el.style.position = \"absolute\";\n w.el.style.zIndex = 5;\n renderer.container.appendChild(w.el);\n w._inDocument = true;\n \n if (!w.coverGutter) {\n w.el.style.zIndex = 3;\n }\n if (w.pixelHeight == null) {\n w.pixelHeight = w.el.offsetHeight;\n }\n }\n if (w.rowCount == null) {\n w.rowCount = w.pixelHeight / renderer.layerConfig.lineHeight;\n }\n \n var fold = this.session.getFoldAt(w.row, 0);\n w.$fold = fold;\n if (fold) {\n var lineWidgets = this.session.lineWidgets;\n if (w.row == fold.end.row && !lineWidgets[fold.start.row])\n lineWidgets[fold.start.row] = w;\n else\n w.hidden = true;\n }\n \n this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\n \n this.$updateRows();\n this.renderWidgets(null, renderer);\n this.onWidgetChanged(w);\n return w;\n };\n \n this.removeLineWidget = function(w) {\n w._inDocument = false;\n w.session = null;\n if (w.el && w.el.parentNode)\n w.el.parentNode.removeChild(w.el);\n if (w.editor && w.editor.destroy) try {\n w.editor.destroy();\n } catch(e){}\n if (this.session.lineWidgets) {\n var w1 = this.session.lineWidgets[w.row];\n if (w1 == w) {\n this.session.lineWidgets[w.row] = w.$oldWidget;\n if (w.$oldWidget)\n this.onWidgetChanged(w.$oldWidget);\n } else {\n while (w1) {\n if (w1.$oldWidget == w) {\n w1.$oldWidget = w.$oldWidget;\n break;\n }\n w1 = w1.$oldWidget;\n }\n }\n }\n this.session._emit(\"changeFold\", {data:{start:{row: w.row}}});\n this.$updateRows();\n };\n \n this.getWidgetsAtRow = function(row) {\n var lineWidgets = this.session.lineWidgets;\n var w = lineWidgets && lineWidgets[row];\n var list = [];\n while (w) {\n list.push(w);\n w = w.$oldWidget;\n }\n return list;\n };\n \n this.onWidgetChanged = function(w) {\n this.session._changedWidgets.push(w);\n this.editor && this.editor.renderer.updateFull();\n };\n \n this.measureWidgets = function(e, renderer) {\n var changedWidgets = this.session._changedWidgets;\n var config = renderer.layerConfig;\n \n if (!changedWidgets || !changedWidgets.length) return;\n var min = Infinity;\n for (var i = 0; i < changedWidgets.length; i++) {\n var w = changedWidgets[i];\n if (!w || !w.el) continue;\n if (w.session != this.session) continue;\n if (!w._inDocument) {\n if (this.session.lineWidgets[w.row] != w)\n continue;\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n \n w.h = w.el.offsetHeight;\n \n if (!w.fixedWidth) {\n w.w = w.el.offsetWidth;\n w.screenWidth = Math.ceil(w.w / config.characterWidth);\n }\n \n var rowCount = w.h / config.lineHeight;\n if (w.coverLine) {\n rowCount -= this.session.getRowLineCount(w.row);\n if (rowCount < 0)\n rowCount = 0;\n }\n if (w.rowCount != rowCount) {\n w.rowCount = rowCount;\n if (w.row < min)\n min = w.row;\n }\n }\n if (min != Infinity) {\n this.session._emit(\"changeFold\", {data:{start:{row: min}}});\n this.session.lineWidgetWidth = null;\n }\n this.session._changedWidgets = [];\n };\n \n this.renderWidgets = function(e, renderer) {\n var config = renderer.layerConfig;\n var lineWidgets = this.session.lineWidgets;\n if (!lineWidgets)\n return;\n var first = Math.min(this.firstRow, config.firstRow);\n var last = Math.max(this.lastRow, config.lastRow, lineWidgets.length);\n \n while (first > 0 && !lineWidgets[first])\n first--;\n \n this.firstRow = config.firstRow;\n this.lastRow = config.lastRow;\n\n renderer.$cursorLayer.config = config;\n for (var i = first; i <= last; i++) {\n var w = lineWidgets[i];\n if (!w || !w.el) continue;\n if (w.hidden) {\n w.el.style.top = -100 - (w.pixelHeight || 0) + \"px\";\n continue;\n }\n if (!w._inDocument) {\n w._inDocument = true;\n renderer.container.appendChild(w.el);\n }\n var top = renderer.$cursorLayer.getPixelPosition({row: i, column:0}, true).top;\n if (!w.coverLine)\n top += config.lineHeight * this.session.getRowLineCount(w.row);\n w.el.style.top = top - config.offset + \"px\";\n \n var left = w.coverGutter ? 0 : renderer.gutterWidth;\n if (!w.fixedWidth)\n left -= renderer.scrollLeft;\n w.el.style.left = left + \"px\";\n \n if (w.fullWidth && w.screenWidth) {\n w.el.style.minWidth = config.width + 2 * config.padding + \"px\";\n }\n \n if (w.fixedWidth) {\n w.el.style.right = renderer.scrollBar.getWidth() + \"px\";\n } else {\n w.el.style.right = \"\";\n }\n }\n };\n \n}).call(LineWidgets.prototype);\n\n\nexports.LineWidgets = LineWidgets;\n\n});\n\nace.define(\"ace/ext/error_marker\",[\"require\",\"exports\",\"module\",\"ace/line_widgets\",\"ace/lib/dom\",\"ace/range\"], function(require, exports, module) {\n\"use strict\";\nvar LineWidgets = require(\"../line_widgets\").LineWidgets;\nvar dom = require(\"../lib/dom\");\nvar Range = require(\"../range\").Range;\n\nfunction binarySearch(array, needle, comparator) {\n var first = 0;\n var last = array.length - 1;\n\n while (first <= last) {\n var mid = (first + last) >> 1;\n var c = comparator(needle, array[mid]);\n if (c > 0)\n first = mid + 1;\n else if (c < 0)\n last = mid - 1;\n else\n return mid;\n }\n return -(first + 1);\n}\n\nfunction findAnnotations(session, row, dir) {\n var annotations = session.getAnnotations().sort(Range.comparePoints);\n if (!annotations.length)\n return;\n \n var i = binarySearch(annotations, {row: row, column: -1}, Range.comparePoints);\n if (i < 0)\n i = -i - 1;\n \n if (i >= annotations.length)\n i = dir > 0 ? 0 : annotations.length - 1;\n else if (i === 0 && dir < 0)\n i = annotations.length - 1;\n \n var annotation = annotations[i];\n if (!annotation || !dir)\n return;\n\n if (annotation.row === row) {\n do {\n annotation = annotations[i += dir];\n } while (annotation && annotation.row === row);\n if (!annotation)\n return annotations.slice();\n }\n \n \n var matched = [];\n row = annotation.row;\n do {\n matched[dir < 0 ? \"unshift\" : \"push\"](annotation);\n annotation = annotations[i += dir];\n } while (annotation && annotation.row == row);\n return matched.length && matched;\n}\n\nexports.showErrorMarker = function(editor, dir) {\n var session = editor.session;\n if (!session.widgetManager) {\n session.widgetManager = new LineWidgets(session);\n session.widgetManager.attach(editor);\n }\n \n var pos = editor.getCursorPosition();\n var row = pos.row;\n var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function(w) {\n return w.type == \"errorMarker\";\n })[0];\n if (oldWidget) {\n oldWidget.destroy();\n } else {\n row -= dir;\n }\n var annotations = findAnnotations(session, row, dir);\n var gutterAnno;\n if (annotations) {\n var annotation = annotations[0];\n pos.column = (annotation.pos && typeof annotation.column != \"number\"\n ? annotation.pos.sc\n : annotation.column) || 0;\n pos.row = annotation.row;\n gutterAnno = editor.renderer.$gutterLayer.$annotations[pos.row];\n } else if (oldWidget) {\n return;\n } else {\n gutterAnno = {\n text: [\"Looks good!\"],\n className: \"ace_ok\"\n };\n }\n editor.session.unfold(pos.row);\n editor.selection.moveToPosition(pos);\n \n var w = {\n row: pos.row, \n fixedWidth: true,\n coverGutter: true,\n el: dom.createElement(\"div\"),\n type: \"errorMarker\"\n };\n var el = w.el.appendChild(dom.createElement(\"div\"));\n var arrow = w.el.appendChild(dom.createElement(\"div\"));\n arrow.className = \"error_widget_arrow \" + gutterAnno.className;\n \n var left = editor.renderer.$cursorLayer\n .getPixelPosition(pos).left;\n arrow.style.left = left + editor.renderer.gutterWidth - 5 + \"px\";\n \n w.el.className = \"error_widget_wrapper\";\n el.className = \"error_widget \" + gutterAnno.className;\n el.innerHTML = gutterAnno.text.join(\"
    \");\n \n el.appendChild(dom.createElement(\"div\"));\n \n var kb = function(_, hashId, keyString) {\n if (hashId === 0 && (keyString === \"esc\" || keyString === \"return\")) {\n w.destroy();\n return {command: \"null\"};\n }\n };\n \n w.destroy = function() {\n if (editor.$mouseHandler.isMousePressed)\n return;\n editor.keyBinding.removeKeyboardHandler(kb);\n session.widgetManager.removeLineWidget(w);\n editor.off(\"changeSelection\", w.destroy);\n editor.off(\"changeSession\", w.destroy);\n editor.off(\"mouseup\", w.destroy);\n editor.off(\"change\", w.destroy);\n };\n \n editor.keyBinding.addKeyboardHandler(kb);\n editor.on(\"changeSelection\", w.destroy);\n editor.on(\"changeSession\", w.destroy);\n editor.on(\"mouseup\", w.destroy);\n editor.on(\"change\", w.destroy);\n \n editor.session.widgetManager.addLineWidget(w);\n \n w.el.onmousedown = editor.focus.bind(editor);\n \n editor.renderer.scrollCursorIntoView(null, 0.5, {bottom: w.el.offsetHeight});\n};\n\n\ndom.importCssString(\"\\\n .error_widget_wrapper {\\\n background: inherit;\\\n color: inherit;\\\n border:none\\\n }\\\n .error_widget {\\\n border-top: solid 2px;\\\n border-bottom: solid 2px;\\\n margin: 5px 0;\\\n padding: 10px 40px;\\\n white-space: pre-wrap;\\\n }\\\n .error_widget.ace_error, .error_widget_arrow.ace_error{\\\n border-color: #ff5a5a\\\n }\\\n .error_widget.ace_warning, .error_widget_arrow.ace_warning{\\\n border-color: #F1D817\\\n }\\\n .error_widget.ace_info, .error_widget_arrow.ace_info{\\\n border-color: #5a5a5a\\\n }\\\n .error_widget.ace_ok, .error_widget_arrow.ace_ok{\\\n border-color: #5aaa5a\\\n }\\\n .error_widget_arrow {\\\n position: absolute;\\\n border: solid 5px;\\\n border-top-color: transparent!important;\\\n border-right-color: transparent!important;\\\n border-left-color: transparent!important;\\\n top: -5px;\\\n }\\\n\", \"error_marker.css\", false);\n\n});\n\nace.define(\"ace/ace\",[\"require\",\"exports\",\"module\",\"ace/lib/fixoldbrowsers\",\"ace/lib/dom\",\"ace/lib/event\",\"ace/range\",\"ace/editor\",\"ace/edit_session\",\"ace/undomanager\",\"ace/virtual_renderer\",\"ace/worker/worker_client\",\"ace/keyboard/hash_handler\",\"ace/placeholder\",\"ace/multi_select\",\"ace/mode/folding/fold_mode\",\"ace/theme/textmate\",\"ace/ext/error_marker\",\"ace/config\"], function(require, exports, module) {\n\"use strict\";\n\nrequire(\"./lib/fixoldbrowsers\");\n\nvar dom = require(\"./lib/dom\");\nvar event = require(\"./lib/event\");\n\nvar Range = require(\"./range\").Range;\nvar Editor = require(\"./editor\").Editor;\nvar EditSession = require(\"./edit_session\").EditSession;\nvar UndoManager = require(\"./undomanager\").UndoManager;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nrequire(\"./worker/worker_client\");\nrequire(\"./keyboard/hash_handler\");\nrequire(\"./placeholder\");\nrequire(\"./multi_select\");\nrequire(\"./mode/folding/fold_mode\");\nrequire(\"./theme/textmate\");\nrequire(\"./ext/error_marker\");\n\nexports.config = require(\"./config\");\nexports.require = require;\n\nif (typeof define === \"function\")\n exports.define = define;\nexports.edit = function(el, options) {\n if (typeof el == \"string\") {\n var _id = el;\n el = document.getElementById(_id);\n if (!el)\n throw new Error(\"ace.edit can't find div #\" + _id);\n }\n\n if (el && el.env && el.env.editor instanceof Editor)\n return el.env.editor;\n\n var value = \"\";\n if (el && /input|textarea/i.test(el.tagName)) {\n var oldNode = el;\n value = oldNode.value;\n el = dom.createElement(\"pre\");\n oldNode.parentNode.replaceChild(el, oldNode);\n } else if (el) {\n value = el.textContent;\n el.innerHTML = \"\";\n }\n\n var doc = exports.createEditSession(value);\n\n var editor = new Editor(new Renderer(el), doc, options);\n\n var env = {\n document: doc,\n editor: editor,\n onResize: editor.resize.bind(editor, null)\n };\n if (oldNode) env.textarea = oldNode;\n event.addListener(window, \"resize\", env.onResize);\n editor.on(\"destroy\", function() {\n event.removeListener(window, \"resize\", env.onResize);\n env.editor.container.env = null; // prevent memory leak on old ie\n });\n editor.container.env = editor.env = env;\n return editor;\n};\nexports.createEditSession = function(text, mode) {\n var doc = new EditSession(text, mode);\n doc.setUndoManager(new UndoManager());\n return doc;\n};\nexports.Range = Range;\nexports.Editor = Editor;\nexports.EditSession = EditSession;\nexports.UndoManager = UndoManager;\nexports.VirtualRenderer = Renderer;\nexports.version = exports.config.version;\n}); (function() {\n ace.require([\"ace/ace\"], function(a) {\n if (a) {\n a.config.init(true);\n a.define = ace.define;\n }\n if (!window.ace)\n window.ace = a;\n for (var key in a) if (a.hasOwnProperty(key))\n window.ace[key] = a[key];\n window.ace[\"default\"] = window.ace;\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = window.ace;\n }\n });\n })();\n ","ace.define(\"ace/split\",[\"require\",\"exports\",\"module\",\"ace/lib/oop\",\"ace/lib/lang\",\"ace/lib/event_emitter\",\"ace/editor\",\"ace/virtual_renderer\",\"ace/edit_session\"], function(require, exports, module) {\n\"use strict\";\n\nvar oop = require(\"./lib/oop\");\nvar lang = require(\"./lib/lang\");\nvar EventEmitter = require(\"./lib/event_emitter\").EventEmitter;\n\nvar Editor = require(\"./editor\").Editor;\nvar Renderer = require(\"./virtual_renderer\").VirtualRenderer;\nvar EditSession = require(\"./edit_session\").EditSession;\n\n\nvar Split = function(container, theme, splits) {\n this.BELOW = 1;\n this.BESIDE = 0;\n\n this.$container = container;\n this.$theme = theme;\n this.$splits = 0;\n this.$editorCSS = \"\";\n this.$editors = [];\n this.$orientation = this.BESIDE;\n\n this.setSplits(splits || 1);\n this.$cEditor = this.$editors[0];\n\n\n this.on(\"focus\", function(editor) {\n this.$cEditor = editor;\n }.bind(this));\n};\n\n(function(){\n\n oop.implement(this, EventEmitter);\n\n this.$createEditor = function() {\n var el = document.createElement(\"div\");\n el.className = this.$editorCSS;\n el.style.cssText = \"position: absolute; top:0px; bottom:0px\";\n this.$container.appendChild(el);\n var editor = new Editor(new Renderer(el, this.$theme));\n\n editor.on(\"focus\", function() {\n this._emit(\"focus\", editor);\n }.bind(this));\n\n this.$editors.push(editor);\n editor.setFontSize(this.$fontSize);\n return editor;\n };\n\n this.setSplits = function(splits) {\n var editor;\n if (splits < 1) {\n throw \"The number of splits have to be > 0!\";\n }\n\n if (splits == this.$splits) {\n return;\n } else if (splits > this.$splits) {\n while (this.$splits < this.$editors.length && this.$splits < splits) {\n editor = this.$editors[this.$splits];\n this.$container.appendChild(editor.container);\n editor.setFontSize(this.$fontSize);\n this.$splits ++;\n }\n while (this.$splits < splits) {\n this.$createEditor();\n this.$splits ++;\n }\n } else {\n while (this.$splits > splits) {\n editor = this.$editors[this.$splits - 1];\n this.$container.removeChild(editor.container);\n this.$splits --;\n }\n }\n this.resize();\n };\n this.getSplits = function() {\n return this.$splits;\n };\n this.getEditor = function(idx) {\n return this.$editors[idx];\n };\n this.getCurrentEditor = function() {\n return this.$cEditor;\n };\n this.focus = function() {\n this.$cEditor.focus();\n };\n this.blur = function() {\n this.$cEditor.blur();\n };\n this.setTheme = function(theme) {\n this.$editors.forEach(function(editor) {\n editor.setTheme(theme);\n });\n };\n this.setKeyboardHandler = function(keybinding) {\n this.$editors.forEach(function(editor) {\n editor.setKeyboardHandler(keybinding);\n });\n };\n this.forEach = function(callback, scope) {\n this.$editors.forEach(callback, scope);\n };\n\n\n this.$fontSize = \"\";\n this.setFontSize = function(size) {\n this.$fontSize = size;\n this.forEach(function(editor) {\n editor.setFontSize(size);\n });\n };\n\n this.$cloneSession = function(session) {\n var s = new EditSession(session.getDocument(), session.getMode());\n\n var undoManager = session.getUndoManager();\n s.setUndoManager(undoManager);\n s.setTabSize(session.getTabSize());\n s.setUseSoftTabs(session.getUseSoftTabs());\n s.setOverwrite(session.getOverwrite());\n s.setBreakpoints(session.getBreakpoints());\n s.setUseWrapMode(session.getUseWrapMode());\n s.setUseWorker(session.getUseWorker());\n s.setWrapLimitRange(session.$wrapLimitRange.min,\n session.$wrapLimitRange.max);\n s.$foldData = session.$cloneFoldData();\n\n return s;\n };\n this.setSession = function(session, idx) {\n var editor;\n if (idx == null) {\n editor = this.$cEditor;\n } else {\n editor = this.$editors[idx];\n }\n var isUsed = this.$editors.some(function(editor) {\n return editor.session === session;\n });\n\n if (isUsed) {\n session = this.$cloneSession(session);\n }\n editor.setSession(session);\n return session;\n };\n this.getOrientation = function() {\n return this.$orientation;\n };\n this.setOrientation = function(orientation) {\n if (this.$orientation == orientation) {\n return;\n }\n this.$orientation = orientation;\n this.resize();\n };\n this.resize = function() {\n var width = this.$container.clientWidth;\n var height = this.$container.clientHeight;\n var editor;\n\n if (this.$orientation == this.BESIDE) {\n var editorWidth = width / this.$splits;\n for (var i = 0; i < this.$splits; i++) {\n editor = this.$editors[i];\n editor.container.style.width = editorWidth + \"px\";\n editor.container.style.top = \"0px\";\n editor.container.style.left = i * editorWidth + \"px\";\n editor.container.style.height = height + \"px\";\n editor.resize();\n }\n } else {\n var editorHeight = height / this.$splits;\n for (var i = 0; i < this.$splits; i++) {\n editor = this.$editors[i];\n editor.container.style.width = width + \"px\";\n editor.container.style.top = i * editorHeight + \"px\";\n editor.container.style.left = \"0px\";\n editor.container.style.height = editorHeight + \"px\";\n editor.resize();\n }\n }\n };\n\n}).call(Split.prototype);\n\nexports.Split = Split;\n});\n\nace.define(\"ace/ext/split\",[\"require\",\"exports\",\"module\",\"ace/split\"], function(require, exports, module) {\n\"use strict\";\nmodule.exports = require(\"../split\");\n\n}); (function() {\n ace.require([\"ace/ext/split\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","\n; (function() {\n ace.require([\"ace/mode/text\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/theme/dracula\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\nexports.isDark = true;\nexports.cssClass = \"ace-dracula\";\nexports.cssText = \"\\\n.ace-dracula .ace_gutter {\\\nbackground: #282a36;\\\ncolor: rgb(144,145,148)\\\n}\\\n.ace-dracula .ace_print-margin {\\\nwidth: 1px;\\\nbackground: #44475a\\\n}\\\n.ace-dracula {\\\nbackground-color: #282a36;\\\ncolor: #f8f8f2\\\n}\\\n.ace-dracula .ace_cursor {\\\ncolor: #f8f8f0\\\n}\\\n.ace-dracula .ace_marker-layer .ace_selection {\\\nbackground: #44475a\\\n}\\\n.ace-dracula.ace_multiselect .ace_selection.ace_start {\\\nbox-shadow: 0 0 3px 0px #282a36;\\\nborder-radius: 2px\\\n}\\\n.ace-dracula .ace_marker-layer .ace_step {\\\nbackground: rgb(198, 219, 174)\\\n}\\\n.ace-dracula .ace_marker-layer .ace_bracket {\\\nmargin: -1px 0 0 -1px;\\\nborder: 1px solid #a29709\\\n}\\\n.ace-dracula .ace_marker-layer .ace_active-line {\\\nbackground: #44475a\\\n}\\\n.ace-dracula .ace_gutter-active-line {\\\nbackground-color: #44475a\\\n}\\\n.ace-dracula .ace_marker-layer .ace_selected-word {\\\nbox-shadow: 0px 0px 0px 1px #a29709;\\\nborder-radius: 3px;\\\n}\\\n.ace-dracula .ace_fold {\\\nbackground-color: #50fa7b;\\\nborder-color: #f8f8f2\\\n}\\\n.ace-dracula .ace_keyword {\\\ncolor: #ff79c6\\\n}\\\n.ace-dracula .ace_constant.ace_language {\\\ncolor: #bd93f9\\\n}\\\n.ace-dracula .ace_constant.ace_numeric {\\\ncolor: #bd93f9\\\n}\\\n.ace-dracula .ace_constant.ace_character {\\\ncolor: #bd93f9\\\n}\\\n.ace-dracula .ace_constant.ace_character.ace_escape {\\\ncolor: #ff79c6\\\n}\\\n.ace-dracula .ace_constant.ace_other {\\\ncolor: #bd93f9\\\n}\\\n.ace-dracula .ace_support.ace_function {\\\ncolor: #8be9fd\\\n}\\\n.ace-dracula .ace_support.ace_constant {\\\ncolor: #6be5fd\\\n}\\\n.ace-dracula .ace_support.ace_class {\\\nfont-style: italic;\\\ncolor: #66d9ef\\\n}\\\n.ace-dracula .ace_support.ace_type {\\\nfont-style: italic;\\\ncolor: #66d9ef\\\n}\\\n.ace-dracula .ace_storage {\\\ncolor: #ff79c6\\\n}\\\n.ace-dracula .ace_storage.ace_type {\\\nfont-style: italic;\\\ncolor: #8be9fd\\\n}\\\n.ace-dracula .ace_invalid {\\\ncolor: #F8F8F0;\\\nbackground-color: #ff79c6\\\n}\\\n.ace-dracula .ace_invalid.ace_deprecated {\\\ncolor: #F8F8F0;\\\nbackground-color: #bd93f9\\\n}\\\n.ace-dracula .ace_string {\\\ncolor: #f1fa8c\\\n}\\\n.ace-dracula .ace_comment {\\\ncolor: #6272a4\\\n}\\\n.ace-dracula .ace_variable {\\\ncolor: #50fa7b\\\n}\\\n.ace-dracula .ace_variable.ace_parameter {\\\nfont-style: italic;\\\ncolor: #ffb86c\\\n}\\\n.ace-dracula .ace_entity.ace_other.ace_attribute-name {\\\ncolor: #50fa7b\\\n}\\\n.ace-dracula .ace_entity.ace_name.ace_function {\\\ncolor: #50fa7b\\\n}\\\n.ace-dracula .ace_entity.ace_name.ace_tag {\\\ncolor: #ff79c6\\\n}\\\n.ace-dracula .ace_invisible {\\\ncolor: #626680;\\\n}\\\n.ace-dracula .ace_indent-guide {\\\nbackground: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYHB3d/8PAAOIAdULw8qMAAAAAElFTkSuQmCC) right repeat-y\\\n}\";\nexports.$selectionColorConflict = true;\n\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n}); (function() {\n ace.require([\"ace/theme/dracula\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","ace.define(\"ace/theme/eclipse\",[\"require\",\"exports\",\"module\",\"ace/lib/dom\"], function(require, exports, module) {\n\"use strict\";\n\nexports.isDark = false;\nexports.cssText = \".ace-eclipse .ace_gutter {\\\nbackground: #ebebeb;\\\nborder-right: 1px solid rgb(159, 159, 159);\\\ncolor: rgb(136, 136, 136);\\\n}\\\n.ace-eclipse .ace_print-margin {\\\nwidth: 1px;\\\nbackground: #ebebeb;\\\n}\\\n.ace-eclipse {\\\nbackground-color: #FFFFFF;\\\ncolor: black;\\\n}\\\n.ace-eclipse .ace_fold {\\\nbackground-color: rgb(60, 76, 114);\\\n}\\\n.ace-eclipse .ace_cursor {\\\ncolor: black;\\\n}\\\n.ace-eclipse .ace_storage,\\\n.ace-eclipse .ace_keyword,\\\n.ace-eclipse .ace_variable {\\\ncolor: rgb(127, 0, 85);\\\n}\\\n.ace-eclipse .ace_constant.ace_buildin {\\\ncolor: rgb(88, 72, 246);\\\n}\\\n.ace-eclipse .ace_constant.ace_library {\\\ncolor: rgb(6, 150, 14);\\\n}\\\n.ace-eclipse .ace_function {\\\ncolor: rgb(60, 76, 114);\\\n}\\\n.ace-eclipse .ace_string {\\\ncolor: rgb(42, 0, 255);\\\n}\\\n.ace-eclipse .ace_comment {\\\ncolor: rgb(113, 150, 130);\\\n}\\\n.ace-eclipse .ace_comment.ace_doc {\\\ncolor: rgb(63, 95, 191);\\\n}\\\n.ace-eclipse .ace_comment.ace_doc.ace_tag {\\\ncolor: rgb(127, 159, 191);\\\n}\\\n.ace-eclipse .ace_constant.ace_numeric {\\\ncolor: darkblue;\\\n}\\\n.ace-eclipse .ace_tag {\\\ncolor: rgb(25, 118, 116);\\\n}\\\n.ace-eclipse .ace_type {\\\ncolor: rgb(127, 0, 127);\\\n}\\\n.ace-eclipse .ace_xml-pe {\\\ncolor: rgb(104, 104, 91);\\\n}\\\n.ace-eclipse .ace_marker-layer .ace_selection {\\\nbackground: rgb(181, 213, 255);\\\n}\\\n.ace-eclipse .ace_marker-layer .ace_bracket {\\\nmargin: -1px 0 0 -1px;\\\nborder: 1px solid rgb(192, 192, 192);\\\n}\\\n.ace-eclipse .ace_meta.ace_tag {\\\ncolor:rgb(25, 118, 116);\\\n}\\\n.ace-eclipse .ace_invisible {\\\ncolor: #ddd;\\\n}\\\n.ace-eclipse .ace_entity.ace_other.ace_attribute-name {\\\ncolor:rgb(127, 0, 127);\\\n}\\\n.ace-eclipse .ace_marker-layer .ace_step {\\\nbackground: rgb(255, 255, 0);\\\n}\\\n.ace-eclipse .ace_active-line {\\\nbackground: rgb(232, 242, 254);\\\n}\\\n.ace-eclipse .ace_gutter-active-line {\\\nbackground-color : #DADADA;\\\n}\\\n.ace-eclipse .ace_marker-layer .ace_selected-word {\\\nborder: 1px solid rgb(181, 213, 255);\\\n}\\\n.ace-eclipse .ace_indent-guide {\\\nbackground: url(\\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==\\\") right repeat-y;\\\n}\";\n\nexports.cssClass = \"ace-eclipse\";\n\nvar dom = require(\"../lib/dom\");\ndom.importCssString(exports.cssText, exports.cssClass, false);\n}); (function() {\n ace.require([\"ace/theme/eclipse\"], function(m) {\n if (typeof module == \"object\" && typeof exports == \"object\" && module) {\n module.exports = m;\n }\n });\n })();\n ","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","\r\n/**\r\n * Expose `Emitter`.\r\n */\r\n\r\nif (typeof module !== 'undefined') {\r\n module.exports = Emitter;\r\n}\r\n\r\n/**\r\n * Initialize a new `Emitter`.\r\n *\r\n * @api public\r\n */\r\n\r\nfunction Emitter(obj) {\r\n if (obj) return mixin(obj);\r\n};\r\n\r\n/**\r\n * Mixin the emitter properties.\r\n *\r\n * @param {Object} obj\r\n * @return {Object}\r\n * @api private\r\n */\r\n\r\nfunction mixin(obj) {\r\n for (var key in Emitter.prototype) {\r\n obj[key] = Emitter.prototype[key];\r\n }\r\n return obj;\r\n}\r\n\r\n/**\r\n * Listen on the given `event` with `fn`.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.on =\r\nEmitter.prototype.addEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\r\n .push(fn);\r\n return this;\r\n};\r\n\r\n/**\r\n * Adds an `event` listener that will be invoked a single\r\n * time then automatically removed.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.once = function(event, fn){\r\n function on() {\r\n this.off(event, on);\r\n fn.apply(this, arguments);\r\n }\r\n\r\n on.fn = fn;\r\n this.on(event, on);\r\n return this;\r\n};\r\n\r\n/**\r\n * Remove the given callback for `event` or all\r\n * registered callbacks.\r\n *\r\n * @param {String} event\r\n * @param {Function} fn\r\n * @return {Emitter}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.off =\r\nEmitter.prototype.removeListener =\r\nEmitter.prototype.removeAllListeners =\r\nEmitter.prototype.removeEventListener = function(event, fn){\r\n this._callbacks = this._callbacks || {};\r\n\r\n // all\r\n if (0 == arguments.length) {\r\n this._callbacks = {};\r\n return this;\r\n }\r\n\r\n // specific event\r\n var callbacks = this._callbacks['$' + event];\r\n if (!callbacks) return this;\r\n\r\n // remove all handlers\r\n if (1 == arguments.length) {\r\n delete this._callbacks['$' + event];\r\n return this;\r\n }\r\n\r\n // remove specific handler\r\n var cb;\r\n for (var i = 0; i < callbacks.length; i++) {\r\n cb = callbacks[i];\r\n if (cb === fn || cb.fn === fn) {\r\n callbacks.splice(i, 1);\r\n break;\r\n }\r\n }\r\n\r\n // Remove event specific arrays for event types that no\r\n // one is subscribed for to avoid memory leak.\r\n if (callbacks.length === 0) {\r\n delete this._callbacks['$' + event];\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Emit `event` with the given args.\r\n *\r\n * @param {String} event\r\n * @param {Mixed} ...\r\n * @return {Emitter}\r\n */\r\n\r\nEmitter.prototype.emit = function(event){\r\n this._callbacks = this._callbacks || {};\r\n\r\n var args = new Array(arguments.length - 1)\r\n , callbacks = this._callbacks['$' + event];\r\n\r\n for (var i = 1; i < arguments.length; i++) {\r\n args[i - 1] = arguments[i];\r\n }\r\n\r\n if (callbacks) {\r\n callbacks = callbacks.slice(0);\r\n for (var i = 0, len = callbacks.length; i < len; ++i) {\r\n callbacks[i].apply(this, args);\r\n }\r\n }\r\n\r\n return this;\r\n};\r\n\r\n/**\r\n * Return array of callbacks for `event`.\r\n *\r\n * @param {String} event\r\n * @return {Array}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.listeners = function(event){\r\n this._callbacks = this._callbacks || {};\r\n return this._callbacks['$' + event] || [];\r\n};\r\n\r\n/**\r\n * Check if this emitter has `event` handlers.\r\n *\r\n * @param {String} event\r\n * @return {Boolean}\r\n * @api public\r\n */\r\n\r\nEmitter.prototype.hasListeners = function(event){\r\n return !! this.listeners(event).length;\r\n};\r\n","var objectKeys = require('object-keys');\nvar isArguments = require('is-arguments');\nvar is = require('object-is');\nvar isRegex = require('is-regex');\nvar flags = require('regexp.prototype.flags');\nvar isDate = require('is-date-object');\n\nvar getTime = Date.prototype.getTime;\n\nfunction deepEqual(actual, expected, options) {\n var opts = options || {};\n\n // 7.1. All identical values are equivalent, as determined by ===.\n if (opts.strict ? is(actual, expected) : actual === expected) {\n return true;\n }\n\n // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n return opts.strict ? is(actual, expected) : actual == expected;\n }\n\n /*\n * 7.4. For all other Object pairs, including Array objects, equivalence is\n * determined by having the same number of owned properties (as verified\n * with Object.prototype.hasOwnProperty.call), the same set of keys\n * (although not necessarily the same order), equivalent values for every\n * corresponding key, and an identical 'prototype' property. Note: this\n * accounts for both named and indexed properties on Arrays.\n */\n // eslint-disable-next-line no-use-before-define\n return objEquiv(actual, expected, opts);\n}\n\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n return false;\n }\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') {\n return false;\n }\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n /* eslint max-statements: [2, 50] */\n var i, key;\n if (typeof a !== typeof b) { return false; }\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) { return false; }\n\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) { return false; }\n\n if (isArguments(a) !== isArguments(b)) { return false; }\n\n var aIsRegex = isRegex(a);\n var bIsRegex = isRegex(b);\n if (aIsRegex !== bIsRegex) { return false; }\n if (aIsRegex || bIsRegex) {\n return a.source === b.source && flags(a) === flags(b);\n }\n\n if (isDate(a) && isDate(b)) {\n return getTime.call(a) === getTime.call(b);\n }\n\n var aIsBuffer = isBuffer(a);\n var bIsBuffer = isBuffer(b);\n if (aIsBuffer !== bIsBuffer) { return false; }\n if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n if (a.length !== b.length) { return false; }\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) { return false; }\n }\n return true;\n }\n\n if (typeof a !== typeof b) { return false; }\n\n try {\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n } catch (e) { // happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates hasOwnProperty)\n if (ka.length !== kb.length) { return false; }\n\n // the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n // ~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) { return false; }\n }\n // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) { return false; }\n }\n\n return true;\n}\n\nmodule.exports = deepEqual;\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","/**\n * Diff Match and Patch\n * Copyright 2018 The diff-match-patch Authors.\n * https://github.com/google/diff-match-patch\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Computes the difference between two texts to create a patch.\n * Applies the patch onto another text, allowing for errors.\n * @author fraser@google.com (Neil Fraser)\n */\n\n/**\n * Class containing the diff, match and patch methods.\n * @constructor\n */\nvar diff_match_patch = function() {\n\n // Defaults.\n // Redefine these in your program to override the defaults.\n\n // Number of seconds to map a diff before giving up (0 for infinity).\n this.Diff_Timeout = 1.0;\n // Cost of an empty edit operation in terms of edit characters.\n this.Diff_EditCost = 4;\n // At what point is no match declared (0.0 = perfection, 1.0 = very loose).\n this.Match_Threshold = 0.5;\n // How far to search for a match (0 = exact location, 1000+ = broad match).\n // A match this many characters away from the expected location will add\n // 1.0 to the score (0.0 is a perfect match).\n this.Match_Distance = 1000;\n // When deleting a large block of text (over ~64 characters), how close do\n // the contents have to be to match the expected contents. (0.0 = perfection,\n // 1.0 = very loose). Note that Match_Threshold controls how closely the\n // end points of a delete need to match.\n this.Patch_DeleteThreshold = 0.5;\n // Chunk size for context length.\n this.Patch_Margin = 4;\n\n // The number of bits in an int.\n this.Match_MaxBits = 32;\n};\n\n\n// DIFF FUNCTIONS\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n/**\n * Class representing one diff tuple.\n * ~Attempts to look like a two-element array (which is what this used to be).~\n * Constructor returns an actual two-element array, to allow destructing @JackuB\n * See https://github.com/JackuB/diff-match-patch/issues/14 for details\n * @param {number} op Operation, one of: DIFF_DELETE, DIFF_INSERT, DIFF_EQUAL.\n * @param {string} text Text to be deleted, inserted, or retained.\n * @constructor\n */\ndiff_match_patch.Diff = function(op, text) {\n return [op, text];\n};\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean=} opt_checklines Optional speedup flag. If present and false,\n * then don't run a line-level diff first to identify the changed areas.\n * Defaults to true, which does a faster, slightly less optimal diff.\n * @param {number=} opt_deadline Optional time when the diff should be complete\n * by. Used internally for recursive calls. Users should set DiffTimeout\n * instead.\n * @return {!Array.} Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_main = function(text1, text2, opt_checklines,\n opt_deadline) {\n // Set a deadline by which time the diff must be complete.\n if (typeof opt_deadline == 'undefined') {\n if (this.Diff_Timeout <= 0) {\n opt_deadline = Number.MAX_VALUE;\n } else {\n opt_deadline = (new Date).getTime() + this.Diff_Timeout * 1000;\n }\n }\n var deadline = opt_deadline;\n\n // Check for null inputs.\n if (text1 == null || text2 == null) {\n throw new Error('Null input. (diff_main)');\n }\n\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [new diff_match_patch.Diff(DIFF_EQUAL, text1)];\n }\n return [];\n }\n\n if (typeof opt_checklines == 'undefined') {\n opt_checklines = true;\n }\n var checklines = opt_checklines;\n\n // Trim off common prefix (speedup).\n var commonlength = this.diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\n commonlength = this.diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength);\n\n // Compute the diff on the middle block.\n var diffs = this.diff_compute_(text1, text2, checklines, deadline);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, commonprefix));\n }\n if (commonsuffix) {\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, commonsuffix));\n }\n this.diff_cleanupMerge(diffs);\n return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {boolean} checklines Speedup flag. If false, then don't run a\n * line-level diff first to identify the changed areas.\n * If true, then run a faster, slightly less optimal diff.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_compute_ = function(text1, text2, checklines,\n deadline) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [new diff_match_patch.Diff(DIFF_INSERT, text2)];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [new diff_match_patch.Diff(DIFF_DELETE, text1)];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [new diff_match_patch.Diff(DIFF_INSERT, longtext.substring(0, i)),\n new diff_match_patch.Diff(DIFF_EQUAL, shorttext),\n new diff_match_patch.Diff(DIFF_INSERT,\n longtext.substring(i + shorttext.length))];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [new diff_match_patch.Diff(DIFF_DELETE, text1),\n new diff_match_patch.Diff(DIFF_INSERT, text2)];\n }\n\n // Check to see if the problem can be split in two.\n var hm = this.diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = this.diff_main(text1_a, text2_a, checklines, deadline);\n var diffs_b = this.diff_main(text1_b, text2_b, checklines, deadline);\n // Merge the results.\n return diffs_a.concat([new diff_match_patch.Diff(DIFF_EQUAL, mid_common)],\n diffs_b);\n }\n\n if (checklines && text1.length > 100 && text2.length > 100) {\n return this.diff_lineMode_(text1, text2, deadline);\n }\n\n return this.diff_bisect_(text1, text2, deadline);\n};\n\n\n/**\n * Do a quick line-level diff on both strings, then rediff the parts for\n * greater accuracy.\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time when the diff should be complete by.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_lineMode_ = function(text1, text2, deadline) {\n // Scan the text on a line-by-line basis first.\n var a = this.diff_linesToChars_(text1, text2);\n text1 = a.chars1;\n text2 = a.chars2;\n var linearray = a.lineArray;\n\n var diffs = this.diff_main(text1, text2, false, deadline);\n\n // Convert the diff back to original text.\n this.diff_charsToLines_(diffs, linearray);\n // Eliminate freak matches (e.g. blank lines)\n this.diff_cleanupSemantic(diffs);\n\n // Rediff any replacement blocks, this time character-by-character.\n // Add a dummy entry at the end.\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete >= 1 && count_insert >= 1) {\n // Delete the offending records and add the merged ones.\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert);\n pointer = pointer - count_delete - count_insert;\n var subDiff =\n this.diff_main(text_delete, text_insert, false, deadline);\n for (var j = subDiff.length - 1; j >= 0; j--) {\n diffs.splice(pointer, 0, subDiff[j]);\n }\n pointer = pointer + subDiff.length;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n pointer++;\n }\n diffs.pop(); // Remove the dummy entry at the end.\n\n return diffs;\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisect_ = function(text1, text2, deadline) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Bail out if deadline is reached.\n if ((new Date()).getTime() > deadline) {\n break;\n }\n\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return this.diff_bisectSplit_(text1, text2, x1, y1, deadline);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [new diff_match_patch.Diff(DIFF_DELETE, text1),\n new diff_match_patch.Diff(DIFF_INSERT, text2)];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @param {number} deadline Time at which to bail if not yet complete.\n * @return {!Array.} Array of diff tuples.\n * @private\n */\ndiff_match_patch.prototype.diff_bisectSplit_ = function(text1, text2, x, y,\n deadline) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = this.diff_main(text1a, text2a, false, deadline);\n var diffsb = this.diff_main(text1b, text2b, false, deadline);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Split two texts into an array of strings. Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {{chars1: string, chars2: string, lineArray: !Array.}}\n * An object containing the encoded text1, the encoded text2 and\n * the array of unique strings.\n * The zeroth element of the array of unique strings is intentionally blank.\n * @private\n */\ndiff_match_patch.prototype.diff_linesToChars_ = function(text1, text2) {\n var lineArray = []; // e.g. lineArray[4] == 'Hello\\n'\n var lineHash = {}; // e.g. lineHash['Hello\\n'] == 4\n\n // '\\x00' is a valid character, but various debuggers don't like it.\n // So we'll insert a junk entry to avoid generating a null character.\n lineArray[0] = '';\n\n /**\n * Split a text into an array of strings. Reduce the texts to a string of\n * hashes where each Unicode character represents one line.\n * Modifies linearray and linehash through being a closure.\n * @param {string} text String to encode.\n * @return {string} Encoded string.\n * @private\n */\n function diff_linesToCharsMunge_(text) {\n var chars = '';\n // Walk the text, pulling out a substring for each line.\n // text.split('\\n') would would temporarily double our memory footprint.\n // Modifying text would create many large strings to garbage collect.\n var lineStart = 0;\n var lineEnd = -1;\n // Keeping our own length variable is faster than looking it up.\n var lineArrayLength = lineArray.length;\n while (lineEnd < text.length - 1) {\n lineEnd = text.indexOf('\\n', lineStart);\n if (lineEnd == -1) {\n lineEnd = text.length - 1;\n }\n var line = text.substring(lineStart, lineEnd + 1);\n\n if (lineHash.hasOwnProperty ? lineHash.hasOwnProperty(line) :\n (lineHash[line] !== undefined)) {\n chars += String.fromCharCode(lineHash[line]);\n } else {\n if (lineArrayLength == maxLines) {\n // Bail out at 65535 because\n // String.fromCharCode(65536) == String.fromCharCode(0)\n line = text.substring(lineStart);\n lineEnd = text.length;\n }\n chars += String.fromCharCode(lineArrayLength);\n lineHash[line] = lineArrayLength;\n lineArray[lineArrayLength++] = line;\n }\n lineStart = lineEnd + 1;\n }\n return chars;\n }\n // Allocate 2/3rds of the space for text1, the rest for text2.\n var maxLines = 40000;\n var chars1 = diff_linesToCharsMunge_(text1);\n maxLines = 65535;\n var chars2 = diff_linesToCharsMunge_(text2);\n return {chars1: chars1, chars2: chars2, lineArray: lineArray};\n};\n\n\n/**\n * Rehydrate the text in a diff from a string of line hashes to real lines of\n * text.\n * @param {!Array.} diffs Array of diff tuples.\n * @param {!Array.} lineArray Array of unique strings.\n * @private\n */\ndiff_match_patch.prototype.diff_charsToLines_ = function(diffs, lineArray) {\n for (var i = 0; i < diffs.length; i++) {\n var chars = diffs[i][1];\n var text = [];\n for (var j = 0; j < chars.length; j++) {\n text[j] = lineArray[chars.charCodeAt(j)];\n }\n diffs[i][1] = text.join('');\n }\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\ndiff_match_patch.prototype.diff_commonPrefix = function(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\ndiff_match_patch.prototype.diff_commonSuffix = function(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine if the suffix of one string is the prefix of another.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of the first\n * string and the start of the second string.\n * @private\n */\ndiff_match_patch.prototype.diff_commonOverlap_ = function(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n // Eliminate the null case.\n if (text1_length == 0 || text2_length == 0) {\n return 0;\n }\n // Truncate the longer string.\n if (text1_length > text2_length) {\n text1 = text1.substring(text1_length - text2_length);\n } else if (text1_length < text2_length) {\n text2 = text2.substring(0, text1_length);\n }\n var text_length = Math.min(text1_length, text2_length);\n // Quick check for the worst case.\n if (text1 == text2) {\n return text_length;\n }\n\n // Start by looking for a single character match\n // and increase length until no match is found.\n // Performance analysis: https://neil.fraser.name/news/2010/11/04/\n var best = 0;\n var length = 1;\n while (true) {\n var pattern = text1.substring(text_length - length);\n var found = text2.indexOf(pattern);\n if (found == -1) {\n return best;\n }\n length += found;\n if (found == 0 || text1.substring(text_length - length) ==\n text2.substring(0, length)) {\n best = length;\n length++;\n }\n }\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n * @private\n */\ndiff_match_patch.prototype.diff_halfMatch_ = function(text1, text2) {\n if (this.Diff_Timeout <= 0) {\n // Don't risk returning a non-optimal diff if we have unlimited time.\n return null;\n }\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n var dmp = this; // 'this' becomes 'window' in a closure.\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = dmp.diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = dmp.diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reduce the number of edits by eliminating semantically trivial equalities.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemantic = function(diffs) {\n var changes = false;\n var equalities = []; // Stack of indices where equalities are found.\n var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n /** @type {?string} */\n var lastEquality = null;\n // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n var pointer = 0; // Index of current position.\n // Number of characters that changed prior to the equality.\n var length_insertions1 = 0;\n var length_deletions1 = 0;\n // Number of characters that changed after the equality.\n var length_insertions2 = 0;\n var length_deletions2 = 0;\n while (pointer < diffs.length) {\n if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found.\n equalities[equalitiesLength++] = pointer;\n length_insertions1 = length_insertions2;\n length_deletions1 = length_deletions2;\n length_insertions2 = 0;\n length_deletions2 = 0;\n lastEquality = diffs[pointer][1];\n } else { // An insertion or deletion.\n if (diffs[pointer][0] == DIFF_INSERT) {\n length_insertions2 += diffs[pointer][1].length;\n } else {\n length_deletions2 += diffs[pointer][1].length;\n }\n // Eliminate an equality that is smaller or equal to the edits on both\n // sides of it.\n if (lastEquality && (lastEquality.length <=\n Math.max(length_insertions1, length_deletions1)) &&\n (lastEquality.length <= Math.max(length_insertions2,\n length_deletions2))) {\n // Duplicate record.\n diffs.splice(equalities[equalitiesLength - 1], 0,\n new diff_match_patch.Diff(DIFF_DELETE, lastEquality));\n // Change second copy to insert.\n diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n // Throw away the equality we just deleted.\n equalitiesLength--;\n // Throw away the previous equality (it needs to be reevaluated).\n equalitiesLength--;\n pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n length_insertions1 = 0; // Reset the counters.\n length_deletions1 = 0;\n length_insertions2 = 0;\n length_deletions2 = 0;\n lastEquality = null;\n changes = true;\n }\n }\n pointer++;\n }\n\n // Normalize the diff.\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n this.diff_cleanupSemanticLossless(diffs);\n\n // Find any overlaps between deletions and insertions.\n // e.g: abcxxxxxxdef\n // -> abcxxxdef\n // e.g: xxxabcdefxxx\n // -> defxxxabc\n // Only extract an overlap if it is as big as the edit ahead or behind it.\n pointer = 1;\n while (pointer < diffs.length) {\n if (diffs[pointer - 1][0] == DIFF_DELETE &&\n diffs[pointer][0] == DIFF_INSERT) {\n var deletion = diffs[pointer - 1][1];\n var insertion = diffs[pointer][1];\n var overlap_length1 = this.diff_commonOverlap_(deletion, insertion);\n var overlap_length2 = this.diff_commonOverlap_(insertion, deletion);\n if (overlap_length1 >= overlap_length2) {\n if (overlap_length1 >= deletion.length / 2 ||\n overlap_length1 >= insertion.length / 2) {\n // Overlap found. Insert an equality and trim the surrounding edits.\n diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL,\n insertion.substring(0, overlap_length1)));\n diffs[pointer - 1][1] =\n deletion.substring(0, deletion.length - overlap_length1);\n diffs[pointer + 1][1] = insertion.substring(overlap_length1);\n pointer++;\n }\n } else {\n if (overlap_length2 >= deletion.length / 2 ||\n overlap_length2 >= insertion.length / 2) {\n // Reverse overlap found.\n // Insert an equality and swap and trim the surrounding edits.\n diffs.splice(pointer, 0, new diff_match_patch.Diff(DIFF_EQUAL,\n deletion.substring(0, overlap_length2)));\n diffs[pointer - 1][0] = DIFF_INSERT;\n diffs[pointer - 1][1] =\n insertion.substring(0, insertion.length - overlap_length2);\n diffs[pointer + 1][0] = DIFF_DELETE;\n diffs[pointer + 1][1] =\n deletion.substring(overlap_length2);\n pointer++;\n }\n }\n pointer++;\n }\n pointer++;\n }\n};\n\n\n/**\n * Look for single edits surrounded on both sides by equalities\n * which can be shifted sideways to align the edit to a word boundary.\n * e.g: The cat came. -> The cat came.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupSemanticLossless = function(diffs) {\n /**\n * Given two strings, compute a score representing whether the internal\n * boundary falls on logical boundaries.\n * Scores range from 6 (best) to 0 (worst).\n * Closure, but does not reference any external variables.\n * @param {string} one First string.\n * @param {string} two Second string.\n * @return {number} The score.\n * @private\n */\n function diff_cleanupSemanticScore_(one, two) {\n if (!one || !two) {\n // Edges are the best.\n return 6;\n }\n\n // Each port of this function behaves slightly differently due to\n // subtle differences in each language's definition of things like\n // 'whitespace'. Since this function's purpose is largely cosmetic,\n // the choice has been made to use each language's native features\n // rather than force total conformity.\n var char1 = one.charAt(one.length - 1);\n var char2 = two.charAt(0);\n var nonAlphaNumeric1 = char1.match(diff_match_patch.nonAlphaNumericRegex_);\n var nonAlphaNumeric2 = char2.match(diff_match_patch.nonAlphaNumericRegex_);\n var whitespace1 = nonAlphaNumeric1 &&\n char1.match(diff_match_patch.whitespaceRegex_);\n var whitespace2 = nonAlphaNumeric2 &&\n char2.match(diff_match_patch.whitespaceRegex_);\n var lineBreak1 = whitespace1 &&\n char1.match(diff_match_patch.linebreakRegex_);\n var lineBreak2 = whitespace2 &&\n char2.match(diff_match_patch.linebreakRegex_);\n var blankLine1 = lineBreak1 &&\n one.match(diff_match_patch.blanklineEndRegex_);\n var blankLine2 = lineBreak2 &&\n two.match(diff_match_patch.blanklineStartRegex_);\n\n if (blankLine1 || blankLine2) {\n // Five points for blank lines.\n return 5;\n } else if (lineBreak1 || lineBreak2) {\n // Four points for line breaks.\n return 4;\n } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n // Three points for end of sentences.\n return 3;\n } else if (whitespace1 || whitespace2) {\n // Two points for whitespace.\n return 2;\n } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n // One point for non-alphanumeric.\n return 1;\n }\n return 0;\n }\n\n var pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n var equality1 = diffs[pointer - 1][1];\n var edit = diffs[pointer][1];\n var equality2 = diffs[pointer + 1][1];\n\n // First, shift the edit as far left as possible.\n var commonOffset = this.diff_commonSuffix(equality1, edit);\n if (commonOffset) {\n var commonString = edit.substring(edit.length - commonOffset);\n equality1 = equality1.substring(0, equality1.length - commonOffset);\n edit = commonString + edit.substring(0, edit.length - commonOffset);\n equality2 = commonString + equality2;\n }\n\n // Second, step character by character right, looking for the best fit.\n var bestEquality1 = equality1;\n var bestEdit = edit;\n var bestEquality2 = equality2;\n var bestScore = diff_cleanupSemanticScore_(equality1, edit) +\n diff_cleanupSemanticScore_(edit, equality2);\n while (edit.charAt(0) === equality2.charAt(0)) {\n equality1 += edit.charAt(0);\n edit = edit.substring(1) + equality2.charAt(0);\n equality2 = equality2.substring(1);\n var score = diff_cleanupSemanticScore_(equality1, edit) +\n diff_cleanupSemanticScore_(edit, equality2);\n // The >= encourages trailing rather than leading whitespace on edits.\n if (score >= bestScore) {\n bestScore = score;\n bestEquality1 = equality1;\n bestEdit = edit;\n bestEquality2 = equality2;\n }\n }\n\n if (diffs[pointer - 1][1] != bestEquality1) {\n // We have an improvement, save it back to the diff.\n if (bestEquality1) {\n diffs[pointer - 1][1] = bestEquality1;\n } else {\n diffs.splice(pointer - 1, 1);\n pointer--;\n }\n diffs[pointer][1] = bestEdit;\n if (bestEquality2) {\n diffs[pointer + 1][1] = bestEquality2;\n } else {\n diffs.splice(pointer + 1, 1);\n pointer--;\n }\n }\n }\n pointer++;\n }\n};\n\n// Define some regex patterns for matching boundaries.\ndiff_match_patch.nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;\ndiff_match_patch.whitespaceRegex_ = /\\s/;\ndiff_match_patch.linebreakRegex_ = /[\\r\\n]/;\ndiff_match_patch.blanklineEndRegex_ = /\\n\\r?\\n$/;\ndiff_match_patch.blanklineStartRegex_ = /^\\r?\\n\\r?\\n/;\n\n/**\n * Reduce the number of edits by eliminating operationally trivial equalities.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupEfficiency = function(diffs) {\n var changes = false;\n var equalities = []; // Stack of indices where equalities are found.\n var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n /** @type {?string} */\n var lastEquality = null;\n // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n var pointer = 0; // Index of current position.\n // Is there an insertion operation before the last equality.\n var pre_ins = false;\n // Is there a deletion operation before the last equality.\n var pre_del = false;\n // Is there an insertion operation after the last equality.\n var post_ins = false;\n // Is there a deletion operation after the last equality.\n var post_del = false;\n while (pointer < diffs.length) {\n if (diffs[pointer][0] == DIFF_EQUAL) { // Equality found.\n if (diffs[pointer][1].length < this.Diff_EditCost &&\n (post_ins || post_del)) {\n // Candidate found.\n equalities[equalitiesLength++] = pointer;\n pre_ins = post_ins;\n pre_del = post_del;\n lastEquality = diffs[pointer][1];\n } else {\n // Not a candidate, and can never become one.\n equalitiesLength = 0;\n lastEquality = null;\n }\n post_ins = post_del = false;\n } else { // An insertion or deletion.\n if (diffs[pointer][0] == DIFF_DELETE) {\n post_del = true;\n } else {\n post_ins = true;\n }\n /*\n * Five types to be split:\n * ABXYCD\n * AXCD\n * ABXC\n * AXCD\n * ABXC\n */\n if (lastEquality && ((pre_ins && pre_del && post_ins && post_del) ||\n ((lastEquality.length < this.Diff_EditCost / 2) &&\n (pre_ins + pre_del + post_ins + post_del) == 3))) {\n // Duplicate record.\n diffs.splice(equalities[equalitiesLength - 1], 0,\n new diff_match_patch.Diff(DIFF_DELETE, lastEquality));\n // Change second copy to insert.\n diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n equalitiesLength--; // Throw away the equality we just deleted;\n lastEquality = null;\n if (pre_ins && pre_del) {\n // No changes made which could affect previous entry, keep going.\n post_ins = post_del = true;\n equalitiesLength = 0;\n } else {\n equalitiesLength--; // Throw away the previous equality.\n pointer = equalitiesLength > 0 ?\n equalities[equalitiesLength - 1] : -1;\n post_ins = post_del = false;\n }\n changes = true;\n }\n }\n pointer++;\n }\n\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {!Array.} diffs Array of diff tuples.\n */\ndiff_match_patch.prototype.diff_cleanupMerge = function(diffs) {\n // Add a dummy entry at the end.\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, ''));\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = this.diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, new diff_match_patch.Diff(DIFF_EQUAL,\n text_insert.substring(0, commonlength)));\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = this.diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n pointer -= count_delete + count_insert;\n diffs.splice(pointer, count_delete + count_insert);\n if (text_delete.length) {\n diffs.splice(pointer, 0,\n new diff_match_patch.Diff(DIFF_DELETE, text_delete));\n pointer++;\n }\n if (text_insert.length) {\n diffs.splice(pointer, 0,\n new diff_match_patch.Diff(DIFF_INSERT, text_insert));\n pointer++;\n }\n pointer++;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n this.diff_cleanupMerge(diffs);\n }\n};\n\n\n/**\n * loc is a location in text1, compute and return the equivalent location in\n * text2.\n * e.g. 'The cat' vs 'The big cat', 1->1, 5->8\n * @param {!Array.} diffs Array of diff tuples.\n * @param {number} loc Location within text1.\n * @return {number} Location within text2.\n */\ndiff_match_patch.prototype.diff_xIndex = function(diffs, loc) {\n var chars1 = 0;\n var chars2 = 0;\n var last_chars1 = 0;\n var last_chars2 = 0;\n var x;\n for (x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_INSERT) { // Equality or deletion.\n chars1 += diffs[x][1].length;\n }\n if (diffs[x][0] !== DIFF_DELETE) { // Equality or insertion.\n chars2 += diffs[x][1].length;\n }\n if (chars1 > loc) { // Overshot the location.\n break;\n }\n last_chars1 = chars1;\n last_chars2 = chars2;\n }\n // Was the location was deleted?\n if (diffs.length != x && diffs[x][0] === DIFF_DELETE) {\n return last_chars2;\n }\n // Add the remaining character length.\n return last_chars2 + (loc - last_chars1);\n};\n\n\n/**\n * Convert a diff array into a pretty HTML report.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} HTML representation.\n */\ndiff_match_patch.prototype.diff_prettyHtml = function(diffs) {\n var html = [];\n var pattern_amp = /&/g;\n var pattern_lt = //g;\n var pattern_para = /\\n/g;\n for (var x = 0; x < diffs.length; x++) {\n var op = diffs[x][0]; // Operation (insert, delete, equal)\n var data = diffs[x][1]; // Text of change.\n var text = data.replace(pattern_amp, '&').replace(pattern_lt, '<')\n .replace(pattern_gt, '>').replace(pattern_para, '¶
    ');\n switch (op) {\n case DIFF_INSERT:\n html[x] = '' + text + '';\n break;\n case DIFF_DELETE:\n html[x] = '' + text + '';\n break;\n case DIFF_EQUAL:\n html[x] = '' + text + '';\n break;\n }\n }\n return html.join('');\n};\n\n\n/**\n * Compute and return the source text (all equalities and deletions).\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Source text.\n */\ndiff_match_patch.prototype.diff_text1 = function(diffs) {\n var text = [];\n for (var x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_INSERT) {\n text[x] = diffs[x][1];\n }\n }\n return text.join('');\n};\n\n\n/**\n * Compute and return the destination text (all equalities and insertions).\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Destination text.\n */\ndiff_match_patch.prototype.diff_text2 = function(diffs) {\n var text = [];\n for (var x = 0; x < diffs.length; x++) {\n if (diffs[x][0] !== DIFF_DELETE) {\n text[x] = diffs[x][1];\n }\n }\n return text.join('');\n};\n\n\n/**\n * Compute the Levenshtein distance; the number of inserted, deleted or\n * substituted characters.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {number} Number of changes.\n */\ndiff_match_patch.prototype.diff_levenshtein = function(diffs) {\n var levenshtein = 0;\n var insertions = 0;\n var deletions = 0;\n for (var x = 0; x < diffs.length; x++) {\n var op = diffs[x][0];\n var data = diffs[x][1];\n switch (op) {\n case DIFF_INSERT:\n insertions += data.length;\n break;\n case DIFF_DELETE:\n deletions += data.length;\n break;\n case DIFF_EQUAL:\n // A deletion and an insertion is one substitution.\n levenshtein += Math.max(insertions, deletions);\n insertions = 0;\n deletions = 0;\n break;\n }\n }\n levenshtein += Math.max(insertions, deletions);\n return levenshtein;\n};\n\n\n/**\n * Crush the diff into an encoded string which describes the operations\n * required to transform text1 into text2.\n * E.g. =3\\t-2\\t+ing -> Keep 3 chars, delete 2 chars, insert 'ing'.\n * Operations are tab-separated. Inserted text is escaped using %xx notation.\n * @param {!Array.} diffs Array of diff tuples.\n * @return {string} Delta text.\n */\ndiff_match_patch.prototype.diff_toDelta = function(diffs) {\n var text = [];\n for (var x = 0; x < diffs.length; x++) {\n switch (diffs[x][0]) {\n case DIFF_INSERT:\n text[x] = '+' + encodeURI(diffs[x][1]);\n break;\n case DIFF_DELETE:\n text[x] = '-' + diffs[x][1].length;\n break;\n case DIFF_EQUAL:\n text[x] = '=' + diffs[x][1].length;\n break;\n }\n }\n return text.join('\\t').replace(/%20/g, ' ');\n};\n\n\n/**\n * Given the original text1, and an encoded string which describes the\n * operations required to transform text1 into text2, compute the full diff.\n * @param {string} text1 Source string for the diff.\n * @param {string} delta Delta text.\n * @return {!Array.} Array of diff tuples.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.diff_fromDelta = function(text1, delta) {\n var diffs = [];\n var diffsLength = 0; // Keeping our own length var is faster in JS.\n var pointer = 0; // Cursor in text1\n var tokens = delta.split(/\\t/g);\n for (var x = 0; x < tokens.length; x++) {\n // Each token begins with a one character parameter which specifies the\n // operation of this token (delete, insert, equality).\n var param = tokens[x].substring(1);\n switch (tokens[x].charAt(0)) {\n case '+':\n try {\n diffs[diffsLength++] =\n new diff_match_patch.Diff(DIFF_INSERT, decodeURI(param));\n } catch (ex) {\n // Malformed URI sequence.\n throw new Error('Illegal escape in diff_fromDelta: ' + param);\n }\n break;\n case '-':\n // Fall through.\n case '=':\n var n = parseInt(param, 10);\n if (isNaN(n) || n < 0) {\n throw new Error('Invalid number in diff_fromDelta: ' + param);\n }\n var text = text1.substring(pointer, pointer += n);\n if (tokens[x].charAt(0) == '=') {\n diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_EQUAL, text);\n } else {\n diffs[diffsLength++] = new diff_match_patch.Diff(DIFF_DELETE, text);\n }\n break;\n default:\n // Blank tokens are ok (from a trailing \\t).\n // Anything else is an error.\n if (tokens[x]) {\n throw new Error('Invalid diff operation in diff_fromDelta: ' +\n tokens[x]);\n }\n }\n }\n if (pointer != text1.length) {\n throw new Error('Delta length (' + pointer +\n ') does not equal source text length (' + text1.length + ').');\n }\n return diffs;\n};\n\n\n// MATCH FUNCTIONS\n\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc'.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n */\ndiff_match_patch.prototype.match_main = function(text, pattern, loc) {\n // Check for null inputs.\n if (text == null || pattern == null || loc == null) {\n throw new Error('Null input. (match_main)');\n }\n\n loc = Math.max(0, Math.min(loc, text.length));\n if (text == pattern) {\n // Shortcut (potentially not guaranteed by the algorithm)\n return 0;\n } else if (!text.length) {\n // Nothing to match.\n return -1;\n } else if (text.substring(loc, loc + pattern.length) == pattern) {\n // Perfect match at the perfect spot! (Includes case of null pattern)\n return loc;\n } else {\n // Do a fuzzy compare.\n return this.match_bitap_(text, pattern, loc);\n }\n};\n\n\n/**\n * Locate the best instance of 'pattern' in 'text' near 'loc' using the\n * Bitap algorithm.\n * @param {string} text The text to search.\n * @param {string} pattern The pattern to search for.\n * @param {number} loc The location to search around.\n * @return {number} Best match index or -1.\n * @private\n */\ndiff_match_patch.prototype.match_bitap_ = function(text, pattern, loc) {\n if (pattern.length > this.Match_MaxBits) {\n throw new Error('Pattern too long for this browser.');\n }\n\n // Initialise the alphabet.\n var s = this.match_alphabet_(pattern);\n\n var dmp = this; // 'this' becomes 'window' in a closure.\n\n /**\n * Compute and return the score for a match with e errors and x location.\n * Accesses loc and pattern through being a closure.\n * @param {number} e Number of errors in match.\n * @param {number} x Location of match.\n * @return {number} Overall score for match (0.0 = good, 1.0 = bad).\n * @private\n */\n function match_bitapScore_(e, x) {\n var accuracy = e / pattern.length;\n var proximity = Math.abs(loc - x);\n if (!dmp.Match_Distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy;\n }\n return accuracy + (proximity / dmp.Match_Distance);\n }\n\n // Highest score beyond which we give up.\n var score_threshold = this.Match_Threshold;\n // Is there a nearby exact match? (speedup)\n var best_loc = text.indexOf(pattern, loc);\n if (best_loc != -1) {\n score_threshold = Math.min(match_bitapScore_(0, best_loc), score_threshold);\n // What about in the other direction? (speedup)\n best_loc = text.lastIndexOf(pattern, loc + pattern.length);\n if (best_loc != -1) {\n score_threshold =\n Math.min(match_bitapScore_(0, best_loc), score_threshold);\n }\n }\n\n // Initialise the bit arrays.\n var matchmask = 1 << (pattern.length - 1);\n best_loc = -1;\n\n var bin_min, bin_mid;\n var bin_max = pattern.length + text.length;\n var last_rd;\n for (var d = 0; d < pattern.length; d++) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from 'loc' we can stray at this\n // error level.\n bin_min = 0;\n bin_mid = bin_max;\n while (bin_min < bin_mid) {\n if (match_bitapScore_(d, loc + bin_mid) <= score_threshold) {\n bin_min = bin_mid;\n } else {\n bin_max = bin_mid;\n }\n bin_mid = Math.floor((bin_max - bin_min) / 2 + bin_min);\n }\n // Use the result from this iteration as the maximum for the next.\n bin_max = bin_mid;\n var start = Math.max(1, loc - bin_mid + 1);\n var finish = Math.min(loc + bin_mid, text.length) + pattern.length;\n\n var rd = Array(finish + 2);\n rd[finish + 1] = (1 << d) - 1;\n for (var j = finish; j >= start; j--) {\n // The alphabet (s) is a sparse hash, so the following line generates\n // warnings.\n var charMatch = s[text.charAt(j - 1)];\n if (d === 0) { // First pass: exact match.\n rd[j] = ((rd[j + 1] << 1) | 1) & charMatch;\n } else { // Subsequent passes: fuzzy match.\n rd[j] = (((rd[j + 1] << 1) | 1) & charMatch) |\n (((last_rd[j + 1] | last_rd[j]) << 1) | 1) |\n last_rd[j + 1];\n }\n if (rd[j] & matchmask) {\n var score = match_bitapScore_(d, j - 1);\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (score <= score_threshold) {\n // Told you so.\n score_threshold = score;\n best_loc = j - 1;\n if (best_loc > loc) {\n // When passing loc, don't exceed our current distance from loc.\n start = Math.max(1, 2 * loc - best_loc);\n } else {\n // Already passed loc, downhill from here on in.\n break;\n }\n }\n }\n }\n // No hope for a (better) match at greater error levels.\n if (match_bitapScore_(d + 1, loc) > score_threshold) {\n break;\n }\n last_rd = rd;\n }\n return best_loc;\n};\n\n\n/**\n * Initialise the alphabet for the Bitap algorithm.\n * @param {string} pattern The text to encode.\n * @return {!Object} Hash of character locations.\n * @private\n */\ndiff_match_patch.prototype.match_alphabet_ = function(pattern) {\n var s = {};\n for (var i = 0; i < pattern.length; i++) {\n s[pattern.charAt(i)] = 0;\n }\n for (var i = 0; i < pattern.length; i++) {\n s[pattern.charAt(i)] |= 1 << (pattern.length - i - 1);\n }\n return s;\n};\n\n\n// PATCH FUNCTIONS\n\n\n/**\n * Increase the context until it is unique,\n * but don't let the pattern expand beyond Match_MaxBits.\n * @param {!diff_match_patch.patch_obj} patch The patch to grow.\n * @param {string} text Source text.\n * @private\n */\ndiff_match_patch.prototype.patch_addContext_ = function(patch, text) {\n if (text.length == 0) {\n return;\n }\n if (patch.start2 === null) {\n throw Error('patch not initialized');\n }\n var pattern = text.substring(patch.start2, patch.start2 + patch.length1);\n var padding = 0;\n\n // Look for the first and last matches of pattern in text. If two different\n // matches are found, increase the pattern length.\n while (text.indexOf(pattern) != text.lastIndexOf(pattern) &&\n pattern.length < this.Match_MaxBits - this.Patch_Margin -\n this.Patch_Margin) {\n padding += this.Patch_Margin;\n pattern = text.substring(patch.start2 - padding,\n patch.start2 + patch.length1 + padding);\n }\n // Add one chunk for good luck.\n padding += this.Patch_Margin;\n\n // Add the prefix.\n var prefix = text.substring(patch.start2 - padding, patch.start2);\n if (prefix) {\n patch.diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, prefix));\n }\n // Add the suffix.\n var suffix = text.substring(patch.start2 + patch.length1,\n patch.start2 + patch.length1 + padding);\n if (suffix) {\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, suffix));\n }\n\n // Roll back the start points.\n patch.start1 -= prefix.length;\n patch.start2 -= prefix.length;\n // Extend the lengths.\n patch.length1 += prefix.length + suffix.length;\n patch.length2 += prefix.length + suffix.length;\n};\n\n\n/**\n * Compute a list of patches to turn text1 into text2.\n * Use diffs if provided, otherwise compute it ourselves.\n * There are four ways to call this function, depending on what data is\n * available to the caller:\n * Method 1:\n * a = text1, b = text2\n * Method 2:\n * a = diffs\n * Method 3 (optimal):\n * a = text1, b = diffs\n * Method 4 (deprecated, use method 3):\n * a = text1, b = text2, c = diffs\n *\n * @param {string|!Array.} a text1 (methods 1,3,4) or\n * Array of diff tuples for text1 to text2 (method 2).\n * @param {string|!Array.=} opt_b text2 (methods 1,4) or\n * Array of diff tuples for text1 to text2 (method 3) or undefined (method 2).\n * @param {string|!Array.=} opt_c Array of diff tuples\n * for text1 to text2 (method 4) or undefined (methods 1,2,3).\n * @return {!Array.} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_make = function(a, opt_b, opt_c) {\n var text1, diffs;\n if (typeof a == 'string' && typeof opt_b == 'string' &&\n typeof opt_c == 'undefined') {\n // Method 1: text1, text2\n // Compute diffs from text1 and text2.\n text1 = /** @type {string} */(a);\n diffs = this.diff_main(text1, /** @type {string} */(opt_b), true);\n if (diffs.length > 2) {\n this.diff_cleanupSemantic(diffs);\n this.diff_cleanupEfficiency(diffs);\n }\n } else if (a && typeof a == 'object' && typeof opt_b == 'undefined' &&\n typeof opt_c == 'undefined') {\n // Method 2: diffs\n // Compute text1 from diffs.\n diffs = /** @type {!Array.} */(a);\n text1 = this.diff_text1(diffs);\n } else if (typeof a == 'string' && opt_b && typeof opt_b == 'object' &&\n typeof opt_c == 'undefined') {\n // Method 3: text1, diffs\n text1 = /** @type {string} */(a);\n diffs = /** @type {!Array.} */(opt_b);\n } else if (typeof a == 'string' && typeof opt_b == 'string' &&\n opt_c && typeof opt_c == 'object') {\n // Method 4: text1, text2, diffs\n // text2 is not used.\n text1 = /** @type {string} */(a);\n diffs = /** @type {!Array.} */(opt_c);\n } else {\n throw new Error('Unknown call format to patch_make.');\n }\n\n if (diffs.length === 0) {\n return []; // Get rid of the null case.\n }\n var patches = [];\n var patch = new diff_match_patch.patch_obj();\n var patchDiffLength = 0; // Keeping our own length var is faster in JS.\n var char_count1 = 0; // Number of characters into the text1 string.\n var char_count2 = 0; // Number of characters into the text2 string.\n // Start with text1 (prepatch_text) and apply the diffs until we arrive at\n // text2 (postpatch_text). We recreate the patches one by one to determine\n // context info.\n var prepatch_text = text1;\n var postpatch_text = text1;\n for (var x = 0; x < diffs.length; x++) {\n var diff_type = diffs[x][0];\n var diff_text = diffs[x][1];\n\n if (!patchDiffLength && diff_type !== DIFF_EQUAL) {\n // A new patch starts here.\n patch.start1 = char_count1;\n patch.start2 = char_count2;\n }\n\n switch (diff_type) {\n case DIFF_INSERT:\n patch.diffs[patchDiffLength++] = diffs[x];\n patch.length2 += diff_text.length;\n postpatch_text = postpatch_text.substring(0, char_count2) + diff_text +\n postpatch_text.substring(char_count2);\n break;\n case DIFF_DELETE:\n patch.length1 += diff_text.length;\n patch.diffs[patchDiffLength++] = diffs[x];\n postpatch_text = postpatch_text.substring(0, char_count2) +\n postpatch_text.substring(char_count2 +\n diff_text.length);\n break;\n case DIFF_EQUAL:\n if (diff_text.length <= 2 * this.Patch_Margin &&\n patchDiffLength && diffs.length != x + 1) {\n // Small equality inside a patch.\n patch.diffs[patchDiffLength++] = diffs[x];\n patch.length1 += diff_text.length;\n patch.length2 += diff_text.length;\n } else if (diff_text.length >= 2 * this.Patch_Margin) {\n // Time for a new patch.\n if (patchDiffLength) {\n this.patch_addContext_(patch, prepatch_text);\n patches.push(patch);\n patch = new diff_match_patch.patch_obj();\n patchDiffLength = 0;\n // Unlike Unidiff, our patch lists have a rolling context.\n // https://github.com/google/diff-match-patch/wiki/Unidiff\n // Update prepatch text & pos to reflect the application of the\n // just completed patch.\n prepatch_text = postpatch_text;\n char_count1 = char_count2;\n }\n }\n break;\n }\n\n // Update the current character count.\n if (diff_type !== DIFF_INSERT) {\n char_count1 += diff_text.length;\n }\n if (diff_type !== DIFF_DELETE) {\n char_count2 += diff_text.length;\n }\n }\n // Pick up the leftover patch if not empty.\n if (patchDiffLength) {\n this.patch_addContext_(patch, prepatch_text);\n patches.push(patch);\n }\n\n return patches;\n};\n\n\n/**\n * Given an array of patches, return another array that is identical.\n * @param {!Array.} patches Array of Patch objects.\n * @return {!Array.} Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_deepCopy = function(patches) {\n // Making deep copies is hard in JavaScript.\n var patchesCopy = [];\n for (var x = 0; x < patches.length; x++) {\n var patch = patches[x];\n var patchCopy = new diff_match_patch.patch_obj();\n patchCopy.diffs = [];\n for (var y = 0; y < patch.diffs.length; y++) {\n patchCopy.diffs[y] =\n new diff_match_patch.Diff(patch.diffs[y][0], patch.diffs[y][1]);\n }\n patchCopy.start1 = patch.start1;\n patchCopy.start2 = patch.start2;\n patchCopy.length1 = patch.length1;\n patchCopy.length2 = patch.length2;\n patchesCopy[x] = patchCopy;\n }\n return patchesCopy;\n};\n\n\n/**\n * Merge a set of patches onto the text. Return a patched text, as well\n * as a list of true/false values indicating which patches were applied.\n * @param {!Array.} patches Array of Patch objects.\n * @param {string} text Old text.\n * @return {!Array.>} Two element Array, containing the\n * new text and an array of boolean values.\n */\ndiff_match_patch.prototype.patch_apply = function(patches, text) {\n if (patches.length == 0) {\n return [text, []];\n }\n\n // Deep copy the patches so that no changes are made to originals.\n patches = this.patch_deepCopy(patches);\n\n var nullPadding = this.patch_addPadding(patches);\n text = nullPadding + text + nullPadding;\n\n this.patch_splitMax(patches);\n // delta keeps track of the offset between the expected and actual location\n // of the previous patch. If there are patches expected at positions 10 and\n // 20, but the first patch was found at 12, delta is 2 and the second patch\n // has an effective expected position of 22.\n var delta = 0;\n var results = [];\n for (var x = 0; x < patches.length; x++) {\n var expected_loc = patches[x].start2 + delta;\n var text1 = this.diff_text1(patches[x].diffs);\n var start_loc;\n var end_loc = -1;\n if (text1.length > this.Match_MaxBits) {\n // patch_splitMax will only provide an oversized pattern in the case of\n // a monster delete.\n start_loc = this.match_main(text, text1.substring(0, this.Match_MaxBits),\n expected_loc);\n if (start_loc != -1) {\n end_loc = this.match_main(text,\n text1.substring(text1.length - this.Match_MaxBits),\n expected_loc + text1.length - this.Match_MaxBits);\n if (end_loc == -1 || start_loc >= end_loc) {\n // Can't find valid trailing context. Drop this patch.\n start_loc = -1;\n }\n }\n } else {\n start_loc = this.match_main(text, text1, expected_loc);\n }\n if (start_loc == -1) {\n // No match found. :(\n results[x] = false;\n // Subtract the delta for this failed patch from subsequent patches.\n delta -= patches[x].length2 - patches[x].length1;\n } else {\n // Found a match. :)\n results[x] = true;\n delta = start_loc - expected_loc;\n var text2;\n if (end_loc == -1) {\n text2 = text.substring(start_loc, start_loc + text1.length);\n } else {\n text2 = text.substring(start_loc, end_loc + this.Match_MaxBits);\n }\n if (text1 == text2) {\n // Perfect match, just shove the replacement text in.\n text = text.substring(0, start_loc) +\n this.diff_text2(patches[x].diffs) +\n text.substring(start_loc + text1.length);\n } else {\n // Imperfect match. Run a diff to get a framework of equivalent\n // indices.\n var diffs = this.diff_main(text1, text2, false);\n if (text1.length > this.Match_MaxBits &&\n this.diff_levenshtein(diffs) / text1.length >\n this.Patch_DeleteThreshold) {\n // The end points match, but the content is unacceptably bad.\n results[x] = false;\n } else {\n this.diff_cleanupSemanticLossless(diffs);\n var index1 = 0;\n var index2;\n for (var y = 0; y < patches[x].diffs.length; y++) {\n var mod = patches[x].diffs[y];\n if (mod[0] !== DIFF_EQUAL) {\n index2 = this.diff_xIndex(diffs, index1);\n }\n if (mod[0] === DIFF_INSERT) { // Insertion\n text = text.substring(0, start_loc + index2) + mod[1] +\n text.substring(start_loc + index2);\n } else if (mod[0] === DIFF_DELETE) { // Deletion\n text = text.substring(0, start_loc + index2) +\n text.substring(start_loc + this.diff_xIndex(diffs,\n index1 + mod[1].length));\n }\n if (mod[0] !== DIFF_DELETE) {\n index1 += mod[1].length;\n }\n }\n }\n }\n }\n }\n // Strip the padding off.\n text = text.substring(nullPadding.length, text.length - nullPadding.length);\n return [text, results];\n};\n\n\n/**\n * Add some padding on text start and end so that edges can match something.\n * Intended to be called only from within patch_apply.\n * @param {!Array.} patches Array of Patch objects.\n * @return {string} The padding string added to each side.\n */\ndiff_match_patch.prototype.patch_addPadding = function(patches) {\n var paddingLength = this.Patch_Margin;\n var nullPadding = '';\n for (var x = 1; x <= paddingLength; x++) {\n nullPadding += String.fromCharCode(x);\n }\n\n // Bump all the patches forward.\n for (var x = 0; x < patches.length; x++) {\n patches[x].start1 += paddingLength;\n patches[x].start2 += paddingLength;\n }\n\n // Add some padding on start of first diff.\n var patch = patches[0];\n var diffs = patch.diffs;\n if (diffs.length == 0 || diffs[0][0] != DIFF_EQUAL) {\n // Add nullPadding equality.\n diffs.unshift(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n patch.start1 -= paddingLength; // Should be 0.\n patch.start2 -= paddingLength; // Should be 0.\n patch.length1 += paddingLength;\n patch.length2 += paddingLength;\n } else if (paddingLength > diffs[0][1].length) {\n // Grow first equality.\n var extraLength = paddingLength - diffs[0][1].length;\n diffs[0][1] = nullPadding.substring(diffs[0][1].length) + diffs[0][1];\n patch.start1 -= extraLength;\n patch.start2 -= extraLength;\n patch.length1 += extraLength;\n patch.length2 += extraLength;\n }\n\n // Add some padding on end of last diff.\n patch = patches[patches.length - 1];\n diffs = patch.diffs;\n if (diffs.length == 0 || diffs[diffs.length - 1][0] != DIFF_EQUAL) {\n // Add nullPadding equality.\n diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, nullPadding));\n patch.length1 += paddingLength;\n patch.length2 += paddingLength;\n } else if (paddingLength > diffs[diffs.length - 1][1].length) {\n // Grow last equality.\n var extraLength = paddingLength - diffs[diffs.length - 1][1].length;\n diffs[diffs.length - 1][1] += nullPadding.substring(0, extraLength);\n patch.length1 += extraLength;\n patch.length2 += extraLength;\n }\n\n return nullPadding;\n};\n\n\n/**\n * Look through the patches and break up any which are longer than the maximum\n * limit of the match algorithm.\n * Intended to be called only from within patch_apply.\n * @param {!Array.} patches Array of Patch objects.\n */\ndiff_match_patch.prototype.patch_splitMax = function(patches) {\n var patch_size = this.Match_MaxBits;\n for (var x = 0; x < patches.length; x++) {\n if (patches[x].length1 <= patch_size) {\n continue;\n }\n var bigpatch = patches[x];\n // Remove the big old patch.\n patches.splice(x--, 1);\n var start1 = bigpatch.start1;\n var start2 = bigpatch.start2;\n var precontext = '';\n while (bigpatch.diffs.length !== 0) {\n // Create one of several smaller patches.\n var patch = new diff_match_patch.patch_obj();\n var empty = true;\n patch.start1 = start1 - precontext.length;\n patch.start2 = start2 - precontext.length;\n if (precontext !== '') {\n patch.length1 = patch.length2 = precontext.length;\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, precontext));\n }\n while (bigpatch.diffs.length !== 0 &&\n patch.length1 < patch_size - this.Patch_Margin) {\n var diff_type = bigpatch.diffs[0][0];\n var diff_text = bigpatch.diffs[0][1];\n if (diff_type === DIFF_INSERT) {\n // Insertions are harmless.\n patch.length2 += diff_text.length;\n start2 += diff_text.length;\n patch.diffs.push(bigpatch.diffs.shift());\n empty = false;\n } else if (diff_type === DIFF_DELETE && patch.diffs.length == 1 &&\n patch.diffs[0][0] == DIFF_EQUAL &&\n diff_text.length > 2 * patch_size) {\n // This is a large deletion. Let it pass in one chunk.\n patch.length1 += diff_text.length;\n start1 += diff_text.length;\n empty = false;\n patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n bigpatch.diffs.shift();\n } else {\n // Deletion or equality. Only take as much as we can stomach.\n diff_text = diff_text.substring(0,\n patch_size - patch.length1 - this.Patch_Margin);\n patch.length1 += diff_text.length;\n start1 += diff_text.length;\n if (diff_type === DIFF_EQUAL) {\n patch.length2 += diff_text.length;\n start2 += diff_text.length;\n } else {\n empty = false;\n }\n patch.diffs.push(new diff_match_patch.Diff(diff_type, diff_text));\n if (diff_text == bigpatch.diffs[0][1]) {\n bigpatch.diffs.shift();\n } else {\n bigpatch.diffs[0][1] =\n bigpatch.diffs[0][1].substring(diff_text.length);\n }\n }\n }\n // Compute the head context for the next patch.\n precontext = this.diff_text2(patch.diffs);\n precontext =\n precontext.substring(precontext.length - this.Patch_Margin);\n // Append the end context for this patch.\n var postcontext = this.diff_text1(bigpatch.diffs)\n .substring(0, this.Patch_Margin);\n if (postcontext !== '') {\n patch.length1 += postcontext.length;\n patch.length2 += postcontext.length;\n if (patch.diffs.length !== 0 &&\n patch.diffs[patch.diffs.length - 1][0] === DIFF_EQUAL) {\n patch.diffs[patch.diffs.length - 1][1] += postcontext;\n } else {\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, postcontext));\n }\n }\n if (!empty) {\n patches.splice(++x, 0, patch);\n }\n }\n }\n};\n\n\n/**\n * Take a list of patches and return a textual representation.\n * @param {!Array.} patches Array of Patch objects.\n * @return {string} Text representation of patches.\n */\ndiff_match_patch.prototype.patch_toText = function(patches) {\n var text = [];\n for (var x = 0; x < patches.length; x++) {\n text[x] = patches[x];\n }\n return text.join('');\n};\n\n\n/**\n * Parse a textual representation of patches and return a list of Patch objects.\n * @param {string} textline Text representation of patches.\n * @return {!Array.} Array of Patch objects.\n * @throws {!Error} If invalid input.\n */\ndiff_match_patch.prototype.patch_fromText = function(textline) {\n var patches = [];\n if (!textline) {\n return patches;\n }\n var text = textline.split('\\n');\n var textPointer = 0;\n var patchHeader = /^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;\n while (textPointer < text.length) {\n var m = text[textPointer].match(patchHeader);\n if (!m) {\n throw new Error('Invalid patch string: ' + text[textPointer]);\n }\n var patch = new diff_match_patch.patch_obj();\n patches.push(patch);\n patch.start1 = parseInt(m[1], 10);\n if (m[2] === '') {\n patch.start1--;\n patch.length1 = 1;\n } else if (m[2] == '0') {\n patch.length1 = 0;\n } else {\n patch.start1--;\n patch.length1 = parseInt(m[2], 10);\n }\n\n patch.start2 = parseInt(m[3], 10);\n if (m[4] === '') {\n patch.start2--;\n patch.length2 = 1;\n } else if (m[4] == '0') {\n patch.length2 = 0;\n } else {\n patch.start2--;\n patch.length2 = parseInt(m[4], 10);\n }\n textPointer++;\n\n while (textPointer < text.length) {\n var sign = text[textPointer].charAt(0);\n try {\n var line = decodeURI(text[textPointer].substring(1));\n } catch (ex) {\n // Malformed URI sequence.\n throw new Error('Illegal escape in patch_fromText: ' + line);\n }\n if (sign == '-') {\n // Deletion.\n patch.diffs.push(new diff_match_patch.Diff(DIFF_DELETE, line));\n } else if (sign == '+') {\n // Insertion.\n patch.diffs.push(new diff_match_patch.Diff(DIFF_INSERT, line));\n } else if (sign == ' ') {\n // Minor equality.\n patch.diffs.push(new diff_match_patch.Diff(DIFF_EQUAL, line));\n } else if (sign == '@') {\n // Start of next patch.\n break;\n } else if (sign === '') {\n // Blank line? Whatever.\n } else {\n // WTF?\n throw new Error('Invalid patch mode \"' + sign + '\" in: ' + line);\n }\n textPointer++;\n }\n }\n return patches;\n};\n\n\n/**\n * Class representing one patch operation.\n * @constructor\n */\ndiff_match_patch.patch_obj = function() {\n /** @type {!Array.} */\n this.diffs = [];\n /** @type {?number} */\n this.start1 = null;\n /** @type {?number} */\n this.start2 = null;\n /** @type {number} */\n this.length1 = 0;\n /** @type {number} */\n this.length2 = 0;\n};\n\n\n/**\n * Emulate GNU diff's format.\n * Header: @@ -382,8 +481,9 @@\n * Indices are printed as 1-based, not 0-based.\n * @return {string} The GNU diff string.\n */\ndiff_match_patch.patch_obj.prototype.toString = function() {\n var coords1, coords2;\n if (this.length1 === 0) {\n coords1 = this.start1 + ',0';\n } else if (this.length1 == 1) {\n coords1 = this.start1 + 1;\n } else {\n coords1 = (this.start1 + 1) + ',' + this.length1;\n }\n if (this.length2 === 0) {\n coords2 = this.start2 + ',0';\n } else if (this.length2 == 1) {\n coords2 = this.start2 + 1;\n } else {\n coords2 = (this.start2 + 1) + ',' + this.length2;\n }\n var text = ['@@ -' + coords1 + ' +' + coords2 + ' @@\\n'];\n var op;\n // Escape the body of the patch with %xx notation.\n for (var x = 0; x < this.diffs.length; x++) {\n switch (this.diffs[x][0]) {\n case DIFF_INSERT:\n op = '+';\n break;\n case DIFF_DELETE:\n op = '-';\n break;\n case DIFF_EQUAL:\n op = ' ';\n break;\n }\n text[x + 1] = op + encodeURI(this.diffs[x][1]) + '\\n';\n }\n return text.join('').replace(/%20/g, ' ');\n};\n\n\n// The following export code was added by @ForbesLindesay\nmodule.exports = diff_match_patch;\nmodule.exports['diff_match_patch'] = diff_match_patch;\nmodule.exports['DIFF_DELETE'] = DIFF_DELETE;\nmodule.exports['DIFF_INSERT'] = DIFF_INSERT;\nmodule.exports['DIFF_EQUAL'] = DIFF_EQUAL;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = addClass;\n\nvar _hasClass = _interopRequireDefault(require(\"./hasClass\"));\n\nfunction addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!(0, _hasClass.default)(element, className)) if (typeof element.className === 'string') element.className = element.className + ' ' + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + ' ' + className);\n}\n\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nexports.__esModule = true;\nexports.default = hasClass;\n\nfunction hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);else return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}\n\nmodule.exports = exports[\"default\"];","'use strict';\n\nfunction replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp('(^|\\\\s)' + classToRemove + '(?:\\\\s|$)', 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n\nmodule.exports = function removeClass(element, className) {\n if (element.classList) element.classList.remove(className);else if (typeof element.className === 'string') element.className = replaceClassName(element.className, className);else element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n};","/*!\nCopyright (C) 2013-2015 by Andrea Giammarchi - @WebReflection\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n(function(window){'use strict';\n /* jshint loopfunc: true, noempty: false*/\n // http://www.w3.org/TR/dom/#element\n\n function createDocumentFragment() {\n return document.createDocumentFragment();\n }\n\n function createElement(nodeName) {\n return document.createElement(nodeName);\n }\n\n function enoughArguments(length, name) {\n if (!length) throw new Error(\n 'Failed to construct ' +\n name +\n ': 1 argument required, but only 0 present.'\n );\n }\n\n function mutationMacro(nodes) {\n if (nodes.length === 1) {\n return textNodeIfPrimitive(nodes[0]);\n }\n for (var\n fragment = createDocumentFragment(),\n list = slice.call(nodes),\n i = 0; i < nodes.length; i++\n ) {\n fragment.appendChild(textNodeIfPrimitive(list[i]));\n }\n return fragment;\n }\n\n function textNodeIfPrimitive(node) {\n return typeof node === 'object' ? node : document.createTextNode(node);\n }\n\n for(var\n head,\n property,\n TemporaryPrototype,\n TemporaryTokenList,\n wrapVerifyToken,\n document = window.document,\n hOP = Object.prototype.hasOwnProperty,\n defineProperty = Object.defineProperty || function (object, property, descriptor) {\n if (hOP.call(descriptor, 'value')) {\n object[property] = descriptor.value;\n } else {\n if (hOP.call(descriptor, 'get'))\n object.__defineGetter__(property, descriptor.get);\n if (hOP.call(descriptor, 'set'))\n object.__defineSetter__(property, descriptor.set);\n }\n return object;\n },\n indexOf = [].indexOf || function indexOf(value){\n var length = this.length;\n while(length--) {\n if (this[length] === value) {\n break;\n }\n }\n return length;\n },\n // http://www.w3.org/TR/domcore/#domtokenlist\n verifyToken = function (token) {\n if (!token) {\n throw 'SyntaxError';\n } else if (spaces.test(token)) {\n throw 'InvalidCharacterError';\n }\n return token;\n },\n DOMTokenList = function (node) {\n var\n noClassName = typeof node.className === 'undefined',\n className = noClassName ?\n (node.getAttribute('class') || '') : node.className,\n isSVG = noClassName || typeof className === 'object',\n value = (isSVG ?\n (noClassName ? className : className.baseVal) :\n className\n ).replace(trim, '')\n ;\n if (value.length) {\n properties.push.apply(\n this,\n value.split(spaces)\n );\n }\n this._isSVG = isSVG;\n this._ = node;\n },\n classListDescriptor = {\n get: function get() {\n return new DOMTokenList(this);\n },\n set: function(){}\n },\n trim = /^\\s+|\\s+$/g,\n spaces = /\\s+/,\n SPACE = '\\x20',\n CLASS_LIST = 'classList',\n toggle = function toggle(token, force) {\n if (this.contains(token)) {\n if (!force) {\n // force is not true (either false or omitted)\n this.remove(token);\n }\n } else if(force === undefined || force) {\n force = true;\n this.add(token);\n }\n return !!force;\n },\n DocumentFragmentPrototype = window.DocumentFragment && DocumentFragment.prototype,\n Node = window.Node,\n NodePrototype = (Node || Element).prototype,\n CharacterData = window.CharacterData || Node,\n CharacterDataPrototype = CharacterData && CharacterData.prototype,\n DocumentType = window.DocumentType,\n DocumentTypePrototype = DocumentType && DocumentType.prototype,\n ElementPrototype = (window.Element || Node || window.HTMLElement).prototype,\n HTMLSelectElement = window.HTMLSelectElement || createElement('select').constructor,\n selectRemove = HTMLSelectElement.prototype.remove,\n SVGElement = window.SVGElement,\n properties = [\n 'matches', (\n ElementPrototype.matchesSelector ||\n ElementPrototype.webkitMatchesSelector ||\n ElementPrototype.khtmlMatchesSelector ||\n ElementPrototype.mozMatchesSelector ||\n ElementPrototype.msMatchesSelector ||\n ElementPrototype.oMatchesSelector ||\n function matches(selector) {\n var parentNode = this.parentNode;\n return !!parentNode && -1 < indexOf.call(\n parentNode.querySelectorAll(selector),\n this\n );\n }\n ),\n 'closest', function closest(selector) {\n var parentNode = this, matches;\n while (\n // document has no .matches\n (matches = parentNode && parentNode.matches) &&\n !parentNode.matches(selector)\n ) {\n parentNode = parentNode.parentNode;\n }\n return matches ? parentNode : null;\n },\n 'prepend', function prepend() {\n var firstChild = this.firstChild,\n node = mutationMacro(arguments);\n if (firstChild) {\n this.insertBefore(node, firstChild);\n } else {\n this.appendChild(node);\n }\n },\n 'append', function append() {\n this.appendChild(mutationMacro(arguments));\n },\n 'before', function before() {\n var parentNode = this.parentNode;\n if (parentNode) {\n parentNode.insertBefore(\n mutationMacro(arguments), this\n );\n }\n },\n 'after', function after() {\n var parentNode = this.parentNode,\n nextSibling = this.nextSibling,\n node = mutationMacro(arguments);\n if (parentNode) {\n if (nextSibling) {\n parentNode.insertBefore(node, nextSibling);\n } else {\n parentNode.appendChild(node);\n }\n }\n },\n // https://dom.spec.whatwg.org/#dom-element-toggleattribute\n 'toggleAttribute', function toggleAttribute(name, force) {\n var had = this.hasAttribute(name);\n if (1 < arguments.length) {\n if (had && !force)\n this.removeAttribute(name);\n else if (force && !had)\n this.setAttribute(name, \"\");\n }\n else if (had)\n this.removeAttribute(name);\n else\n this.setAttribute(name, \"\");\n return this.hasAttribute(name);\n },\n // WARNING - DEPRECATED - use .replaceWith() instead\n 'replace', function replace() {\n this.replaceWith.apply(this, arguments);\n },\n 'replaceWith', function replaceWith() {\n var parentNode = this.parentNode;\n if (parentNode) {\n parentNode.replaceChild(\n mutationMacro(arguments),\n this\n );\n }\n },\n 'remove', function remove() {\n var parentNode = this.parentNode;\n if (parentNode) {\n parentNode.removeChild(this);\n }\n }\n ],\n slice = properties.slice,\n i = properties.length; i; i -= 2\n ) {\n property = properties[i - 2];\n if (!(property in ElementPrototype)) {\n ElementPrototype[property] = properties[i - 1];\n }\n // avoid unnecessary re-patch when the script is included\n // gazillion times without any reason whatsoever\n // https://github.com/WebReflection/dom4/pull/48\n if (property === 'remove' && !selectRemove._dom4) {\n // see https://github.com/WebReflection/dom4/issues/19\n (HTMLSelectElement.prototype[property] = function () {\n return 0 < arguments.length ?\n selectRemove.apply(this, arguments) :\n ElementPrototype.remove.call(this);\n })._dom4 = true;\n }\n // see https://github.com/WebReflection/dom4/issues/18\n if (/^(?:before|after|replace|replaceWith|remove)$/.test(property)) {\n if (CharacterData && !(property in CharacterDataPrototype)) {\n CharacterDataPrototype[property] = properties[i - 1];\n }\n if (DocumentType && !(property in DocumentTypePrototype)) {\n DocumentTypePrototype[property] = properties[i - 1];\n }\n }\n // see https://github.com/WebReflection/dom4/pull/26\n if (/^(?:append|prepend)$/.test(property)) {\n if (DocumentFragmentPrototype) {\n if (!(property in DocumentFragmentPrototype)) {\n DocumentFragmentPrototype[property] = properties[i - 1];\n }\n } else {\n try {\n createDocumentFragment().constructor.prototype[property] = properties[i - 1];\n } catch(o_O) {}\n }\n }\n }\n\n // most likely an IE9 only issue\n // see https://github.com/WebReflection/dom4/issues/6\n if (!createElement('a').matches('a')) {\n ElementPrototype[property] = function(matches){\n return function (selector) {\n return matches.call(\n this.parentNode ?\n this :\n createDocumentFragment().appendChild(this),\n selector\n );\n };\n }(ElementPrototype[property]);\n }\n\n // used to fix both old webkit and SVG\n DOMTokenList.prototype = {\n length: 0,\n add: function add() {\n for(var j = 0, token; j < arguments.length; j++) {\n token = arguments[j];\n if(!this.contains(token)) {\n properties.push.call(this, property);\n }\n }\n if (this._isSVG) {\n this._.setAttribute('class', '' + this);\n } else {\n this._.className = '' + this;\n }\n },\n contains: (function(indexOf){\n return function contains(token) {\n i = indexOf.call(this, property = verifyToken(token));\n return -1 < i;\n };\n }([].indexOf || function (token) {\n i = this.length;\n while(i-- && this[i] !== token){}\n return i;\n })),\n item: function item(i) {\n return this[i] || null;\n },\n remove: function remove() {\n for(var j = 0, token; j < arguments.length; j++) {\n token = arguments[j];\n if(this.contains(token)) {\n properties.splice.call(this, i, 1);\n }\n }\n if (this._isSVG) {\n this._.setAttribute('class', '' + this);\n } else {\n this._.className = '' + this;\n }\n },\n toggle: toggle,\n toString: function toString() {\n return properties.join.call(this, SPACE);\n }\n };\n\n if (SVGElement && !(CLASS_LIST in SVGElement.prototype)) {\n defineProperty(SVGElement.prototype, CLASS_LIST, classListDescriptor);\n }\n\n // http://www.w3.org/TR/dom/#domtokenlist\n // iOS 5.1 has completely screwed this property\n // classList in ElementPrototype is false\n // but it's actually there as getter\n if (!(CLASS_LIST in document.documentElement)) {\n defineProperty(ElementPrototype, CLASS_LIST, classListDescriptor);\n } else {\n // iOS 5.1 and Nokia ASHA do not support multiple add or remove\n // trying to detect and fix that in here\n TemporaryTokenList = createElement('div')[CLASS_LIST];\n TemporaryTokenList.add('a', 'b', 'a');\n if ('a\\x20b' != TemporaryTokenList) {\n // no other way to reach original methods in iOS 5.1\n TemporaryPrototype = TemporaryTokenList.constructor.prototype;\n if (!('add' in TemporaryPrototype)) {\n // ASHA double fails in here\n TemporaryPrototype = window.TemporaryTokenList.prototype;\n }\n wrapVerifyToken = function (original) {\n return function () {\n var i = 0;\n while (i < arguments.length) {\n original.call(this, arguments[i++]);\n }\n };\n };\n TemporaryPrototype.add = wrapVerifyToken(TemporaryPrototype.add);\n TemporaryPrototype.remove = wrapVerifyToken(TemporaryPrototype.remove);\n // toggle is broken too ^_^ ... let's fix it\n TemporaryPrototype.toggle = toggle;\n }\n }\n\n if (!('contains' in NodePrototype)) {\n defineProperty(NodePrototype, 'contains', {\n value: function (el) {\n while (el && el !== this) el = el.parentNode;\n return this === el;\n }\n });\n }\n\n if (!('head' in document)) {\n defineProperty(document, 'head', {\n get: function () {\n return head || (\n head = document.getElementsByTagName('head')[0]\n );\n }\n });\n }\n\n // requestAnimationFrame partial polyfill\n (function () {\n for (var\n raf,\n rAF = window.requestAnimationFrame,\n cAF = window.cancelAnimationFrame,\n prefixes = ['o', 'ms', 'moz', 'webkit'],\n i = prefixes.length;\n !cAF && i--;\n ) {\n rAF = rAF || window[prefixes[i] + 'RequestAnimationFrame'];\n cAF = window[prefixes[i] + 'CancelAnimationFrame'] ||\n window[prefixes[i] + 'CancelRequestAnimationFrame'];\n }\n if (!cAF) {\n // some FF apparently implemented rAF but no cAF \n if (rAF) {\n raf = rAF;\n rAF = function (callback) {\n var goOn = true;\n raf(function () {\n if (goOn) callback.apply(this, arguments);\n });\n return function () {\n goOn = false;\n };\n };\n cAF = function (id) {\n id();\n };\n } else {\n rAF = function (callback) {\n return setTimeout(callback, 15, 15);\n };\n cAF = function (id) {\n clearTimeout(id);\n };\n }\n }\n window.requestAnimationFrame = rAF;\n window.cancelAnimationFrame = cAF;\n }());\n\n // http://www.w3.org/TR/dom/#customevent\n try{new window.CustomEvent('?');}catch(o_O){\n window.CustomEvent = function(\n eventName,\n defaultInitDict\n ){\n\n // the infamous substitute\n function CustomEvent(type, eventInitDict) {\n /*jshint eqnull:true */\n var event = document.createEvent(eventName);\n if (typeof type != 'string') {\n throw new Error('An event name must be provided');\n }\n if (eventName == 'Event') {\n event.initCustomEvent = initCustomEvent;\n }\n if (eventInitDict == null) {\n eventInitDict = defaultInitDict;\n }\n event.initCustomEvent(\n type,\n eventInitDict.bubbles,\n eventInitDict.cancelable,\n eventInitDict.detail\n );\n return event;\n }\n\n // attached at runtime\n function initCustomEvent(\n type, bubbles, cancelable, detail\n ) {\n /*jshint validthis:true*/\n this.initEvent(type, bubbles, cancelable);\n this.detail = detail;\n }\n\n // that's it\n return CustomEvent;\n }(\n // is this IE9 or IE10 ?\n // where CustomEvent is there\n // but not usable as construtor ?\n window.CustomEvent ?\n // use the CustomEvent interface in such case\n 'CustomEvent' : 'Event',\n // otherwise the common compatible one\n {\n bubbles: false,\n cancelable: false,\n detail: null\n }\n );\n }\n\n // window.Event as constructor\n try { new Event('_'); } catch (o_O) {\n /* jshint -W022 */\n o_O = (function ($Event) {\n function Event(type, init) {\n enoughArguments(arguments.length, 'Event');\n var out = document.createEvent('Event');\n if (!init) init = {};\n out.initEvent(\n type,\n !!init.bubbles,\n !!init.cancelable\n );\n return out;\n }\n Event.prototype = $Event.prototype;\n return Event;\n }(window.Event || function Event() {}));\n defineProperty(window, 'Event', {value: o_O});\n // Android 4 gotcha\n if (Event !== o_O) Event = o_O;\n }\n\n // window.KeyboardEvent as constructor\n try { new KeyboardEvent('_', {}); } catch (o_O) {\n /* jshint -W022 */\n o_O = (function ($KeyboardEvent) {\n // code inspired by https://gist.github.com/termi/4654819\n var\n initType = 0,\n defaults = {\n char: '',\n key: '',\n location: 0,\n ctrlKey: false,\n shiftKey: false,\n altKey: false,\n metaKey: false,\n altGraphKey: false,\n repeat: false,\n locale: navigator.language,\n detail: 0,\n bubbles: false,\n cancelable: false,\n keyCode: 0,\n charCode: 0,\n which: 0\n },\n eventType\n ;\n try {\n var e = document.createEvent('KeyboardEvent');\n e.initKeyboardEvent(\n 'keyup', false, false, window, '+', 3,\n true, false, true, false, false\n );\n initType = (\n (e.keyIdentifier || e.key) == '+' &&\n (e.keyLocation || e.location) == 3\n ) && (\n e.ctrlKey ? e.altKey ? 1 : 3 : e.shiftKey ? 2 : 4\n ) || 9;\n } catch(o_O) {}\n eventType = 0 < initType ? 'KeyboardEvent' : 'Event';\n\n function getModifier(init) {\n for (var\n out = [],\n keys = [\n 'ctrlKey',\n 'Control',\n 'shiftKey',\n 'Shift',\n 'altKey',\n 'Alt',\n 'metaKey',\n 'Meta',\n 'altGraphKey',\n 'AltGraph'\n ],\n i = 0; i < keys.length; i += 2\n ) {\n if (init[keys[i]])\n out.push(keys[i + 1]);\n }\n return out.join(' ');\n }\n\n function withDefaults(target, source) {\n for (var key in source) {\n if (\n source.hasOwnProperty(key) &&\n !source.hasOwnProperty.call(target, key)\n ) target[key] = source[key];\n }\n return target;\n }\n\n function withInitValues(key, out, init) {\n try {\n out[key] = init[key];\n } catch(o_O) {}\n }\n\n function KeyboardEvent(type, init) {\n enoughArguments(arguments.length, 'KeyboardEvent');\n init = withDefaults(init || {}, defaults);\n var\n out = document.createEvent(eventType),\n ctrlKey = init.ctrlKey,\n shiftKey = init.shiftKey,\n altKey = init.altKey,\n metaKey = init.metaKey,\n altGraphKey = init.altGraphKey,\n modifiers = initType > 3 ? getModifier(init) : null,\n key = String(init.key),\n chr = String(init.char),\n location = init.location,\n keyCode = init.keyCode || (\n (init.keyCode = key) &&\n key.charCodeAt(0)\n ) || 0,\n charCode = init.charCode || (\n (init.charCode = chr) &&\n chr.charCodeAt(0)\n ) || 0,\n bubbles = init.bubbles,\n cancelable = init.cancelable,\n repeat = init.repeat,\n locale = init.locale,\n view = init.view || window,\n args\n ;\n if (!init.which) init.which = init.keyCode;\n if ('initKeyEvent' in out) {\n out.initKeyEvent(\n type, bubbles, cancelable, view,\n ctrlKey, altKey, shiftKey, metaKey, keyCode, charCode\n );\n } else if (0 < initType && 'initKeyboardEvent' in out) {\n args = [type, bubbles, cancelable, view];\n switch (initType) {\n case 1:\n args.push(key, location, ctrlKey, shiftKey, altKey, metaKey, altGraphKey);\n break;\n case 2:\n args.push(ctrlKey, altKey, shiftKey, metaKey, keyCode, charCode);\n break;\n case 3:\n args.push(key, location, ctrlKey, altKey, shiftKey, metaKey, altGraphKey);\n break;\n case 4:\n args.push(key, location, modifiers, repeat, locale);\n break;\n default:\n args.push(char, key, location, modifiers, repeat, locale);\n }\n out.initKeyboardEvent.apply(out, args);\n } else {\n out.initEvent(type, bubbles, cancelable);\n }\n for (key in out) {\n if (defaults.hasOwnProperty(key) && out[key] !== init[key]) {\n withInitValues(key, out, init);\n }\n }\n return out;\n }\n KeyboardEvent.prototype = $KeyboardEvent.prototype;\n return KeyboardEvent;\n }(window.KeyboardEvent || function KeyboardEvent() {}));\n defineProperty(window, 'KeyboardEvent', {value: o_O});\n // Android 4 gotcha\n if (KeyboardEvent !== o_O) KeyboardEvent = o_O;\n }\n\n // window.MouseEvent as constructor\n try { new MouseEvent('_', {}); } catch (o_O) {\n /* jshint -W022 */\n o_O = (function ($MouseEvent) {\n function MouseEvent(type, init) {\n enoughArguments(arguments.length, 'MouseEvent');\n var out = document.createEvent('MouseEvent');\n if (!init) init = {};\n out.initMouseEvent(\n type,\n !!init.bubbles,\n !!init.cancelable,\n init.view || window,\n init.detail || 1,\n init.screenX || 0,\n init.screenY || 0,\n init.clientX || 0,\n init.clientY || 0,\n !!init.ctrlKey,\n !!init.altKey,\n !!init.shiftKey,\n !!init.metaKey,\n init.button || 0,\n init.relatedTarget || null\n );\n return out;\n }\n MouseEvent.prototype = $MouseEvent.prototype;\n return MouseEvent;\n }(window.MouseEvent || function MouseEvent() {}));\n defineProperty(window, 'MouseEvent', {value: o_O});\n // Android 4 gotcha\n if (MouseEvent !== o_O) MouseEvent = o_O;\n }\n\n if (!document.querySelectorAll('*').forEach) {\n (function () {\n function patch(what) {\n var querySelectorAll = what.querySelectorAll;\n what.querySelectorAll = function qSA(css) {\n var result = querySelectorAll.call(this, css);\n result.forEach = Array.prototype.forEach;\n return result;\n };\n }\n patch(document);\n patch(Element.prototype);\n }());\n }\n\n try {\n // https://drafts.csswg.org/selectors-4/#the-scope-pseudo\n document.querySelector(':scope *');\n } catch(o_O) {\n (function () {\n var dataScope = 'data-scope-' + (Math.random() * 1e9 >>> 0);\n var proto = Element.prototype;\n var querySelector = proto.querySelector;\n var querySelectorAll = proto.querySelectorAll;\n proto.querySelector = function qS(css) {\n return find(this, querySelector, css);\n };\n proto.querySelectorAll = function qSA(css) {\n return find(this, querySelectorAll, css);\n };\n function find(node, method, css) {\n if (node.type != document.ELEMENT_NODE) return method.call(node, css);\n node.setAttribute(dataScope, null);\n var result = method.call(\n node,\n String(css).replace(\n /(^|,\\s*)(:scope([ >]|$))/g,\n function ($0, $1, $2, $3) {\n return $1 + '[' + dataScope + ']' + ($3 || ' ');\n }\n )\n );\n node.removeAttribute(dataScope);\n return result;\n }\n }());\n }\n}(window));\n(function (global){'use strict';\n\n // a WeakMap fallback for DOM nodes only used as key\n var DOMMap = global.WeakMap || (function () {\n\n var\n counter = 0,\n dispatched = false,\n drop = false,\n value\n ;\n\n function dispatch(key, ce, shouldDrop) {\n drop = shouldDrop;\n dispatched = false;\n value = undefined;\n key.dispatchEvent(ce);\n }\n\n function Handler(value) {\n this.value = value;\n }\n\n Handler.prototype.handleEvent = function handleEvent(e) {\n dispatched = true;\n if (drop) {\n e.currentTarget.removeEventListener(e.type, this, false);\n } else {\n value = this.value;\n }\n };\n\n function DOMMap() {\n counter++; // make id clashing highly improbable\n this.__ce__ = new Event(('@DOMMap:' + counter) + Math.random());\n }\n\n DOMMap.prototype = {\n 'constructor': DOMMap,\n 'delete': function del(key) {\n return dispatch(key, this.__ce__, true), dispatched;\n },\n 'get': function get(key) {\n dispatch(key, this.__ce__, false);\n var v = value;\n value = undefined;\n return v;\n },\n 'has': function has(key) {\n return dispatch(key, this.__ce__, false), dispatched;\n },\n 'set': function set(key, value) {\n dispatch(key, this.__ce__, true);\n key.addEventListener(this.__ce__.type, new Handler(value), false);\n return this;\n },\n };\n\n return DOMMap;\n\n }());\n\n function Dict() {}\n Dict.prototype = (Object.create || Object)(null);\n\n // https://dom.spec.whatwg.org/#interface-eventtarget\n\n function createEventListener(type, callback, options) {\n function eventListener(e) {\n if (eventListener.once) {\n e.currentTarget.removeEventListener(\n e.type,\n callback,\n eventListener\n );\n eventListener.removed = true;\n }\n if (eventListener.passive) {\n e.preventDefault = createEventListener.preventDefault;\n }\n if (typeof eventListener.callback === 'function') {\n /* jshint validthis: true */\n eventListener.callback.call(this, e);\n } else if (eventListener.callback) {\n eventListener.callback.handleEvent(e);\n }\n if (eventListener.passive) {\n delete e.preventDefault;\n }\n }\n eventListener.type = type;\n eventListener.callback = callback;\n eventListener.capture = !!options.capture;\n eventListener.passive = !!options.passive;\n eventListener.once = !!options.once;\n // currently pointless but specs say to use it, so ...\n eventListener.removed = false;\n return eventListener;\n }\n\n createEventListener.preventDefault = function preventDefault() {};\n\n var\n Event = global.CustomEvent,\n dE = global.dispatchEvent,\n aEL = global.addEventListener,\n rEL = global.removeEventListener,\n counter = 0,\n increment = function () { counter++; },\n indexOf = [].indexOf || function indexOf(value){\n var length = this.length;\n while(length--) {\n if (this[length] === value) {\n break;\n }\n }\n return length;\n },\n getListenerKey = function (options) {\n return ''.concat(\n options.capture ? '1' : '0',\n options.passive ? '1' : '0',\n options.once ? '1' : '0'\n );\n },\n augment\n ;\n\n try {\n aEL('_', increment, {once: true});\n dE(new Event('_'));\n dE(new Event('_'));\n rEL('_', increment, {once: true});\n } catch(o_O) {}\n\n if (counter !== 1) {\n (function () {\n var dm = new DOMMap();\n function createAEL(aEL) {\n return function addEventListener(type, handler, options) {\n if (options && typeof options !== 'boolean') {\n var\n info = dm.get(this),\n key = getListenerKey(options),\n i, tmp, wrap\n ;\n if (!info) dm.set(this, (info = new Dict()));\n if (!(type in info)) info[type] = {\n handler: [],\n wrap: []\n };\n tmp = info[type];\n i = indexOf.call(tmp.handler, handler);\n if (i < 0) {\n i = tmp.handler.push(handler) - 1;\n tmp.wrap[i] = (wrap = new Dict());\n } else {\n wrap = tmp.wrap[i];\n }\n if (!(key in wrap)) {\n wrap[key] = createEventListener(type, handler, options);\n aEL.call(this, type, wrap[key], wrap[key].capture);\n }\n } else {\n aEL.call(this, type, handler, options);\n }\n };\n }\n function createREL(rEL) {\n return function removeEventListener(type, handler, options) {\n if (options && typeof options !== 'boolean') {\n var\n info = dm.get(this),\n key, i, tmp, wrap\n ;\n if (info && (type in info)) {\n tmp = info[type];\n i = indexOf.call(tmp.handler, handler);\n if (-1 < i) {\n key = getListenerKey(options);\n wrap = tmp.wrap[i];\n if (key in wrap) {\n rEL.call(this, type, wrap[key], wrap[key].capture);\n delete wrap[key];\n // return if there are other wraps\n for (key in wrap) return;\n // otherwise remove all the things\n tmp.handler.splice(i, 1);\n tmp.wrap.splice(i, 1);\n // if there are no other handlers\n if (tmp.handler.length === 0)\n // drop the info[type] entirely\n delete info[type];\n }\n }\n }\n } else {\n rEL.call(this, type, handler, options);\n }\n };\n }\n\n augment = function (Constructor) {\n if (!Constructor) return;\n var proto = Constructor.prototype;\n proto.addEventListener = createAEL(proto.addEventListener);\n proto.removeEventListener = createREL(proto.removeEventListener);\n };\n\n if (global.EventTarget) {\n augment(EventTarget);\n } else {\n augment(global.Text);\n augment(global.Element || global.HTMLElement);\n augment(global.HTMLDocument);\n augment(global.Window || {prototype:global});\n augment(global.XMLHttpRequest);\n }\n\n }());\n }\n\n}(self));\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","module.exports = stringify\nstringify.default = stringify\nstringify.stable = deterministicStringify\nstringify.stableStringify = deterministicStringify\n\nvar LIMIT_REPLACE_NODE = '[...]'\nvar CIRCULAR_REPLACE_NODE = '[Circular]'\n\nvar arr = []\nvar replacerStack = []\n\nfunction defaultOptions () {\n return {\n depthLimit: Number.MAX_SAFE_INTEGER,\n edgesLimit: Number.MAX_SAFE_INTEGER\n }\n}\n\n// Regular stringify\nfunction stringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n decirc(obj, '', 0, [], undefined, 0, options)\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(obj, replacer, spacer)\n } else {\n res = JSON.stringify(obj, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction setReplace (replace, val, k, parent) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n if (propertyDescriptor.get !== undefined) {\n if (propertyDescriptor.configurable) {\n Object.defineProperty(parent, k, { value: replace })\n arr.push([parent, k, val, propertyDescriptor])\n } else {\n replacerStack.push([val, k, replace])\n }\n } else {\n parent[k] = replace\n arr.push([parent, k, val])\n }\n}\n\nfunction decirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n decirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n var keys = Object.keys(val)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n decirc(val[key], key, i, stack, val, depth, options)\n }\n }\n stack.pop()\n }\n}\n\n// Stable-stringify\nfunction compareFunction (a, b) {\n if (a < b) {\n return -1\n }\n if (a > b) {\n return 1\n }\n return 0\n}\n\nfunction deterministicStringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(tmp, replacer, spacer)\n } else {\n res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n // Ensure that we restore the object as it was.\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n try {\n if (typeof val.toJSON === 'function') {\n return\n }\n } catch (_) {\n return\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n deterministicDecirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n // Create a temporary object in the required way\n var tmp = {}\n var keys = Object.keys(val).sort(compareFunction)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n deterministicDecirc(val[key], key, i, stack, val, depth, options)\n tmp[key] = val[key]\n }\n if (typeof parent !== 'undefined') {\n arr.push([parent, k, val])\n parent[k] = tmp\n } else {\n return tmp\n }\n }\n stack.pop()\n }\n}\n\n// wraps replacer function to handle values we couldn't replace\n// and mark them as replaced value\nfunction replaceGetterValues (replacer) {\n replacer =\n typeof replacer !== 'undefined'\n ? replacer\n : function (k, v) {\n return v\n }\n return function (key, val) {\n if (replacerStack.length > 0) {\n for (var i = 0; i < replacerStack.length; i++) {\n var part = replacerStack[i]\n if (part[1] === key && part[0] === val) {\n val = part[2]\n replacerStack.splice(i, 1)\n break\n }\n }\n }\n return replacer.call(this, key, val)\n }\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n'use strict';\n\nvar validateFormat = process.env.NODE_ENV !== \"production\" ? function (format) {\n if (format === undefined) {\n throw new Error('invariant(...): Second argument must be a string.');\n }\n} : function (format) {};\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments to provide\n * information about what broke and what you were expecting.\n *\n * The invariant message will be stripped in production, but the invariant will\n * remain to ensure logic does not differ in production.\n */\n\nfunction invariant(condition, format) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n validateFormat(format);\n\n if (!condition) {\n var error;\n\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return String(args[argIndex++]);\n }));\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // Skip invariant's own stack frame.\n\n throw error;\n }\n}\n\nmodule.exports = invariant;","/**\r\n * Copyright (c) 2014-present, Facebook, Inc.\r\n * All rights reserved.\r\n *\r\n * This source code is licensed under the BSD-style license found in the\r\n * LICENSE file in the root directory of this source tree. An additional grant\r\n * of patent rights can be found in the PATENTS file in the same directory.\r\n */\r\n\r\nmodule.exports.Dispatcher = require('./lib/Dispatcher');\r\n","/**\r\n * Copyright (c) 2014-present, Facebook, Inc.\r\n * All rights reserved.\r\n *\r\n * This source code is licensed under the BSD-style license found in the\r\n * LICENSE file in the root directory of this source tree. An additional grant\r\n * of patent rights can be found in the PATENTS file in the same directory.\r\n *\r\n * @providesModule Dispatcher\r\n * \r\n * @preventMunge\r\n */\n'use strict';\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar invariant = require(\"fbjs/lib/invariant\");\n\nvar _prefix = 'ID_';\n/**\r\n * Dispatcher is used to broadcast payloads to registered callbacks. This is\r\n * different from generic pub-sub systems in two ways:\r\n *\r\n * 1) Callbacks are not subscribed to particular events. Every payload is\r\n * dispatched to every registered callback.\r\n * 2) Callbacks can be deferred in whole or part until other callbacks have\r\n * been executed.\r\n *\r\n * For example, consider this hypothetical flight destination form, which\r\n * selects a default city when a country is selected:\r\n *\r\n * var flightDispatcher = new Dispatcher();\r\n *\r\n * // Keeps track of which country is selected\r\n * var CountryStore = {country: null};\r\n *\r\n * // Keeps track of which city is selected\r\n * var CityStore = {city: null};\r\n *\r\n * // Keeps track of the base flight price of the selected city\r\n * var FlightPriceStore = {price: null}\r\n *\r\n * When a user changes the selected city, we dispatch the payload:\r\n *\r\n * flightDispatcher.dispatch({\r\n * actionType: 'city-update',\r\n * selectedCity: 'paris'\r\n * });\r\n *\r\n * This payload is digested by `CityStore`:\r\n *\r\n * flightDispatcher.register(function(payload) {\r\n * if (payload.actionType === 'city-update') {\r\n * CityStore.city = payload.selectedCity;\r\n * }\r\n * });\r\n *\r\n * When the user selects a country, we dispatch the payload:\r\n *\r\n * flightDispatcher.dispatch({\r\n * actionType: 'country-update',\r\n * selectedCountry: 'australia'\r\n * });\r\n *\r\n * This payload is digested by both stores:\r\n *\r\n * CountryStore.dispatchToken = flightDispatcher.register(function(payload) {\r\n * if (payload.actionType === 'country-update') {\r\n * CountryStore.country = payload.selectedCountry;\r\n * }\r\n * });\r\n *\r\n * When the callback to update `CountryStore` is registered, we save a reference\r\n * to the returned token. Using this token with `waitFor()`, we can guarantee\r\n * that `CountryStore` is updated before the callback that updates `CityStore`\r\n * needs to query its data.\r\n *\r\n * CityStore.dispatchToken = flightDispatcher.register(function(payload) {\r\n * if (payload.actionType === 'country-update') {\r\n * // `CountryStore.country` may not be updated.\r\n * flightDispatcher.waitFor([CountryStore.dispatchToken]);\r\n * // `CountryStore.country` is now guaranteed to be updated.\r\n *\r\n * // Select the default city for the new country\r\n * CityStore.city = getDefaultCityForCountry(CountryStore.country);\r\n * }\r\n * });\r\n *\r\n * The usage of `waitFor()` can be chained, for example:\r\n *\r\n * FlightPriceStore.dispatchToken =\r\n * flightDispatcher.register(function(payload) {\r\n * switch (payload.actionType) {\r\n * case 'country-update':\r\n * case 'city-update':\r\n * flightDispatcher.waitFor([CityStore.dispatchToken]);\r\n * FlightPriceStore.price =\r\n * getFlightPriceStore(CountryStore.country, CityStore.city);\r\n * break;\r\n * }\r\n * });\r\n *\r\n * The `country-update` payload will be guaranteed to invoke the stores'\r\n * registered callbacks in order: `CountryStore`, `CityStore`, then\r\n * `FlightPriceStore`.\r\n */\n\nvar Dispatcher = /*#__PURE__*/function () {\n function Dispatcher() {\n _defineProperty(this, \"_callbacks\", void 0);\n\n _defineProperty(this, \"_isDispatching\", void 0);\n\n _defineProperty(this, \"_isHandled\", void 0);\n\n _defineProperty(this, \"_isPending\", void 0);\n\n _defineProperty(this, \"_lastID\", void 0);\n\n _defineProperty(this, \"_pendingPayload\", void 0);\n\n this._callbacks = {};\n this._isDispatching = false;\n this._isHandled = {};\n this._isPending = {};\n this._lastID = 1;\n }\n /**\r\n * Registers a callback to be invoked with every dispatched payload. Returns\r\n * a token that can be used with `waitFor()`.\r\n */\n\n\n var _proto = Dispatcher.prototype;\n\n _proto.register = function register(callback) {\n var id = _prefix + this._lastID++;\n this._callbacks[id] = callback;\n return id;\n }\n /**\r\n * Removes a callback based on its token.\r\n */\n ;\n\n _proto.unregister = function unregister(id) {\n !this._callbacks[id] ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Dispatcher.unregister(...): `%s` does not map to a registered callback.', id) : invariant(false) : void 0;\n delete this._callbacks[id];\n }\n /**\r\n * Waits for the callbacks specified to be invoked before continuing execution\r\n * of the current callback. This method should only be used by a callback in\r\n * response to a dispatched payload.\r\n */\n ;\n\n _proto.waitFor = function waitFor(ids) {\n !this._isDispatching ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Dispatcher.waitFor(...): Must be invoked while dispatching.') : invariant(false) : void 0;\n\n for (var ii = 0; ii < ids.length; ii++) {\n var id = ids[ii];\n\n if (this._isPending[id]) {\n !this._isHandled[id] ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Dispatcher.waitFor(...): Circular dependency detected while ' + 'waiting for `%s`.', id) : invariant(false) : void 0;\n continue;\n }\n\n !this._callbacks[id] ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Dispatcher.waitFor(...): `%s` does not map to a registered callback.', id) : invariant(false) : void 0;\n\n this._invokeCallback(id);\n }\n }\n /**\r\n * Dispatches a payload to all registered callbacks.\r\n */\n ;\n\n _proto.dispatch = function dispatch(payload) {\n !!this._isDispatching ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Dispatch.dispatch(...): Cannot dispatch in the middle of a dispatch.') : invariant(false) : void 0;\n\n this._startDispatching(payload);\n\n try {\n for (var id in this._callbacks) {\n if (this._isPending[id]) {\n continue;\n }\n\n this._invokeCallback(id);\n }\n } finally {\n this._stopDispatching();\n }\n }\n /**\r\n * Is this Dispatcher currently dispatching.\r\n */\n ;\n\n _proto.isDispatching = function isDispatching() {\n return this._isDispatching;\n }\n /**\r\n * Call the callback stored with the given id. Also do some internal\r\n * bookkeeping.\r\n *\r\n * @internal\r\n */\n ;\n\n _proto._invokeCallback = function _invokeCallback(id) {\n this._isPending[id] = true;\n\n this._callbacks[id](this._pendingPayload);\n\n this._isHandled[id] = true;\n }\n /**\r\n * Set up bookkeeping needed when dispatching.\r\n *\r\n * @internal\r\n */\n ;\n\n _proto._startDispatching = function _startDispatching(payload) {\n for (var id in this._callbacks) {\n this._isPending[id] = false;\n this._isHandled[id] = false;\n }\n\n this._pendingPayload = payload;\n this._isDispatching = true;\n }\n /**\r\n * Clear bookkeeping used for dispatching.\r\n *\r\n * @internal\r\n */\n ;\n\n _proto._stopDispatching = function _stopDispatching() {\n delete this._pendingPayload;\n this._isDispatching = false;\n };\n\n return Dispatcher;\n}();\n\nmodule.exports = Dispatcher;","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","// @flow\n'use strict';\n\nvar key = '__global_unique_id__';\n\nmodule.exports = function() {\n return global[key] = (global[key] || 0) + 1;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n","'use strict';\n\nvar callBound = require('call-bind/callBound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar has;\nvar $exec;\nvar isRegexMarker;\nvar badStringifier;\n\nif (hasToStringTag) {\n\thas = callBound('Object.prototype.hasOwnProperty');\n\t$exec = callBound('RegExp.prototype.exec');\n\tisRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\tbadStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n}\n\nvar $toString = callBound('Object.prototype.toString');\nvar gOPD = Object.getOwnPropertyDescriptor;\nvar regexClass = '[object RegExp]';\n\nmodule.exports = hasToStringTag\n\t// eslint-disable-next-line consistent-return\n\t? function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar descriptor = gOPD(value, 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t$exec(value, badStringifier);\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t}\n\t: function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n splice = arrayProto.splice;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n","// THIS FILE IS GENERATED - DO NOT EDIT!\n/*!mobile-detect v1.4.5 2021-03-13*/\n/*global module:false, define:false*/\n/*jshint latedef:false*/\n/*!@license Copyright 2013, Heinrich Goebl, License: MIT, see https://github.com/hgoebl/mobile-detect.js*/\n(function (define, undefined) {\ndefine(function () {\n 'use strict';\n\n var impl = {};\n\n impl.mobileDetectRules = {\n \"phones\": {\n \"iPhone\": \"\\\\biPhone\\\\b|\\\\biPod\\\\b\",\n \"BlackBerry\": \"BlackBerry|\\\\bBB10\\\\b|rim[0-9]+|\\\\b(BBA100|BBB100|BBD100|BBE100|BBF100|STH100)\\\\b-[0-9]+\",\n \"Pixel\": \"; \\\\bPixel\\\\b\",\n \"HTC\": \"HTC|HTC.*(Sensation|Evo|Vision|Explorer|6800|8100|8900|A7272|S510e|C110e|Legend|Desire|T8282)|APX515CKT|Qtek9090|APA9292KT|HD_mini|Sensation.*Z710e|PG86100|Z715e|Desire.*(A8181|HD)|ADR6200|ADR6400L|ADR6425|001HT|Inspire 4G|Android.*\\\\bEVO\\\\b|T-Mobile G1|Z520m|Android [0-9.]+; Pixel\",\n \"Nexus\": \"Nexus One|Nexus S|Galaxy.*Nexus|Android.*Nexus.*Mobile|Nexus 4|Nexus 5|Nexus 5X|Nexus 6\",\n \"Dell\": \"Dell[;]? (Streak|Aero|Venue|Venue Pro|Flash|Smoke|Mini 3iX)|XCD28|XCD35|\\\\b001DL\\\\b|\\\\b101DL\\\\b|\\\\bGS01\\\\b\",\n \"Motorola\": \"Motorola|DROIDX|DROID BIONIC|\\\\bDroid\\\\b.*Build|Android.*Xoom|HRI39|MOT-|A1260|A1680|A555|A853|A855|A953|A955|A956|Motorola.*ELECTRIFY|Motorola.*i1|i867|i940|MB200|MB300|MB501|MB502|MB508|MB511|MB520|MB525|MB526|MB611|MB612|MB632|MB810|MB855|MB860|MB861|MB865|MB870|ME501|ME502|ME511|ME525|ME600|ME632|ME722|ME811|ME860|ME863|ME865|MT620|MT710|MT716|MT720|MT810|MT870|MT917|Motorola.*TITANIUM|WX435|WX445|XT300|XT301|XT311|XT316|XT317|XT319|XT320|XT390|XT502|XT530|XT531|XT532|XT535|XT603|XT610|XT611|XT615|XT681|XT701|XT702|XT711|XT720|XT800|XT806|XT860|XT862|XT875|XT882|XT883|XT894|XT901|XT907|XT909|XT910|XT912|XT928|XT926|XT915|XT919|XT925|XT1021|\\\\bMoto E\\\\b|XT1068|XT1092|XT1052\",\n \"Samsung\": \"\\\\bSamsung\\\\b|SM-G950F|SM-G955F|SM-G9250|GT-19300|SGH-I337|BGT-S5230|GT-B2100|GT-B2700|GT-B2710|GT-B3210|GT-B3310|GT-B3410|GT-B3730|GT-B3740|GT-B5510|GT-B5512|GT-B5722|GT-B6520|GT-B7300|GT-B7320|GT-B7330|GT-B7350|GT-B7510|GT-B7722|GT-B7800|GT-C3010|GT-C3011|GT-C3060|GT-C3200|GT-C3212|GT-C3212I|GT-C3262|GT-C3222|GT-C3300|GT-C3300K|GT-C3303|GT-C3303K|GT-C3310|GT-C3322|GT-C3330|GT-C3350|GT-C3500|GT-C3510|GT-C3530|GT-C3630|GT-C3780|GT-C5010|GT-C5212|GT-C6620|GT-C6625|GT-C6712|GT-E1050|GT-E1070|GT-E1075|GT-E1080|GT-E1081|GT-E1085|GT-E1087|GT-E1100|GT-E1107|GT-E1110|GT-E1120|GT-E1125|GT-E1130|GT-E1160|GT-E1170|GT-E1175|GT-E1180|GT-E1182|GT-E1200|GT-E1210|GT-E1225|GT-E1230|GT-E1390|GT-E2100|GT-E2120|GT-E2121|GT-E2152|GT-E2220|GT-E2222|GT-E2230|GT-E2232|GT-E2250|GT-E2370|GT-E2550|GT-E2652|GT-E3210|GT-E3213|GT-I5500|GT-I5503|GT-I5700|GT-I5800|GT-I5801|GT-I6410|GT-I6420|GT-I7110|GT-I7410|GT-I7500|GT-I8000|GT-I8150|GT-I8160|GT-I8190|GT-I8320|GT-I8330|GT-I8350|GT-I8530|GT-I8700|GT-I8703|GT-I8910|GT-I9000|GT-I9001|GT-I9003|GT-I9010|GT-I9020|GT-I9023|GT-I9070|GT-I9082|GT-I9100|GT-I9103|GT-I9220|GT-I9250|GT-I9300|GT-I9305|GT-I9500|GT-I9505|GT-M3510|GT-M5650|GT-M7500|GT-M7600|GT-M7603|GT-M8800|GT-M8910|GT-N7000|GT-S3110|GT-S3310|GT-S3350|GT-S3353|GT-S3370|GT-S3650|GT-S3653|GT-S3770|GT-S3850|GT-S5210|GT-S5220|GT-S5229|GT-S5230|GT-S5233|GT-S5250|GT-S5253|GT-S5260|GT-S5263|GT-S5270|GT-S5300|GT-S5330|GT-S5350|GT-S5360|GT-S5363|GT-S5369|GT-S5380|GT-S5380D|GT-S5560|GT-S5570|GT-S5600|GT-S5603|GT-S5610|GT-S5620|GT-S5660|GT-S5670|GT-S5690|GT-S5750|GT-S5780|GT-S5830|GT-S5839|GT-S6102|GT-S6500|GT-S7070|GT-S7200|GT-S7220|GT-S7230|GT-S7233|GT-S7250|GT-S7500|GT-S7530|GT-S7550|GT-S7562|GT-S7710|GT-S8000|GT-S8003|GT-S8500|GT-S8530|GT-S8600|SCH-A310|SCH-A530|SCH-A570|SCH-A610|SCH-A630|SCH-A650|SCH-A790|SCH-A795|SCH-A850|SCH-A870|SCH-A890|SCH-A930|SCH-A950|SCH-A970|SCH-A990|SCH-I100|SCH-I110|SCH-I400|SCH-I405|SCH-I500|SCH-I510|SCH-I515|SCH-I600|SCH-I730|SCH-I760|SCH-I770|SCH-I830|SCH-I910|SCH-I920|SCH-I959|SCH-LC11|SCH-N150|SCH-N300|SCH-R100|SCH-R300|SCH-R351|SCH-R400|SCH-R410|SCH-T300|SCH-U310|SCH-U320|SCH-U350|SCH-U360|SCH-U365|SCH-U370|SCH-U380|SCH-U410|SCH-U430|SCH-U450|SCH-U460|SCH-U470|SCH-U490|SCH-U540|SCH-U550|SCH-U620|SCH-U640|SCH-U650|SCH-U660|SCH-U700|SCH-U740|SCH-U750|SCH-U810|SCH-U820|SCH-U900|SCH-U940|SCH-U960|SCS-26UC|SGH-A107|SGH-A117|SGH-A127|SGH-A137|SGH-A157|SGH-A167|SGH-A177|SGH-A187|SGH-A197|SGH-A227|SGH-A237|SGH-A257|SGH-A437|SGH-A517|SGH-A597|SGH-A637|SGH-A657|SGH-A667|SGH-A687|SGH-A697|SGH-A707|SGH-A717|SGH-A727|SGH-A737|SGH-A747|SGH-A767|SGH-A777|SGH-A797|SGH-A817|SGH-A827|SGH-A837|SGH-A847|SGH-A867|SGH-A877|SGH-A887|SGH-A897|SGH-A927|SGH-B100|SGH-B130|SGH-B200|SGH-B220|SGH-C100|SGH-C110|SGH-C120|SGH-C130|SGH-C140|SGH-C160|SGH-C170|SGH-C180|SGH-C200|SGH-C207|SGH-C210|SGH-C225|SGH-C230|SGH-C417|SGH-C450|SGH-D307|SGH-D347|SGH-D357|SGH-D407|SGH-D415|SGH-D780|SGH-D807|SGH-D980|SGH-E105|SGH-E200|SGH-E315|SGH-E316|SGH-E317|SGH-E335|SGH-E590|SGH-E635|SGH-E715|SGH-E890|SGH-F300|SGH-F480|SGH-I200|SGH-I300|SGH-I320|SGH-I550|SGH-I577|SGH-I600|SGH-I607|SGH-I617|SGH-I627|SGH-I637|SGH-I677|SGH-I700|SGH-I717|SGH-I727|SGH-i747M|SGH-I777|SGH-I780|SGH-I827|SGH-I847|SGH-I857|SGH-I896|SGH-I897|SGH-I900|SGH-I907|SGH-I917|SGH-I927|SGH-I937|SGH-I997|SGH-J150|SGH-J200|SGH-L170|SGH-L700|SGH-M110|SGH-M150|SGH-M200|SGH-N105|SGH-N500|SGH-N600|SGH-N620|SGH-N625|SGH-N700|SGH-N710|SGH-P107|SGH-P207|SGH-P300|SGH-P310|SGH-P520|SGH-P735|SGH-P777|SGH-Q105|SGH-R210|SGH-R220|SGH-R225|SGH-S105|SGH-S307|SGH-T109|SGH-T119|SGH-T139|SGH-T209|SGH-T219|SGH-T229|SGH-T239|SGH-T249|SGH-T259|SGH-T309|SGH-T319|SGH-T329|SGH-T339|SGH-T349|SGH-T359|SGH-T369|SGH-T379|SGH-T409|SGH-T429|SGH-T439|SGH-T459|SGH-T469|SGH-T479|SGH-T499|SGH-T509|SGH-T519|SGH-T539|SGH-T559|SGH-T589|SGH-T609|SGH-T619|SGH-T629|SGH-T639|SGH-T659|SGH-T669|SGH-T679|SGH-T709|SGH-T719|SGH-T729|SGH-T739|SGH-T746|SGH-T749|SGH-T759|SGH-T769|SGH-T809|SGH-T819|SGH-T839|SGH-T919|SGH-T929|SGH-T939|SGH-T959|SGH-T989|SGH-U100|SGH-U200|SGH-U800|SGH-V205|SGH-V206|SGH-X100|SGH-X105|SGH-X120|SGH-X140|SGH-X426|SGH-X427|SGH-X475|SGH-X495|SGH-X497|SGH-X507|SGH-X600|SGH-X610|SGH-X620|SGH-X630|SGH-X700|SGH-X820|SGH-X890|SGH-Z130|SGH-Z150|SGH-Z170|SGH-ZX10|SGH-ZX20|SHW-M110|SPH-A120|SPH-A400|SPH-A420|SPH-A460|SPH-A500|SPH-A560|SPH-A600|SPH-A620|SPH-A660|SPH-A700|SPH-A740|SPH-A760|SPH-A790|SPH-A800|SPH-A820|SPH-A840|SPH-A880|SPH-A900|SPH-A940|SPH-A960|SPH-D600|SPH-D700|SPH-D710|SPH-D720|SPH-I300|SPH-I325|SPH-I330|SPH-I350|SPH-I500|SPH-I600|SPH-I700|SPH-L700|SPH-M100|SPH-M220|SPH-M240|SPH-M300|SPH-M305|SPH-M320|SPH-M330|SPH-M350|SPH-M360|SPH-M370|SPH-M380|SPH-M510|SPH-M540|SPH-M550|SPH-M560|SPH-M570|SPH-M580|SPH-M610|SPH-M620|SPH-M630|SPH-M800|SPH-M810|SPH-M850|SPH-M900|SPH-M910|SPH-M920|SPH-M930|SPH-N100|SPH-N200|SPH-N240|SPH-N300|SPH-N400|SPH-Z400|SWC-E100|SCH-i909|GT-N7100|GT-N7105|SCH-I535|SM-N900A|SGH-I317|SGH-T999L|GT-S5360B|GT-I8262|GT-S6802|GT-S6312|GT-S6310|GT-S5312|GT-S5310|GT-I9105|GT-I8510|GT-S6790N|SM-G7105|SM-N9005|GT-S5301|GT-I9295|GT-I9195|SM-C101|GT-S7392|GT-S7560|GT-B7610|GT-I5510|GT-S7582|GT-S7530E|GT-I8750|SM-G9006V|SM-G9008V|SM-G9009D|SM-G900A|SM-G900D|SM-G900F|SM-G900H|SM-G900I|SM-G900J|SM-G900K|SM-G900L|SM-G900M|SM-G900P|SM-G900R4|SM-G900S|SM-G900T|SM-G900V|SM-G900W8|SHV-E160K|SCH-P709|SCH-P729|SM-T2558|GT-I9205|SM-G9350|SM-J120F|SM-G920F|SM-G920V|SM-G930F|SM-N910C|SM-A310F|GT-I9190|SM-J500FN|SM-G903F|SM-J330F|SM-G610F|SM-G981B|SM-G892A|SM-A530F\",\n \"LG\": \"\\\\bLG\\\\b;|LG[- ]?(C800|C900|E400|E610|E900|E-900|F160|F180K|F180L|F180S|730|855|L160|LS740|LS840|LS970|LU6200|MS690|MS695|MS770|MS840|MS870|MS910|P500|P700|P705|VM696|AS680|AS695|AX840|C729|E970|GS505|272|C395|E739BK|E960|L55C|L75C|LS696|LS860|P769BK|P350|P500|P509|P870|UN272|US730|VS840|VS950|LN272|LN510|LS670|LS855|LW690|MN270|MN510|P509|P769|P930|UN200|UN270|UN510|UN610|US670|US740|US760|UX265|UX840|VN271|VN530|VS660|VS700|VS740|VS750|VS910|VS920|VS930|VX9200|VX11000|AX840A|LW770|P506|P925|P999|E612|D955|D802|MS323|M257)|LM-G710\",\n \"Sony\": \"SonyST|SonyLT|SonyEricsson|SonyEricssonLT15iv|LT18i|E10i|LT28h|LT26w|SonyEricssonMT27i|C5303|C6902|C6903|C6906|C6943|D2533|SOV34|601SO|F8332\",\n \"Asus\": \"Asus.*Galaxy|PadFone.*Mobile\",\n \"Xiaomi\": \"^(?!.*\\\\bx11\\\\b).*xiaomi.*$|POCOPHONE F1|MI 8|Redmi Note 9S|Redmi Note 5A Prime|N2G47H|M2001J2G|M2001J2I|M1805E10A|M2004J11G|M1902F1G|M2002J9G|M2004J19G|M2003J6A1G\",\n \"NokiaLumia\": \"Lumia [0-9]{3,4}\",\n \"Micromax\": \"Micromax.*\\\\b(A210|A92|A88|A72|A111|A110Q|A115|A116|A110|A90S|A26|A51|A35|A54|A25|A27|A89|A68|A65|A57|A90)\\\\b\",\n \"Palm\": \"PalmSource|Palm\",\n \"Vertu\": \"Vertu|Vertu.*Ltd|Vertu.*Ascent|Vertu.*Ayxta|Vertu.*Constellation(F|Quest)?|Vertu.*Monika|Vertu.*Signature\",\n \"Pantech\": \"PANTECH|IM-A850S|IM-A840S|IM-A830L|IM-A830K|IM-A830S|IM-A820L|IM-A810K|IM-A810S|IM-A800S|IM-T100K|IM-A725L|IM-A780L|IM-A775C|IM-A770K|IM-A760S|IM-A750K|IM-A740S|IM-A730S|IM-A720L|IM-A710K|IM-A690L|IM-A690S|IM-A650S|IM-A630K|IM-A600S|VEGA PTL21|PT003|P8010|ADR910L|P6030|P6020|P9070|P4100|P9060|P5000|CDM8992|TXT8045|ADR8995|IS11PT|P2030|P6010|P8000|PT002|IS06|CDM8999|P9050|PT001|TXT8040|P2020|P9020|P2000|P7040|P7000|C790\",\n \"Fly\": \"IQ230|IQ444|IQ450|IQ440|IQ442|IQ441|IQ245|IQ256|IQ236|IQ255|IQ235|IQ245|IQ275|IQ240|IQ285|IQ280|IQ270|IQ260|IQ250\",\n \"Wiko\": \"KITE 4G|HIGHWAY|GETAWAY|STAIRWAY|DARKSIDE|DARKFULL|DARKNIGHT|DARKMOON|SLIDE|WAX 4G|RAINBOW|BLOOM|SUNSET|GOA(?!nna)|LENNY|BARRY|IGGY|OZZY|CINK FIVE|CINK PEAX|CINK PEAX 2|CINK SLIM|CINK SLIM 2|CINK +|CINK KING|CINK PEAX|CINK SLIM|SUBLIM\",\n \"iMobile\": \"i-mobile (IQ|i-STYLE|idea|ZAA|Hitz)\",\n \"SimValley\": \"\\\\b(SP-80|XT-930|SX-340|XT-930|SX-310|SP-360|SP60|SPT-800|SP-120|SPT-800|SP-140|SPX-5|SPX-8|SP-100|SPX-8|SPX-12)\\\\b\",\n \"Wolfgang\": \"AT-B24D|AT-AS50HD|AT-AS40W|AT-AS55HD|AT-AS45q2|AT-B26D|AT-AS50Q\",\n \"Alcatel\": \"Alcatel\",\n \"Nintendo\": \"Nintendo (3DS|Switch)\",\n \"Amoi\": \"Amoi\",\n \"INQ\": \"INQ\",\n \"OnePlus\": \"ONEPLUS\",\n \"GenericPhone\": \"Tapatalk|PDA;|SAGEM|\\\\bmmp\\\\b|pocket|\\\\bpsp\\\\b|symbian|Smartphone|smartfon|treo|up.browser|up.link|vodafone|\\\\bwap\\\\b|nokia|Series40|Series60|S60|SonyEricsson|N900|MAUI.*WAP.*Browser\"\n },\n \"tablets\": {\n \"iPad\": \"iPad|iPad.*Mobile\",\n \"NexusTablet\": \"Android.*Nexus[\\\\s]+(7|9|10)\",\n \"GoogleTablet\": \"Android.*Pixel C\",\n \"SamsungTablet\": \"SAMSUNG.*Tablet|Galaxy.*Tab|SC-01C|GT-P1000|GT-P1003|GT-P1010|GT-P3105|GT-P6210|GT-P6800|GT-P6810|GT-P7100|GT-P7300|GT-P7310|GT-P7500|GT-P7510|SCH-I800|SCH-I815|SCH-I905|SGH-I957|SGH-I987|SGH-T849|SGH-T859|SGH-T869|SPH-P100|GT-P3100|GT-P3108|GT-P3110|GT-P5100|GT-P5110|GT-P6200|GT-P7320|GT-P7511|GT-N8000|GT-P8510|SGH-I497|SPH-P500|SGH-T779|SCH-I705|SCH-I915|GT-N8013|GT-P3113|GT-P5113|GT-P8110|GT-N8010|GT-N8005|GT-N8020|GT-P1013|GT-P6201|GT-P7501|GT-N5100|GT-N5105|GT-N5110|SHV-E140K|SHV-E140L|SHV-E140S|SHV-E150S|SHV-E230K|SHV-E230L|SHV-E230S|SHW-M180K|SHW-M180L|SHW-M180S|SHW-M180W|SHW-M300W|SHW-M305W|SHW-M380K|SHW-M380S|SHW-M380W|SHW-M430W|SHW-M480K|SHW-M480S|SHW-M480W|SHW-M485W|SHW-M486W|SHW-M500W|GT-I9228|SCH-P739|SCH-I925|GT-I9200|GT-P5200|GT-P5210|GT-P5210X|SM-T311|SM-T310|SM-T310X|SM-T210|SM-T210R|SM-T211|SM-P600|SM-P601|SM-P605|SM-P900|SM-P901|SM-T217|SM-T217A|SM-T217S|SM-P6000|SM-T3100|SGH-I467|XE500|SM-T110|GT-P5220|GT-I9200X|GT-N5110X|GT-N5120|SM-P905|SM-T111|SM-T2105|SM-T315|SM-T320|SM-T320X|SM-T321|SM-T520|SM-T525|SM-T530NU|SM-T230NU|SM-T330NU|SM-T900|XE500T1C|SM-P605V|SM-P905V|SM-T337V|SM-T537V|SM-T707V|SM-T807V|SM-P600X|SM-P900X|SM-T210X|SM-T230|SM-T230X|SM-T325|GT-P7503|SM-T531|SM-T330|SM-T530|SM-T705|SM-T705C|SM-T535|SM-T331|SM-T800|SM-T700|SM-T537|SM-T807|SM-P907A|SM-T337A|SM-T537A|SM-T707A|SM-T807A|SM-T237|SM-T807P|SM-P607T|SM-T217T|SM-T337T|SM-T807T|SM-T116NQ|SM-T116BU|SM-P550|SM-T350|SM-T550|SM-T9000|SM-P9000|SM-T705Y|SM-T805|GT-P3113|SM-T710|SM-T810|SM-T815|SM-T360|SM-T533|SM-T113|SM-T335|SM-T715|SM-T560|SM-T670|SM-T677|SM-T377|SM-T567|SM-T357T|SM-T555|SM-T561|SM-T713|SM-T719|SM-T813|SM-T819|SM-T580|SM-T355Y?|SM-T280|SM-T817A|SM-T820|SM-W700|SM-P580|SM-T587|SM-P350|SM-P555M|SM-P355M|SM-T113NU|SM-T815Y|SM-T585|SM-T285|SM-T825|SM-W708|SM-T835|SM-T830|SM-T837V|SM-T720|SM-T510|SM-T387V|SM-P610|SM-T290|SM-T515|SM-T590|SM-T595|SM-T725|SM-T817P|SM-P585N0|SM-T395|SM-T295|SM-T865|SM-P610N|SM-P615|SM-T970|SM-T380|SM-T5950|SM-T905|SM-T231|SM-T500|SM-T860\",\n \"Kindle\": \"Kindle|Silk.*Accelerated|Android.*\\\\b(KFOT|KFTT|KFJWI|KFJWA|KFOTE|KFSOWI|KFTHWI|KFTHWA|KFAPWI|KFAPWA|WFJWAE|KFSAWA|KFSAWI|KFASWI|KFARWI|KFFOWI|KFGIWI|KFMEWI)\\\\b|Android.*Silk\\/[0-9.]+ like Chrome\\/[0-9.]+ (?!Mobile)\",\n \"SurfaceTablet\": \"Windows NT [0-9.]+; ARM;.*(Tablet|ARMBJS)\",\n \"HPTablet\": \"HP Slate (7|8|10)|HP ElitePad 900|hp-tablet|EliteBook.*Touch|HP 8|Slate 21|HP SlateBook 10\",\n \"AsusTablet\": \"^.*PadFone((?!Mobile).)*$|Transformer|TF101|TF101G|TF300T|TF300TG|TF300TL|TF700T|TF700KL|TF701T|TF810C|ME171|ME301T|ME302C|ME371MG|ME370T|ME372MG|ME172V|ME173X|ME400C|Slider SL101|\\\\bK00F\\\\b|\\\\bK00C\\\\b|\\\\bK00E\\\\b|\\\\bK00L\\\\b|TX201LA|ME176C|ME102A|\\\\bM80TA\\\\b|ME372CL|ME560CG|ME372CG|ME302KL| K010 | K011 | K017 | K01E |ME572C|ME103K|ME170C|ME171C|\\\\bME70C\\\\b|ME581C|ME581CL|ME8510C|ME181C|P01Y|PO1MA|P01Z|\\\\bP027\\\\b|\\\\bP024\\\\b|\\\\bP00C\\\\b\",\n \"BlackBerryTablet\": \"PlayBook|RIM Tablet\",\n \"HTCtablet\": \"HTC_Flyer_P512|HTC Flyer|HTC Jetstream|HTC-P715a|HTC EVO View 4G|PG41200|PG09410\",\n \"MotorolaTablet\": \"xoom|sholest|MZ615|MZ605|MZ505|MZ601|MZ602|MZ603|MZ604|MZ606|MZ607|MZ608|MZ609|MZ615|MZ616|MZ617\",\n \"NookTablet\": \"Android.*Nook|NookColor|nook browser|BNRV200|BNRV200A|BNTV250|BNTV250A|BNTV400|BNTV600|LogicPD Zoom2\",\n \"AcerTablet\": \"Android.*; \\\\b(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700|A701|W500|W500P|W501|W501P|W510|W511|W700|G100|G100W|B1-A71|B1-710|B1-711|A1-810|A1-811|A1-830)\\\\b|W3-810|\\\\bA3-A10\\\\b|\\\\bA3-A11\\\\b|\\\\bA3-A20\\\\b|\\\\bA3-A30|A3-A40\",\n \"ToshibaTablet\": \"Android.*(AT100|AT105|AT200|AT205|AT270|AT275|AT300|AT305|AT1S5|AT500|AT570|AT700|AT830)|TOSHIBA.*FOLIO\",\n \"LGTablet\": \"\\\\bL-06C|LG-V909|LG-V900|LG-V700|LG-V510|LG-V500|LG-V410|LG-V400|LG-VK810\\\\b\",\n \"FujitsuTablet\": \"Android.*\\\\b(F-01D|F-02F|F-05E|F-10D|M532|Q572)\\\\b\",\n \"PrestigioTablet\": \"PMP3170B|PMP3270B|PMP3470B|PMP7170B|PMP3370B|PMP3570C|PMP5870C|PMP3670B|PMP5570C|PMP5770D|PMP3970B|PMP3870C|PMP5580C|PMP5880D|PMP5780D|PMP5588C|PMP7280C|PMP7280C3G|PMP7280|PMP7880D|PMP5597D|PMP5597|PMP7100D|PER3464|PER3274|PER3574|PER3884|PER5274|PER5474|PMP5097CPRO|PMP5097|PMP7380D|PMP5297C|PMP5297C_QUAD|PMP812E|PMP812E3G|PMP812F|PMP810E|PMP880TD|PMT3017|PMT3037|PMT3047|PMT3057|PMT7008|PMT5887|PMT5001|PMT5002\",\n \"LenovoTablet\": \"Lenovo TAB|Idea(Tab|Pad)( A1|A10| K1|)|ThinkPad([ ]+)?Tablet|YT3-850M|YT3-X90L|YT3-X90F|YT3-X90X|Lenovo.*(S2109|S2110|S5000|S6000|K3011|A3000|A3500|A1000|A2107|A2109|A1107|A5500|A7600|B6000|B8000|B8080)(-|)(FL|F|HV|H|)|TB-X103F|TB-X304X|TB-X304F|TB-X304L|TB-X505F|TB-X505L|TB-X505X|TB-X605F|TB-X605L|TB-8703F|TB-8703X|TB-8703N|TB-8704N|TB-8704F|TB-8704X|TB-8704V|TB-7304F|TB-7304I|TB-7304X|Tab2A7-10F|Tab2A7-20F|TB2-X30L|YT3-X50L|YT3-X50F|YT3-X50M|YT-X705F|YT-X703F|YT-X703L|YT-X705L|YT-X705X|TB2-X30F|TB2-X30L|TB2-X30M|A2107A-F|A2107A-H|TB3-730F|TB3-730M|TB3-730X|TB-7504F|TB-7504X|TB-X704F|TB-X104F|TB3-X70F|TB-X705F|TB-8504F|TB3-X70L|TB3-710F|TB-X704L\",\n \"DellTablet\": \"Venue 11|Venue 8|Venue 7|Dell Streak 10|Dell Streak 7\",\n \"YarvikTablet\": \"Android.*\\\\b(TAB210|TAB211|TAB224|TAB250|TAB260|TAB264|TAB310|TAB360|TAB364|TAB410|TAB411|TAB420|TAB424|TAB450|TAB460|TAB461|TAB464|TAB465|TAB467|TAB468|TAB07-100|TAB07-101|TAB07-150|TAB07-151|TAB07-152|TAB07-200|TAB07-201-3G|TAB07-210|TAB07-211|TAB07-212|TAB07-214|TAB07-220|TAB07-400|TAB07-485|TAB08-150|TAB08-200|TAB08-201-3G|TAB08-201-30|TAB09-100|TAB09-211|TAB09-410|TAB10-150|TAB10-201|TAB10-211|TAB10-400|TAB10-410|TAB13-201|TAB274EUK|TAB275EUK|TAB374EUK|TAB462EUK|TAB474EUK|TAB9-200)\\\\b\",\n \"MedionTablet\": \"Android.*\\\\bOYO\\\\b|LIFE.*(P9212|P9514|P9516|S9512)|LIFETAB\",\n \"ArnovaTablet\": \"97G4|AN10G2|AN7bG3|AN7fG3|AN8G3|AN8cG3|AN7G3|AN9G3|AN7dG3|AN7dG3ST|AN7dG3ChildPad|AN10bG3|AN10bG3DT|AN9G2\",\n \"IntensoTablet\": \"INM8002KP|INM1010FP|INM805ND|Intenso Tab|TAB1004\",\n \"IRUTablet\": \"M702pro\",\n \"MegafonTablet\": \"MegaFon V9|\\\\bZTE V9\\\\b|Android.*\\\\bMT7A\\\\b\",\n \"EbodaTablet\": \"E-Boda (Supreme|Impresspeed|Izzycomm|Essential)\",\n \"AllViewTablet\": \"Allview.*(Viva|Alldro|City|Speed|All TV|Frenzy|Quasar|Shine|TX1|AX1|AX2)\",\n \"ArchosTablet\": \"\\\\b(101G9|80G9|A101IT)\\\\b|Qilive 97R|Archos5|\\\\bARCHOS (70|79|80|90|97|101|FAMILYPAD|)(b|c|)(G10| Cobalt| TITANIUM(HD|)| Xenon| Neon|XSK| 2| XS 2| PLATINUM| CARBON|GAMEPAD)\\\\b\",\n \"AinolTablet\": \"NOVO7|NOVO8|NOVO10|Novo7Aurora|Novo7Basic|NOVO7PALADIN|novo9-Spark\",\n \"NokiaLumiaTablet\": \"Lumia 2520\",\n \"SonyTablet\": \"Sony.*Tablet|Xperia Tablet|Sony Tablet S|SO-03E|SGPT12|SGPT13|SGPT114|SGPT121|SGPT122|SGPT123|SGPT111|SGPT112|SGPT113|SGPT131|SGPT132|SGPT133|SGPT211|SGPT212|SGPT213|SGP311|SGP312|SGP321|EBRD1101|EBRD1102|EBRD1201|SGP351|SGP341|SGP511|SGP512|SGP521|SGP541|SGP551|SGP621|SGP641|SGP612|SOT31|SGP771|SGP611|SGP612|SGP712\",\n \"PhilipsTablet\": \"\\\\b(PI2010|PI3000|PI3100|PI3105|PI3110|PI3205|PI3210|PI3900|PI4010|PI7000|PI7100)\\\\b\",\n \"CubeTablet\": \"Android.*(K8GT|U9GT|U10GT|U16GT|U17GT|U18GT|U19GT|U20GT|U23GT|U30GT)|CUBE U8GT\",\n \"CobyTablet\": \"MID1042|MID1045|MID1125|MID1126|MID7012|MID7014|MID7015|MID7034|MID7035|MID7036|MID7042|MID7048|MID7127|MID8042|MID8048|MID8127|MID9042|MID9740|MID9742|MID7022|MID7010\",\n \"MIDTablet\": \"M9701|M9000|M9100|M806|M1052|M806|T703|MID701|MID713|MID710|MID727|MID760|MID830|MID728|MID933|MID125|MID810|MID732|MID120|MID930|MID800|MID731|MID900|MID100|MID820|MID735|MID980|MID130|MID833|MID737|MID960|MID135|MID860|MID736|MID140|MID930|MID835|MID733|MID4X10\",\n \"MSITablet\": \"MSI \\\\b(Primo 73K|Primo 73L|Primo 81L|Primo 77|Primo 93|Primo 75|Primo 76|Primo 73|Primo 81|Primo 91|Primo 90|Enjoy 71|Enjoy 7|Enjoy 10)\\\\b\",\n \"SMiTTablet\": \"Android.*(\\\\bMID\\\\b|MID-560|MTV-T1200|MTV-PND531|MTV-P1101|MTV-PND530)\",\n \"RockChipTablet\": \"Android.*(RK2818|RK2808A|RK2918|RK3066)|RK2738|RK2808A\",\n \"FlyTablet\": \"IQ310|Fly Vision\",\n \"bqTablet\": \"Android.*(bq)?.*\\\\b(Elcano|Curie|Edison|Maxwell|Kepler|Pascal|Tesla|Hypatia|Platon|Newton|Livingstone|Cervantes|Avant|Aquaris ([E|M]10|M8))\\\\b|Maxwell.*Lite|Maxwell.*Plus\",\n \"HuaweiTablet\": \"MediaPad|MediaPad 7 Youth|IDEOS S7|S7-201c|S7-202u|S7-101|S7-103|S7-104|S7-105|S7-106|S7-201|S7-Slim|M2-A01L|BAH-L09|BAH-W09|AGS-L09|CMR-AL19\",\n \"NecTablet\": \"\\\\bN-06D|\\\\bN-08D\",\n \"PantechTablet\": \"Pantech.*P4100\",\n \"BronchoTablet\": \"Broncho.*(N701|N708|N802|a710)\",\n \"VersusTablet\": \"TOUCHPAD.*[78910]|\\\\bTOUCHTAB\\\\b\",\n \"ZyncTablet\": \"z1000|Z99 2G|z930|z990|z909|Z919|z900\",\n \"PositivoTablet\": \"TB07STA|TB10STA|TB07FTA|TB10FTA\",\n \"NabiTablet\": \"Android.*\\\\bNabi\",\n \"KoboTablet\": \"Kobo Touch|\\\\bK080\\\\b|\\\\bVox\\\\b Build|\\\\bArc\\\\b Build\",\n \"DanewTablet\": \"DSlide.*\\\\b(700|701R|702|703R|704|802|970|971|972|973|974|1010|1012)\\\\b\",\n \"TexetTablet\": \"NaviPad|TB-772A|TM-7045|TM-7055|TM-9750|TM-7016|TM-7024|TM-7026|TM-7041|TM-7043|TM-7047|TM-8041|TM-9741|TM-9747|TM-9748|TM-9751|TM-7022|TM-7021|TM-7020|TM-7011|TM-7010|TM-7023|TM-7025|TM-7037W|TM-7038W|TM-7027W|TM-9720|TM-9725|TM-9737W|TM-1020|TM-9738W|TM-9740|TM-9743W|TB-807A|TB-771A|TB-727A|TB-725A|TB-719A|TB-823A|TB-805A|TB-723A|TB-715A|TB-707A|TB-705A|TB-709A|TB-711A|TB-890HD|TB-880HD|TB-790HD|TB-780HD|TB-770HD|TB-721HD|TB-710HD|TB-434HD|TB-860HD|TB-840HD|TB-760HD|TB-750HD|TB-740HD|TB-730HD|TB-722HD|TB-720HD|TB-700HD|TB-500HD|TB-470HD|TB-431HD|TB-430HD|TB-506|TB-504|TB-446|TB-436|TB-416|TB-146SE|TB-126SE\",\n \"PlaystationTablet\": \"Playstation.*(Portable|Vita)\",\n \"TrekstorTablet\": \"ST10416-1|VT10416-1|ST70408-1|ST702xx-1|ST702xx-2|ST80208|ST97216|ST70104-2|VT10416-2|ST10216-2A|SurfTab\",\n \"PyleAudioTablet\": \"\\\\b(PTBL10CEU|PTBL10C|PTBL72BC|PTBL72BCEU|PTBL7CEU|PTBL7C|PTBL92BC|PTBL92BCEU|PTBL9CEU|PTBL9CUK|PTBL9C)\\\\b\",\n \"AdvanTablet\": \"Android.* \\\\b(E3A|T3X|T5C|T5B|T3E|T3C|T3B|T1J|T1F|T2A|T1H|T1i|E1C|T1-E|T5-A|T4|E1-B|T2Ci|T1-B|T1-D|O1-A|E1-A|T1-A|T3A|T4i)\\\\b \",\n \"DanyTechTablet\": \"Genius Tab G3|Genius Tab S2|Genius Tab Q3|Genius Tab G4|Genius Tab Q4|Genius Tab G-II|Genius TAB GII|Genius TAB GIII|Genius Tab S1\",\n \"GalapadTablet\": \"Android [0-9.]+; [a-z-]+; \\\\bG1\\\\b\",\n \"MicromaxTablet\": \"Funbook|Micromax.*\\\\b(P250|P560|P360|P362|P600|P300|P350|P500|P275)\\\\b\",\n \"KarbonnTablet\": \"Android.*\\\\b(A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2)\\\\b\",\n \"AllFineTablet\": \"Fine7 Genius|Fine7 Shine|Fine7 Air|Fine8 Style|Fine9 More|Fine10 Joy|Fine11 Wide\",\n \"PROSCANTablet\": \"\\\\b(PEM63|PLT1023G|PLT1041|PLT1044|PLT1044G|PLT1091|PLT4311|PLT4311PL|PLT4315|PLT7030|PLT7033|PLT7033D|PLT7035|PLT7035D|PLT7044K|PLT7045K|PLT7045KB|PLT7071KG|PLT7072|PLT7223G|PLT7225G|PLT7777G|PLT7810K|PLT7849G|PLT7851G|PLT7852G|PLT8015|PLT8031|PLT8034|PLT8036|PLT8080K|PLT8082|PLT8088|PLT8223G|PLT8234G|PLT8235G|PLT8816K|PLT9011|PLT9045K|PLT9233G|PLT9735|PLT9760G|PLT9770G)\\\\b\",\n \"YONESTablet\": \"BQ1078|BC1003|BC1077|RK9702|BC9730|BC9001|IT9001|BC7008|BC7010|BC708|BC728|BC7012|BC7030|BC7027|BC7026\",\n \"ChangJiaTablet\": \"TPC7102|TPC7103|TPC7105|TPC7106|TPC7107|TPC7201|TPC7203|TPC7205|TPC7210|TPC7708|TPC7709|TPC7712|TPC7110|TPC8101|TPC8103|TPC8105|TPC8106|TPC8203|TPC8205|TPC8503|TPC9106|TPC9701|TPC97101|TPC97103|TPC97105|TPC97106|TPC97111|TPC97113|TPC97203|TPC97603|TPC97809|TPC97205|TPC10101|TPC10103|TPC10106|TPC10111|TPC10203|TPC10205|TPC10503\",\n \"GUTablet\": \"TX-A1301|TX-M9002|Q702|kf026\",\n \"PointOfViewTablet\": \"TAB-P506|TAB-navi-7-3G-M|TAB-P517|TAB-P-527|TAB-P701|TAB-P703|TAB-P721|TAB-P731N|TAB-P741|TAB-P825|TAB-P905|TAB-P925|TAB-PR945|TAB-PL1015|TAB-P1025|TAB-PI1045|TAB-P1325|TAB-PROTAB[0-9]+|TAB-PROTAB25|TAB-PROTAB26|TAB-PROTAB27|TAB-PROTAB26XL|TAB-PROTAB2-IPS9|TAB-PROTAB30-IPS9|TAB-PROTAB25XXL|TAB-PROTAB26-IPS10|TAB-PROTAB30-IPS10\",\n \"OvermaxTablet\": \"OV-(SteelCore|NewBase|Basecore|Baseone|Exellen|Quattor|EduTab|Solution|ACTION|BasicTab|TeddyTab|MagicTab|Stream|TB-08|TB-09)|Qualcore 1027\",\n \"HCLTablet\": \"HCL.*Tablet|Connect-3G-2.0|Connect-2G-2.0|ME Tablet U1|ME Tablet U2|ME Tablet G1|ME Tablet X1|ME Tablet Y2|ME Tablet Sync\",\n \"DPSTablet\": \"DPS Dream 9|DPS Dual 7\",\n \"VistureTablet\": \"V97 HD|i75 3G|Visture V4( HD)?|Visture V5( HD)?|Visture V10\",\n \"CrestaTablet\": \"CTP(-)?810|CTP(-)?818|CTP(-)?828|CTP(-)?838|CTP(-)?888|CTP(-)?978|CTP(-)?980|CTP(-)?987|CTP(-)?988|CTP(-)?989\",\n \"MediatekTablet\": \"\\\\bMT8125|MT8389|MT8135|MT8377\\\\b\",\n \"ConcordeTablet\": \"Concorde([ ]+)?Tab|ConCorde ReadMan\",\n \"GoCleverTablet\": \"GOCLEVER TAB|A7GOCLEVER|M1042|M7841|M742|R1042BK|R1041|TAB A975|TAB A7842|TAB A741|TAB A741L|TAB M723G|TAB M721|TAB A1021|TAB I921|TAB R721|TAB I720|TAB T76|TAB R70|TAB R76.2|TAB R106|TAB R83.2|TAB M813G|TAB I721|GCTA722|TAB I70|TAB I71|TAB S73|TAB R73|TAB R74|TAB R93|TAB R75|TAB R76.1|TAB A73|TAB A93|TAB A93.2|TAB T72|TAB R83|TAB R974|TAB R973|TAB A101|TAB A103|TAB A104|TAB A104.2|R105BK|M713G|A972BK|TAB A971|TAB R974.2|TAB R104|TAB R83.3|TAB A1042\",\n \"ModecomTablet\": \"FreeTAB 9000|FreeTAB 7.4|FreeTAB 7004|FreeTAB 7800|FreeTAB 2096|FreeTAB 7.5|FreeTAB 1014|FreeTAB 1001 |FreeTAB 8001|FreeTAB 9706|FreeTAB 9702|FreeTAB 7003|FreeTAB 7002|FreeTAB 1002|FreeTAB 7801|FreeTAB 1331|FreeTAB 1004|FreeTAB 8002|FreeTAB 8014|FreeTAB 9704|FreeTAB 1003\",\n \"VoninoTablet\": \"\\\\b(Argus[ _]?S|Diamond[ _]?79HD|Emerald[ _]?78E|Luna[ _]?70C|Onyx[ _]?S|Onyx[ _]?Z|Orin[ _]?HD|Orin[ _]?S|Otis[ _]?S|SpeedStar[ _]?S|Magnet[ _]?M9|Primus[ _]?94[ _]?3G|Primus[ _]?94HD|Primus[ _]?QS|Android.*\\\\bQ8\\\\b|Sirius[ _]?EVO[ _]?QS|Sirius[ _]?QS|Spirit[ _]?S)\\\\b\",\n \"ECSTablet\": \"V07OT2|TM105A|S10OT1|TR10CS1\",\n \"StorexTablet\": \"eZee[_']?(Tab|Go)[0-9]+|TabLC7|Looney Tunes Tab\",\n \"VodafoneTablet\": \"SmartTab([ ]+)?[0-9]+|SmartTabII10|SmartTabII7|VF-1497|VFD 1400\",\n \"EssentielBTablet\": \"Smart[ ']?TAB[ ]+?[0-9]+|Family[ ']?TAB2\",\n \"RossMoorTablet\": \"RM-790|RM-997|RMD-878G|RMD-974R|RMT-705A|RMT-701|RME-601|RMT-501|RMT-711\",\n \"iMobileTablet\": \"i-mobile i-note\",\n \"TolinoTablet\": \"tolino tab [0-9.]+|tolino shine\",\n \"AudioSonicTablet\": \"\\\\bC-22Q|T7-QC|T-17B|T-17P\\\\b\",\n \"AMPETablet\": \"Android.* A78 \",\n \"SkkTablet\": \"Android.* (SKYPAD|PHOENIX|CYCLOPS)\",\n \"TecnoTablet\": \"TECNO P9|TECNO DP8D\",\n \"JXDTablet\": \"Android.* \\\\b(F3000|A3300|JXD5000|JXD3000|JXD2000|JXD300B|JXD300|S5800|S7800|S602b|S5110b|S7300|S5300|S602|S603|S5100|S5110|S601|S7100a|P3000F|P3000s|P101|P200s|P1000m|P200m|P9100|P1000s|S6600b|S908|P1000|P300|S18|S6600|S9100)\\\\b\",\n \"iJoyTablet\": \"Tablet (Spirit 7|Essentia|Galatea|Fusion|Onix 7|Landa|Titan|Scooby|Deox|Stella|Themis|Argon|Unique 7|Sygnus|Hexen|Finity 7|Cream|Cream X2|Jade|Neon 7|Neron 7|Kandy|Scape|Saphyr 7|Rebel|Biox|Rebel|Rebel 8GB|Myst|Draco 7|Myst|Tab7-004|Myst|Tadeo Jones|Tablet Boing|Arrow|Draco Dual Cam|Aurix|Mint|Amity|Revolution|Finity 9|Neon 9|T9w|Amity 4GB Dual Cam|Stone 4GB|Stone 8GB|Andromeda|Silken|X2|Andromeda II|Halley|Flame|Saphyr 9,7|Touch 8|Planet|Triton|Unique 10|Hexen 10|Memphis 4GB|Memphis 8GB|Onix 10)\",\n \"FX2Tablet\": \"FX2 PAD7|FX2 PAD10\",\n \"XoroTablet\": \"KidsPAD 701|PAD[ ]?712|PAD[ ]?714|PAD[ ]?716|PAD[ ]?717|PAD[ ]?718|PAD[ ]?720|PAD[ ]?721|PAD[ ]?722|PAD[ ]?790|PAD[ ]?792|PAD[ ]?900|PAD[ ]?9715D|PAD[ ]?9716DR|PAD[ ]?9718DR|PAD[ ]?9719QR|PAD[ ]?9720QR|TelePAD1030|Telepad1032|TelePAD730|TelePAD731|TelePAD732|TelePAD735Q|TelePAD830|TelePAD9730|TelePAD795|MegaPAD 1331|MegaPAD 1851|MegaPAD 2151\",\n \"ViewsonicTablet\": \"ViewPad 10pi|ViewPad 10e|ViewPad 10s|ViewPad E72|ViewPad7|ViewPad E100|ViewPad 7e|ViewSonic VB733|VB100a\",\n \"VerizonTablet\": \"QTAQZ3|QTAIR7|QTAQTZ3|QTASUN1|QTASUN2|QTAXIA1\",\n \"OdysTablet\": \"LOOX|XENO10|ODYS[ -](Space|EVO|Xpress|NOON)|\\\\bXELIO\\\\b|Xelio10Pro|XELIO7PHONETAB|XELIO10EXTREME|XELIOPT2|NEO_QUAD10\",\n \"CaptivaTablet\": \"CAPTIVA PAD\",\n \"IconbitTablet\": \"NetTAB|NT-3702|NT-3702S|NT-3702S|NT-3603P|NT-3603P|NT-0704S|NT-0704S|NT-3805C|NT-3805C|NT-0806C|NT-0806C|NT-0909T|NT-0909T|NT-0907S|NT-0907S|NT-0902S|NT-0902S\",\n \"TeclastTablet\": \"T98 4G|\\\\bP80\\\\b|\\\\bX90HD\\\\b|X98 Air|X98 Air 3G|\\\\bX89\\\\b|P80 3G|\\\\bX80h\\\\b|P98 Air|\\\\bX89HD\\\\b|P98 3G|\\\\bP90HD\\\\b|P89 3G|X98 3G|\\\\bP70h\\\\b|P79HD 3G|G18d 3G|\\\\bP79HD\\\\b|\\\\bP89s\\\\b|\\\\bA88\\\\b|\\\\bP10HD\\\\b|\\\\bP19HD\\\\b|G18 3G|\\\\bP78HD\\\\b|\\\\bA78\\\\b|\\\\bP75\\\\b|G17s 3G|G17h 3G|\\\\bP85t\\\\b|\\\\bP90\\\\b|\\\\bP11\\\\b|\\\\bP98t\\\\b|\\\\bP98HD\\\\b|\\\\bG18d\\\\b|\\\\bP85s\\\\b|\\\\bP11HD\\\\b|\\\\bP88s\\\\b|\\\\bA80HD\\\\b|\\\\bA80se\\\\b|\\\\bA10h\\\\b|\\\\bP89\\\\b|\\\\bP78s\\\\b|\\\\bG18\\\\b|\\\\bP85\\\\b|\\\\bA70h\\\\b|\\\\bA70\\\\b|\\\\bG17\\\\b|\\\\bP18\\\\b|\\\\bA80s\\\\b|\\\\bA11s\\\\b|\\\\bP88HD\\\\b|\\\\bA80h\\\\b|\\\\bP76s\\\\b|\\\\bP76h\\\\b|\\\\bP98\\\\b|\\\\bA10HD\\\\b|\\\\bP78\\\\b|\\\\bP88\\\\b|\\\\bA11\\\\b|\\\\bA10t\\\\b|\\\\bP76a\\\\b|\\\\bP76t\\\\b|\\\\bP76e\\\\b|\\\\bP85HD\\\\b|\\\\bP85a\\\\b|\\\\bP86\\\\b|\\\\bP75HD\\\\b|\\\\bP76v\\\\b|\\\\bA12\\\\b|\\\\bP75a\\\\b|\\\\bA15\\\\b|\\\\bP76Ti\\\\b|\\\\bP81HD\\\\b|\\\\bA10\\\\b|\\\\bT760VE\\\\b|\\\\bT720HD\\\\b|\\\\bP76\\\\b|\\\\bP73\\\\b|\\\\bP71\\\\b|\\\\bP72\\\\b|\\\\bT720SE\\\\b|\\\\bC520Ti\\\\b|\\\\bT760\\\\b|\\\\bT720VE\\\\b|T720-3GE|T720-WiFi\",\n \"OndaTablet\": \"\\\\b(V975i|Vi30|VX530|V701|Vi60|V701s|Vi50|V801s|V719|Vx610w|VX610W|V819i|Vi10|VX580W|Vi10|V711s|V813|V811|V820w|V820|Vi20|V711|VI30W|V712|V891w|V972|V819w|V820w|Vi60|V820w|V711|V813s|V801|V819|V975s|V801|V819|V819|V818|V811|V712|V975m|V101w|V961w|V812|V818|V971|V971s|V919|V989|V116w|V102w|V973|Vi40)\\\\b[\\\\s]+|V10 \\\\b4G\\\\b\",\n \"JaytechTablet\": \"TPC-PA762\",\n \"BlaupunktTablet\": \"Endeavour 800NG|Endeavour 1010\",\n \"DigmaTablet\": \"\\\\b(iDx10|iDx9|iDx8|iDx7|iDxD7|iDxD8|iDsQ8|iDsQ7|iDsQ8|iDsD10|iDnD7|3TS804H|iDsQ11|iDj7|iDs10)\\\\b\",\n \"EvolioTablet\": \"ARIA_Mini_wifi|Aria[ _]Mini|Evolio X10|Evolio X7|Evolio X8|\\\\bEvotab\\\\b|\\\\bNeura\\\\b\",\n \"LavaTablet\": \"QPAD E704|\\\\bIvoryS\\\\b|E-TAB IVORY|\\\\bE-TAB\\\\b\",\n \"AocTablet\": \"MW0811|MW0812|MW0922|MTK8382|MW1031|MW0831|MW0821|MW0931|MW0712\",\n \"MpmanTablet\": \"MP11 OCTA|MP10 OCTA|MPQC1114|MPQC1004|MPQC994|MPQC974|MPQC973|MPQC804|MPQC784|MPQC780|\\\\bMPG7\\\\b|MPDCG75|MPDCG71|MPDC1006|MP101DC|MPDC9000|MPDC905|MPDC706HD|MPDC706|MPDC705|MPDC110|MPDC100|MPDC99|MPDC97|MPDC88|MPDC8|MPDC77|MP709|MID701|MID711|MID170|MPDC703|MPQC1010\",\n \"CelkonTablet\": \"CT695|CT888|CT[\\\\s]?910|CT7 Tab|CT9 Tab|CT3 Tab|CT2 Tab|CT1 Tab|C820|C720|\\\\bCT-1\\\\b\",\n \"WolderTablet\": \"miTab \\\\b(DIAMOND|SPACE|BROOKLYN|NEO|FLY|MANHATTAN|FUNK|EVOLUTION|SKY|GOCAR|IRON|GENIUS|POP|MINT|EPSILON|BROADWAY|JUMP|HOP|LEGEND|NEW AGE|LINE|ADVANCE|FEEL|FOLLOW|LIKE|LINK|LIVE|THINK|FREEDOM|CHICAGO|CLEVELAND|BALTIMORE-GH|IOWA|BOSTON|SEATTLE|PHOENIX|DALLAS|IN 101|MasterChef)\\\\b\",\n \"MediacomTablet\": \"M-MPI10C3G|M-SP10EG|M-SP10EGP|M-SP10HXAH|M-SP7HXAH|M-SP10HXBH|M-SP8HXAH|M-SP8MXA\",\n \"MiTablet\": \"\\\\bMI PAD\\\\b|\\\\bHM NOTE 1W\\\\b\",\n \"NibiruTablet\": \"Nibiru M1|Nibiru Jupiter One\",\n \"NexoTablet\": \"NEXO NOVA|NEXO 10|NEXO AVIO|NEXO FREE|NEXO GO|NEXO EVO|NEXO 3G|NEXO SMART|NEXO KIDDO|NEXO MOBI\",\n \"LeaderTablet\": \"TBLT10Q|TBLT10I|TBL-10WDKB|TBL-10WDKBO2013|TBL-W230V2|TBL-W450|TBL-W500|SV572|TBLT7I|TBA-AC7-8G|TBLT79|TBL-8W16|TBL-10W32|TBL-10WKB|TBL-W100\",\n \"UbislateTablet\": \"UbiSlate[\\\\s]?7C\",\n \"PocketBookTablet\": \"Pocketbook\",\n \"KocasoTablet\": \"\\\\b(TB-1207)\\\\b\",\n \"HisenseTablet\": \"\\\\b(F5281|E2371)\\\\b\",\n \"Hudl\": \"Hudl HT7S3|Hudl 2\",\n \"TelstraTablet\": \"T-Hub2\",\n \"GenericTablet\": \"Android.*\\\\b97D\\\\b|Tablet(?!.*PC)|BNTV250A|MID-WCDMA|LogicPD Zoom2|\\\\bA7EB\\\\b|CatNova8|A1_07|CT704|CT1002|\\\\bM721\\\\b|rk30sdk|\\\\bEVOTAB\\\\b|M758A|ET904|ALUMIUM10|Smartfren Tab|Endeavour 1010|Tablet-PC-4|Tagi Tab|\\\\bM6pro\\\\b|CT1020W|arc 10HD|\\\\bTP750\\\\b|\\\\bQTAQZ3\\\\b|WVT101|TM1088|KT107\"\n },\n \"oss\": {\n \"AndroidOS\": \"Android\",\n \"BlackBerryOS\": \"blackberry|\\\\bBB10\\\\b|rim tablet os\",\n \"PalmOS\": \"PalmOS|avantgo|blazer|elaine|hiptop|palm|plucker|xiino\",\n \"SymbianOS\": \"Symbian|SymbOS|Series60|Series40|SYB-[0-9]+|\\\\bS60\\\\b\",\n \"WindowsMobileOS\": \"Windows CE.*(PPC|Smartphone|Mobile|[0-9]{3}x[0-9]{3})|Windows Mobile|Windows Phone [0-9.]+|WCE;\",\n \"WindowsPhoneOS\": \"Windows Phone 10.0|Windows Phone 8.1|Windows Phone 8.0|Windows Phone OS|XBLWP7|ZuneWP7|Windows NT 6.[23]; ARM;\",\n \"iOS\": \"\\\\biPhone.*Mobile|\\\\biPod|\\\\biPad|AppleCoreMedia\",\n \"iPadOS\": \"CPU OS 13\",\n \"SailfishOS\": \"Sailfish\",\n \"MeeGoOS\": \"MeeGo\",\n \"MaemoOS\": \"Maemo\",\n \"JavaOS\": \"J2ME\\/|\\\\bMIDP\\\\b|\\\\bCLDC\\\\b\",\n \"webOS\": \"webOS|hpwOS\",\n \"badaOS\": \"\\\\bBada\\\\b\",\n \"BREWOS\": \"BREW\"\n },\n \"uas\": {\n \"Chrome\": \"\\\\bCrMo\\\\b|CriOS|Android.*Chrome\\/[.0-9]* (Mobile)?\",\n \"Dolfin\": \"\\\\bDolfin\\\\b\",\n \"Opera\": \"Opera.*Mini|Opera.*Mobi|Android.*Opera|Mobile.*OPR\\/[0-9.]+$|Coast\\/[0-9.]+\",\n \"Skyfire\": \"Skyfire\",\n \"Edge\": \"\\\\bEdgiOS\\\\b|Mobile Safari\\/[.0-9]* Edge\",\n \"IE\": \"IEMobile|MSIEMobile\",\n \"Firefox\": \"fennec|firefox.*maemo|(Mobile|Tablet).*Firefox|Firefox.*Mobile|FxiOS\",\n \"Bolt\": \"bolt\",\n \"TeaShark\": \"teashark\",\n \"Blazer\": \"Blazer\",\n \"Safari\": \"Version((?!\\\\bEdgiOS\\\\b).)*Mobile.*Safari|Safari.*Mobile|MobileSafari\",\n \"WeChat\": \"\\\\bMicroMessenger\\\\b\",\n \"UCBrowser\": \"UC.*Browser|UCWEB\",\n \"baiduboxapp\": \"baiduboxapp\",\n \"baidubrowser\": \"baidubrowser\",\n \"DiigoBrowser\": \"DiigoBrowser\",\n \"Mercury\": \"\\\\bMercury\\\\b\",\n \"ObigoBrowser\": \"Obigo\",\n \"NetFront\": \"NF-Browser\",\n \"GenericBrowser\": \"NokiaBrowser|OviBrowser|OneBrowser|TwonkyBeamBrowser|SEMC.*Browser|FlyFlow|Minimo|NetFront|Novarra-Vision|MQQBrowser|MicroMessenger\",\n \"PaleMoon\": \"Android.*PaleMoon|Mobile.*PaleMoon\"\n },\n \"props\": {\n \"Mobile\": \"Mobile\\/[VER]\",\n \"Build\": \"Build\\/[VER]\",\n \"Version\": \"Version\\/[VER]\",\n \"VendorID\": \"VendorID\\/[VER]\",\n \"iPad\": \"iPad.*CPU[a-z ]+[VER]\",\n \"iPhone\": \"iPhone.*CPU[a-z ]+[VER]\",\n \"iPod\": \"iPod.*CPU[a-z ]+[VER]\",\n \"Kindle\": \"Kindle\\/[VER]\",\n \"Chrome\": [\n \"Chrome\\/[VER]\",\n \"CriOS\\/[VER]\",\n \"CrMo\\/[VER]\"\n ],\n \"Coast\": [\n \"Coast\\/[VER]\"\n ],\n \"Dolfin\": \"Dolfin\\/[VER]\",\n \"Firefox\": [\n \"Firefox\\/[VER]\",\n \"FxiOS\\/[VER]\"\n ],\n \"Fennec\": \"Fennec\\/[VER]\",\n \"Edge\": \"Edge\\/[VER]\",\n \"IE\": [\n \"IEMobile\\/[VER];\",\n \"IEMobile [VER]\",\n \"MSIE [VER];\",\n \"Trident\\/[0-9.]+;.*rv:[VER]\"\n ],\n \"NetFront\": \"NetFront\\/[VER]\",\n \"NokiaBrowser\": \"NokiaBrowser\\/[VER]\",\n \"Opera\": [\n \" OPR\\/[VER]\",\n \"Opera Mini\\/[VER]\",\n \"Version\\/[VER]\"\n ],\n \"Opera Mini\": \"Opera Mini\\/[VER]\",\n \"Opera Mobi\": \"Version\\/[VER]\",\n \"UCBrowser\": [\n \"UCWEB[VER]\",\n \"UC.*Browser\\/[VER]\"\n ],\n \"MQQBrowser\": \"MQQBrowser\\/[VER]\",\n \"MicroMessenger\": \"MicroMessenger\\/[VER]\",\n \"baiduboxapp\": \"baiduboxapp\\/[VER]\",\n \"baidubrowser\": \"baidubrowser\\/[VER]\",\n \"SamsungBrowser\": \"SamsungBrowser\\/[VER]\",\n \"Iron\": \"Iron\\/[VER]\",\n \"Safari\": [\n \"Version\\/[VER]\",\n \"Safari\\/[VER]\"\n ],\n \"Skyfire\": \"Skyfire\\/[VER]\",\n \"Tizen\": \"Tizen\\/[VER]\",\n \"Webkit\": \"webkit[ \\/][VER]\",\n \"PaleMoon\": \"PaleMoon\\/[VER]\",\n \"SailfishBrowser\": \"SailfishBrowser\\/[VER]\",\n \"Gecko\": \"Gecko\\/[VER]\",\n \"Trident\": \"Trident\\/[VER]\",\n \"Presto\": \"Presto\\/[VER]\",\n \"Goanna\": \"Goanna\\/[VER]\",\n \"iOS\": \" \\\\bi?OS\\\\b [VER][ ;]{1}\",\n \"Android\": \"Android [VER]\",\n \"Sailfish\": \"Sailfish [VER]\",\n \"BlackBerry\": [\n \"BlackBerry[\\\\w]+\\/[VER]\",\n \"BlackBerry.*Version\\/[VER]\",\n \"Version\\/[VER]\"\n ],\n \"BREW\": \"BREW [VER]\",\n \"Java\": \"Java\\/[VER]\",\n \"Windows Phone OS\": [\n \"Windows Phone OS [VER]\",\n \"Windows Phone [VER]\"\n ],\n \"Windows Phone\": \"Windows Phone [VER]\",\n \"Windows CE\": \"Windows CE\\/[VER]\",\n \"Windows NT\": \"Windows NT [VER]\",\n \"Symbian\": [\n \"SymbianOS\\/[VER]\",\n \"Symbian\\/[VER]\"\n ],\n \"webOS\": [\n \"webOS\\/[VER]\",\n \"hpwOS\\/[VER];\"\n ]\n },\n \"utils\": {\n \"Bot\": \"Googlebot|facebookexternalhit|Google-AMPHTML|s~amp-validator|AdsBot-Google|Google Keyword Suggestion|Facebot|YandexBot|YandexMobileBot|bingbot|ia_archiver|AhrefsBot|Ezooms|GSLFbot|WBSearchBot|Twitterbot|TweetmemeBot|Twikle|PaperLiBot|Wotbox|UnwindFetchor|Exabot|MJ12bot|YandexImages|TurnitinBot|Pingdom|contentkingapp|AspiegelBot\",\n \"MobileBot\": \"Googlebot-Mobile|AdsBot-Google-Mobile|YahooSeeker\\/M1A1-R2D2\",\n \"DesktopMode\": \"WPDesktop\",\n \"TV\": \"SonyDTV|HbbTV\",\n \"WebKit\": \"(webkit)[ \\/]([\\\\w.]+)\",\n \"Console\": \"\\\\b(Nintendo|Nintendo WiiU|Nintendo 3DS|Nintendo Switch|PLAYSTATION|Xbox)\\\\b\",\n \"Watch\": \"SM-V700\"\n }\n};\n\n // following patterns come from http://detectmobilebrowsers.com/\n impl.detectMobileBrowsers = {\n fullPattern: /(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,\n shortPattern: /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,\n tabletPattern: /android|ipad|playbook|silk/i\n };\n\n var hasOwnProp = Object.prototype.hasOwnProperty,\n isArray;\n\n impl.FALLBACK_PHONE = 'UnknownPhone';\n impl.FALLBACK_TABLET = 'UnknownTablet';\n impl.FALLBACK_MOBILE = 'UnknownMobile';\n\n isArray = ('isArray' in Array) ?\n Array.isArray : function (value) { return Object.prototype.toString.call(value) === '[object Array]'; };\n\n function equalIC(a, b) {\n return a != null && b != null && a.toLowerCase() === b.toLowerCase();\n }\n\n function containsIC(array, value) {\n var valueLC, i, len = array.length;\n if (!len || !value) {\n return false;\n }\n valueLC = value.toLowerCase();\n for (i = 0; i < len; ++i) {\n if (valueLC === array[i].toLowerCase()) {\n return true;\n }\n }\n return false;\n }\n\n function convertPropsToRegExp(object) {\n for (var key in object) {\n if (hasOwnProp.call(object, key)) {\n object[key] = new RegExp(object[key], 'i');\n }\n }\n }\n\n function prepareUserAgent(userAgent) {\n return (userAgent || '').substr(0, 500); // mitigate vulnerable to ReDoS\n }\n\n (function init() {\n var key, values, value, i, len, verPos, mobileDetectRules = impl.mobileDetectRules;\n for (key in mobileDetectRules.props) {\n if (hasOwnProp.call(mobileDetectRules.props, key)) {\n values = mobileDetectRules.props[key];\n if (!isArray(values)) {\n values = [values];\n }\n len = values.length;\n for (i = 0; i < len; ++i) {\n value = values[i];\n verPos = value.indexOf('[VER]');\n if (verPos >= 0) {\n value = value.substring(0, verPos) + '([\\\\w._\\\\+]+)' + value.substring(verPos + 5);\n }\n values[i] = new RegExp(value, 'i');\n }\n mobileDetectRules.props[key] = values;\n }\n }\n convertPropsToRegExp(mobileDetectRules.oss);\n convertPropsToRegExp(mobileDetectRules.phones);\n convertPropsToRegExp(mobileDetectRules.tablets);\n convertPropsToRegExp(mobileDetectRules.uas);\n convertPropsToRegExp(mobileDetectRules.utils);\n\n // copy some patterns to oss0 which are tested first (see issue#15)\n mobileDetectRules.oss0 = {\n WindowsPhoneOS: mobileDetectRules.oss.WindowsPhoneOS,\n WindowsMobileOS: mobileDetectRules.oss.WindowsMobileOS\n };\n }());\n\n /**\n * Test userAgent string against a set of rules and find the first matched key.\n * @param {Object} rules (key is String, value is RegExp)\n * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent').\n * @returns {String|null} the matched key if found, otherwise null\n * @private\n */\n impl.findMatch = function(rules, userAgent) {\n for (var key in rules) {\n if (hasOwnProp.call(rules, key)) {\n if (rules[key].test(userAgent)) {\n return key;\n }\n }\n }\n return null;\n };\n\n /**\n * Test userAgent string against a set of rules and return an array of matched keys.\n * @param {Object} rules (key is String, value is RegExp)\n * @param {String} userAgent the navigator.userAgent (or HTTP-Header 'User-Agent').\n * @returns {Array} an array of matched keys, may be empty when there is no match, but not null\n * @private\n */\n impl.findMatches = function(rules, userAgent) {\n var result = [];\n for (var key in rules) {\n if (hasOwnProp.call(rules, key)) {\n if (rules[key].test(userAgent)) {\n result.push(key);\n }\n }\n }\n return result;\n };\n\n /**\n * Check the version of the given property in the User-Agent.\n *\n * @param {String} propertyName\n * @param {String} userAgent\n * @return {String} version or null if version not found\n * @private\n */\n impl.getVersionStr = function (propertyName, userAgent) {\n var props = impl.mobileDetectRules.props, patterns, i, len, match;\n if (hasOwnProp.call(props, propertyName)) {\n patterns = props[propertyName];\n len = patterns.length;\n for (i = 0; i < len; ++i) {\n match = patterns[i].exec(userAgent);\n if (match !== null) {\n return match[1];\n }\n }\n }\n return null;\n };\n\n /**\n * Check the version of the given property in the User-Agent.\n * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31)\n *\n * @param {String} propertyName\n * @param {String} userAgent\n * @return {Number} version or NaN if version not found\n * @private\n */\n impl.getVersion = function (propertyName, userAgent) {\n var version = impl.getVersionStr(propertyName, userAgent);\n return version ? impl.prepareVersionNo(version) : NaN;\n };\n\n /**\n * Prepare the version number.\n *\n * @param {String} version\n * @return {Number} the version number as a floating number\n * @private\n */\n impl.prepareVersionNo = function (version) {\n var numbers;\n\n numbers = version.split(/[a-z._ \\/\\-]/i);\n if (numbers.length === 1) {\n version = numbers[0];\n }\n if (numbers.length > 1) {\n version = numbers[0] + '.';\n numbers.shift();\n version += numbers.join('');\n }\n return Number(version);\n };\n\n impl.isMobileFallback = function (userAgent) {\n return impl.detectMobileBrowsers.fullPattern.test(userAgent) ||\n impl.detectMobileBrowsers.shortPattern.test(userAgent.substr(0,4));\n };\n\n impl.isTabletFallback = function (userAgent) {\n return impl.detectMobileBrowsers.tabletPattern.test(userAgent);\n };\n\n impl.prepareDetectionCache = function (cache, userAgent, maxPhoneWidth) {\n if (cache.mobile !== undefined) {\n return;\n }\n var phone, tablet, phoneSized;\n\n // first check for stronger tablet rules, then phone (see issue#5)\n tablet = impl.findMatch(impl.mobileDetectRules.tablets, userAgent);\n if (tablet) {\n cache.mobile = cache.tablet = tablet;\n cache.phone = null;\n return; // unambiguously identified as tablet\n }\n\n phone = impl.findMatch(impl.mobileDetectRules.phones, userAgent);\n if (phone) {\n cache.mobile = cache.phone = phone;\n cache.tablet = null;\n return; // unambiguously identified as phone\n }\n\n // our rules haven't found a match -> try more general fallback rules\n if (impl.isMobileFallback(userAgent)) {\n phoneSized = MobileDetect.isPhoneSized(maxPhoneWidth);\n if (phoneSized === undefined) {\n cache.mobile = impl.FALLBACK_MOBILE;\n cache.tablet = cache.phone = null;\n } else if (phoneSized) {\n cache.mobile = cache.phone = impl.FALLBACK_PHONE;\n cache.tablet = null;\n } else {\n cache.mobile = cache.tablet = impl.FALLBACK_TABLET;\n cache.phone = null;\n }\n } else if (impl.isTabletFallback(userAgent)) {\n cache.mobile = cache.tablet = impl.FALLBACK_TABLET;\n cache.phone = null;\n } else {\n // not mobile at all!\n cache.mobile = cache.tablet = cache.phone = null;\n }\n };\n\n // t is a reference to a MobileDetect instance\n impl.mobileGrade = function (t) {\n // impl note:\n // To keep in sync w/ Mobile_Detect.php easily, the following code is tightly aligned to the PHP version.\n // When changes are made in Mobile_Detect.php, copy this method and replace:\n // $this-> / t.\n // self::MOBILE_GRADE_(.) / '$1'\n // , self::VERSION_TYPE_FLOAT / (nothing)\n // isIOS() / os('iOS')\n // [reg] / (nothing) <-- jsdelivr complaining about unescaped unicode character U+00AE\n var $isMobile = t.mobile() !== null;\n\n if (\n // Apple iOS 3.2-5.1 - Tested on the original iPad (4.3 / 5.0), iPad 2 (4.3), iPad 3 (5.1), original iPhone (3.1), iPhone 3 (3.2), 3GS (4.3), 4 (4.3 / 5.0), and 4S (5.1)\n t.os('iOS') && t.version('iPad')>=4.3 ||\n t.os('iOS') && t.version('iPhone')>=3.1 ||\n t.os('iOS') && t.version('iPod')>=3.1 ||\n\n // Android 2.1-2.3 - Tested on the HTC Incredible (2.2), original Droid (2.2), HTC Aria (2.1), Google Nexus S (2.3). Functional on 1.5 & 1.6 but performance may be sluggish, tested on Google G1 (1.5)\n // Android 3.1 (Honeycomb) - Tested on the Samsung Galaxy Tab 10.1 and Motorola XOOM\n // Android 4.0 (ICS) - Tested on a Galaxy Nexus. Note: transition performance can be poor on upgraded devices\n // Android 4.1 (Jelly Bean) - Tested on a Galaxy Nexus and Galaxy 7\n ( t.version('Android')>2.1 && t.is('Webkit') ) ||\n\n // Windows Phone 7-7.5 - Tested on the HTC Surround (7.0) HTC Trophy (7.5), LG-E900 (7.5), Nokia Lumia 800\n t.version('Windows Phone OS')>=7.0 ||\n\n // Blackberry 7 - Tested on BlackBerry Torch 9810\n // Blackberry 6.0 - Tested on the Torch 9800 and Style 9670\n t.is('BlackBerry') && t.version('BlackBerry')>=6.0 ||\n // Blackberry Playbook (1.0-2.0) - Tested on PlayBook\n t.match('Playbook.*Tablet') ||\n\n // Palm WebOS (1.4-2.0) - Tested on the Palm Pixi (1.4), Pre (1.4), Pre 2 (2.0)\n ( t.version('webOS')>=1.4 && t.match('Palm|Pre|Pixi') ) ||\n // Palm WebOS 3.0 - Tested on HP TouchPad\n t.match('hp.*TouchPad') ||\n\n // Firefox Mobile (12 Beta) - Tested on Android 2.3 device\n ( t.is('Firefox') && t.version('Firefox')>=12 ) ||\n\n // Chrome for Android - Tested on Android 4.0, 4.1 device\n ( t.is('Chrome') && t.is('AndroidOS') && t.version('Android')>=4.0 ) ||\n\n // Skyfire 4.1 - Tested on Android 2.3 device\n ( t.is('Skyfire') && t.version('Skyfire')>=4.1 && t.is('AndroidOS') && t.version('Android')>=2.3 ) ||\n\n // Opera Mobile 11.5-12: Tested on Android 2.3\n ( t.is('Opera') && t.version('Opera Mobi')>11 && t.is('AndroidOS') ) ||\n\n // Meego 1.2 - Tested on Nokia 950 and N9\n t.is('MeeGoOS') ||\n\n // Tizen (pre-release) - Tested on early hardware\n t.is('Tizen') ||\n\n // Samsung Bada 2.0 - Tested on a Samsung Wave 3, Dolphin browser\n // @todo: more tests here!\n t.is('Dolfin') && t.version('Bada')>=2.0 ||\n\n // UC Browser - Tested on Android 2.3 device\n ( (t.is('UC Browser') || t.is('Dolfin')) && t.version('Android')>=2.3 ) ||\n\n // Kindle 3 and Fire - Tested on the built-in WebKit browser for each\n ( t.match('Kindle Fire') ||\n t.is('Kindle') && t.version('Kindle')>=3.0 ) ||\n\n // Nook Color 1.4.1 - Tested on original Nook Color, not Nook Tablet\n t.is('AndroidOS') && t.is('NookTablet') ||\n\n // Chrome Desktop 11-21 - Tested on OS X 10.7 and Windows 7\n t.version('Chrome')>=11 && !$isMobile ||\n\n // Safari Desktop 4-5 - Tested on OS X 10.7 and Windows 7\n t.version('Safari')>=5.0 && !$isMobile ||\n\n // Firefox Desktop 4-13 - Tested on OS X 10.7 and Windows 7\n t.version('Firefox')>=4.0 && !$isMobile ||\n\n // Internet Explorer 7-9 - Tested on Windows XP, Vista and 7\n t.version('MSIE')>=7.0 && !$isMobile ||\n\n // Opera Desktop 10-12 - Tested on OS X 10.7 and Windows 7\n // @reference: http://my.opera.com/community/openweb/idopera/\n t.version('Opera')>=10 && !$isMobile\n\n ){\n return 'A';\n }\n\n if (\n t.os('iOS') && t.version('iPad')<4.3 ||\n t.os('iOS') && t.version('iPhone')<3.1 ||\n t.os('iOS') && t.version('iPod')<3.1 ||\n\n // Blackberry 5.0: Tested on the Storm 2 9550, Bold 9770\n t.is('Blackberry') && t.version('BlackBerry')>=5 && t.version('BlackBerry')<6 ||\n\n //Opera Mini (5.0-6.5) - Tested on iOS 3.2/4.3 and Android 2.3\n ( t.version('Opera Mini')>=5.0 && t.version('Opera Mini')<=6.5 &&\n (t.version('Android')>=2.3 || t.is('iOS')) ) ||\n\n // Nokia Symbian^3 - Tested on Nokia N8 (Symbian^3), C7 (Symbian^3), also works on N97 (Symbian^1)\n t.match('NokiaN8|NokiaC7|N97.*Series60|Symbian/3') ||\n\n // @todo: report this (tested on Nokia N71)\n t.version('Opera Mobi')>=11 && t.is('SymbianOS')\n ){\n return 'B';\n }\n\n if (\n // Blackberry 4.x - Tested on the Curve 8330\n t.version('BlackBerry')<5.0 ||\n // Windows Mobile - Tested on the HTC Leo (WinMo 5.2)\n t.match('MSIEMobile|Windows CE.*Mobile') || t.version('Windows Mobile')<=5.2\n\n ){\n return 'C';\n }\n\n //All older smartphone platforms and featurephones - Any device that doesn't support media queries\n //will receive the basic, C grade experience.\n return 'C';\n };\n\n impl.detectOS = function (ua) {\n return impl.findMatch(impl.mobileDetectRules.oss0, ua) ||\n impl.findMatch(impl.mobileDetectRules.oss, ua);\n };\n\n impl.getDeviceSmallerSide = function () {\n return window.screen.width < window.screen.height ?\n window.screen.width :\n window.screen.height;\n };\n\n /**\n * Constructor for MobileDetect object.\n *
    \n * Such an object will keep a reference to the given user-agent string and cache most of the detect queries.
    \n *
    \n *\n * @example
    \n     *     var md = new MobileDetect(window.navigator.userAgent);\n     *     if (md.mobile()) {\n     *         location.href = (md.mobileGrade() === 'A') ? '/mobile/' : '/lynx/';\n     *     }\n     * 
    \n *\n * @param {string} userAgent typically taken from window.navigator.userAgent or http_header['User-Agent']\n * @param {number} [maxPhoneWidth=600] only for browsers specify a value for the maximum\n * width of smallest device side (in logical \"CSS\" pixels) until a device detected as mobile will be handled\n * as phone.\n * This is only used in cases where the device cannot be classified as phone or tablet.
    \n * See Declaring Tablet Layouts\n * for Android.
    \n * If you provide a value < 0, then this \"fuzzy\" check is disabled.\n * @constructor\n * @global\n */\n function MobileDetect(userAgent, maxPhoneWidth) {\n this.ua = prepareUserAgent(userAgent);\n this._cache = {};\n //600dp is typical 7\" tablet minimum width\n this.maxPhoneWidth = maxPhoneWidth || 600;\n }\n\n MobileDetect.prototype = {\n constructor: MobileDetect,\n\n /**\n * Returns the detected phone or tablet type or null if it is not a mobile device.\n *
    \n * For a list of possible return values see {@link MobileDetect#phone} and {@link MobileDetect#tablet}.
    \n *
    \n * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against\n * the patterns of detectmobilebrowsers.com. If this test\n * is positive, a value of UnknownPhone, UnknownTablet or\n * UnknownMobile is returned.
    \n * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    \n *
    \n * When used server-side (node.js), there is no way to tell the difference between UnknownTablet\n * and UnknownMobile, so you will get UnknownMobile here.
    \n * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for:\n * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}.\n * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use.\n *
    \n * In most cases you will use the return value just as a boolean.\n *\n * @returns {String} the key for the phone family or tablet family, e.g. \"Nexus\".\n * @function MobileDetect#mobile\n */\n mobile: function () {\n impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth);\n return this._cache.mobile;\n },\n\n /**\n * Returns the detected phone type/family string or null.\n *
    \n * The returned tablet (family or producer) is one of following keys:
    \n *
    iPhone, BlackBerry, Pixel, HTC, Nexus, Dell, Motorola, Samsung, LG, Sony, Asus,\n * Xiaomi, NokiaLumia, Micromax, Palm, Vertu, Pantech, Fly, Wiko, iMobile,\n * SimValley, Wolfgang, Alcatel, Nintendo, Amoi, INQ, OnePlus, GenericPhone
    \n *
    \n * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against\n * the patterns of detectmobilebrowsers.com. If this test\n * is positive, a value of UnknownPhone or UnknownMobile is returned.
    \n * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    \n *
    \n * When used server-side (node.js), there is no way to tell the difference between UnknownTablet\n * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile}\n * will return UnknownMobile.
    \n * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for:\n * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}.\n * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use.\n *
    \n * In most cases you will use the return value just as a boolean.\n *\n * @returns {String} the key of the phone family or producer, e.g. \"iPhone\"\n * @function MobileDetect#phone\n */\n phone: function () {\n impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth);\n return this._cache.phone;\n },\n\n /**\n * Returns the detected tablet type/family string or null.\n *
    \n * The returned tablet (family or producer) is one of following keys:
    \n *
    iPad, NexusTablet, GoogleTablet, SamsungTablet, Kindle, SurfaceTablet,\n * HPTablet, AsusTablet, BlackBerryTablet, HTCtablet, MotorolaTablet, NookTablet,\n * AcerTablet, ToshibaTablet, LGTablet, FujitsuTablet, PrestigioTablet,\n * LenovoTablet, DellTablet, YarvikTablet, MedionTablet, ArnovaTablet,\n * IntensoTablet, IRUTablet, MegafonTablet, EbodaTablet, AllViewTablet,\n * ArchosTablet, AinolTablet, NokiaLumiaTablet, SonyTablet, PhilipsTablet,\n * CubeTablet, CobyTablet, MIDTablet, MSITablet, SMiTTablet, RockChipTablet,\n * FlyTablet, bqTablet, HuaweiTablet, NecTablet, PantechTablet, BronchoTablet,\n * VersusTablet, ZyncTablet, PositivoTablet, NabiTablet, KoboTablet, DanewTablet,\n * TexetTablet, PlaystationTablet, TrekstorTablet, PyleAudioTablet, AdvanTablet,\n * DanyTechTablet, GalapadTablet, MicromaxTablet, KarbonnTablet, AllFineTablet,\n * PROSCANTablet, YONESTablet, ChangJiaTablet, GUTablet, PointOfViewTablet,\n * OvermaxTablet, HCLTablet, DPSTablet, VistureTablet, CrestaTablet,\n * MediatekTablet, ConcordeTablet, GoCleverTablet, ModecomTablet, VoninoTablet,\n * ECSTablet, StorexTablet, VodafoneTablet, EssentielBTablet, RossMoorTablet,\n * iMobileTablet, TolinoTablet, AudioSonicTablet, AMPETablet, SkkTablet,\n * TecnoTablet, JXDTablet, iJoyTablet, FX2Tablet, XoroTablet, ViewsonicTablet,\n * VerizonTablet, OdysTablet, CaptivaTablet, IconbitTablet, TeclastTablet,\n * OndaTablet, JaytechTablet, BlaupunktTablet, DigmaTablet, EvolioTablet,\n * LavaTablet, AocTablet, MpmanTablet, CelkonTablet, WolderTablet, MediacomTablet,\n * MiTablet, NibiruTablet, NexoTablet, LeaderTablet, UbislateTablet,\n * PocketBookTablet, KocasoTablet, HisenseTablet, Hudl, TelstraTablet,\n * GenericTablet
    \n *
    \n * If the device is not detected by the regular expressions from Mobile-Detect, a test is made against\n * the patterns of detectmobilebrowsers.com. If this test\n * is positive, a value of UnknownTablet or UnknownMobile is returned.
    \n * When used in browser, the decision whether phone or tablet is made based on screen.width/height.
    \n *
    \n * When used server-side (node.js), there is no way to tell the difference between UnknownTablet\n * and UnknownMobile, so you will get null here, while {@link MobileDetect#mobile}\n * will return UnknownMobile.
    \n * Be aware that since v1.0.0 in this special case you will get UnknownMobile only for:\n * {@link MobileDetect#mobile}, not for {@link MobileDetect#phone} and {@link MobileDetect#tablet}.\n * In versions before v1.0.0 all 3 methods returned UnknownMobile which was tedious to use.\n *
    \n * In most cases you will use the return value just as a boolean.\n *\n * @returns {String} the key of the tablet family or producer, e.g. \"SamsungTablet\"\n * @function MobileDetect#tablet\n */\n tablet: function () {\n impl.prepareDetectionCache(this._cache, this.ua, this.maxPhoneWidth);\n return this._cache.tablet;\n },\n\n /**\n * Returns the (first) detected user-agent string or null.\n *
    \n * The returned user-agent is one of following keys:
    \n *
    Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, Blazer,\n * Safari, WeChat, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, Mercury,\n * ObigoBrowser, NetFront, GenericBrowser, PaleMoon
    \n *
    \n * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare\n * cases where a mobile device pretends to be more than one particular browser. You can get the\n * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by\n * providing one of the defined keys as first argument to {@link MobileDetect#is}.\n *\n * @returns {String} the key for the detected user-agent or null\n * @function MobileDetect#userAgent\n */\n userAgent: function () {\n if (this._cache.userAgent === undefined) {\n this._cache.userAgent = impl.findMatch(impl.mobileDetectRules.uas, this.ua);\n }\n return this._cache.userAgent;\n },\n\n /**\n * Returns all detected user-agent strings.\n *
    \n * The array is empty or contains one or more of following keys:
    \n *
    Chrome, Dolfin, Opera, Skyfire, Edge, IE, Firefox, Bolt, TeaShark, Blazer,\n * Safari, WeChat, UCBrowser, baiduboxapp, baidubrowser, DiigoBrowser, Mercury,\n * ObigoBrowser, NetFront, GenericBrowser, PaleMoon
    \n *
    \n * In most cases calling {@link MobileDetect#userAgent} will be sufficient. But there are rare\n * cases where a mobile device pretends to be more than one particular browser. You can get the\n * list of all matches with {@link MobileDetect#userAgents} or check for a particular value by\n * providing one of the defined keys as first argument to {@link MobileDetect#is}.\n *\n * @returns {Array} the array of detected user-agent keys or []\n * @function MobileDetect#userAgents\n */\n userAgents: function () {\n if (this._cache.userAgents === undefined) {\n this._cache.userAgents = impl.findMatches(impl.mobileDetectRules.uas, this.ua);\n }\n return this._cache.userAgents;\n },\n\n /**\n * Returns the detected operating system string or null.\n *
    \n * The operating system is one of following keys:
    \n *
    AndroidOS, BlackBerryOS, PalmOS, SymbianOS, WindowsMobileOS, WindowsPhoneOS,\n * iOS, iPadOS, SailfishOS, MeeGoOS, MaemoOS, JavaOS, webOS, badaOS, BREWOS
    \n *\n * @returns {String} the key for the detected operating system.\n * @function MobileDetect#os\n */\n os: function () {\n if (this._cache.os === undefined) {\n this._cache.os = impl.detectOS(this.ua);\n }\n return this._cache.os;\n },\n\n /**\n * Get the version (as Number) of the given property in the User-Agent.\n *
    \n * Will return a float number. (eg. 2_0 will return 2.0, 4.3.1 will return 4.31)\n *\n * @param {String} key a key defining a thing which has a version.
    \n * You can use one of following keys:
    \n *
    Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast,\n * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini,\n * Opera Mobi, UCBrowser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser,\n * SamsungBrowser, Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon,\n * SailfishBrowser, Gecko, Trident, Presto, Goanna, iOS, Android, Sailfish,\n * BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows CE, Windows\n * NT, Symbian, webOS
    \n *\n * @returns {Number} the version as float or NaN if User-Agent doesn't contain this version.\n * Be careful when comparing this value with '==' operator!\n * @function MobileDetect#version\n */\n version: function (key) {\n return impl.getVersion(key, this.ua);\n },\n\n /**\n * Get the version (as String) of the given property in the User-Agent.\n *
    \n *\n * @param {String} key a key defining a thing which has a version.
    \n * You can use one of following keys:
    \n *
    Mobile, Build, Version, VendorID, iPad, iPhone, iPod, Kindle, Chrome, Coast,\n * Dolfin, Firefox, Fennec, Edge, IE, NetFront, NokiaBrowser, Opera, Opera Mini,\n * Opera Mobi, UCBrowser, MQQBrowser, MicroMessenger, baiduboxapp, baidubrowser,\n * SamsungBrowser, Iron, Safari, Skyfire, Tizen, Webkit, PaleMoon,\n * SailfishBrowser, Gecko, Trident, Presto, Goanna, iOS, Android, Sailfish,\n * BlackBerry, BREW, Java, Windows Phone OS, Windows Phone, Windows CE, Windows\n * NT, Symbian, webOS
    \n *\n * @returns {String} the \"raw\" version as String or null if User-Agent doesn't contain this version.\n *\n * @function MobileDetect#versionStr\n */\n versionStr: function (key) {\n return impl.getVersionStr(key, this.ua);\n },\n\n /**\n * Global test key against userAgent, os, phone, tablet and some other properties of userAgent string.\n *\n * @param {String} key the key (case-insensitive) of a userAgent, an operating system, phone or\n * tablet family.
    \n * For a complete list of possible values, see {@link MobileDetect#userAgent},\n * {@link MobileDetect#os}, {@link MobileDetect#phone}, {@link MobileDetect#tablet}.
    \n * Additionally you have following keys:
    \n *
    Bot, MobileBot, DesktopMode, TV, WebKit, Console, Watch
    \n *\n * @returns {boolean} true when the given key is one of the defined keys of userAgent, os, phone,\n * tablet or one of the listed additional keys, otherwise false\n * @function MobileDetect#is\n */\n is: function (key) {\n return containsIC(this.userAgents(), key) ||\n equalIC(key, this.os()) ||\n equalIC(key, this.phone()) ||\n equalIC(key, this.tablet()) ||\n containsIC(impl.findMatches(impl.mobileDetectRules.utils, this.ua), key);\n },\n\n /**\n * Do a quick test against navigator::userAgent.\n *\n * @param {String|RegExp} pattern the pattern, either as String or RegExp\n * (a string will be converted to a case-insensitive RegExp).\n * @returns {boolean} true when the pattern matches, otherwise false\n * @function MobileDetect#match\n */\n match: function (pattern) {\n if (!(pattern instanceof RegExp)) {\n pattern = new RegExp(pattern, 'i');\n }\n return pattern.test(this.ua);\n },\n\n /**\n * Checks whether the mobile device can be considered as phone regarding screen.width.\n *
    \n * Obviously this method makes sense in browser environments only (not for Node.js)!\n * @param {number} [maxPhoneWidth] the maximum logical pixels (aka. CSS-pixels) to be considered as phone.
    \n * The argument is optional and if not present or falsy, the value of the constructor is taken.\n * @returns {boolean|undefined} undefined if screen size wasn't detectable, else true\n * when screen.width is less or equal to maxPhoneWidth, otherwise false.
    \n * Will always return undefined server-side.\n */\n isPhoneSized: function (maxPhoneWidth) {\n return MobileDetect.isPhoneSized(maxPhoneWidth || this.maxPhoneWidth);\n },\n\n /**\n * Returns the mobile grade ('A', 'B', 'C').\n *\n * @returns {String} one of the mobile grades ('A', 'B', 'C').\n * @function MobileDetect#mobileGrade\n */\n mobileGrade: function () {\n if (this._cache.grade === undefined) {\n this._cache.grade = impl.mobileGrade(this);\n }\n return this._cache.grade;\n }\n };\n\n // environment-dependent\n if (typeof window !== 'undefined' && window.screen) {\n MobileDetect.isPhoneSized = function (maxPhoneWidth) {\n return maxPhoneWidth < 0 ? undefined : impl.getDeviceSmallerSide() <= maxPhoneWidth;\n };\n } else {\n MobileDetect.isPhoneSized = function () {};\n }\n\n // should not be replaced by a completely new object - just overwrite existing methods\n MobileDetect._impl = impl;\n \n MobileDetect.version = '1.4.5 2021-03-13';\n\n return MobileDetect;\n}); // end of call of define()\n})((function (undefined) {\n if (typeof module !== 'undefined' && module.exports) {\n return function (factory) { module.exports = factory(); };\n } else if (typeof define === 'function' && define.amd) {\n return define;\n } else if (typeof window !== 'undefined') {\n return function (factory) { window.MobileDetect = factory(); };\n } else {\n // please file a bug if you get this error!\n throw new Error('unknown environment');\n }\n})());","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Lybia) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(\n '_'\n ),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex = /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex = /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex: /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort: 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex = /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(\n '_'\n );\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(\n ' '\n );\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (\n $0,\n $1,\n $2\n ) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n });\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(\n '_'\n ),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex: /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex: /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једне минуте'],\n mm: ['минут', 'минуте', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n dd: ['дан', 'дана', 'дана'],\n MM: ['месец', 'месеца', 'месеци'],\n yy: ['година', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'дан',\n dd: translator.translate,\n M: 'месец',\n MM: translator.translate,\n y: 'годину',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar inspectCustom = require('./util.inspect').custom;\nvar inspectSymbol = inspectCustom && isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function') {\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if ('cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function') {\n return obj[inspectSymbol]();\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = {};\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n if (has.call(obj, key)) {\n obj[key] = utils.combine(obj[key], val);\n } else {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var index = parseInt(cleanRoot, 10);\n if (!options.parseArrays && cleanRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== cleanRoot\n && String(index) === cleanRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (cleanRoot !== '__proto__') {\n obj[cleanRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n return {\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n var valuesArray = split.call(String(obj), ',');\n var valuesJoined = '';\n for (var i = 0; i < valuesArray.length; ++i) {\n valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n }\n return [formatter(keyValue) + '=' + valuesJoined];\n }\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix\n : prefix + (allowDots ? '.' + key : '[' + key + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n strictNullHandling,\n skipNulls,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var arrayFormat;\n if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if (opts && 'indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = 'indices';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n options.strictNullHandling,\n options.skipNulls,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","import { Ace, Range } from \"ace-builds\";\nimport * as AceBuilds from \"ace-builds\";\nimport * as PropTypes from \"prop-types\";\nimport * as React from \"react\";\nconst isEqual = require(\"lodash.isequal\");\nimport {\n debounce,\n editorEvents,\n editorOptions,\n getAceInstance\n} from \"./editorOptions\";\nconst ace = getAceInstance();\n\nimport {\n IAceEditor,\n IAceOptions,\n ICommand,\n IEditorProps,\n IMarker\n} from \"./types\";\n/**\n * See https://github.com/ajaxorg/ace/wiki/Configuring-Ace\n */\n\nexport interface IAceEditorProps {\n name?: string;\n style?: React.CSSProperties;\n /** For available modes see https://github.com/thlorenz/brace/tree/master/mode */\n mode?: string | object;\n /** For available themes see https://github.com/thlorenz/brace/tree/master/theme */\n theme?: string;\n height?: string;\n width?: string;\n className?: string;\n fontSize?: number | string;\n showGutter?: boolean;\n showPrintMargin?: boolean;\n highlightActiveLine?: boolean;\n focus?: boolean;\n cursorStart?: number;\n wrapEnabled?: boolean;\n readOnly?: boolean;\n minLines?: number;\n maxLines?: number;\n navigateToFileEnd?: boolean;\n debounceChangePeriod?: number;\n enableBasicAutocompletion?: boolean | string[];\n enableLiveAutocompletion?: boolean | string[];\n tabSize?: number;\n value?: string;\n placeholder?: string;\n defaultValue?: string;\n scrollMargin?: number[];\n enableSnippets?: boolean;\n onSelectionChange?: (value: any, event?: any) => void;\n onCursorChange?: (value: any, event?: any) => void;\n onInput?: (event?: any) => void;\n onLoad?: (editor: Ace.Editor) => void;\n onValidate?: (annotations: Ace.Annotation[]) => void;\n onBeforeLoad?: (ace: typeof AceBuilds) => void;\n onChange?: (value: string, event?: any) => void;\n onSelection?: (selectedText: string, event?: any) => void;\n onCopy?: (value: string) => void;\n onPaste?: (value: string) => void;\n onFocus?: (event: any, editor?: Ace.Editor) => void;\n onBlur?: (event: any, editor?: Ace.Editor) => void;\n onScroll?: (editor: IEditorProps) => void;\n editorProps?: IEditorProps;\n setOptions?: IAceOptions;\n keyboardHandler?: string;\n commands?: ICommand[];\n annotations?: Ace.Annotation[];\n markers?: IMarker[];\n}\n\nexport default class ReactAce extends React.Component {\n public static propTypes: PropTypes.ValidationMap = {\n mode: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n focus: PropTypes.bool,\n theme: PropTypes.string,\n name: PropTypes.string,\n className: PropTypes.string,\n height: PropTypes.string,\n width: PropTypes.string,\n fontSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n showGutter: PropTypes.bool,\n onChange: PropTypes.func,\n onCopy: PropTypes.func,\n onPaste: PropTypes.func,\n onFocus: PropTypes.func,\n onInput: PropTypes.func,\n onBlur: PropTypes.func,\n onScroll: PropTypes.func,\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n onLoad: PropTypes.func,\n onSelectionChange: PropTypes.func,\n onCursorChange: PropTypes.func,\n onBeforeLoad: PropTypes.func,\n onValidate: PropTypes.func,\n minLines: PropTypes.number,\n maxLines: PropTypes.number,\n readOnly: PropTypes.bool,\n highlightActiveLine: PropTypes.bool,\n tabSize: PropTypes.number,\n showPrintMargin: PropTypes.bool,\n cursorStart: PropTypes.number,\n debounceChangePeriod: PropTypes.number,\n editorProps: PropTypes.object,\n setOptions: PropTypes.object,\n style: PropTypes.object,\n scrollMargin: PropTypes.array,\n annotations: PropTypes.array,\n markers: PropTypes.array,\n keyboardHandler: PropTypes.string,\n wrapEnabled: PropTypes.bool,\n enableSnippets: PropTypes.bool,\n enableBasicAutocompletion: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.array\n ]),\n enableLiveAutocompletion: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.array\n ]),\n navigateToFileEnd: PropTypes.bool,\n commands: PropTypes.array,\n placeholder: PropTypes.string\n };\n public static defaultProps: Partial = {\n name: \"ace-editor\",\n focus: false,\n mode: \"\",\n theme: \"\",\n height: \"500px\",\n width: \"500px\",\n fontSize: 12,\n enableSnippets: false,\n showGutter: true,\n onChange: null,\n onPaste: null,\n onLoad: null,\n onScroll: null,\n minLines: null,\n maxLines: null,\n readOnly: false,\n highlightActiveLine: true,\n showPrintMargin: true,\n tabSize: 4,\n cursorStart: 1,\n editorProps: {},\n style: {},\n scrollMargin: [0, 0, 0, 0],\n setOptions: {},\n wrapEnabled: false,\n enableBasicAutocompletion: false,\n enableLiveAutocompletion: false,\n placeholder: null,\n navigateToFileEnd: true\n };\n public editor: IAceEditor;\n public refEditor: HTMLElement;\n public debounce: (fn: any, delay: number) => (...args: any) => void;\n // [index: string]: any;\n public silent: boolean;\n constructor(props: IAceEditorProps) {\n super(props);\n editorEvents.forEach(method => {\n this[method] = this[method].bind(this);\n });\n this.debounce = debounce;\n }\n public isInShadow(node: HTMLElement): boolean {\n let parent = node && node.parentNode;\n while (parent) {\n if (parent.toString() === \"[object ShadowRoot]\") {\n return true;\n }\n parent = parent.parentNode;\n }\n return false;\n }\n public componentDidMount() {\n const {\n className,\n onBeforeLoad,\n onValidate,\n mode,\n focus,\n theme,\n fontSize,\n value,\n defaultValue,\n showGutter,\n wrapEnabled,\n showPrintMargin,\n scrollMargin = [0, 0, 0, 0],\n keyboardHandler,\n onLoad,\n commands,\n annotations,\n markers,\n placeholder\n } = this.props;\n\n this.editor = ace.edit(this.refEditor);\n\n if (onBeforeLoad) {\n onBeforeLoad(ace);\n }\n\n const editorProps = Object.keys(this.props.editorProps);\n for (let i = 0; i < editorProps.length; i++) {\n this.editor[editorProps[i]] = this.props.editorProps[editorProps[i]];\n }\n if (this.props.debounceChangePeriod) {\n this.onChange = this.debounce(\n this.onChange,\n this.props.debounceChangePeriod\n );\n }\n this.editor.renderer.setScrollMargin(\n scrollMargin[0],\n scrollMargin[1],\n scrollMargin[2],\n scrollMargin[3]\n );\n if (this.isInShadow(this.refEditor)) {\n this.editor.renderer.attachToShadowRoot();\n }\n this.editor\n .getSession()\n .setMode(\n typeof mode === \"string\" ? `ace/mode/${mode}` : (mode as Ace.SyntaxMode)\n );\n if(theme && theme !== \"\")\n this.editor.setTheme(`ace/theme/${theme}`);\n this.editor.setFontSize(\n typeof fontSize === \"number\" ? `${fontSize}px` : fontSize\n );\n this.editor\n .getSession()\n .setValue(!defaultValue ? value || \"\" : defaultValue);\n\n if (this.props.navigateToFileEnd) {\n this.editor.navigateFileEnd();\n }\n this.editor.renderer.setShowGutter(showGutter);\n this.editor.getSession().setUseWrapMode(wrapEnabled);\n this.editor.setShowPrintMargin(showPrintMargin);\n this.editor.on(\"focus\", this.onFocus);\n this.editor.on(\"blur\", this.onBlur);\n this.editor.on(\"copy\", this.onCopy);\n this.editor.on(\"paste\", this.onPaste);\n this.editor.on(\"change\", this.onChange);\n this.editor.on(\"input\", this.onInput);\n if (placeholder) {\n this.updatePlaceholder();\n }\n this.editor\n .getSession()\n .selection.on(\"changeSelection\", this.onSelectionChange);\n this.editor.getSession().selection.on(\"changeCursor\", this.onCursorChange);\n if (onValidate) {\n // @ts-ignore types don't include\n this.editor.getSession().on(\"changeAnnotation\", () => {\n // tslint:disable-next-line:no-shadowed-variable\n const annotations = this.editor.getSession().getAnnotations();\n this.props.onValidate(annotations);\n });\n }\n this.editor.session.on(\"changeScrollTop\", this.onScroll);\n this.editor.getSession().setAnnotations(annotations || []);\n if (markers && markers.length > 0) {\n this.handleMarkers(markers);\n }\n\n // get a list of possible options to avoid 'misspelled option errors'\n const availableOptions = this.editor.$options;\n editorOptions.forEach(option => {\n if (availableOptions.hasOwnProperty(option)) {\n // @ts-ignore\n this.editor.setOption(option, this.props[option]);\n } else if (this.props[option]) {\n console.warn(\n `ReactAce: editor option ${option} was activated but not found. Did you need to import a related tool or did you possibly mispell the option?`\n );\n }\n });\n\n this.handleOptions(this.props);\n\n if (Array.isArray(commands)) {\n commands.forEach(command => {\n if (typeof command.exec === \"string\") {\n (this.editor.commands as any).bindKey(command.bindKey, command.exec);\n } else {\n (this.editor.commands as any).addCommand(command);\n }\n });\n }\n\n if (keyboardHandler) {\n this.editor.setKeyboardHandler(\"ace/keyboard/\" + keyboardHandler);\n }\n\n if (className) {\n this.refEditor.className += \" \" + className;\n }\n\n if (onLoad) {\n onLoad(this.editor);\n }\n\n this.editor.resize();\n\n if (focus) {\n this.editor.focus();\n }\n }\n\n public componentDidUpdate(prevProps: IAceEditorProps) {\n const oldProps = prevProps;\n const nextProps = this.props;\n\n for (let i = 0; i < editorOptions.length; i++) {\n const option = editorOptions[i];\n if (nextProps[option] !== oldProps[option]) {\n // @ts-ignore\n this.editor.setOption(option, nextProps[option]);\n }\n }\n\n if (nextProps.className !== oldProps.className) {\n const appliedClasses = this.refEditor.className;\n const appliedClassesArray = appliedClasses.trim().split(\" \");\n const oldClassesArray = oldProps.className.trim().split(\" \");\n oldClassesArray.forEach(oldClass => {\n const index = appliedClassesArray.indexOf(oldClass);\n appliedClassesArray.splice(index, 1);\n });\n this.refEditor.className =\n \" \" + nextProps.className + \" \" + appliedClassesArray.join(\" \");\n }\n\n // First process editor value, as it may create a new session (see issue #300)\n if (\n this.editor &&\n nextProps.value != null &&\n this.editor.getValue() !== nextProps.value\n ) {\n // editor.setValue is a synchronous function call, change event is emitted before setValue return.\n this.silent = true;\n const pos = this.editor.session.selection.toJSON();\n this.editor.setValue(nextProps.value, nextProps.cursorStart);\n this.editor.session.selection.fromJSON(pos);\n this.silent = false;\n }\n\n if (nextProps.placeholder !== oldProps.placeholder) {\n this.updatePlaceholder();\n }\n if (nextProps.mode !== oldProps.mode) {\n this.editor\n .getSession()\n .setMode(\n typeof nextProps.mode === \"string\"\n ? `ace/mode/${nextProps.mode}`\n : (nextProps.mode as Ace.SyntaxMode)\n );\n }\n if (nextProps.theme !== oldProps.theme) {\n this.editor.setTheme(\"ace/theme/\" + nextProps.theme);\n }\n if (nextProps.keyboardHandler !== oldProps.keyboardHandler) {\n if (nextProps.keyboardHandler) {\n this.editor.setKeyboardHandler(\n \"ace/keyboard/\" + nextProps.keyboardHandler\n );\n } else {\n this.editor.setKeyboardHandler(null);\n }\n }\n if (nextProps.fontSize !== oldProps.fontSize) {\n this.editor.setFontSize(\n typeof nextProps.fontSize === \"number\"\n ? `${nextProps.fontSize}px`\n : nextProps.fontSize\n );\n }\n if (nextProps.wrapEnabled !== oldProps.wrapEnabled) {\n this.editor.getSession().setUseWrapMode(nextProps.wrapEnabled);\n }\n if (nextProps.showPrintMargin !== oldProps.showPrintMargin) {\n this.editor.setShowPrintMargin(nextProps.showPrintMargin);\n }\n if (nextProps.showGutter !== oldProps.showGutter) {\n this.editor.renderer.setShowGutter(nextProps.showGutter);\n }\n if (!isEqual(nextProps.setOptions, oldProps.setOptions)) {\n this.handleOptions(nextProps);\n }\n if (!isEqual(nextProps.annotations, oldProps.annotations)) {\n this.editor.getSession().setAnnotations(nextProps.annotations || []);\n }\n if (\n !isEqual(nextProps.markers, oldProps.markers) &&\n Array.isArray(nextProps.markers)\n ) {\n this.handleMarkers(nextProps.markers);\n }\n\n // this doesn't look like it works at all....\n if (!isEqual(nextProps.scrollMargin, oldProps.scrollMargin)) {\n this.handleScrollMargins(nextProps.scrollMargin);\n }\n\n if (\n prevProps.height !== this.props.height ||\n prevProps.width !== this.props.width\n ) {\n this.editor.resize();\n }\n if (this.props.focus && !prevProps.focus) {\n this.editor.focus();\n }\n }\n\n public handleScrollMargins(margins = [0, 0, 0, 0]) {\n this.editor.renderer.setScrollMargin(\n margins[0],\n margins[1],\n margins[2],\n margins[3]\n );\n }\n\n public componentWillUnmount() {\n this.editor.destroy();\n this.editor = null;\n }\n\n public onChange(event: any) {\n if (this.props.onChange && !this.silent) {\n const value = this.editor.getValue();\n this.props.onChange(value, event);\n }\n }\n\n public onSelectionChange(event: any) {\n if (this.props.onSelectionChange) {\n const value = this.editor.getSelection();\n this.props.onSelectionChange(value, event);\n }\n }\n public onCursorChange(event: any) {\n if (this.props.onCursorChange) {\n const value = this.editor.getSelection();\n this.props.onCursorChange(value, event);\n }\n }\n public onInput(event?: any) {\n if (this.props.onInput) {\n this.props.onInput(event);\n }\n if (this.props.placeholder) {\n this.updatePlaceholder();\n }\n }\n public onFocus(event: any) {\n if (this.props.onFocus) {\n this.props.onFocus(event, this.editor);\n }\n }\n\n public onBlur(event: any) {\n if (this.props.onBlur) {\n this.props.onBlur(event, this.editor);\n }\n }\n\n public onCopy({ text }: { text: string }) {\n if (this.props.onCopy) {\n this.props.onCopy(text);\n }\n }\n\n public onPaste({ text }: { text: string }) {\n if (this.props.onPaste) {\n this.props.onPaste(text);\n }\n }\n\n public onScroll() {\n if (this.props.onScroll) {\n this.props.onScroll(this.editor);\n }\n }\n\n public handleOptions(props: IAceEditorProps) {\n const setOptions = Object.keys(props.setOptions);\n for (let y = 0; y < setOptions.length; y++) {\n // @ts-ignore\n this.editor.setOption(setOptions[y], props.setOptions[setOptions[y]]);\n }\n }\n\n public handleMarkers(markers: IMarker[]) {\n // remove foreground markers\n let currentMarkers = this.editor.getSession().getMarkers(true);\n for (const i in currentMarkers) {\n if (currentMarkers.hasOwnProperty(i)) {\n this.editor.getSession().removeMarker(currentMarkers[i].id);\n }\n }\n // remove background markers except active line marker and selected word marker\n currentMarkers = this.editor.getSession().getMarkers(false);\n for (const i in currentMarkers) {\n if (\n currentMarkers.hasOwnProperty(i) &&\n currentMarkers[i].clazz !== \"ace_active-line\" &&\n currentMarkers[i].clazz !== \"ace_selected-word\"\n ) {\n this.editor.getSession().removeMarker(currentMarkers[i].id);\n }\n }\n // add new markers\n markers.forEach(\n ({\n startRow,\n startCol,\n endRow,\n endCol,\n className,\n type,\n inFront = false\n }) => {\n const range = new Range(startRow, startCol, endRow, endCol);\n this.editor.getSession().addMarker(range, className, type, inFront);\n }\n );\n }\n\n public updatePlaceholder() {\n // Adapted from https://stackoverflow.com/questions/26695708/how-can-i-add-placeholder-text-when-the-editor-is-empty\n\n const editor = this.editor;\n const { placeholder } = this.props;\n\n const showPlaceholder = !editor.session.getValue().length;\n let node = editor.renderer.placeholderNode;\n\n if (!showPlaceholder && node) {\n editor.renderer.scroller.removeChild(editor.renderer.placeholderNode);\n editor.renderer.placeholderNode = null;\n } else if (showPlaceholder && !node) {\n node = editor.renderer.placeholderNode = document.createElement(\"div\");\n node.textContent = placeholder || \"\";\n node.className = \"ace_comment ace_placeholder\";\n node.style.padding = \"0 9px\";\n node.style.position = \"absolute\";\n node.style.zIndex = \"3\";\n editor.renderer.scroller.appendChild(node);\n } else if (showPlaceholder && node) {\n node.textContent = placeholder;\n }\n }\n\n public updateRef(item: HTMLElement) {\n this.refEditor = item;\n }\n\n public render() {\n const { name, width, height, style } = this.props;\n const divStyle = { width, height, ...style };\n return
    ;\n }\n}\n","import * as PropTypes from \"prop-types\";\nimport * as React from \"react\";\nimport SplitEditor from \"./split\";\nconst DiffMatchPatch = require(\"diff-match-patch\");\nimport { IEditorProps } from \"./types\";\n\nexport interface IDiffEditorProps {\n cursorStart?: number;\n editorProps?: object;\n enableBasicAutocompletion?: boolean | string[];\n enableLiveAutocompletion?: boolean | string[];\n focus?: boolean;\n fontSize?: number;\n height?: string;\n highlightActiveLine?: boolean;\n maxLines?: number;\n minLines?: number;\n mode?: string;\n name?: string;\n className?: string;\n onLoad?: (editor: IEditorProps) => void;\n onChange?: (value: string[], event?: any) => void;\n onPaste?: (value: string) => void;\n onScroll?: (editor: IEditorProps) => void;\n orientation?: string;\n readOnly?: boolean;\n scrollMargin?: number[];\n setOptions?: object;\n showGutter?: boolean;\n showPrintMargin?: boolean;\n splits?: number;\n style?: object;\n tabSize?: number;\n theme?: string;\n value?: string[];\n width?: string;\n wrapEnabled?: boolean;\n}\n\nexport interface IDiffEditorState {\n value: string[];\n}\n\nexport default class DiffComponent extends React.Component<\n IDiffEditorProps,\n IDiffEditorState\n> {\n public static propTypes: PropTypes.ValidationMap = {\n cursorStart: PropTypes.number,\n editorProps: PropTypes.object,\n enableBasicAutocompletion: PropTypes.bool,\n enableLiveAutocompletion: PropTypes.bool,\n focus: PropTypes.bool,\n fontSize: PropTypes.number,\n height: PropTypes.string,\n highlightActiveLine: PropTypes.bool,\n maxLines: PropTypes.number,\n minLines: PropTypes.number,\n mode: PropTypes.string,\n name: PropTypes.string,\n className: PropTypes.string,\n onLoad: PropTypes.func,\n onPaste: PropTypes.func,\n onScroll: PropTypes.func,\n onChange: PropTypes.func,\n orientation: PropTypes.string,\n readOnly: PropTypes.bool,\n scrollMargin: PropTypes.array,\n setOptions: PropTypes.object,\n showGutter: PropTypes.bool,\n showPrintMargin: PropTypes.bool,\n splits: PropTypes.number,\n style: PropTypes.object,\n tabSize: PropTypes.number,\n theme: PropTypes.string,\n value: PropTypes.array,\n width: PropTypes.string,\n wrapEnabled: PropTypes.bool\n };\n\n public static defaultProps: Partial = {\n cursorStart: 1,\n editorProps: {},\n enableBasicAutocompletion: false,\n enableLiveAutocompletion: false,\n focus: false,\n fontSize: 12,\n height: \"500px\",\n highlightActiveLine: true,\n maxLines: null,\n minLines: null,\n mode: \"\",\n name: \"ace-editor\",\n onLoad: null,\n onScroll: null,\n onPaste: null,\n onChange: null,\n orientation: \"beside\",\n readOnly: false,\n scrollMargin: [0, 0, 0, 0],\n setOptions: {},\n showGutter: true,\n showPrintMargin: true,\n splits: 2,\n style: {},\n tabSize: 4,\n theme: \"github\",\n value: [\"\", \"\"],\n width: \"500px\",\n wrapEnabled: true\n };\n constructor(props: IDiffEditorProps) {\n super(props);\n this.state = {\n value: this.props.value\n };\n this.onChange = this.onChange.bind(this);\n this.diff = this.diff.bind(this);\n }\n\n public componentDidUpdate() {\n const { value } = this.props;\n\n if (value !== this.state.value) {\n this.setState({ value });\n }\n }\n\n public onChange(value: any) {\n this.setState({\n value\n });\n if (this.props.onChange) {\n this.props.onChange(value);\n }\n }\n\n public diff() {\n const dmp = new DiffMatchPatch();\n const lhString = this.state.value[0];\n const rhString = this.state.value[1];\n\n if (lhString.length === 0 && rhString.length === 0) {\n return [];\n }\n\n const diff = dmp.diff_main(lhString, rhString);\n dmp.diff_cleanupSemantic(diff);\n\n const diffedLines = this.generateDiffedLines(diff);\n const codeEditorSettings = this.setCodeMarkers(diffedLines);\n return codeEditorSettings;\n }\n\n public generateDiffedLines(diff: any) {\n const C = {\n DIFF_EQUAL: 0,\n DIFF_DELETE: -1,\n DIFF_INSERT: 1\n };\n\n const diffedLines = {\n left: [] as any[],\n right: [] as any[]\n };\n\n const cursor = {\n left: 1,\n right: 1\n };\n\n diff.forEach((chunk: any) => {\n const chunkType = chunk[0];\n const text = chunk[1];\n let lines = text.split(\"\\n\").length - 1;\n\n // diff-match-patch sometimes returns empty strings at random\n if (text.length === 0) {\n return;\n }\n\n const firstChar = text[0];\n const lastChar = text[text.length - 1];\n let linesToHighlight = 0;\n\n switch (chunkType) {\n case C.DIFF_EQUAL:\n cursor.left += lines;\n cursor.right += lines;\n\n break;\n case C.DIFF_DELETE:\n // If the deletion starts with a newline, push the cursor down to that line\n if (firstChar === \"\\n\") {\n cursor.left++;\n lines--;\n }\n\n linesToHighlight = lines;\n\n // If the deletion does not include a newline, highlight the same line on the right\n if (linesToHighlight === 0) {\n diffedLines.right.push({\n startLine: cursor.right,\n endLine: cursor.right\n });\n }\n\n // If the last character is a newline, we don't want to highlight that line\n if (lastChar === \"\\n\") {\n linesToHighlight -= 1;\n }\n\n diffedLines.left.push({\n startLine: cursor.left,\n endLine: cursor.left + linesToHighlight\n });\n\n cursor.left += lines;\n break;\n case C.DIFF_INSERT:\n // If the insertion starts with a newline, push the cursor down to that line\n if (firstChar === \"\\n\") {\n cursor.right++;\n lines--;\n }\n\n linesToHighlight = lines;\n\n // If the insertion does not include a newline, highlight the same line on the left\n if (linesToHighlight === 0) {\n diffedLines.left.push({\n startLine: cursor.left,\n endLine: cursor.left\n });\n }\n\n // If the last character is a newline, we don't want to highlight that line\n if (lastChar === \"\\n\") {\n linesToHighlight -= 1;\n }\n\n diffedLines.right.push({\n startLine: cursor.right,\n endLine: cursor.right + linesToHighlight\n });\n\n cursor.right += lines;\n break;\n default:\n throw new Error(\"Diff type was not defined.\");\n }\n });\n return diffedLines;\n }\n\n // Receives a collection of line numbers and iterates through them to highlight appropriately\n // Returns an object that tells the render() method how to display the code editors\n public setCodeMarkers(diffedLines: any = { left: [], right: [] }) {\n const codeEditorSettings = [];\n\n const newMarkerSet = {\n left: [] as any[],\n right: [] as any[]\n };\n\n for (let i = 0; i < diffedLines.left.length; i++) {\n const markerObj = {\n startRow: diffedLines.left[i].startLine - 1,\n endRow: diffedLines.left[i].endLine,\n type: \"text\",\n className: \"codeMarker\"\n };\n newMarkerSet.left.push(markerObj);\n }\n\n for (let i = 0; i < diffedLines.right.length; i++) {\n const markerObj = {\n startRow: diffedLines.right[i].startLine - 1,\n endRow: diffedLines.right[i].endLine,\n type: \"text\",\n className: \"codeMarker\"\n };\n newMarkerSet.right.push(markerObj);\n }\n\n codeEditorSettings[0] = newMarkerSet.left;\n codeEditorSettings[1] = newMarkerSet.right;\n\n return codeEditorSettings;\n }\n\n public render() {\n const markers = this.diff();\n return (\n \n );\n }\n}\n","import * as AceBuilds from \"ace-builds\";\n\ntype EditorOption =\n | \"minLines\"\n | \"maxLines\"\n | \"readOnly\"\n | \"highlightActiveLine\"\n | \"tabSize\"\n | \"enableBasicAutocompletion\"\n | \"enableLiveAutocompletion\"\n | \"enableSnippets\";\n\nconst editorOptions: EditorOption[] = [\n \"minLines\",\n \"maxLines\",\n \"readOnly\",\n \"highlightActiveLine\",\n \"tabSize\",\n \"enableBasicAutocompletion\",\n \"enableLiveAutocompletion\",\n \"enableSnippets\"\n];\n\ntype EditorEvent =\n | \"onChange\"\n | \"onFocus\"\n | \"onInput\"\n | \"onBlur\"\n | \"onCopy\"\n | \"onPaste\"\n | \"onSelectionChange\"\n | \"onCursorChange\"\n | \"onScroll\"\n | \"handleOptions\"\n | \"updateRef\";\n\nconst editorEvents: EditorEvent[] = [\n \"onChange\",\n \"onFocus\",\n \"onInput\",\n \"onBlur\",\n \"onCopy\",\n \"onPaste\",\n \"onSelectionChange\",\n \"onCursorChange\",\n \"onScroll\",\n \"handleOptions\",\n \"updateRef\"\n];\n\n// Typescript globals definition to allow us to create a window object during SSR.\ndeclare global {\n namespace NodeJS {\n // tslint:disable-next-line\n interface Global {\n window: any;\n }\n }\n}\nconst getAceInstance = (): typeof AceBuilds => {\n let ace;\n if (typeof window === \"undefined\") {\n // ace-builds just needs some window object to attach ace to.\n // During SSR even just an empty object will work.\n global.window = {};\n ace = require(\"ace-builds\");\n // And it can be discarded immediately afterward to avoid confusing\n // other libraries that might detect SSR the same way we did.\n delete global.window;\n } else if ((window as any).ace) {\n // Fallback for ace.require when vanilla ACE is hosted over a CDN\n ace = (window as any).ace;\n ace.acequire = (window as any).ace.require || (window as any).ace.acequire;\n } else {\n ace = require(\"ace-builds\");\n }\n return ace;\n};\n\nconst debounce = (fn: (...args: any[]) => void, delay: number) => {\n let timer: any = null;\n // tslint:disable-next-line\n return function () {\n const context = this;\n const args = arguments;\n clearTimeout(timer);\n timer = setTimeout(() => {\n fn.apply(context, args);\n }, delay);\n };\n};\nexport { editorOptions, editorEvents, debounce, getAceInstance };\n","import ace, { IAceEditorProps } from \"./ace\";\nimport diff, { IDiffEditorProps, IDiffEditorState } from \"./diff\";\nimport split, { ISplitEditorProps } from \"./split\";\nimport {\n IAceOptions,\n IAnnotation,\n ICommand,\n ICommandBindKey,\n ICommandManager,\n IEditorProps,\n IMarker\n} from \"./types\";\nexport {\n split,\n diff,\n IAceOptions,\n IAceEditorProps,\n IAnnotation,\n ICommand,\n ICommandBindKey,\n ICommandManager,\n IDiffEditorProps,\n IDiffEditorState,\n IEditorProps,\n IMarker,\n ISplitEditorProps\n};\nexport default ace;\n","import {\n debounce,\n editorEvents,\n editorOptions,\n getAceInstance\n} from \"./editorOptions\";\nconst ace = getAceInstance();\nimport { Ace, Range } from \"ace-builds\";\nimport Editor = Ace.Editor;\nimport { Split } from \"ace-builds/src-noconflict/ext-split\";\nimport * as PropTypes from \"prop-types\";\nimport * as React from \"react\";\nconst isEqual = require(\"lodash.isequal\");\nconst get = require(\"lodash.get\");\nimport {\n IAceOptions,\n IAnnotation,\n ICommand,\n IEditorProps,\n IMarker\n} from \"./types\";\n\ninterface IAceEditorClass extends Editor {\n [index: string]: any;\n $options?: any;\n}\n\nexport interface ISplitEditorProps {\n [index: string]: any;\n name?: string;\n style?: object;\n /** For available modes see https://github.com/thlorenz/brace/tree/master/mode */\n mode?: string;\n /** For available themes see https://github.com/thlorenz/brace/tree/master/theme */\n theme?: string;\n height?: string;\n width?: string;\n className?: string;\n fontSize?: number | string;\n showGutter?: boolean;\n showPrintMargin?: boolean;\n highlightActiveLine?: boolean;\n focus?: boolean;\n splits: number;\n debounceChangePeriod?: number;\n cursorStart?: number;\n wrapEnabled?: boolean;\n readOnly?: boolean;\n minLines?: number;\n maxLines?: number;\n enableBasicAutocompletion?: boolean | string[];\n enableLiveAutocompletion?: boolean | string[];\n tabSize?: number;\n value?: string[];\n defaultValue?: string[];\n scrollMargin?: number[];\n orientation?: string;\n onSelectionChange?: (value: any, event?: any) => void;\n onCursorChange?: (value: any, event?: any) => void;\n onInput?: (event?: any) => void;\n onLoad?: (editor: IEditorProps) => void;\n onBeforeLoad?: (ace: any) => void;\n onChange?: (value: string[], event?: any) => void;\n onSelection?: (selectedText: string, event?: any) => void;\n onCopy?: (value: string) => void;\n onPaste?: (value: string) => void;\n onFocus?: (value: Event) => void;\n onBlur?: (value: Event) => void;\n onScroll?: (editor: IEditorProps) => void;\n editorProps?: IEditorProps;\n setOptions?: IAceOptions;\n keyboardHandler?: string;\n commands?: ICommand[];\n annotations?: IAnnotation[][];\n markers?: IMarker[][];\n}\n\nexport default class SplitComponent extends React.Component<\n ISplitEditorProps,\n undefined\n> {\n [index: string]: any;\n\n public static propTypes: PropTypes.ValidationMap = {\n className: PropTypes.string,\n debounceChangePeriod: PropTypes.number,\n defaultValue: PropTypes.arrayOf(PropTypes.string),\n focus: PropTypes.bool,\n fontSize: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.string,\n mode: PropTypes.string,\n name: PropTypes.string,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onCopy: PropTypes.func,\n onFocus: PropTypes.func,\n onInput: PropTypes.func,\n onLoad: PropTypes.func,\n onPaste: PropTypes.func,\n onScroll: PropTypes.func,\n orientation: PropTypes.string,\n showGutter: PropTypes.bool,\n splits: PropTypes.number,\n theme: PropTypes.string,\n value: PropTypes.arrayOf(PropTypes.string),\n width: PropTypes.string,\n onSelectionChange: PropTypes.func,\n onCursorChange: PropTypes.func,\n onBeforeLoad: PropTypes.func,\n minLines: PropTypes.number,\n maxLines: PropTypes.number,\n readOnly: PropTypes.bool,\n highlightActiveLine: PropTypes.bool,\n tabSize: PropTypes.number,\n showPrintMargin: PropTypes.bool,\n cursorStart: PropTypes.number,\n editorProps: PropTypes.object,\n setOptions: PropTypes.object,\n style: PropTypes.object,\n scrollMargin: PropTypes.array,\n annotations: PropTypes.array,\n markers: PropTypes.array,\n keyboardHandler: PropTypes.string,\n wrapEnabled: PropTypes.bool,\n enableBasicAutocompletion: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.array\n ]),\n enableLiveAutocompletion: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.array\n ]),\n commands: PropTypes.array\n };\n public static defaultProps: Partial = {\n name: \"ace-editor\",\n focus: false,\n orientation: \"beside\",\n splits: 2,\n mode: \"\",\n theme: \"\",\n height: \"500px\",\n width: \"500px\",\n value: [],\n fontSize: 12,\n showGutter: true,\n onChange: null,\n onPaste: null,\n onLoad: null,\n onScroll: null,\n minLines: null,\n maxLines: null,\n readOnly: false,\n highlightActiveLine: true,\n showPrintMargin: true,\n tabSize: 4,\n cursorStart: 1,\n editorProps: {},\n style: {},\n scrollMargin: [0, 0, 0, 0],\n setOptions: {},\n wrapEnabled: false,\n enableBasicAutocompletion: false,\n enableLiveAutocompletion: false\n };\n public editor: IAceEditorClass;\n public refEditor: HTMLElement;\n public silent: boolean;\n public split: IAceEditorClass;\n public splitEditor: IAceEditorClass;\n public debounce: (fn: any, delay: number) => (...args: any) => void;\n constructor(props: ISplitEditorProps) {\n super(props);\n editorEvents.forEach(method => {\n this[method] = this[method].bind(this);\n });\n this.debounce = debounce;\n }\n public isInShadow(node: HTMLElement): boolean {\n let parent = node && node.parentNode;\n while (parent) {\n if (parent.toString() === \"[object ShadowRoot]\") {\n return true;\n }\n parent = parent.parentNode;\n }\n return false;\n }\n public componentDidMount() {\n const {\n className,\n onBeforeLoad,\n mode,\n focus,\n theme,\n fontSize,\n value,\n defaultValue,\n cursorStart,\n showGutter,\n wrapEnabled,\n showPrintMargin,\n scrollMargin = [0, 0, 0, 0],\n keyboardHandler,\n onLoad,\n commands,\n annotations,\n markers,\n splits\n } = this.props;\n\n this.editor = ace.edit(this.refEditor);\n if (this.isInShadow(this.refEditor)) {\n this.editor.renderer.attachToShadowRoot();\n }\n this.editor.setTheme(`ace/theme/${theme}`);\n\n if (onBeforeLoad) {\n onBeforeLoad(ace);\n }\n\n const editorProps = Object.keys(this.props.editorProps);\n\n const split = new Split(\n this.editor.container,\n `ace/theme/${theme}`,\n splits\n );\n this.editor.env.split = split;\n\n this.splitEditor = split.getEditor(0);\n this.split = split;\n // in a split scenario we don't want a print margin for the entire application\n this.editor.setShowPrintMargin(false);\n this.editor.renderer.setShowGutter(false);\n // get a list of possible options to avoid 'misspelled option errors'\n const availableOptions = this.splitEditor.$options;\n if (this.props.debounceChangePeriod) {\n this.onChange = this.debounce(\n this.onChange,\n this.props.debounceChangePeriod\n );\n }\n split.forEach((editor: IAceEditorClass, index: number) => {\n for (let i = 0; i < editorProps.length; i++) {\n editor[editorProps[i]] = this.props.editorProps[editorProps[i]];\n }\n const defaultValueForEditor = get(defaultValue, index);\n const valueForEditor = get(value, index, \"\");\n editor.session.setUndoManager(new ace.UndoManager());\n editor.setTheme(`ace/theme/${theme}`);\n editor.renderer.setScrollMargin(\n scrollMargin[0],\n scrollMargin[1],\n scrollMargin[2],\n scrollMargin[3]\n );\n editor.getSession().setMode(`ace/mode/${mode}`);\n editor.setFontSize(fontSize as any);\n editor.renderer.setShowGutter(showGutter);\n editor.getSession().setUseWrapMode(wrapEnabled);\n editor.setShowPrintMargin(showPrintMargin);\n editor.on(\"focus\", this.onFocus);\n editor.on(\"blur\", this.onBlur);\n editor.on(\"input\" as any, this.onInput);\n editor.on(\"copy\", this.onCopy as any);\n editor.on(\"paste\", this.onPaste as any);\n editor.on(\"change\", this.onChange);\n editor\n .getSession()\n .selection.on(\"changeSelection\", this.onSelectionChange);\n editor.getSession().selection.on(\"changeCursor\", this.onCursorChange);\n editor.session.on(\"changeScrollTop\", this.onScroll);\n editor.setValue(\n defaultValueForEditor === undefined\n ? valueForEditor\n : defaultValueForEditor,\n cursorStart\n );\n const newAnnotations = get(annotations, index, []);\n const newMarkers = get(markers, index, []);\n editor.getSession().setAnnotations(newAnnotations);\n if (newMarkers && newMarkers.length > 0) {\n this.handleMarkers(newMarkers, editor);\n }\n\n for (let i = 0; i < editorOptions.length; i++) {\n const option = editorOptions[i];\n if (availableOptions.hasOwnProperty(option)) {\n editor.setOption(option as any, this.props[option]);\n } else if (this.props[option]) {\n console.warn(\n `ReaceAce: editor option ${option} was activated but not found. Did you need to import a related tool or did you possibly mispell the option?`\n );\n }\n }\n this.handleOptions(this.props, editor);\n\n if (Array.isArray(commands)) {\n commands.forEach(command => {\n if (typeof command.exec === \"string\") {\n (editor.commands as any).bindKey(command.bindKey, command.exec);\n } else {\n (editor.commands as any).addCommand(command);\n }\n });\n }\n\n if (keyboardHandler) {\n editor.setKeyboardHandler(\"ace/keyboard/\" + keyboardHandler);\n }\n });\n\n if (className) {\n this.refEditor.className += \" \" + className;\n }\n\n if (focus) {\n this.splitEditor.focus();\n }\n\n const sp = this.editor.env.split;\n sp.setOrientation(\n this.props.orientation === \"below\" ? sp.BELOW : sp.BESIDE\n );\n sp.resize(true);\n if (onLoad) {\n onLoad(sp);\n }\n }\n\n public componentDidUpdate(prevProps: ISplitEditorProps) {\n const oldProps = prevProps;\n const nextProps = this.props;\n\n const split = this.editor.env.split;\n\n if (nextProps.splits !== oldProps.splits) {\n split.setSplits(nextProps.splits);\n }\n\n if (nextProps.orientation !== oldProps.orientation) {\n split.setOrientation(\n nextProps.orientation === \"below\" ? split.BELOW : split.BESIDE\n );\n }\n\n split.forEach((editor: IAceEditorClass, index: number) => {\n if (nextProps.mode !== oldProps.mode) {\n editor.getSession().setMode(\"ace/mode/\" + nextProps.mode);\n }\n if (nextProps.keyboardHandler !== oldProps.keyboardHandler) {\n if (nextProps.keyboardHandler) {\n editor.setKeyboardHandler(\n \"ace/keyboard/\" + nextProps.keyboardHandler\n );\n } else {\n editor.setKeyboardHandler(null);\n }\n }\n if (nextProps.fontSize !== oldProps.fontSize) {\n editor.setFontSize(nextProps.fontSize as any);\n }\n if (nextProps.wrapEnabled !== oldProps.wrapEnabled) {\n editor.getSession().setUseWrapMode(nextProps.wrapEnabled);\n }\n if (nextProps.showPrintMargin !== oldProps.showPrintMargin) {\n editor.setShowPrintMargin(nextProps.showPrintMargin);\n }\n if (nextProps.showGutter !== oldProps.showGutter) {\n editor.renderer.setShowGutter(nextProps.showGutter);\n }\n\n for (let i = 0; i < editorOptions.length; i++) {\n const option = editorOptions[i];\n if (nextProps[option] !== oldProps[option]) {\n editor.setOption(option as any, nextProps[option]);\n }\n }\n if (!isEqual(nextProps.setOptions, oldProps.setOptions)) {\n this.handleOptions(nextProps, editor);\n }\n const nextValue = get(nextProps.value, index, \"\");\n if (editor.getValue() !== nextValue) {\n // editor.setValue is a synchronous function call, change event is emitted before setValue return.\n this.silent = true;\n const pos = (editor.session.selection as any).toJSON();\n editor.setValue(nextValue, nextProps.cursorStart);\n (editor.session.selection as any).fromJSON(pos);\n this.silent = false;\n }\n const newAnnotations = get(nextProps.annotations, index, []);\n const oldAnnotations = get(oldProps.annotations, index, []);\n if (!isEqual(newAnnotations, oldAnnotations)) {\n editor.getSession().setAnnotations(newAnnotations);\n }\n\n const newMarkers = get(nextProps.markers, index, []);\n const oldMarkers = get(oldProps.markers, index, []);\n if (!isEqual(newMarkers, oldMarkers) && Array.isArray(newMarkers)) {\n this.handleMarkers(newMarkers, editor);\n }\n });\n\n if (nextProps.className !== oldProps.className) {\n const appliedClasses = this.refEditor.className;\n const appliedClassesArray = appliedClasses.trim().split(\" \");\n const oldClassesArray = oldProps.className.trim().split(\" \");\n oldClassesArray.forEach(oldClass => {\n const index = appliedClassesArray.indexOf(oldClass);\n appliedClassesArray.splice(index, 1);\n });\n this.refEditor.className =\n \" \" + nextProps.className + \" \" + appliedClassesArray.join(\" \");\n }\n\n if (nextProps.theme !== oldProps.theme) {\n split.setTheme(\"ace/theme/\" + nextProps.theme);\n }\n\n if (nextProps.focus && !oldProps.focus) {\n this.splitEditor.focus();\n }\n if (\n nextProps.height !== this.props.height ||\n nextProps.width !== this.props.width\n ) {\n this.editor.resize();\n }\n }\n\n public componentWillUnmount() {\n this.editor.destroy();\n this.editor = null;\n }\n\n public onChange(event: any) {\n if (this.props.onChange && !this.silent) {\n const value: any = [];\n this.editor.env.split.forEach((editor: IAceEditorClass) => {\n value.push(editor.getValue());\n });\n this.props.onChange(value, event);\n }\n }\n\n public onSelectionChange(event: any) {\n if (this.props.onSelectionChange) {\n const value: any = [];\n this.editor.env.split.forEach((editor: IAceEditorClass) => {\n value.push(editor.getSelection());\n });\n this.props.onSelectionChange(value, event);\n }\n }\n public onCursorChange(event: any) {\n if (this.props.onCursorChange) {\n const value: any = [];\n this.editor.env.split.forEach((editor: IAceEditorClass) => {\n value.push(editor.getSelection());\n });\n this.props.onCursorChange(value, event);\n }\n }\n public onFocus(event: any) {\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n }\n\n public onInput(event: any) {\n if (this.props.onInput) {\n this.props.onInput(event);\n }\n }\n\n public onBlur(event: any) {\n if (this.props.onBlur) {\n this.props.onBlur(event);\n }\n }\n\n public onCopy(text: string) {\n if (this.props.onCopy) {\n this.props.onCopy(text);\n }\n }\n\n public onPaste(text: string) {\n if (this.props.onPaste) {\n this.props.onPaste(text);\n }\n }\n\n public onScroll() {\n if (this.props.onScroll) {\n this.props.onScroll(this.editor);\n }\n }\n\n public handleOptions(props: ISplitEditorProps, editor: IAceEditorClass) {\n const setOptions = Object.keys(props.setOptions);\n for (let y = 0; y < setOptions.length; y++) {\n editor.setOption(setOptions[y] as any, props.setOptions[setOptions[y]]);\n }\n }\n\n public handleMarkers(markers: IMarker[], editor: IAceEditorClass) {\n // remove foreground markers\n let currentMarkers = editor.getSession().getMarkers(true);\n for (const i in currentMarkers) {\n if (currentMarkers.hasOwnProperty(i)) {\n editor.getSession().removeMarker(currentMarkers[i].id);\n }\n }\n // remove background markers\n currentMarkers = editor.getSession().getMarkers(false);\n for (const i in currentMarkers) {\n if (currentMarkers.hasOwnProperty(i)) {\n editor.getSession().removeMarker(currentMarkers[i].id);\n }\n }\n // add new markers\n markers.forEach(\n ({\n startRow,\n startCol,\n endRow,\n endCol,\n className,\n type,\n inFront = false\n }) => {\n const range = new Range(startRow, startCol, endRow, endCol);\n editor\n .getSession()\n .addMarker(range as any, className, type as any, inFront);\n }\n );\n }\n\n public updateRef(item: HTMLElement) {\n this.refEditor = item;\n }\n\n public render() {\n const { name, width, height, style } = this.props;\n const divStyle = { width, height, ...style };\n return
    ;\n }\n}\n","/** @license React v17.0.2\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),m=require(\"object-assign\"),r=require(\"scheduler\");function y(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function B(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var D={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){D[a]=new B(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];D[b]=new B(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){D[a]=new B(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){D[a]=new B(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){D[a]=new B(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){D[a]=new B(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){D[a]=new B(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){D[a]=new B(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){D[a]=new B(a,5,!1,a.toLowerCase(),null,!1,!1)});var oa=/[\\-:]([a-z])/g;function pa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(oa,\npa);D[b]=new B(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(oa,pa);D[b]=new B(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!1,!1)});\nD.xlinkHref=new B(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){D[a]=new B(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction qa(a,b,c,d){var e=D.hasOwnProperty(b)?D[b]:null;var f=null!==e?0===e.type:d?!1:!(2h||e[g]!==f[h])return\"\\n\"+e[g].replace(\" at new \",\" at \");while(1<=g&&0<=h)}break}}}finally{Oa=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Na(a):\"\"}\nfunction Qa(a){switch(a.tag){case 5:return Na(a.type);case 16:return Na(\"Lazy\");case 13:return Na(\"Suspense\");case 19:return Na(\"SuspenseList\");case 0:case 2:case 15:return a=Pa(a.type,!1),a;case 11:return a=Pa(a.type.render,!1),a;case 22:return a=Pa(a.type._render,!1),a;case 1:return a=Pa(a.type,!0),a;default:return\"\"}}\nfunction Ra(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ua:return\"Fragment\";case ta:return\"Portal\";case xa:return\"Profiler\";case wa:return\"StrictMode\";case Ba:return\"Suspense\";case Ca:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case za:return(a.displayName||\"Context\")+\".Consumer\";case ya:return(a._context.displayName||\"Context\")+\".Provider\";case Aa:var b=a.render;b=b.displayName||b.name||\"\";\nreturn a.displayName||(\"\"!==b?\"ForwardRef(\"+b+\")\":\"ForwardRef\");case Da:return Ra(a.type);case Fa:return Ra(a._render);case Ea:b=a._payload;a=a._init;try{return Ra(a(b))}catch(c){}}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"object\":case \"string\":case \"undefined\":return a;default:return\"\"}}function Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return m({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function $a(a,b){b=b.checked;null!=b&&qa(a,\"checked\",b,!1)}\nfunction ab(a,b){$a(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?bb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&bb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction cb(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction bb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}function db(a){var b=\"\";aa.Children.forEach(a,function(a){null!=a&&(b+=a)});return b}function eb(a,b){a=m({children:void 0},b);if(b=db(b.children))a.children=b;return a}\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e=c.length))throw Error(y(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var kb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction lb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function mb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?lb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar nb,ob=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==kb.svg||\"innerHTML\"in a)a.innerHTML=b;else{nb=nb||document.createElement(\"div\");nb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=nb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction pb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar qb={animationIterationCount:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,\nfloodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},rb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(qb).forEach(function(a){rb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);qb[b]=qb[a]})});function sb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||qb.hasOwnProperty(a)&&qb[a]?(\"\"+b).trim():b+\"px\"}\nfunction tb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=sb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var ub=m({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction vb(a,b){if(b){if(ub[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(y(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(y(60));if(!(\"object\"===typeof b.dangerouslySetInnerHTML&&\"__html\"in b.dangerouslySetInnerHTML))throw Error(y(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(y(62));}}\nfunction wb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(y(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;ad?0:1<c;c++)b.push(a);return b}\nfunction $c(a,b,c){a.pendingLanes|=b;var d=b-1;a.suspendedLanes&=d;a.pingedLanes&=d;a=a.eventTimes;b=31-Vc(b);a[b]=c}var Vc=Math.clz32?Math.clz32:ad,bd=Math.log,cd=Math.LN2;function ad(a){return 0===a?32:31-(bd(a)/cd|0)|0}var dd=r.unstable_UserBlockingPriority,ed=r.unstable_runWithPriority,fd=!0;function gd(a,b,c,d){Kb||Ib();var e=hd,f=Kb;Kb=!0;try{Hb(e,a,b,c,d)}finally{(Kb=f)||Mb()}}function id(a,b,c,d){ed(dd,hd.bind(null,a,b,c,d))}\nfunction hd(a,b,c,d){if(fd){var e;if((e=0===(b&4))&&0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Ke(c)}}function Me(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Me(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Ne(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Oe(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nvar Pe=fa&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Oe(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Je(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Af||(a.current=zf[Af],zf[Af]=null,Af--)}function I(a,b){Af++;zf[Af]=a.current;a.current=b}var Cf={},M=Bf(Cf),N=Bf(!1),Df=Cf;\nfunction Ef(a,b){var c=a.type.contextTypes;if(!c)return Cf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function Ff(a){a=a.childContextTypes;return null!==a&&void 0!==a}function Gf(){H(N);H(M)}function Hf(a,b,c){if(M.current!==Cf)throw Error(y(168));I(M,b);I(N,c)}\nfunction If(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(y(108,Ra(b)||\"Unknown\",e));return m({},c,d)}function Jf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Cf;Df=M.current;I(M,a);I(N,N.current);return!0}function Kf(a,b,c){var d=a.stateNode;if(!d)throw Error(y(169));c?(a=If(a,b,Df),d.__reactInternalMemoizedMergedChildContext=a,H(N),H(M),I(M,a)):H(N);I(N,c)}\nvar Lf=null,Mf=null,Nf=r.unstable_runWithPriority,Of=r.unstable_scheduleCallback,Pf=r.unstable_cancelCallback,Qf=r.unstable_shouldYield,Rf=r.unstable_requestPaint,Sf=r.unstable_now,Tf=r.unstable_getCurrentPriorityLevel,Uf=r.unstable_ImmediatePriority,Vf=r.unstable_UserBlockingPriority,Wf=r.unstable_NormalPriority,Xf=r.unstable_LowPriority,Yf=r.unstable_IdlePriority,Zf={},$f=void 0!==Rf?Rf:function(){},ag=null,bg=null,cg=!1,dg=Sf(),O=1E4>dg?Sf:function(){return Sf()-dg};\nfunction eg(){switch(Tf()){case Uf:return 99;case Vf:return 98;case Wf:return 97;case Xf:return 96;case Yf:return 95;default:throw Error(y(332));}}function fg(a){switch(a){case 99:return Uf;case 98:return Vf;case 97:return Wf;case 96:return Xf;case 95:return Yf;default:throw Error(y(332));}}function gg(a,b){a=fg(a);return Nf(a,b)}function hg(a,b,c){a=fg(a);return Of(a,b,c)}function ig(){if(null!==bg){var a=bg;bg=null;Pf(a)}jg()}\nfunction jg(){if(!cg&&null!==ag){cg=!0;var a=0;try{var b=ag;gg(99,function(){for(;az?(q=u,u=null):q=u.sibling;var n=p(e,u,h[z],k);if(null===n){null===u&&(u=q);break}a&&u&&null===\nn.alternate&&b(e,u);g=f(n,g,z);null===t?l=n:t.sibling=n;t=n;u=q}if(z===h.length)return c(e,u),l;if(null===u){for(;zz?(q=u,u=null):q=u.sibling;var w=p(e,u,n.value,k);if(null===w){null===u&&(u=q);break}a&&u&&null===w.alternate&&b(e,u);g=f(w,g,z);null===t?l=w:t.sibling=w;t=w;u=q}if(n.done)return c(e,u),l;if(null===u){for(;!n.done;z++,n=h.next())n=A(e,n.value,k),null!==n&&(g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);return l}for(u=d(e,u);!n.done;z++,n=h.next())n=C(u,e,z,n.value,k),null!==n&&(a&&null!==n.alternate&&\nu.delete(null===n.key?z:n.key),g=f(n,g,z),null===t?l=n:t.sibling=n,t=n);a&&u.forEach(function(a){return b(e,a)});return l}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ua&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case sa:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ua){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,k.sibling);\nd=e(k,f.props);d.ref=Qg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ua?(d=Xg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Vg(f.type,f.key,f.props,null,a.mode,h),h.ref=Qg(a,d,f),h.return=a,a=h)}return g(a);case ta:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=\nWg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Ug(f,a.mode,h),d.return=a,a=d),g(a);if(Pg(f))return x(a,d,f,h);if(La(f))return w(a,d,f,h);l&&Rg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 22:case 0:case 11:case 15:throw Error(y(152,Ra(a.type)||\"Component\"));}return c(a,d)}}var Yg=Sg(!0),Zg=Sg(!1),$g={},ah=Bf($g),bh=Bf($g),ch=Bf($g);\nfunction dh(a){if(a===$g)throw Error(y(174));return a}function eh(a,b){I(ch,b);I(bh,a);I(ah,$g);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:mb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=mb(b,a)}H(ah);I(ah,b)}function fh(){H(ah);H(bh);H(ch)}function gh(a){dh(ch.current);var b=dh(ah.current);var c=mb(b,a.type);b!==c&&(I(bh,a),I(ah,c))}function hh(a){bh.current===a&&(H(ah),H(bh))}var P=Bf(0);\nfunction ih(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var jh=null,kh=null,lh=!1;\nfunction mh(a,b){var c=nh(5,null,null,0);c.elementType=\"DELETED\";c.type=\"DELETED\";c.stateNode=b;c.return=a;c.flags=8;null!==a.lastEffect?(a.lastEffect.nextEffect=c,a.lastEffect=c):a.firstEffect=a.lastEffect=c}function oh(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,!0):!1;case 13:return!1;default:return!1}}\nfunction ph(a){if(lh){var b=kh;if(b){var c=b;if(!oh(a,b)){b=rf(c.nextSibling);if(!b||!oh(a,b)){a.flags=a.flags&-1025|2;lh=!1;jh=a;return}mh(jh,c)}jh=a;kh=rf(b.firstChild)}else a.flags=a.flags&-1025|2,lh=!1,jh=a}}function qh(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;jh=a}\nfunction rh(a){if(a!==jh)return!1;if(!lh)return qh(a),lh=!0,!1;var b=a.type;if(5!==a.tag||\"head\"!==b&&\"body\"!==b&&!nf(b,a.memoizedProps))for(b=kh;b;)mh(a,b),b=rf(b.nextSibling);qh(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(y(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){kh=rf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}kh=null}}else kh=jh?rf(a.stateNode.nextSibling):null;return!0}\nfunction sh(){kh=jh=null;lh=!1}var th=[];function uh(){for(var a=0;af))throw Error(y(301));f+=1;T=S=null;b.updateQueue=null;vh.current=Fh;a=c(d,e)}while(zh)}vh.current=Gh;b=null!==S&&null!==S.next;xh=0;T=S=R=null;yh=!1;if(b)throw Error(y(300));return a}function Hh(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===T?R.memoizedState=T=a:T=T.next=a;return T}\nfunction Ih(){if(null===S){var a=R.alternate;a=null!==a?a.memoizedState:null}else a=S.next;var b=null===T?R.memoizedState:T.next;if(null!==b)T=b,S=a;else{if(null===a)throw Error(y(310));S=a;a={memoizedState:S.memoizedState,baseState:S.baseState,baseQueue:S.baseQueue,queue:S.queue,next:null};null===T?R.memoizedState=T=a:T=T.next=a}return T}function Jh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Kh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=S,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.lane;if((xh&l)===l)null!==h&&(h=h.next={lane:0,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),d=k.eagerReducer===a?k.eagerState:a(d,k.action);else{var n={lane:l,action:k.action,eagerReducer:k.eagerReducer,\neagerState:k.eagerState,next:null};null===h?(g=h=n,f=d):h=h.next=n;R.lanes|=l;Dg|=l}k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;He(d,b.memoizedState)||(ug=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction Lh(a){var b=Ih(),c=b.queue;if(null===c)throw Error(y(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction Mh(a,b,c){var d=b._getVersion;d=d(b._source);var e=b._workInProgressVersionPrimary;if(null!==e)a=e===d;else if(a=a.mutableReadLanes,a=(xh&a)===a)b._workInProgressVersionPrimary=d,th.push(b);if(a)return c(b._source);th.push(b);throw Error(y(350));}\nfunction Nh(a,b,c,d){var e=U;if(null===e)throw Error(y(349));var f=b._getVersion,g=f(b._source),h=vh.current,k=h.useState(function(){return Mh(e,b,c)}),l=k[1],n=k[0];k=T;var A=a.memoizedState,p=A.refs,C=p.getSnapshot,x=A.source;A=A.subscribe;var w=R;a.memoizedState={refs:p,source:b,subscribe:d};h.useEffect(function(){p.getSnapshot=c;p.setSnapshot=l;var a=f(b._source);if(!He(g,a)){a=c(b._source);He(n,a)||(l(a),a=Ig(w),e.mutableReadLanes|=a&e.pendingLanes);a=e.mutableReadLanes;e.entangledLanes|=a;for(var d=\ne.entanglements,h=a;0c?98:c,function(){a(!0)});gg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[wf]=b;a[xf]=d;Bi(a,b,!1,!1);b.stateNode=a;g=wb(c,d);switch(c){case \"dialog\":G(\"cancel\",a);G(\"close\",a);\ne=d;break;case \"iframe\":case \"object\":case \"embed\":G(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eJi&&(b.flags|=64,f=!0,Fi(d,!1),b.lanes=33554432)}else{if(!f)if(a=ih(g),null!==a){if(b.flags|=64,f=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Fi(d,!0),null===d.tail&&\"hidden\"===d.tailMode&&!g.alternate&&!lh)return b=b.lastEffect=d.lastEffect,null!==b&&(b.nextEffect=null),null}else 2*O()-d.renderingStartTime>Ji&&1073741824!==c&&(b.flags|=\n64,f=!0,Fi(d,!1),b.lanes=33554432);d.isBackwards?(g.sibling=b.child,b.child=g):(c=d.last,null!==c?c.sibling=g:b.child=g,d.last=g)}return null!==d.tail?(c=d.tail,d.rendering=c,d.tail=c.sibling,d.lastEffect=b.lastEffect,d.renderingStartTime=O(),c.sibling=null,b=P.current,I(P,f?b&1|2:b&1),c):null;case 23:case 24:return Ki(),null!==a&&null!==a.memoizedState!==(null!==b.memoizedState)&&\"unstable-defer-without-hiding\"!==d.mode&&(b.flags|=4),null}throw Error(y(156,b.tag));}\nfunction Li(a){switch(a.tag){case 1:Ff(a.type)&&Gf();var b=a.flags;return b&4096?(a.flags=b&-4097|64,a):null;case 3:fh();H(N);H(M);uh();b=a.flags;if(0!==(b&64))throw Error(y(285));a.flags=b&-4097|64;return a;case 5:return hh(a),null;case 13:return H(P),b=a.flags,b&4096?(a.flags=b&-4097|64,a):null;case 19:return H(P),null;case 4:return fh(),null;case 10:return rg(a),null;case 23:case 24:return Ki(),null;default:return null}}\nfunction Mi(a,b){try{var c=\"\",d=b;do c+=Qa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e}}function Ni(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Oi=\"function\"===typeof WeakMap?WeakMap:Map;function Pi(a,b,c){c=zg(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Qi||(Qi=!0,Ri=d);Ni(a,b)};return c}\nfunction Si(a,b,c){c=zg(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){Ni(a,b);return d(e)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){\"function\"!==typeof d&&(null===Ti?Ti=new Set([this]):Ti.add(this),Ni(a,b));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}var Ui=\"function\"===typeof WeakSet?WeakSet:Set;\nfunction Vi(a){var b=a.ref;if(null!==b)if(\"function\"===typeof b)try{b(null)}catch(c){Wi(a,c)}else b.current=null}function Xi(a,b){switch(b.tag){case 0:case 11:case 15:case 22:return;case 1:if(b.flags&256&&null!==a){var c=a.memoizedProps,d=a.memoizedState;a=b.stateNode;b=a.getSnapshotBeforeUpdate(b.elementType===b.type?c:lg(b.type,c),d);a.__reactInternalSnapshotBeforeUpdate=b}return;case 3:b.flags&256&&qf(b.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(y(163));}\nfunction Yi(a,b,c){switch(c.tag){case 0:case 11:case 15:case 22:b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{if(3===(a.tag&3)){var d=a.create;a.destroy=d()}a=a.next}while(a!==b)}b=c.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){a=b=b.next;do{var e=a;d=e.next;e=e.tag;0!==(e&4)&&0!==(e&1)&&(Zi(c,a),$i(c,a));a=d}while(a!==b)}return;case 1:a=c.stateNode;c.flags&4&&(null===b?a.componentDidMount():(d=c.elementType===c.type?b.memoizedProps:lg(c.type,b.memoizedProps),a.componentDidUpdate(d,\nb.memoizedState,a.__reactInternalSnapshotBeforeUpdate)));b=c.updateQueue;null!==b&&Eg(c,b,a);return;case 3:b=c.updateQueue;if(null!==b){a=null;if(null!==c.child)switch(c.child.tag){case 5:a=c.child.stateNode;break;case 1:a=c.child.stateNode}Eg(c,b,a)}return;case 5:a=c.stateNode;null===b&&c.flags&4&&mf(c.type,c.memoizedProps)&&a.focus();return;case 6:return;case 4:return;case 12:return;case 13:null===c.memoizedState&&(c=c.alternate,null!==c&&(c=c.memoizedState,null!==c&&(c=c.dehydrated,null!==c&&Cc(c))));\nreturn;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(y(163));}\nfunction aj(a,b){for(var c=a;;){if(5===c.tag){var d=c.stateNode;if(b)d=d.style,\"function\"===typeof d.setProperty?d.setProperty(\"display\",\"none\",\"important\"):d.display=\"none\";else{d=c.stateNode;var e=c.memoizedProps.style;e=void 0!==e&&null!==e&&e.hasOwnProperty(\"display\")?e.display:null;d.style.display=sb(\"display\",e)}}else if(6===c.tag)c.stateNode.nodeValue=b?\"\":c.memoizedProps;else if((23!==c.tag&&24!==c.tag||null===c.memoizedState||c===a)&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===\na)break;for(;null===c.sibling;){if(null===c.return||c.return===a)return;c=c.return}c.sibling.return=c.return;c=c.sibling}}\nfunction bj(a,b){if(Mf&&\"function\"===typeof Mf.onCommitFiberUnmount)try{Mf.onCommitFiberUnmount(Lf,b)}catch(f){}switch(b.tag){case 0:case 11:case 14:case 15:case 22:a=b.updateQueue;if(null!==a&&(a=a.lastEffect,null!==a)){var c=a=a.next;do{var d=c,e=d.destroy;d=d.tag;if(void 0!==e)if(0!==(d&4))Zi(b,c);else{d=b;try{e()}catch(f){Wi(d,f)}}c=c.next}while(c!==a)}break;case 1:Vi(b);a=b.stateNode;if(\"function\"===typeof a.componentWillUnmount)try{a.props=b.memoizedProps,a.state=b.memoizedState,a.componentWillUnmount()}catch(f){Wi(b,\nf)}break;case 5:Vi(b);break;case 4:cj(a,b)}}function dj(a){a.alternate=null;a.child=null;a.dependencies=null;a.firstEffect=null;a.lastEffect=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.return=null;a.updateQueue=null}function ej(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction fj(a){a:{for(var b=a.return;null!==b;){if(ej(b))break a;b=b.return}throw Error(y(160));}var c=b;b=c.stateNode;switch(c.tag){case 5:var d=!1;break;case 3:b=b.containerInfo;d=!0;break;case 4:b=b.containerInfo;d=!0;break;default:throw Error(y(161));}c.flags&16&&(pb(b,\"\"),c.flags&=-17);a:b:for(c=a;;){for(;null===c.sibling;){if(null===c.return||ej(c.return)){c=null;break a}c=c.return}c.sibling.return=c.return;for(c=c.sibling;5!==c.tag&&6!==c.tag&&18!==c.tag;){if(c.flags&2)continue b;if(null===\nc.child||4===c.tag)continue b;else c.child.return=c,c=c.child}if(!(c.flags&2)){c=c.stateNode;break a}}d?gj(a,c,b):hj(a,c,b)}\nfunction gj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=jf));else if(4!==d&&(a=a.child,null!==a))for(gj(a,b,c),a=a.sibling;null!==a;)gj(a,b,c),a=a.sibling}\nfunction hj(a,b,c){var d=a.tag,e=5===d||6===d;if(e)a=e?a.stateNode:a.stateNode.instance,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(hj(a,b,c),a=a.sibling;null!==a;)hj(a,b,c),a=a.sibling}\nfunction cj(a,b){for(var c=b,d=!1,e,f;;){if(!d){d=c.return;a:for(;;){if(null===d)throw Error(y(160));e=d.stateNode;switch(d.tag){case 5:f=!1;break a;case 3:e=e.containerInfo;f=!0;break a;case 4:e=e.containerInfo;f=!0;break a}d=d.return}d=!0}if(5===c.tag||6===c.tag){a:for(var g=a,h=c,k=h;;)if(bj(g,k),null!==k.child&&4!==k.tag)k.child.return=k,k=k.child;else{if(k===h)break a;for(;null===k.sibling;){if(null===k.return||k.return===h)break a;k=k.return}k.sibling.return=k.return;k=k.sibling}f?(g=e,h=c.stateNode,\n8===g.nodeType?g.parentNode.removeChild(h):g.removeChild(h)):e.removeChild(c.stateNode)}else if(4===c.tag){if(null!==c.child){e=c.stateNode.containerInfo;f=!0;c.child.return=c;c=c.child;continue}}else if(bj(a,c),null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;4===c.tag&&(d=!1)}c.sibling.return=c.return;c=c.sibling}}\nfunction ij(a,b){switch(b.tag){case 0:case 11:case 14:case 15:case 22:var c=b.updateQueue;c=null!==c?c.lastEffect:null;if(null!==c){var d=c=c.next;do 3===(d.tag&3)&&(a=d.destroy,d.destroy=void 0,void 0!==a&&a()),d=d.next;while(d!==c)}return;case 1:return;case 5:c=b.stateNode;if(null!=c){d=b.memoizedProps;var e=null!==a?a.memoizedProps:d;a=b.type;var f=b.updateQueue;b.updateQueue=null;if(null!==f){c[xf]=d;\"input\"===a&&\"radio\"===d.type&&null!=d.name&&$a(c,d);wb(a,e);b=wb(a,d);for(e=0;ee&&(e=g);c&=~f}c=e;c=O()-c;c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3E3>c?3E3:4320>\nc?4320:1960*nj(c/1960))-c;if(10 component higher in the tree to provide a loading indicator or placeholder to display.\")}5!==V&&(V=2);k=Mi(k,h);p=\ng;do{switch(p.tag){case 3:f=k;p.flags|=4096;b&=-b;p.lanes|=b;var J=Pi(p,f,b);Bg(p,J);break a;case 1:f=k;var K=p.type,Q=p.stateNode;if(0===(p.flags&64)&&(\"function\"===typeof K.getDerivedStateFromError||null!==Q&&\"function\"===typeof Q.componentDidCatch&&(null===Ti||!Ti.has(Q)))){p.flags|=4096;b&=-b;p.lanes|=b;var L=Si(p,f,b);Bg(p,L);break a}}p=p.return}while(null!==p)}Zj(c)}catch(va){b=va;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}\nfunction Pj(){var a=oj.current;oj.current=Gh;return null===a?Gh:a}function Tj(a,b){var c=X;X|=16;var d=Pj();U===a&&W===b||Qj(a,b);do try{ak();break}catch(e){Sj(a,e)}while(1);qg();X=c;oj.current=d;if(null!==Y)throw Error(y(261));U=null;W=0;return V}function ak(){for(;null!==Y;)bk(Y)}function Rj(){for(;null!==Y&&!Qf();)bk(Y)}function bk(a){var b=ck(a.alternate,a,qj);a.memoizedProps=a.pendingProps;null===b?Zj(a):Y=b;pj.current=null}\nfunction Zj(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&2048)){c=Gi(c,b,qj);if(null!==c){Y=c;return}c=b;if(24!==c.tag&&23!==c.tag||null===c.memoizedState||0!==(qj&1073741824)||0===(c.mode&4)){for(var d=0,e=c.child;null!==e;)d|=e.lanes|e.childLanes,e=e.sibling;c.childLanes=d}null!==a&&0===(a.flags&2048)&&(null===a.firstEffect&&(a.firstEffect=b.firstEffect),null!==b.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=b.firstEffect),a.lastEffect=b.lastEffect),1g&&(h=g,g=J,J=h),h=Le(t,J),f=Le(t,g),h&&f&&(1!==v.rangeCount||v.anchorNode!==h.node||v.anchorOffset!==h.offset||v.focusNode!==f.node||v.focusOffset!==f.offset)&&(q=q.createRange(),q.setStart(h.node,h.offset),v.removeAllRanges(),J>g?(v.addRange(q),v.extend(f.node,f.offset)):(q.setEnd(f.node,f.offset),v.addRange(q))))));q=[];for(v=t;v=v.parentNode;)1===v.nodeType&&q.push({element:v,left:v.scrollLeft,top:v.scrollTop});\"function\"===typeof t.focus&&t.focus();for(t=\n0;tO()-jj?Qj(a,0):uj|=c);Mj(a,b)}function lj(a,b){var c=a.stateNode;null!==c&&c.delete(b);b=0;0===b&&(b=a.mode,0===(b&2)?b=1:0===(b&4)?b=99===eg()?1:2:(0===Gj&&(Gj=tj),b=Yc(62914560&~Gj),0===b&&(b=4194304)));c=Hg();a=Kj(a,b);null!==a&&($c(a,b,c),Mj(a,c))}var ck;\nck=function(a,b,c){var d=b.lanes;if(null!==a)if(a.memoizedProps!==b.pendingProps||N.current)ug=!0;else if(0!==(c&d))ug=0!==(a.flags&16384)?!0:!1;else{ug=!1;switch(b.tag){case 3:ri(b);sh();break;case 5:gh(b);break;case 1:Ff(b.type)&&Jf(b);break;case 4:eh(b,b.stateNode.containerInfo);break;case 10:d=b.memoizedProps.value;var e=b.type._context;I(mg,e._currentValue);e._currentValue=d;break;case 13:if(null!==b.memoizedState){if(0!==(c&b.child.childLanes))return ti(a,b,c);I(P,P.current&1);b=hi(a,b,c);return null!==\nb?b.sibling:null}I(P,P.current&1);break;case 19:d=0!==(c&b.childLanes);if(0!==(a.flags&64)){if(d)return Ai(a,b,c);b.flags|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);I(P,P.current);if(d)break;else return null;case 23:case 24:return b.lanes=0,mi(a,b,c)}return hi(a,b,c)}else ug=!1;b.lanes=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);a=b.pendingProps;e=Ef(b,M.current);tg(b,c);e=Ch(null,b,d,a,e,c);b.flags|=1;if(\"object\"===\ntypeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(Ff(d)){var f=!0;Jf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;xg(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Gg(b,d,g,a);e.updater=Kg;b.stateNode=e;e._reactInternals=b;Og(b,d,a,c);b=qi(null,b,d,!0,f,c)}else b.tag=0,fi(null,b,e,c),b=b.child;return b;case 16:e=b.elementType;a:{null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);\na=b.pendingProps;f=e._init;e=f(e._payload);b.type=e;f=b.tag=hk(e);a=lg(e,a);switch(f){case 0:b=li(null,b,e,a,c);break a;case 1:b=pi(null,b,e,a,c);break a;case 11:b=gi(null,b,e,a,c);break a;case 14:b=ii(null,b,e,lg(e.type,a),d,c);break a}throw Error(y(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),li(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:lg(d,e),pi(a,b,d,e,c);case 3:ri(b);d=b.updateQueue;if(null===a||null===d)throw Error(y(282));\nd=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;yg(a,b);Cg(b,d,null,c);d=b.memoizedState.element;if(d===e)sh(),b=hi(a,b,c);else{e=b.stateNode;if(f=e.hydrate)kh=rf(b.stateNode.containerInfo.firstChild),jh=b,f=lh=!0;if(f){a=e.mutableSourceEagerHydrationData;if(null!=a)for(e=0;e tag inside default button\n textStyle: _propTypes2.default.object,\n\n // Prevents any events from opening the popup\n // Adds the disabled prop to the button and adjusts the styling as well\n disabled: _propTypes2.default.bool,\n\n // Named component to wrap button (eg. div)\n ComponentClass: _propTypes2.default.string,\n\n // Show a loading indicator\n showLoadingDialog: _propTypes2.default.func,\n // Hide the loading indicator\n hideLoadingDialog: _propTypes2.default.func,\n\n // Run this method when the scrupt fails to load. Will run if the internet\n // connection is offline when attemting to load the script.\n onScriptError: _propTypes2.default.func,\n\n // Runs when the script tag is created, but before it is added to the DOM\n onScriptTagCreated: _propTypes2.default.func,\n\n // By default, any time the React component is updated, it will call\n // StripeCheckout.configure, which may result in additional XHR calls to the\n // stripe API. If you know the first configuration is all you need, you\n // can set this to false. Subsequent updates will affect the StripeCheckout.open\n // (e.g. different prices)\n reconfigureOnUpdate: _propTypes2.default.bool,\n\n // =====================================================\n // Required by stripe\n // see Stripe docs for more info:\n // https://stripe.com/docs/checkout#integration-custom\n // =====================================================\n\n // Your publishable key (test or live).\n // can't use \"key\" as a prop in react, so have to change the keyname\n stripeKey: _propTypes2.default.string.isRequired,\n\n // The callback to invoke when the Checkout process is complete.\n // function(token)\n // token is the token object created.\n // token.id can be used to create a charge or customer.\n // token.email contains the email address entered by the user.\n token: _propTypes2.default.func.isRequired,\n\n // ==========================\n // Highly Recommended Options\n // ==========================\n\n // Name of the company or website.\n name: _propTypes2.default.string,\n\n // A description of the product or service being purchased.\n description: _propTypes2.default.string,\n\n // A relative URL pointing to a square image of your brand or product. The\n // recommended minimum size is 128x128px. The recommended image types are\n // .gif, .jpeg, and .png.\n image: _propTypes2.default.string,\n\n // The amount (in cents) that's shown to the user. Note that you will still\n // have to explicitly include it when you create a charge using the API.\n amount: _propTypes2.default.number,\n\n // Specify auto to display Checkout in the user's preferred language, if\n // available. English will be used by default.\n //\n // https://stripe.com/docs/checkout#supported-languages\n // for more info.\n locale: _propTypes2.default.oneOf(['auto', // (Default) Automatically chosen by checkout\n 'zh', // Simplified Chinese\n 'da', // Danish\n 'nl', // Dutch\n 'en', // English\n 'fr', // French\n 'de', // German\n 'it', // Italian\n 'ja', // Japanease\n 'no', // Norwegian\n 'es', // Spanish\n 'sv']),\n\n // ==============\n // Optional Props\n // ==============\n\n // The currency of the amount (3-letter ISO code). The default is USD.\n currency: _propTypes2.default.oneOf(['AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', // eslint-disable-line comma-spacing\n 'BDT', 'BGN', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BWP', 'BZD', 'CAD', 'CDF', // eslint-disable-line comma-spacing\n 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EEK', // eslint-disable-line comma-spacing\n 'EGP', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', // eslint-disable-line comma-spacing\n 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', 'ILS', 'INR', 'ISK', 'JMD', 'JPY', 'KES', // eslint-disable-line comma-spacing\n 'KGS', 'KHR', 'KMF', 'KRW', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LTL', // eslint-disable-line comma-spacing\n 'LVL', 'MAD', 'MDL', 'MGA', 'MKD', 'MNT', 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', // eslint-disable-line comma-spacing\n 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'PAB', 'PEN', 'PGK', 'PHP', // eslint-disable-line comma-spacing\n 'PKR', 'PLN', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SEK', // eslint-disable-line comma-spacing\n 'SGD', 'SHP', 'SLL', 'SOS', 'SRD', 'STD', 'SVC', 'SZL', 'THB', 'TJS', 'TOP', 'TRY', // eslint-disable-line comma-spacing\n 'TTD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'UYU', 'UZS', 'VND', 'VUV', 'WST', 'XAF', // eslint-disable-line comma-spacing\n 'XCD', 'XOF', 'XPF', 'YER', 'ZAR', 'ZMW']),\n\n // The label of the payment button in the Checkout form (e.g. “Subscribe”,\n // “Pay {{amount}}”, etc.). If you include {{amount}}, it will be replaced\n // by the provided amount. Otherwise, the amount will be appended to the\n // end of your label.\n panelLabel: _propTypes2.default.string,\n\n // Specify whether Checkout should validate the billing ZIP code (true or\n // false)\n zipCode: _propTypes2.default.bool,\n\n // Specify whether Checkout should collect the user's billing address\n // (true or false). The default is false.\n billingAddress: _propTypes2.default.bool,\n\n // Specify whether Checkout should collect the user's shipping address\n // (true or false). The default is false.\n shippingAddress: _propTypes2.default.bool,\n\n // Specify whether Checkout should validate the billing ZIP code (true or\n // false). The default is false.\n email: _propTypes2.default.string,\n\n // Specify whether to include the option to \"Remember Me\" for future\n // purchases (true or false). The default is true.\n allowRememberMe: _propTypes2.default.bool,\n\n // Specify whether to accept Bitcoin in Checkout. The default is false.\n bitcoin: _propTypes2.default.bool,\n\n // Specify whether to accept Alipay ('auto', true, or false). The default\n // is false.\n alipay: _propTypes2.default.oneOf(['auto', true, false]),\n\n // Specify if you need reusable access to the customer's Alipay account\n // (true or false). The default is false.\n alipayReusable: _propTypes2.default.bool,\n\n // function() The callback to invoke when Checkout is opened (not supported\n // in IE6 and IE7).\n opened: _propTypes2.default.func,\n\n // function() The callback to invoke when Checkout is closed (not supported\n // in IE6 and IE7).\n closed: _propTypes2.default.func\n};\nReactStripeCheckout._isMounted = false;\nexports.default = ReactStripeCheckout;\n","/** @license React v17.0.2\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=require(\"object-assign\"),n=60103,p=60106;exports.Fragment=60107;exports.StrictMode=60108;exports.Profiler=60114;var q=60109,r=60110,t=60112;exports.Suspense=60113;var u=60115,v=60116;\nif(\"function\"===typeof Symbol&&Symbol.for){var w=Symbol.for;n=w(\"react.element\");p=w(\"react.portal\");exports.Fragment=w(\"react.fragment\");exports.StrictMode=w(\"react.strict_mode\");exports.Profiler=w(\"react.profiler\");q=w(\"react.provider\");r=w(\"react.context\");t=w(\"react.forward_ref\");exports.Suspense=w(\"react.suspense\");u=w(\"react.memo\");v=w(\"react.lazy\")}var x=\"function\"===typeof Symbol&&Symbol.iterator;\nfunction y(a){if(null===a||\"object\"!==typeof a)return null;a=x&&a[x]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}function z(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c=\nE};k=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0I(n,c))void 0!==r&&0>I(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>I(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function I(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var L=[],M=[],N=1,O=null,P=3,Q=!1,R=!1,S=!1;\nfunction T(a){for(var b=J(M);null!==b;){if(null===b.callback)K(M);else if(b.startTime<=a)K(M),b.sortIndex=b.expirationTime,H(L,b);else break;b=J(M)}}function U(a){S=!1;T(a);if(!R)if(null!==J(L))R=!0,f(V);else{var b=J(M);null!==b&&g(U,b.startTime-a)}}\nfunction V(a,b){R=!1;S&&(S=!1,h());Q=!0;var c=P;try{T(b);for(O=J(L);null!==O&&(!(O.expirationTime>b)||a&&!exports.unstable_shouldYield());){var d=O.callback;if(\"function\"===typeof d){O.callback=null;P=O.priorityLevel;var e=d(O.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?O.callback=e:O===J(L)&&K(L);T(b)}else K(L);O=J(L)}if(null!==O)var m=!0;else{var n=J(M);null!==n&&g(U,n.startTime-b);m=!1}return m}finally{O=null,P=c,Q=!1}}var W=k;exports.unstable_IdlePriority=5;\nexports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){R||Q||(R=!0,f(V))};exports.unstable_getCurrentPriorityLevel=function(){return P};exports.unstable_getFirstCallbackNode=function(){return J(L)};\nexports.unstable_next=function(a){switch(P){case 1:case 2:case 3:var b=3;break;default:b=P}var c=P;P=b;try{return a()}finally{P=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=W;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=P;P=a;try{return b()}finally{P=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0d?(a.sortIndex=c,H(M,a),null===J(L)&&a===J(M)&&(S?h():S=!0,g(U,c-d))):(a.sortIndex=e,H(L,a),R||Q||(R=!0,f(V)));return a};\nexports.unstable_wrapCallback=function(a){var b=P;return function(){var c=P;P=b;try{return a.apply(this,arguments)}finally{P=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n * This function traverses the list returning the node corresponding to the\n * given key.\n *\n * That node is also moved to the head of the list, so that if it's accessed\n * again we don't need to traverse the whole list. By doing so, all the recently\n * used nodes can be accessed relatively quickly.\n */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\tfor (var prev = list, curr; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tcurr.next = list.next;\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = { // eslint-disable-line no-param-reassign\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t};\n\t}\n};\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\nmodule.exports = function getSideChannel() {\n\tvar $wm;\n\tvar $m;\n\tvar $o;\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t/*\n\t\t\t\t\t * Initialize the linked list as an empty node, so that we don't have\n\t\t\t\t\t * to special-case handling of the first node: we can always refer to\n\t\t\t\t\t * it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t */\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","function Agent() {\n this._defaults = [];\n}\n\n[\n 'use',\n 'on',\n 'once',\n 'set',\n 'query',\n 'type',\n 'accept',\n 'auth',\n 'withCredentials',\n 'sortQuery',\n 'retry',\n 'ok',\n 'redirects',\n 'timeout',\n 'buffer',\n 'serialize',\n 'parse',\n 'ca',\n 'key',\n 'pfx',\n 'cert',\n 'disableTLSCerts'\n].forEach((fn) => {\n // Default setting for all requests from this agent\n Agent.prototype[fn] = function (...args) {\n this._defaults.push({ fn, args });\n return this;\n };\n});\n\nAgent.prototype._setDefaults = function (req) {\n this._defaults.forEach((def) => {\n req[def.fn](...def.args);\n });\n};\n\nmodule.exports = Agent;\n","/**\n * Root reference for iframes.\n */\n\nlet root;\nif (typeof window !== 'undefined') {\n // Browser window\n root = window;\n} else if (typeof self === 'undefined') {\n // Other environments\n console.warn(\n 'Using browser-only version of superagent in non-browser environment'\n );\n root = this;\n} else {\n // Web Worker\n root = self;\n}\n\nconst Emitter = require('component-emitter');\nconst safeStringify = require('fast-safe-stringify');\nconst qs = require('qs');\nconst RequestBase = require('./request-base');\nconst isObject = require('./is-object');\nconst ResponseBase = require('./response-base');\nconst Agent = require('./agent-base');\n\n/**\n * Noop.\n */\n\nfunction noop() {}\n\n/**\n * Expose `request`.\n */\n\nmodule.exports = function (method, url) {\n // callback\n if (typeof url === 'function') {\n return new exports.Request('GET', method).end(url);\n }\n\n // url first\n if (arguments.length === 1) {\n return new exports.Request('GET', method);\n }\n\n return new exports.Request(method, url);\n};\n\nexports = module.exports;\n\nconst request = exports;\n\nexports.Request = Request;\n\n/**\n * Determine XHR.\n */\n\nrequest.getXHR = () => {\n if (\n root.XMLHttpRequest &&\n (!root.location ||\n root.location.protocol !== 'file:' ||\n !root.ActiveXObject)\n ) {\n return new XMLHttpRequest();\n }\n\n try {\n return new ActiveXObject('Microsoft.XMLHTTP');\n } catch {}\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.6.0');\n } catch {}\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP.3.0');\n } catch {}\n\n try {\n return new ActiveXObject('Msxml2.XMLHTTP');\n } catch {}\n\n throw new Error('Browser-only version of superagent could not find XHR');\n};\n\n/**\n * Removes leading and trailing whitespace, added to support IE.\n *\n * @param {String} s\n * @return {String}\n * @api private\n */\n\nconst trim = ''.trim ? (s) => s.trim() : (s) => s.replace(/(^\\s*|\\s*$)/g, '');\n\n/**\n * Serialize the given `obj`.\n *\n * @param {Object} obj\n * @return {String}\n * @api private\n */\n\nfunction serialize(obj) {\n if (!isObject(obj)) return obj;\n const pairs = [];\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key))\n pushEncodedKeyValuePair(pairs, key, obj[key]);\n }\n\n return pairs.join('&');\n}\n\n/**\n * Helps 'serialize' with serializing arrays.\n * Mutates the pairs array.\n *\n * @param {Array} pairs\n * @param {String} key\n * @param {Mixed} val\n */\n\nfunction pushEncodedKeyValuePair(pairs, key, val) {\n if (val === undefined) return;\n if (val === null) {\n pairs.push(encodeURI(key));\n return;\n }\n\n if (Array.isArray(val)) {\n val.forEach((v) => {\n pushEncodedKeyValuePair(pairs, key, v);\n });\n } else if (isObject(val)) {\n for (const subkey in val) {\n if (Object.prototype.hasOwnProperty.call(val, subkey))\n pushEncodedKeyValuePair(pairs, `${key}[${subkey}]`, val[subkey]);\n }\n } else {\n pairs.push(encodeURI(key) + '=' + encodeURIComponent(val));\n }\n}\n\n/**\n * Expose serialization method.\n */\n\nrequest.serializeObject = serialize;\n\n/**\n * Parse the given x-www-form-urlencoded `str`.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseString(str) {\n const obj = {};\n const pairs = str.split('&');\n let pair;\n let pos;\n\n for (let i = 0, len = pairs.length; i < len; ++i) {\n pair = pairs[i];\n pos = pair.indexOf('=');\n if (pos === -1) {\n obj[decodeURIComponent(pair)] = '';\n } else {\n obj[decodeURIComponent(pair.slice(0, pos))] = decodeURIComponent(\n pair.slice(pos + 1)\n );\n }\n }\n\n return obj;\n}\n\n/**\n * Expose parser.\n */\n\nrequest.parseString = parseString;\n\n/**\n * Default MIME type map.\n *\n * superagent.types.xml = 'application/xml';\n *\n */\n\nrequest.types = {\n html: 'text/html',\n json: 'application/json',\n xml: 'text/xml',\n urlencoded: 'application/x-www-form-urlencoded',\n form: 'application/x-www-form-urlencoded',\n 'form-data': 'application/x-www-form-urlencoded'\n};\n\n/**\n * Default serialization map.\n *\n * superagent.serialize['application/xml'] = function(obj){\n * return 'generated xml here';\n * };\n *\n */\n\nrequest.serialize = {\n 'application/x-www-form-urlencoded': qs.stringify,\n 'application/json': safeStringify\n};\n\n/**\n * Default parsers.\n *\n * superagent.parse['application/xml'] = function(str){\n * return { object parsed from str };\n * };\n *\n */\n\nrequest.parse = {\n 'application/x-www-form-urlencoded': parseString,\n 'application/json': JSON.parse\n};\n\n/**\n * Parse the given header `str` into\n * an object containing the mapped fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nfunction parseHeader(str) {\n const lines = str.split(/\\r?\\n/);\n const fields = {};\n let index;\n let line;\n let field;\n let val;\n\n for (let i = 0, len = lines.length; i < len; ++i) {\n line = lines[i];\n index = line.indexOf(':');\n if (index === -1) {\n // could be empty line, just skip it\n continue;\n }\n\n field = line.slice(0, index).toLowerCase();\n val = trim(line.slice(index + 1));\n fields[field] = val;\n }\n\n return fields;\n}\n\n/**\n * Check if `mime` is json or has +json structured syntax suffix.\n *\n * @param {String} mime\n * @return {Boolean}\n * @api private\n */\n\nfunction isJSON(mime) {\n // should match /json or +json\n // but not /json-seq\n return /[/+]json($|[^-\\w])/i.test(mime);\n}\n\n/**\n * Initialize a new `Response` with the given `xhr`.\n *\n * - set flags (.ok, .error, etc)\n * - parse header\n *\n * Examples:\n *\n * Aliasing `superagent` as `request` is nice:\n *\n * request = superagent;\n *\n * We can use the promise-like API, or pass callbacks:\n *\n * request.get('/').end(function(res){});\n * request.get('/', function(res){});\n *\n * Sending data can be chained:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' })\n * .end(function(res){});\n *\n * Or passed to `.send()`:\n *\n * request\n * .post('/user')\n * .send({ name: 'tj' }, function(res){});\n *\n * Or passed to `.post()`:\n *\n * request\n * .post('/user', { name: 'tj' })\n * .end(function(res){});\n *\n * Or further reduced to a single call for simple cases:\n *\n * request\n * .post('/user', { name: 'tj' }, function(res){});\n *\n * @param {XMLHTTPRequest} xhr\n * @param {Object} options\n * @api private\n */\n\nfunction Response(req) {\n this.req = req;\n this.xhr = this.req.xhr;\n // responseText is accessible only if responseType is '' or 'text' and on older browsers\n this.text =\n (this.req.method !== 'HEAD' &&\n (this.xhr.responseType === '' || this.xhr.responseType === 'text')) ||\n typeof this.xhr.responseType === 'undefined'\n ? this.xhr.responseText\n : null;\n this.statusText = this.req.xhr.statusText;\n let { status } = this.xhr;\n // handle IE9 bug: http://stackoverflow.com/questions/10046972/msie-returns-status-code-of-1223-for-ajax-request\n if (status === 1223) {\n status = 204;\n }\n\n this._setStatusProperties(status);\n this.headers = parseHeader(this.xhr.getAllResponseHeaders());\n this.header = this.headers;\n // getAllResponseHeaders sometimes falsely returns \"\" for CORS requests, but\n // getResponseHeader still works. so we get content-type even if getting\n // other headers fails.\n this.header['content-type'] = this.xhr.getResponseHeader('content-type');\n this._setHeaderProperties(this.header);\n\n if (this.text === null && req._responseType) {\n this.body = this.xhr.response;\n } else {\n this.body =\n this.req.method === 'HEAD'\n ? null\n : this._parseBody(this.text ? this.text : this.xhr.response);\n }\n}\n\n// eslint-disable-next-line new-cap\nResponseBase(Response.prototype);\n\n/**\n * Parse the given body `str`.\n *\n * Used for auto-parsing of bodies. Parsers\n * are defined on the `superagent.parse` object.\n *\n * @param {String} str\n * @return {Mixed}\n * @api private\n */\n\nResponse.prototype._parseBody = function (str) {\n let parse = request.parse[this.type];\n if (this.req._parser) {\n return this.req._parser(this, str);\n }\n\n if (!parse && isJSON(this.type)) {\n parse = request.parse['application/json'];\n }\n\n return parse && str && (str.length > 0 || str instanceof Object)\n ? parse(str)\n : null;\n};\n\n/**\n * Return an `Error` representative of this response.\n *\n * @return {Error}\n * @api public\n */\n\nResponse.prototype.toError = function () {\n const { req } = this;\n const { method } = req;\n const { url } = req;\n\n const msg = `cannot ${method} ${url} (${this.status})`;\n const err = new Error(msg);\n err.status = this.status;\n err.method = method;\n err.url = url;\n\n return err;\n};\n\n/**\n * Expose `Response`.\n */\n\nrequest.Response = Response;\n\n/**\n * Initialize a new `Request` with the given `method` and `url`.\n *\n * @param {String} method\n * @param {String} url\n * @api public\n */\n\nfunction Request(method, url) {\n const self = this;\n this._query = this._query || [];\n this.method = method;\n this.url = url;\n this.header = {}; // preserves header name case\n this._header = {}; // coerces header names to lowercase\n this.on('end', () => {\n let err = null;\n let res = null;\n\n try {\n res = new Response(self);\n } catch (err_) {\n err = new Error('Parser is unable to parse the response');\n err.parse = true;\n err.original = err_;\n // issue #675: return the raw response if the response parsing fails\n if (self.xhr) {\n // ie9 doesn't have 'response' property\n err.rawResponse =\n typeof self.xhr.responseType === 'undefined'\n ? self.xhr.responseText\n : self.xhr.response;\n // issue #876: return the http status code if the response parsing fails\n err.status = self.xhr.status ? self.xhr.status : null;\n err.statusCode = err.status; // backwards-compat only\n } else {\n err.rawResponse = null;\n err.status = null;\n }\n\n return self.callback(err);\n }\n\n self.emit('response', res);\n\n let new_err;\n try {\n if (!self._isResponseOK(res)) {\n new_err = new Error(\n res.statusText || res.text || 'Unsuccessful HTTP response'\n );\n }\n } catch (err_) {\n new_err = err_; // ok() callback can throw\n }\n\n // #1000 don't catch errors from the callback to avoid double calling it\n if (new_err) {\n new_err.original = err;\n new_err.response = res;\n new_err.status = res.status;\n self.callback(new_err, res);\n } else {\n self.callback(null, res);\n }\n });\n}\n\n/**\n * Mixin `Emitter` and `RequestBase`.\n */\n\n// eslint-disable-next-line new-cap\nEmitter(Request.prototype);\n// eslint-disable-next-line new-cap\nRequestBase(Request.prototype);\n\n/**\n * Set Content-Type to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.xml = 'application/xml';\n *\n * request.post('/')\n * .type('xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * request.post('/')\n * .type('application/xml')\n * .send(xmlstring)\n * .end(callback);\n *\n * @param {String} type\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.type = function (type) {\n this.set('Content-Type', request.types[type] || type);\n return this;\n};\n\n/**\n * Set Accept to `type`, mapping values from `request.types`.\n *\n * Examples:\n *\n * superagent.types.json = 'application/json';\n *\n * request.get('/agent')\n * .accept('json')\n * .end(callback);\n *\n * request.get('/agent')\n * .accept('application/json')\n * .end(callback);\n *\n * @param {String} accept\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.accept = function (type) {\n this.set('Accept', request.types[type] || type);\n return this;\n};\n\n/**\n * Set Authorization field value with `user` and `pass`.\n *\n * @param {String} user\n * @param {String} [pass] optional in case of using 'bearer' as type\n * @param {Object} options with 'type' property 'auto', 'basic' or 'bearer' (default 'basic')\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.auth = function (user, pass, options) {\n if (arguments.length === 1) pass = '';\n if (typeof pass === 'object' && pass !== null) {\n // pass is optional and can be replaced with options\n options = pass;\n pass = '';\n }\n\n if (!options) {\n options = {\n type: typeof btoa === 'function' ? 'basic' : 'auto'\n };\n }\n\n const encoder = (string) => {\n if (typeof btoa === 'function') {\n return btoa(string);\n }\n\n throw new Error('Cannot use basic auth, btoa is not a function');\n };\n\n return this._auth(user, pass, options, encoder);\n};\n\n/**\n * Add query-string `val`.\n *\n * Examples:\n *\n * request.get('/shoes')\n * .query('size=10')\n * .query({ color: 'blue' })\n *\n * @param {Object|String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.query = function (val) {\n if (typeof val !== 'string') val = serialize(val);\n if (val) this._query.push(val);\n return this;\n};\n\n/**\n * Queue the given `file` as an attachment to the specified `field`,\n * with optional `options` (or filename).\n *\n * ``` js\n * request.post('/upload')\n * .attach('content', new Blob(['hey!'], { type: \"text/html\"}))\n * .end(callback);\n * ```\n *\n * @param {String} field\n * @param {Blob|File} file\n * @param {String|Object} options\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.attach = function (field, file, options) {\n if (file) {\n if (this._data) {\n throw new Error(\"superagent can't mix .send() and .attach()\");\n }\n\n this._getFormData().append(field, file, options || file.name);\n }\n\n return this;\n};\n\nRequest.prototype._getFormData = function () {\n if (!this._formData) {\n this._formData = new root.FormData();\n }\n\n return this._formData;\n};\n\n/**\n * Invoke the callback with `err` and `res`\n * and handle arity check.\n *\n * @param {Error} err\n * @param {Response} res\n * @api private\n */\n\nRequest.prototype.callback = function (err, res) {\n if (this._shouldRetry(err, res)) {\n return this._retry();\n }\n\n const fn = this._callback;\n this.clearTimeout();\n\n if (err) {\n if (this._maxRetries) err.retries = this._retries - 1;\n this.emit('error', err);\n }\n\n fn(err, res);\n};\n\n/**\n * Invoke callback with x-domain error.\n *\n * @api private\n */\n\nRequest.prototype.crossDomainError = function () {\n const err = new Error(\n 'Request has been terminated\\nPossible causes: the network is offline, Origin is not allowed by Access-Control-Allow-Origin, the page is being unloaded, etc.'\n );\n err.crossDomain = true;\n\n err.status = this.status;\n err.method = this.method;\n err.url = this.url;\n\n this.callback(err);\n};\n\n// This only warns, because the request is still likely to work\nRequest.prototype.agent = function () {\n console.warn('This is not supported in browser version of superagent');\n return this;\n};\n\nRequest.prototype.ca = Request.prototype.agent;\nRequest.prototype.buffer = Request.prototype.ca;\n\n// This throws, because it can't send/receive data as expected\nRequest.prototype.write = () => {\n throw new Error(\n 'Streaming is not supported in browser version of superagent'\n );\n};\n\nRequest.prototype.pipe = Request.prototype.write;\n\n/**\n * Check if `obj` is a host object,\n * we don't want to serialize these :)\n *\n * @param {Object} obj host object\n * @return {Boolean} is a host object\n * @api private\n */\nRequest.prototype._isHost = function (obj) {\n // Native objects stringify to [object File], [object Blob], [object FormData], etc.\n return (\n obj &&\n typeof obj === 'object' &&\n !Array.isArray(obj) &&\n Object.prototype.toString.call(obj) !== '[object Object]'\n );\n};\n\n/**\n * Initiate request, invoking callback `fn(res)`\n * with an instanceof `Response`.\n *\n * @param {Function} fn\n * @return {Request} for chaining\n * @api public\n */\n\nRequest.prototype.end = function (fn) {\n if (this._endCalled) {\n console.warn(\n 'Warning: .end() was called twice. This is not supported in superagent'\n );\n }\n\n this._endCalled = true;\n\n // store callback\n this._callback = fn || noop;\n\n // querystring\n this._finalizeQueryString();\n\n this._end();\n};\n\nRequest.prototype._setUploadTimeout = function () {\n const self = this;\n\n // upload timeout it's wokrs only if deadline timeout is off\n if (this._uploadTimeout && !this._uploadTimeoutTimer) {\n this._uploadTimeoutTimer = setTimeout(() => {\n self._timeoutError(\n 'Upload timeout of ',\n self._uploadTimeout,\n 'ETIMEDOUT'\n );\n }, this._uploadTimeout);\n }\n};\n\n// eslint-disable-next-line complexity\nRequest.prototype._end = function () {\n if (this._aborted)\n return this.callback(\n new Error('The request has been aborted even before .end() was called')\n );\n\n const self = this;\n this.xhr = request.getXHR();\n const { xhr } = this;\n let data = this._formData || this._data;\n\n this._setTimeouts();\n\n // state change\n xhr.onreadystatechange = () => {\n const { readyState } = xhr;\n if (readyState >= 2 && self._responseTimeoutTimer) {\n clearTimeout(self._responseTimeoutTimer);\n }\n\n if (readyState !== 4) {\n return;\n }\n\n // In IE9, reads to any property (e.g. status) off of an aborted XHR will\n // result in the error \"Could not complete the operation due to error c00c023f\"\n let status;\n try {\n status = xhr.status;\n } catch {\n status = 0;\n }\n\n if (!status) {\n if (self.timedout || self._aborted) return;\n return self.crossDomainError();\n }\n\n self.emit('end');\n };\n\n // progress\n const handleProgress = (direction, e) => {\n if (e.total > 0) {\n e.percent = (e.loaded / e.total) * 100;\n\n if (e.percent === 100) {\n clearTimeout(self._uploadTimeoutTimer);\n }\n }\n\n e.direction = direction;\n self.emit('progress', e);\n };\n\n if (this.hasListeners('progress')) {\n try {\n xhr.addEventListener('progress', handleProgress.bind(null, 'download'));\n if (xhr.upload) {\n xhr.upload.addEventListener(\n 'progress',\n handleProgress.bind(null, 'upload')\n );\n }\n } catch {\n // Accessing xhr.upload fails in IE from a web worker, so just pretend it doesn't exist.\n // Reported here:\n // https://connect.microsoft.com/IE/feedback/details/837245/xmlhttprequest-upload-throws-invalid-argument-when-used-from-web-worker-context\n }\n }\n\n if (xhr.upload) {\n this._setUploadTimeout();\n }\n\n // initiate request\n try {\n if (this.username && this.password) {\n xhr.open(this.method, this.url, true, this.username, this.password);\n } else {\n xhr.open(this.method, this.url, true);\n }\n } catch (err) {\n // see #1149\n return this.callback(err);\n }\n\n // CORS\n if (this._withCredentials) xhr.withCredentials = true;\n\n // body\n if (\n !this._formData &&\n this.method !== 'GET' &&\n this.method !== 'HEAD' &&\n typeof data !== 'string' &&\n !this._isHost(data)\n ) {\n // serialize stuff\n const contentType = this._header['content-type'];\n let serialize =\n this._serializer ||\n request.serialize[contentType ? contentType.split(';')[0] : ''];\n if (!serialize && isJSON(contentType)) {\n serialize = request.serialize['application/json'];\n }\n\n if (serialize) data = serialize(data);\n }\n\n // set header fields\n for (const field in this.header) {\n if (this.header[field] === null) continue;\n\n if (Object.prototype.hasOwnProperty.call(this.header, field))\n xhr.setRequestHeader(field, this.header[field]);\n }\n\n if (this._responseType) {\n xhr.responseType = this._responseType;\n }\n\n // send stuff\n this.emit('request', this);\n\n // IE11 xhr.send(undefined) sends 'undefined' string as POST payload (instead of nothing)\n // We need null here if data is undefined\n xhr.send(typeof data === 'undefined' ? null : data);\n};\n\nrequest.agent = () => new Agent();\n\n['GET', 'POST', 'OPTIONS', 'PATCH', 'PUT', 'DELETE'].forEach((method) => {\n Agent.prototype[method.toLowerCase()] = function (url, fn) {\n const req = new request.Request(method, url);\n this._setDefaults(req);\n if (fn) {\n req.end(fn);\n }\n\n return req;\n };\n});\n\nAgent.prototype.del = Agent.prototype.delete;\n\n/**\n * GET `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.get = (url, data, fn) => {\n const req = request('GET', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) req.query(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * HEAD `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.head = (url, data, fn) => {\n const req = request('HEAD', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) req.query(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * OPTIONS query to `url` with optional callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.options = (url, data, fn) => {\n const req = request('OPTIONS', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * DELETE `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nfunction del(url, data, fn) {\n const req = request('DELETE', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n}\n\nrequest.del = del;\nrequest.delete = del;\n\n/**\n * PATCH `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.patch = (url, data, fn) => {\n const req = request('PATCH', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * POST `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed} [data]\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.post = (url, data, fn) => {\n const req = request('POST', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n\n/**\n * PUT `url` with optional `data` and callback `fn(res)`.\n *\n * @param {String} url\n * @param {Mixed|Function} [data] or fn\n * @param {Function} [fn]\n * @return {Request}\n * @api public\n */\n\nrequest.put = (url, data, fn) => {\n const req = request('PUT', url);\n if (typeof data === 'function') {\n fn = data;\n data = null;\n }\n\n if (data) req.send(data);\n if (fn) req.end(fn);\n return req;\n};\n","/**\n * Check if `obj` is an object.\n *\n * @param {Object} obj\n * @return {Boolean}\n * @api private\n */\n\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object';\n}\n\nmodule.exports = isObject;\n","/**\n * Module of mixed-in functions shared between node and client code\n */\nconst isObject = require('./is-object');\n\n/**\n * Expose `RequestBase`.\n */\n\nmodule.exports = RequestBase;\n\n/**\n * Initialize a new `RequestBase`.\n *\n * @api public\n */\n\nfunction RequestBase(object) {\n if (object) return mixin(object);\n}\n\n/**\n * Mixin the prototype properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(object) {\n for (const key in RequestBase.prototype) {\n if (Object.prototype.hasOwnProperty.call(RequestBase.prototype, key))\n object[key] = RequestBase.prototype[key];\n }\n\n return object;\n}\n\n/**\n * Clear previous timeout.\n *\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.clearTimeout = function () {\n clearTimeout(this._timer);\n clearTimeout(this._responseTimeoutTimer);\n clearTimeout(this._uploadTimeoutTimer);\n delete this._timer;\n delete this._responseTimeoutTimer;\n delete this._uploadTimeoutTimer;\n return this;\n};\n\n/**\n * Override default response body parser\n *\n * This function will be called to convert incoming data into request.body\n *\n * @param {Function}\n * @api public\n */\n\nRequestBase.prototype.parse = function (fn) {\n this._parser = fn;\n return this;\n};\n\n/**\n * Set format of binary response body.\n * In browser valid formats are 'blob' and 'arraybuffer',\n * which return Blob and ArrayBuffer, respectively.\n *\n * In Node all values result in Buffer.\n *\n * Examples:\n *\n * req.get('/')\n * .responseType('blob')\n * .end(callback);\n *\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.responseType = function (value) {\n this._responseType = value;\n return this;\n};\n\n/**\n * Override default request body serializer\n *\n * This function will be called to convert data set via .send or .attach into payload to send\n *\n * @param {Function}\n * @api public\n */\n\nRequestBase.prototype.serialize = function (fn) {\n this._serializer = fn;\n return this;\n};\n\n/**\n * Set timeouts.\n *\n * - response timeout is time between sending request and receiving the first byte of the response. Includes DNS and connection time.\n * - deadline is the time from start of the request to receiving response body in full. If the deadline is too short large files may not load at all on slow connections.\n * - upload is the time since last bit of data was sent or received. This timeout works only if deadline timeout is off\n *\n * Value of 0 or false means no timeout.\n *\n * @param {Number|Object} ms or {response, deadline}\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.timeout = function (options) {\n if (!options || typeof options !== 'object') {\n this._timeout = options;\n this._responseTimeout = 0;\n this._uploadTimeout = 0;\n return this;\n }\n\n for (const option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option)) {\n switch (option) {\n case 'deadline':\n this._timeout = options.deadline;\n break;\n case 'response':\n this._responseTimeout = options.response;\n break;\n case 'upload':\n this._uploadTimeout = options.upload;\n break;\n default:\n console.warn('Unknown timeout option', option);\n }\n }\n }\n\n return this;\n};\n\n/**\n * Set number of retry attempts on error.\n *\n * Failed requests will be retried 'count' times if timeout or err.code >= 500.\n *\n * @param {Number} count\n * @param {Function} [fn]\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.retry = function (count, fn) {\n // Default to 1 if no count passed or true\n if (arguments.length === 0 || count === true) count = 1;\n if (count <= 0) count = 0;\n this._maxRetries = count;\n this._retries = 0;\n this._retryCallback = fn;\n return this;\n};\n\n//\n// NOTE: we do not include ESOCKETTIMEDOUT because that is from `request` package\n// \n//\n// NOTE: we do not include EADDRINFO because it was removed from libuv in 2014\n// \n// \n//\n//\n// TODO: expose these as configurable defaults\n//\nconst ERROR_CODES = new Set([\n 'ETIMEDOUT',\n 'ECONNRESET',\n 'EADDRINUSE',\n 'ECONNREFUSED',\n 'EPIPE',\n 'ENOTFOUND',\n 'ENETUNREACH',\n 'EAI_AGAIN'\n]);\n\nconst STATUS_CODES = new Set([\n 408,\n 413,\n 429,\n 500,\n 502,\n 503,\n 504,\n 521,\n 522,\n 524\n]);\n\n// TODO: we would need to make this easily configurable before adding it in (e.g. some might want to add POST)\n// const METHODS = new Set(['GET', 'PUT', 'HEAD', 'DELETE', 'OPTIONS', 'TRACE']);\n\n/**\n * Determine if a request should be retried.\n * (Inspired by https://github.com/sindresorhus/got#retry)\n *\n * @param {Error} err an error\n * @param {Response} [res] response\n * @returns {Boolean} if segment should be retried\n */\nRequestBase.prototype._shouldRetry = function (err, res) {\n if (!this._maxRetries || this._retries++ >= this._maxRetries) {\n return false;\n }\n\n if (this._retryCallback) {\n try {\n const override = this._retryCallback(err, res);\n if (override === true) return true;\n if (override === false) return false;\n // undefined falls back to defaults\n } catch (err_) {\n console.error(err_);\n }\n }\n\n // TODO: we would need to make this easily configurable before adding it in (e.g. some might want to add POST)\n /*\n if (\n this.req &&\n this.req.method &&\n !METHODS.has(this.req.method.toUpperCase())\n )\n return false;\n */\n if (res && res.status && STATUS_CODES.has(res.status)) return true;\n if (err) {\n if (err.code && ERROR_CODES.has(err.code)) return true;\n // Superagent timeout\n if (err.timeout && err.code === 'ECONNABORTED') return true;\n if (err.crossDomain) return true;\n }\n\n return false;\n};\n\n/**\n * Retry request\n *\n * @return {Request} for chaining\n * @api private\n */\n\nRequestBase.prototype._retry = function () {\n this.clearTimeout();\n\n // node\n if (this.req) {\n this.req = null;\n this.req = this.request();\n }\n\n this._aborted = false;\n this.timedout = false;\n this.timedoutError = null;\n\n return this._end();\n};\n\n/**\n * Promise support\n *\n * @param {Function} resolve\n * @param {Function} [reject]\n * @return {Request}\n */\n\nRequestBase.prototype.then = function (resolve, reject) {\n if (!this._fullfilledPromise) {\n const self = this;\n if (this._endCalled) {\n console.warn(\n 'Warning: superagent request was sent twice, because both .end() and .then() were called. Never call .end() if you use promises'\n );\n }\n\n this._fullfilledPromise = new Promise((resolve, reject) => {\n self.on('abort', () => {\n if (this._maxRetries && this._maxRetries > this._retries) {\n return;\n }\n\n if (this.timedout && this.timedoutError) {\n reject(this.timedoutError);\n return;\n }\n\n const err = new Error('Aborted');\n err.code = 'ABORTED';\n err.status = this.status;\n err.method = this.method;\n err.url = this.url;\n reject(err);\n });\n self.end((err, res) => {\n if (err) reject(err);\n else resolve(res);\n });\n });\n }\n\n return this._fullfilledPromise.then(resolve, reject);\n};\n\nRequestBase.prototype.catch = function (cb) {\n return this.then(undefined, cb);\n};\n\n/**\n * Allow for extension\n */\n\nRequestBase.prototype.use = function (fn) {\n fn(this);\n return this;\n};\n\nRequestBase.prototype.ok = function (cb) {\n if (typeof cb !== 'function') throw new Error('Callback required');\n this._okCallback = cb;\n return this;\n};\n\nRequestBase.prototype._isResponseOK = function (res) {\n if (!res) {\n return false;\n }\n\n if (this._okCallback) {\n return this._okCallback(res);\n }\n\n return res.status >= 200 && res.status < 300;\n};\n\n/**\n * Get request header `field`.\n * Case-insensitive.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nRequestBase.prototype.get = function (field) {\n return this._header[field.toLowerCase()];\n};\n\n/**\n * Get case-insensitive header `field` value.\n * This is a deprecated internal API. Use `.get(field)` instead.\n *\n * (getHeader is no longer used internally by the superagent code base)\n *\n * @param {String} field\n * @return {String}\n * @api private\n * @deprecated\n */\n\nRequestBase.prototype.getHeader = RequestBase.prototype.get;\n\n/**\n * Set header `field` to `val`, or multiple fields with one object.\n * Case-insensitive.\n *\n * Examples:\n *\n * req.get('/')\n * .set('Accept', 'application/json')\n * .set('X-API-Key', 'foobar')\n * .end(callback);\n *\n * req.get('/')\n * .set({ Accept: 'application/json', 'X-API-Key': 'foobar' })\n * .end(callback);\n *\n * @param {String|Object} field\n * @param {String} val\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.set = function (field, value) {\n if (isObject(field)) {\n for (const key in field) {\n if (Object.prototype.hasOwnProperty.call(field, key))\n this.set(key, field[key]);\n }\n\n return this;\n }\n\n this._header[field.toLowerCase()] = value;\n this.header[field] = value;\n return this;\n};\n\n/**\n * Remove header `field`.\n * Case-insensitive.\n *\n * Example:\n *\n * req.get('/')\n * .unset('User-Agent')\n * .end(callback);\n *\n * @param {String} field field name\n */\nRequestBase.prototype.unset = function (field) {\n delete this._header[field.toLowerCase()];\n delete this.header[field];\n return this;\n};\n\n/**\n * Write the field `name` and `val`, or multiple fields with one object\n * for \"multipart/form-data\" request bodies.\n *\n * ``` js\n * request.post('/upload')\n * .field('foo', 'bar')\n * .end(callback);\n *\n * request.post('/upload')\n * .field({ foo: 'bar', baz: 'qux' })\n * .end(callback);\n * ```\n *\n * @param {String|Object} name name of field\n * @param {String|Blob|File|Buffer|fs.ReadStream} val value of field\n * @return {Request} for chaining\n * @api public\n */\nRequestBase.prototype.field = function (name, value) {\n // name should be either a string or an object.\n if (name === null || undefined === name) {\n throw new Error('.field(name, val) name can not be empty');\n }\n\n if (this._data) {\n throw new Error(\n \".field() can't be used if .send() is used. Please use only .send() or only .field() & .attach()\"\n );\n }\n\n if (isObject(name)) {\n for (const key in name) {\n if (Object.prototype.hasOwnProperty.call(name, key))\n this.field(key, name[key]);\n }\n\n return this;\n }\n\n if (Array.isArray(value)) {\n for (const i in value) {\n if (Object.prototype.hasOwnProperty.call(value, i))\n this.field(name, value[i]);\n }\n\n return this;\n }\n\n // val should be defined now\n if (value === null || undefined === value) {\n throw new Error('.field(name, val) val can not be empty');\n }\n\n if (typeof value === 'boolean') {\n value = String(value);\n }\n\n this._getFormData().append(name, value);\n return this;\n};\n\n/**\n * Abort the request, and clear potential timeout.\n *\n * @return {Request} request\n * @api public\n */\nRequestBase.prototype.abort = function () {\n if (this._aborted) {\n return this;\n }\n\n this._aborted = true;\n if (this.xhr) this.xhr.abort(); // browser\n if (this.req) this.req.abort(); // node\n this.clearTimeout();\n this.emit('abort');\n return this;\n};\n\nRequestBase.prototype._auth = function (user, pass, options, base64Encoder) {\n switch (options.type) {\n case 'basic':\n this.set('Authorization', `Basic ${base64Encoder(`${user}:${pass}`)}`);\n break;\n\n case 'auto':\n this.username = user;\n this.password = pass;\n break;\n\n case 'bearer': // usage would be .auth(accessToken, { type: 'bearer' })\n this.set('Authorization', `Bearer ${user}`);\n break;\n default:\n break;\n }\n\n return this;\n};\n\n/**\n * Enable transmission of cookies with x-domain requests.\n *\n * Note that for this to work the origin must not be\n * using \"Access-Control-Allow-Origin\" with a wildcard,\n * and also must set \"Access-Control-Allow-Credentials\"\n * to \"true\".\n *\n * @api public\n */\n\nRequestBase.prototype.withCredentials = function (on) {\n // This is browser-only functionality. Node side is no-op.\n if (on === undefined) on = true;\n this._withCredentials = on;\n return this;\n};\n\n/**\n * Set the max redirects to `n`. Does nothing in browser XHR implementation.\n *\n * @param {Number} n\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.redirects = function (n) {\n this._maxRedirects = n;\n return this;\n};\n\n/**\n * Maximum size of buffered response body, in bytes. Counts uncompressed size.\n * Default 200MB.\n *\n * @param {Number} n number of bytes\n * @return {Request} for chaining\n */\nRequestBase.prototype.maxResponseSize = function (n) {\n if (typeof n !== 'number') {\n throw new TypeError('Invalid argument');\n }\n\n this._maxResponseSize = n;\n return this;\n};\n\n/**\n * Convert to a plain javascript object (not JSON string) of scalar properties.\n * Note as this method is designed to return a useful non-this value,\n * it cannot be chained.\n *\n * @return {Object} describing method, url, and data of this request\n * @api public\n */\n\nRequestBase.prototype.toJSON = function () {\n return {\n method: this.method,\n url: this.url,\n data: this._data,\n headers: this._header\n };\n};\n\n/**\n * Send `data` as the request body, defaulting the `.type()` to \"json\" when\n * an object is given.\n *\n * Examples:\n *\n * // manual json\n * request.post('/user')\n * .type('json')\n * .send('{\"name\":\"tj\"}')\n * .end(callback)\n *\n * // auto json\n * request.post('/user')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // manual x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send('name=tj')\n * .end(callback)\n *\n * // auto x-www-form-urlencoded\n * request.post('/user')\n * .type('form')\n * .send({ name: 'tj' })\n * .end(callback)\n *\n * // defaults to x-www-form-urlencoded\n * request.post('/user')\n * .send('name=tobi')\n * .send('species=ferret')\n * .end(callback)\n *\n * @param {String|Object} data\n * @return {Request} for chaining\n * @api public\n */\n\n// eslint-disable-next-line complexity\nRequestBase.prototype.send = function (data) {\n const isObject_ = isObject(data);\n let type = this._header['content-type'];\n\n if (this._formData) {\n throw new Error(\n \".send() can't be used if .attach() or .field() is used. Please use only .send() or only .field() & .attach()\"\n );\n }\n\n if (isObject_ && !this._data) {\n if (Array.isArray(data)) {\n this._data = [];\n } else if (!this._isHost(data)) {\n this._data = {};\n }\n } else if (data && this._data && this._isHost(this._data)) {\n throw new Error(\"Can't merge these send calls\");\n }\n\n // merge\n if (isObject_ && isObject(this._data)) {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key))\n this._data[key] = data[key];\n }\n } else if (typeof data === 'string') {\n // default to x-www-form-urlencoded\n if (!type) this.type('form');\n type = this._header['content-type'];\n if (type) type = type.toLowerCase().trim();\n if (type === 'application/x-www-form-urlencoded') {\n this._data = this._data ? `${this._data}&${data}` : data;\n } else {\n this._data = (this._data || '') + data;\n }\n } else {\n this._data = data;\n }\n\n if (!isObject_ || this._isHost(data)) {\n return this;\n }\n\n // default to json\n if (!type) this.type('json');\n return this;\n};\n\n/**\n * Sort `querystring` by the sort function\n *\n *\n * Examples:\n *\n * // default order\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery()\n * .end(callback)\n *\n * // customized sort function\n * request.get('/user')\n * .query('name=Nick')\n * .query('search=Manny')\n * .sortQuery(function(a, b){\n * return a.length - b.length;\n * })\n * .end(callback)\n *\n *\n * @param {Function} sort\n * @return {Request} for chaining\n * @api public\n */\n\nRequestBase.prototype.sortQuery = function (sort) {\n // _sort default to true but otherwise can be a function or boolean\n this._sort = typeof sort === 'undefined' ? true : sort;\n return this;\n};\n\n/**\n * Compose querystring to append to req.url\n *\n * @api private\n */\nRequestBase.prototype._finalizeQueryString = function () {\n const query = this._query.join('&');\n if (query) {\n this.url += (this.url.includes('?') ? '&' : '?') + query;\n }\n\n this._query.length = 0; // Makes the call idempotent\n\n if (this._sort) {\n const index = this.url.indexOf('?');\n if (index >= 0) {\n const queryArray = this.url.slice(index + 1).split('&');\n if (typeof this._sort === 'function') {\n queryArray.sort(this._sort);\n } else {\n queryArray.sort();\n }\n\n this.url = this.url.slice(0, index) + '?' + queryArray.join('&');\n }\n }\n};\n\n// For backwards compat only\nRequestBase.prototype._appendQueryString = () => {\n console.warn('Unsupported');\n};\n\n/**\n * Invoke callback with timeout error.\n *\n * @api private\n */\n\nRequestBase.prototype._timeoutError = function (reason, timeout, errno) {\n if (this._aborted) {\n return;\n }\n\n const err = new Error(`${reason + timeout}ms exceeded`);\n err.timeout = timeout;\n err.code = 'ECONNABORTED';\n err.errno = errno;\n this.timedout = true;\n this.timedoutError = err;\n this.abort();\n this.callback(err);\n};\n\nRequestBase.prototype._setTimeouts = function () {\n const self = this;\n\n // deadline\n if (this._timeout && !this._timer) {\n this._timer = setTimeout(() => {\n self._timeoutError('Timeout of ', self._timeout, 'ETIME');\n }, this._timeout);\n }\n\n // response timeout\n if (this._responseTimeout && !this._responseTimeoutTimer) {\n this._responseTimeoutTimer = setTimeout(() => {\n self._timeoutError(\n 'Response timeout of ',\n self._responseTimeout,\n 'ETIMEDOUT'\n );\n }, this._responseTimeout);\n }\n};\n","/**\n * Module dependencies.\n */\n\nconst utils = require('./utils');\n\n/**\n * Expose `ResponseBase`.\n */\n\nmodule.exports = ResponseBase;\n\n/**\n * Initialize a new `ResponseBase`.\n *\n * @api public\n */\n\nfunction ResponseBase(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the prototype properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (const key in ResponseBase.prototype) {\n if (Object.prototype.hasOwnProperty.call(ResponseBase.prototype, key))\n obj[key] = ResponseBase.prototype[key];\n }\n\n return obj;\n}\n\n/**\n * Get case-insensitive `field` value.\n *\n * @param {String} field\n * @return {String}\n * @api public\n */\n\nResponseBase.prototype.get = function (field) {\n return this.header[field.toLowerCase()];\n};\n\n/**\n * Set header related properties:\n *\n * - `.type` the content type without params\n *\n * A response of \"Content-Type: text/plain; charset=utf-8\"\n * will provide you with a `.type` of \"text/plain\".\n *\n * @param {Object} header\n * @api private\n */\n\nResponseBase.prototype._setHeaderProperties = function (header) {\n // TODO: moar!\n // TODO: make this a util\n\n // content-type\n const ct = header['content-type'] || '';\n this.type = utils.type(ct);\n\n // params\n const params = utils.params(ct);\n for (const key in params) {\n if (Object.prototype.hasOwnProperty.call(params, key))\n this[key] = params[key];\n }\n\n this.links = {};\n\n // links\n try {\n if (header.link) {\n this.links = utils.parseLinks(header.link);\n }\n } catch {\n // ignore\n }\n};\n\n/**\n * Set flags such as `.ok` based on `status`.\n *\n * For example a 2xx response will give you a `.ok` of __true__\n * whereas 5xx will be __false__ and `.error` will be __true__. The\n * `.clientError` and `.serverError` are also available to be more\n * specific, and `.statusType` is the class of error ranging from 1..5\n * sometimes useful for mapping respond colors etc.\n *\n * \"sugar\" properties are also defined for common cases. Currently providing:\n *\n * - .noContent\n * - .badRequest\n * - .unauthorized\n * - .notAcceptable\n * - .notFound\n *\n * @param {Number} status\n * @api private\n */\n\nResponseBase.prototype._setStatusProperties = function (status) {\n const type = (status / 100) | 0;\n\n // status / class\n this.statusCode = status;\n this.status = this.statusCode;\n this.statusType = type;\n\n // basics\n this.info = type === 1;\n this.ok = type === 2;\n this.redirect = type === 3;\n this.clientError = type === 4;\n this.serverError = type === 5;\n this.error = type === 4 || type === 5 ? this.toError() : false;\n\n // sugar\n this.created = status === 201;\n this.accepted = status === 202;\n this.noContent = status === 204;\n this.badRequest = status === 400;\n this.unauthorized = status === 401;\n this.notAcceptable = status === 406;\n this.forbidden = status === 403;\n this.notFound = status === 404;\n this.unprocessableEntity = status === 422;\n};\n","/**\n * Return the mime type for the given `str`.\n *\n * @param {String} str\n * @return {String}\n * @api private\n */\n\nexports.type = (str) => str.split(/ *; */).shift();\n\n/**\n * Return header field parameters.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nexports.params = (val) => {\n const obj = {};\n for (const str of val.split(/ *; */)) {\n const parts = str.split(/ *= */);\n const key = parts.shift();\n const val = parts.shift();\n\n if (key && val) obj[key] = val;\n }\n\n return obj;\n};\n\n/**\n * Parse Link header fields.\n *\n * @param {String} str\n * @return {Object}\n * @api private\n */\n\nexports.parseLinks = (val) => {\n const obj = {};\n for (const str of val.split(/ *, */)) {\n const parts = str.split(/ *; */);\n const url = parts[0].slice(1, -1);\n const rel = parts[1].split(/ *= */)[1].slice(1, -1);\n obj[rel] = url;\n }\n\n return obj;\n};\n\n/**\n * Strip content related fields from `header`.\n *\n * @param {Object} header\n * @return {Object} header\n * @api private\n */\n\nexports.cleanHeader = (header, changesOrigin) => {\n delete header['content-type'];\n delete header['content-length'];\n delete header['transfer-encoding'];\n delete header.host;\n // secuirty\n if (changesOrigin) {\n delete header.authorization;\n delete header.cookie;\n }\n\n return header;\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","/*!\n * Chart.js v3.7.0\n * https://www.chartjs.org\n * (c) 2021 Chart.js Contributors\n * Released under the MIT License\n */\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\nconst requestAnimFrame = (function() {\n if (typeof window === 'undefined') {\n return function(callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}());\nfunction throttled(fn, thisArg, updateFn) {\n const updateArgs = updateFn || ((args) => Array.prototype.slice.call(args));\n let ticking = false;\n let args = [];\n return function(...rest) {\n args = updateArgs(rest);\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, args);\n });\n }\n };\n}\nfunction debounce(fn, delay) {\n let timeout;\n return function(...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\nconst _toLeftRightCenter = (align) => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n\nfunction noop() {}\nconst uid = (function() {\n let id = 0;\n return function() {\n return id++;\n };\n}());\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.substr(0, 7) === '[object' && type.substr(-6) === 'Array]') {\n return true;\n }\n return false;\n}\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\nconst isNumberFinite = (value) => (typeof value === 'number' || value instanceof Number) && isFinite(+value);\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100\n : value / dimension;\nconst toDimension = (value, dimension) =>\n typeof value === 'string' && value.endsWith('%') ?\n parseFloat(value) / 100 * dimension\n : +value;\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\nfunction clone$1(source) {\n if (isArray(source)) {\n return source.map(clone$1);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone$1(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n merge(tval, sval, options);\n } else {\n target[key] = clone$1(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n for (let i = 0; i < ilen; ++i) {\n source = sources[i];\n if (!isObject(source)) {\n continue;\n }\n const keys = Object.keys(source);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, source, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n return merge(target, source, {merger: _mergerIf});\n}\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone$1(sval);\n }\n}\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous +\n\t\t\t'\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\nconst emptyString = '';\nconst dot = '.';\nfunction indexOfDotOrLength(key, start) {\n const idx = key.indexOf(dot, start);\n return idx === -1 ? key.length : idx;\n}\nfunction resolveObjectKey(obj, key) {\n if (key === emptyString) {\n return obj;\n }\n let pos = 0;\n let idx = indexOfDotOrLength(key, pos);\n while (obj && idx > pos) {\n obj = obj[key.substr(pos, idx - pos)];\n pos = idx + 1;\n idx = indexOfDotOrLength(key, pos);\n }\n return obj;\n}\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = (value) => typeof value !== 'undefined';\nconst isFunction = (value) => typeof value === 'function';\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return ((rounded - epsilon) <= x) && ((rounded + epsilon) >= x);\n}\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < (-0.5 * PI)) {\n angle += TAU;\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || (sameAngleIsFullCircle && s === e)\n || (angleToStart > angleToEnd && startToAngle < endToAngle);\n}\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\n\nconst atEdge = (t) => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t\n : -0.5 * ((--t) * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t\n : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t\n : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => ((t /= 0.5) < 1)\n ? 0.5 * t * t * t * t * t\n : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => (t === 0) ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => (t === 1) ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5\n ? 0.5 * Math.pow(2, 10 * (t * 2 - 1))\n : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => (t >= 1) ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => ((t /= 0.5) < 1)\n ? -0.5 * (Math.sqrt(1 - t * t) - 1)\n : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t :\n t < 0.5\n ? 0.5 * elasticIn(t * 2, s, p)\n : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= (1.525)) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < (1 / d)) {\n return m * t * t;\n }\n if (t < (2 / d)) {\n return m * (t -= (1.5 / d)) * t + 0.75;\n }\n if (t < (2.5 / d)) {\n return m * (t -= (2.25 / d)) * t + 0.9375;\n }\n return m * (t -= (2.625 / d)) * t + 0.984375;\n },\n easeInOutBounce: t => (t < 0.5)\n ? effects.easeInBounce(t * 2) * 0.5\n : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5,\n};\n\n/*!\n * @kurkle/color v0.1.9\n * https://github.com/kurkle/color#readme\n * (c) 2020 Jukka Kurkela\n * Released under the MIT License\n */\nconst map = {0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15};\nconst hex = '0123456789ABCDEF';\nconst h1 = (b) => hex[b & 0xF];\nconst h2 = (b) => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = (b) => (((b & 0xF0) >> 4) === (b & 0xF));\nfunction isShort(v) {\n\treturn eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\n}\nfunction hexParse(str) {\n\tvar len = str.length;\n\tvar ret;\n\tif (str[0] === '#') {\n\t\tif (len === 4 || len === 5) {\n\t\t\tret = {\n\t\t\t\tr: 255 & map[str[1]] * 17,\n\t\t\t\tg: 255 & map[str[2]] * 17,\n\t\t\t\tb: 255 & map[str[3]] * 17,\n\t\t\t\ta: len === 5 ? map[str[4]] * 17 : 255\n\t\t\t};\n\t\t} else if (len === 7 || len === 9) {\n\t\t\tret = {\n\t\t\t\tr: map[str[1]] << 4 | map[str[2]],\n\t\t\t\tg: map[str[3]] << 4 | map[str[4]],\n\t\t\t\tb: map[str[5]] << 4 | map[str[6]],\n\t\t\t\ta: len === 9 ? (map[str[7]] << 4 | map[str[8]]) : 255\n\t\t\t};\n\t\t}\n\t}\n\treturn ret;\n}\nfunction hexString(v) {\n\tvar f = isShort(v) ? h1 : h2;\n\treturn v\n\t\t? '#' + f(v.r) + f(v.g) + f(v.b) + (v.a < 255 ? f(v.a) : '')\n\t\t: v;\n}\nfunction round(v) {\n\treturn v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n\treturn lim(round(v * 2.55), 0, 255);\n}\nfunction n2b(v) {\n\treturn lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n\treturn lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n\treturn lim(round(v * 100), 0, 100);\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n\tconst m = RGB_RE.exec(str);\n\tlet a = 255;\n\tlet r, g, b;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[7] !== r) {\n\t\tconst v = +m[7];\n\t\ta = 255 & (m[8] ? p2b(v) : v * 255);\n\t}\n\tr = +m[1];\n\tg = +m[3];\n\tb = +m[5];\n\tr = 255 & (m[2] ? p2b(r) : r);\n\tg = 255 & (m[4] ? p2b(g) : g);\n\tb = 255 & (m[6] ? p2b(b) : b);\n\treturn {\n\t\tr: r,\n\t\tg: g,\n\t\tb: b,\n\t\ta: a\n\t};\n}\nfunction rgbString(v) {\n\treturn v && (\n\t\tv.a < 255\n\t\t\t? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})`\n\t\t\t: `rgb(${v.r}, ${v.g}, ${v.b})`\n\t);\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n\tconst a = s * Math.min(l, 1 - l);\n\tconst f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n\treturn [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n\tconst f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n\treturn [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n\tconst rgb = hsl2rgbn(h, 1, 0.5);\n\tlet i;\n\tif (w + b > 1) {\n\t\ti = 1 / (w + b);\n\t\tw *= i;\n\t\tb *= i;\n\t}\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] *= 1 - w - b;\n\t\trgb[i] += w;\n\t}\n\treturn rgb;\n}\nfunction rgb2hsl(v) {\n\tconst range = 255;\n\tconst r = v.r / range;\n\tconst g = v.g / range;\n\tconst b = v.b / range;\n\tconst max = Math.max(r, g, b);\n\tconst min = Math.min(r, g, b);\n\tconst l = (max + min) / 2;\n\tlet h, s, d;\n\tif (max !== min) {\n\t\td = max - min;\n\t\ts = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\t\th = max === r\n\t\t\t? ((g - b) / d) + (g < b ? 6 : 0)\n\t\t\t: max === g\n\t\t\t\t? (b - r) / d + 2\n\t\t\t\t: (r - g) / d + 4;\n\t\th = h * 60 + 0.5;\n\t}\n\treturn [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n\treturn (\n\t\tArray.isArray(a)\n\t\t\t? f(a[0], a[1], a[2])\n\t\t\t: f(a, b, c)\n\t).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n\treturn calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n\treturn calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n\treturn calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n\treturn (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n\tconst m = HUE_RE.exec(str);\n\tlet a = 255;\n\tlet v;\n\tif (!m) {\n\t\treturn;\n\t}\n\tif (m[5] !== v) {\n\t\ta = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n\t}\n\tconst h = hue(+m[2]);\n\tconst p1 = +m[3] / 100;\n\tconst p2 = +m[4] / 100;\n\tif (m[1] === 'hwb') {\n\t\tv = hwb2rgb(h, p1, p2);\n\t} else if (m[1] === 'hsv') {\n\t\tv = hsv2rgb(h, p1, p2);\n\t} else {\n\t\tv = hsl2rgb(h, p1, p2);\n\t}\n\treturn {\n\t\tr: v[0],\n\t\tg: v[1],\n\t\tb: v[2],\n\t\ta: a\n\t};\n}\nfunction rotate(v, deg) {\n\tvar h = rgb2hsl(v);\n\th[0] = hue(h[0] + deg);\n\th = hsl2rgb(h);\n\tv.r = h[0];\n\tv.g = h[1];\n\tv.b = h[2];\n}\nfunction hslString(v) {\n\tif (!v) {\n\t\treturn;\n\t}\n\tconst a = rgb2hsl(v);\n\tconst h = a[0];\n\tconst s = n2p(a[1]);\n\tconst l = n2p(a[2]);\n\treturn v.a < 255\n\t\t? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})`\n\t\t: `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map$1 = {\n\tx: 'dark',\n\tZ: 'light',\n\tY: 're',\n\tX: 'blu',\n\tW: 'gr',\n\tV: 'medium',\n\tU: 'slate',\n\tA: 'ee',\n\tT: 'ol',\n\tS: 'or',\n\tB: 'ra',\n\tC: 'lateg',\n\tD: 'ights',\n\tR: 'in',\n\tQ: 'turquois',\n\tE: 'hi',\n\tP: 'ro',\n\tO: 'al',\n\tN: 'le',\n\tM: 'de',\n\tL: 'yello',\n\tF: 'en',\n\tK: 'ch',\n\tG: 'arks',\n\tH: 'ea',\n\tI: 'ightg',\n\tJ: 'wh'\n};\nconst names = {\n\tOiceXe: 'f0f8ff',\n\tantiquewEte: 'faebd7',\n\taqua: 'ffff',\n\taquamarRe: '7fffd4',\n\tazuY: 'f0ffff',\n\tbeige: 'f5f5dc',\n\tbisque: 'ffe4c4',\n\tblack: '0',\n\tblanKedOmond: 'ffebcd',\n\tXe: 'ff',\n\tXeviTet: '8a2be2',\n\tbPwn: 'a52a2a',\n\tburlywood: 'deb887',\n\tcaMtXe: '5f9ea0',\n\tKartYuse: '7fff00',\n\tKocTate: 'd2691e',\n\tcSO: 'ff7f50',\n\tcSnflowerXe: '6495ed',\n\tcSnsilk: 'fff8dc',\n\tcrimson: 'dc143c',\n\tcyan: 'ffff',\n\txXe: '8b',\n\txcyan: '8b8b',\n\txgTMnPd: 'b8860b',\n\txWay: 'a9a9a9',\n\txgYF: '6400',\n\txgYy: 'a9a9a9',\n\txkhaki: 'bdb76b',\n\txmagFta: '8b008b',\n\txTivegYF: '556b2f',\n\txSange: 'ff8c00',\n\txScEd: '9932cc',\n\txYd: '8b0000',\n\txsOmon: 'e9967a',\n\txsHgYF: '8fbc8f',\n\txUXe: '483d8b',\n\txUWay: '2f4f4f',\n\txUgYy: '2f4f4f',\n\txQe: 'ced1',\n\txviTet: '9400d3',\n\tdAppRk: 'ff1493',\n\tdApskyXe: 'bfff',\n\tdimWay: '696969',\n\tdimgYy: '696969',\n\tdodgerXe: '1e90ff',\n\tfiYbrick: 'b22222',\n\tflSOwEte: 'fffaf0',\n\tfoYstWAn: '228b22',\n\tfuKsia: 'ff00ff',\n\tgaRsbSo: 'dcdcdc',\n\tghostwEte: 'f8f8ff',\n\tgTd: 'ffd700',\n\tgTMnPd: 'daa520',\n\tWay: '808080',\n\tgYF: '8000',\n\tgYFLw: 'adff2f',\n\tgYy: '808080',\n\thoneyMw: 'f0fff0',\n\thotpRk: 'ff69b4',\n\tRdianYd: 'cd5c5c',\n\tRdigo: '4b0082',\n\tivSy: 'fffff0',\n\tkhaki: 'f0e68c',\n\tlavFMr: 'e6e6fa',\n\tlavFMrXsh: 'fff0f5',\n\tlawngYF: '7cfc00',\n\tNmoncEffon: 'fffacd',\n\tZXe: 'add8e6',\n\tZcSO: 'f08080',\n\tZcyan: 'e0ffff',\n\tZgTMnPdLw: 'fafad2',\n\tZWay: 'd3d3d3',\n\tZgYF: '90ee90',\n\tZgYy: 'd3d3d3',\n\tZpRk: 'ffb6c1',\n\tZsOmon: 'ffa07a',\n\tZsHgYF: '20b2aa',\n\tZskyXe: '87cefa',\n\tZUWay: '778899',\n\tZUgYy: '778899',\n\tZstAlXe: 'b0c4de',\n\tZLw: 'ffffe0',\n\tlime: 'ff00',\n\tlimegYF: '32cd32',\n\tlRF: 'faf0e6',\n\tmagFta: 'ff00ff',\n\tmaPon: '800000',\n\tVaquamarRe: '66cdaa',\n\tVXe: 'cd',\n\tVScEd: 'ba55d3',\n\tVpurpN: '9370db',\n\tVsHgYF: '3cb371',\n\tVUXe: '7b68ee',\n\tVsprRggYF: 'fa9a',\n\tVQe: '48d1cc',\n\tVviTetYd: 'c71585',\n\tmidnightXe: '191970',\n\tmRtcYam: 'f5fffa',\n\tmistyPse: 'ffe4e1',\n\tmoccasR: 'ffe4b5',\n\tnavajowEte: 'ffdead',\n\tnavy: '80',\n\tTdlace: 'fdf5e6',\n\tTive: '808000',\n\tTivedBb: '6b8e23',\n\tSange: 'ffa500',\n\tSangeYd: 'ff4500',\n\tScEd: 'da70d6',\n\tpOegTMnPd: 'eee8aa',\n\tpOegYF: '98fb98',\n\tpOeQe: 'afeeee',\n\tpOeviTetYd: 'db7093',\n\tpapayawEp: 'ffefd5',\n\tpHKpuff: 'ffdab9',\n\tperu: 'cd853f',\n\tpRk: 'ffc0cb',\n\tplum: 'dda0dd',\n\tpowMrXe: 'b0e0e6',\n\tpurpN: '800080',\n\tYbeccapurpN: '663399',\n\tYd: 'ff0000',\n\tPsybrown: 'bc8f8f',\n\tPyOXe: '4169e1',\n\tsaddNbPwn: '8b4513',\n\tsOmon: 'fa8072',\n\tsandybPwn: 'f4a460',\n\tsHgYF: '2e8b57',\n\tsHshell: 'fff5ee',\n\tsiFna: 'a0522d',\n\tsilver: 'c0c0c0',\n\tskyXe: '87ceeb',\n\tUXe: '6a5acd',\n\tUWay: '708090',\n\tUgYy: '708090',\n\tsnow: 'fffafa',\n\tsprRggYF: 'ff7f',\n\tstAlXe: '4682b4',\n\ttan: 'd2b48c',\n\tteO: '8080',\n\ttEstN: 'd8bfd8',\n\ttomato: 'ff6347',\n\tQe: '40e0d0',\n\tviTet: 'ee82ee',\n\tJHt: 'f5deb3',\n\twEte: 'ffffff',\n\twEtesmoke: 'f5f5f5',\n\tLw: 'ffff00',\n\tLwgYF: '9acd32'\n};\nfunction unpack() {\n\tconst unpacked = {};\n\tconst keys = Object.keys(names);\n\tconst tkeys = Object.keys(map$1);\n\tlet i, j, k, ok, nk;\n\tfor (i = 0; i < keys.length; i++) {\n\t\tok = nk = keys[i];\n\t\tfor (j = 0; j < tkeys.length; j++) {\n\t\t\tk = tkeys[j];\n\t\t\tnk = nk.replace(k, map$1[k]);\n\t\t}\n\t\tk = parseInt(names[ok], 16);\n\t\tunpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n\t}\n\treturn unpacked;\n}\nlet names$1;\nfunction nameParse(str) {\n\tif (!names$1) {\n\t\tnames$1 = unpack();\n\t\tnames$1.transparent = [0, 0, 0, 0];\n\t}\n\tconst a = names$1[str.toLowerCase()];\n\treturn a && {\n\t\tr: a[0],\n\t\tg: a[1],\n\t\tb: a[2],\n\t\ta: a.length === 4 ? a[3] : 255\n\t};\n}\nfunction modHSL(v, i, ratio) {\n\tif (v) {\n\t\tlet tmp = rgb2hsl(v);\n\t\ttmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n\t\ttmp = hsl2rgb(tmp);\n\t\tv.r = tmp[0];\n\t\tv.g = tmp[1];\n\t\tv.b = tmp[2];\n\t}\n}\nfunction clone(v, proto) {\n\treturn v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n\tvar v = {r: 0, g: 0, b: 0, a: 255};\n\tif (Array.isArray(input)) {\n\t\tif (input.length >= 3) {\n\t\t\tv = {r: input[0], g: input[1], b: input[2], a: 255};\n\t\t\tif (input.length > 3) {\n\t\t\t\tv.a = n2b(input[3]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tv = clone(input, {r: 0, g: 0, b: 0, a: 1});\n\t\tv.a = n2b(v.a);\n\t}\n\treturn v;\n}\nfunction functionParse(str) {\n\tif (str.charAt(0) === 'r') {\n\t\treturn rgbParse(str);\n\t}\n\treturn hueParse(str);\n}\nclass Color {\n\tconstructor(input) {\n\t\tif (input instanceof Color) {\n\t\t\treturn input;\n\t\t}\n\t\tconst type = typeof input;\n\t\tlet v;\n\t\tif (type === 'object') {\n\t\t\tv = fromObject(input);\n\t\t} else if (type === 'string') {\n\t\t\tv = hexParse(input) || nameParse(input) || functionParse(input);\n\t\t}\n\t\tthis._rgb = v;\n\t\tthis._valid = !!v;\n\t}\n\tget valid() {\n\t\treturn this._valid;\n\t}\n\tget rgb() {\n\t\tvar v = clone(this._rgb);\n\t\tif (v) {\n\t\t\tv.a = b2n(v.a);\n\t\t}\n\t\treturn v;\n\t}\n\tset rgb(obj) {\n\t\tthis._rgb = fromObject(obj);\n\t}\n\trgbString() {\n\t\treturn this._valid ? rgbString(this._rgb) : this._rgb;\n\t}\n\thexString() {\n\t\treturn this._valid ? hexString(this._rgb) : this._rgb;\n\t}\n\thslString() {\n\t\treturn this._valid ? hslString(this._rgb) : this._rgb;\n\t}\n\tmix(color, weight) {\n\t\tconst me = this;\n\t\tif (color) {\n\t\t\tconst c1 = me.rgb;\n\t\t\tconst c2 = color.rgb;\n\t\t\tlet w2;\n\t\t\tconst p = weight === w2 ? 0.5 : weight;\n\t\t\tconst w = 2 * p - 1;\n\t\t\tconst a = c1.a - c2.a;\n\t\t\tconst w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n\t\t\tw2 = 1 - w1;\n\t\t\tc1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n\t\t\tc1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n\t\t\tc1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n\t\t\tc1.a = p * c1.a + (1 - p) * c2.a;\n\t\t\tme.rgb = c1;\n\t\t}\n\t\treturn me;\n\t}\n\tclone() {\n\t\treturn new Color(this.rgb);\n\t}\n\talpha(a) {\n\t\tthis._rgb.a = n2b(a);\n\t\treturn this;\n\t}\n\tclearer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 - ratio;\n\t\treturn this;\n\t}\n\tgreyscale() {\n\t\tconst rgb = this._rgb;\n\t\tconst val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n\t\trgb.r = rgb.g = rgb.b = val;\n\t\treturn this;\n\t}\n\topaquer(ratio) {\n\t\tconst rgb = this._rgb;\n\t\trgb.a *= 1 + ratio;\n\t\treturn this;\n\t}\n\tnegate() {\n\t\tconst v = this._rgb;\n\t\tv.r = 255 - v.r;\n\t\tv.g = 255 - v.g;\n\t\tv.b = 255 - v.b;\n\t\treturn this;\n\t}\n\tlighten(ratio) {\n\t\tmodHSL(this._rgb, 2, ratio);\n\t\treturn this;\n\t}\n\tdarken(ratio) {\n\t\tmodHSL(this._rgb, 2, -ratio);\n\t\treturn this;\n\t}\n\tsaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, ratio);\n\t\treturn this;\n\t}\n\tdesaturate(ratio) {\n\t\tmodHSL(this._rgb, 1, -ratio);\n\t\treturn this;\n\t}\n\trotate(deg) {\n\t\trotate(this._rgb, deg);\n\t\treturn this;\n\t}\n}\nfunction index_esm(input) {\n\treturn new Color(input);\n}\n\nconst isPatternOrGradient = (value) => value instanceof CanvasGradient || value instanceof CanvasPattern;\nfunction color(value) {\n return isPatternOrGradient(value) ? value : index_esm(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value)\n ? value\n : index_esm(value).saturate(0.5).darken(0.1).hexString();\n}\n\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = (context) => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = [\n 'mousemove',\n 'mouseout',\n 'click',\n 'touchstart',\n 'touchmove'\n ];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n}\nvar defaults = new Defaults({\n _scriptable: (name) => !name.startsWith('on'),\n _indexable: (name) => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false,\n }\n});\n\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '')\n\t\t+ (font.weight ? font.weight + ' ' : '')\n\t\t+ font.size + 'px '\n\t\t+ font.family;\n}\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n if (thing !== undefined && thing !== null && isArray(thing) !== true) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n let type, xOffset, yOffset, size, cornerRadius;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n default:\n ctx.arc(x, y, radius, 0, TAU);\n ctx.closePath();\n break;\n case 'triangle':\n ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n ctx.rect(x - size, y - size, 2 * size, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n case 'rectRot':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + yOffset, y - xOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n case 'cross':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'star':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n rad += QUARTER_PI;\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n ctx.moveTo(x + yOffset, y - xOffset);\n ctx.lineTo(x - yOffset, y + xOffset);\n break;\n case 'line':\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius);\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5;\n return !area || (point && point.x > area.left - margin && point.x < area.right + margin &&\n\t\tpoint.y > area.top - margin && point.y < area.bottom + margin);\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(\n flip ? previous.cp1x : previous.cp2x,\n flip ? previous.cp1y : previous.cp2y,\n flip ? target.cp2x : target.cp1x,\n flip ? target.cp2y : target.cp1y,\n target.x,\n target.y);\n}\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += font.lineHeight;\n }\n ctx.restore();\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction addRoundedRectPath(ctx, rect) {\n const {x, y, w, h, radius} = rect;\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, -HALF_PI, PI, true);\n ctx.lineTo(x, y + h - radius.bottomLeft);\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n ctx.lineTo(x + w, y + radius.topRight);\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n ctx.lineTo(x + radius.topLeft, y);\n}\n\nconst LINE_HEIGHT = new RegExp(/^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/);\nconst FONT_STYLE = new RegExp(/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/);\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value)\n ? objProps\n ? prop => valueOrDefault(value[prop], value[props[prop]])\n : prop => value[prop]\n : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\nfunction toTRBL(value) {\n return _readValueToProps(value, {top: 'y', right: 'x', bottom: 'y', left: 'x'});\n}\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = '';\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {min, max} = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\nfunction _lookup(table, value, cmp) {\n cmp = cmp || ((index) => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = (lo + hi) >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {lo, hi};\n}\nconst _lookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] < value);\nconst _rlookupByKey = (table, key, value) =>\n _lookup(table, value, index => table[index][key] >= value);\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length\n ? values.slice(start, end)\n : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach((key) => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach((object) => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach((key) => {\n delete array[key];\n });\n delete array._chartjs;\n}\nfunction _arrayUnique(items) {\n const set = new Set();\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n set.add(items[i]);\n }\n if (set.size === ilen) {\n return items;\n }\n return Array.from(set);\n}\n\nfunction _createResolver(scopes, prefixes = [''], rootScopes = scopes, fallback, getTarget = () => scopes[0]) {\n if (!defined(fallback)) {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: rootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: (scope) => _createResolver([scope, ...scopes], prefixes, rootScopes, fallback),\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete target._keys;\n delete scopes[0][prop];\n return true;\n },\n get(target, prop) {\n return _cached(target, prop,\n () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value;\n delete target._keys;\n return true;\n }\n });\n}\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: (ctx) => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: (scope) => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n deleteProperty(target, prop) {\n delete target[prop];\n delete proxy[prop];\n return true;\n },\n get(target, prop, receiver) {\n return _cached(target, prop,\n () => _resolveWithContext(target, prop, receiver));\n },\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys\n ? Reflect.has(proxy, prop) ? {enumerable: true, configurable: true} : undefined\n : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n set(target, prop, value) {\n proxy[prop] = value;\n delete target[prop];\n return true;\n }\n });\n}\nfunction _descriptors(proxy, defaults = {scriptable: true, indexable: true}) {\n const {_scriptable = defaults.scriptable, _indexable = defaults.indexable, _allKeys = defaults.allKeys} = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' &&\n (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n let value = _proxy[prop];\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, value, target, receiver) {\n const {_proxy, _context, _subProxy, _stack} = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n value = value(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {_proxy, _context, _subProxy, _descriptors: descriptors} = target;\n if (defined(_context.index) && isIndexable(prop)) {\n value = value[_context.index % value.length];\n } else if (isObject(value[0])) {\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent\n : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (defined(fallback) && fallback !== key && fallback !== parentFallback) {\n return fallback;\n }\n } else if (scope === false && defined(parentFallback) && key !== parentFallback) {\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (defined(fallback) && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback,\n () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n return value;\n }\n return target;\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (defined(value)) {\n return needsSubResolver(prop, value)\n ? createSubResolver(scopes, proxy, prop, value)\n : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (defined(value)) {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\n\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = (indexAxis) => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01;\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i]\n : !pointAfter ? deltaK[i - 1]\n : (sign(deltaK[i - 1]) !== sign(deltaK[i])) ? 0\n : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n if (options.spanGaps) {\n points = points.filter((pt) => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(\n prev,\n point,\n points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen],\n options.tension\n );\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = (element) => window.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\nfunction getCanvasPosition(evt, canvas) {\n const e = evt.native || evt;\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {offsetX, offsetY} = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {x, y, box};\n}\nfunction getRelativePosition(evt, chart) {\n const {canvas, currentDevicePixelRatio} = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {x, y, box} = getCanvasPosition(evt, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {width, height} = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect();\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {width, height} = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n height = round1(width / 2);\n }\n return {\n width,\n height\n };\n}\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = deviceHeight / pixelRatio;\n chart.width = deviceWidth / pixelRatio;\n const canvas = chart.canvas;\n if (canvas.style && (forceStyle || (!canvas.style.height && !canvas.style.width))) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio\n || canvas.height !== deviceHeight\n || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\nconst supportsEventListenerOptions = (function() {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n }\n return passiveSupported;\n}());\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y\n : mode === 'after' ? t < 1 ? p1.y : p2.y\n : t > 0 ? p2.y : p1.y\n };\n}\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {x: p1.cp2x, y: p1.cp2y};\n const cp2 = {x: p2.cp1x, y: p2.cp1y};\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\n\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\n\nconst getRightToLeftAdapter = function(rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n },\n };\n};\nconst getLeftToRightAdapter = function() {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {\n },\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n },\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [\n style.getPropertyValue('direction'),\n style.getPropertyPriority('direction'),\n ];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\n\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle,\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({start, end, count, loop, style}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {property, start: startBound, end: endBound} = bounds;\n const {between, normalize} = propertyFn(property);\n const count = points.length;\n let {start, end, loop} = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {start, end, loop, style: segment.style};\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {property, start: startBound, end: endBound} = bounds;\n const count = points.length;\n const {compare, between, normalize} = propertyFn(property);\n const {start, end, loop, style} = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({start: subStart, end: i, loop, count, style}));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({start: subStart, end, loop, count, style}));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {start, end};\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({start: start % count, end: (end - 1) % count, loop});\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({start: start % count, end: last % count, loop});\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {start, end} = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{start, end, loop}], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {_datasetIndex: datasetIndex, options: {spanGaps}} = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({start: s % count, end: e % count, loop: l, style: st});\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n return prevStyle && JSON.stringify(style) !== JSON.stringify(prevStyle);\n}\n\nexport { _toLeftRightCenter as $, _rlookupByKey as A, getAngleFromPoint as B, toPadding as C, each as D, getMaximumSize as E, _getParentNode as F, readUsedSize as G, HALF_PI as H, throttled as I, supportsEventListenerOptions as J, _isDomSupported as K, log10 as L, _factorize as M, finiteOrDefault as N, callback as O, PI as P, _addGrace as Q, toDegrees as R, _measureText as S, TAU as T, _int16Range as U, _alignPixel as V, clipArea as W, renderText as X, unclipArea as Y, toFont as Z, _arrayUnique as _, resolve as a, _angleDiff as a$, _alignStartEnd as a0, overrides as a1, merge as a2, _capitalize as a3, descriptors as a4, isFunction as a5, _attachContext as a6, _createResolver as a7, _descriptors as a8, mergeIf as a9, restoreTextDirection as aA, noop as aB, distanceBetweenPoints as aC, _setMinAndMaxByKey as aD, niceNum as aE, almostWhole as aF, almostEquals as aG, _decimalPlaces as aH, _longestText as aI, _filterBetween as aJ, _lookup as aK, getHoverColor as aL, clone$1 as aM, _merger as aN, _mergerIf as aO, _deprecated as aP, toFontString as aQ, splineCurve as aR, splineCurveMonotone as aS, getStyle as aT, fontString as aU, toLineHeight as aV, PITAU as aW, INFINITY as aX, RAD_PER_DEG as aY, QUARTER_PI as aZ, TWO_THIRDS_PI as a_, uid as aa, debounce as ab, retinaScale as ac, clearCanvas as ad, setsEqual as ae, _elementsEqual as af, _isClickEvent as ag, _isBetween as ah, _readValueToProps as ai, _updateBezierControlPoints as aj, _computeSegments as ak, _boundSegments as al, _steppedInterpolation as am, _bezierInterpolation as an, _pointInLine as ao, _steppedLineTo as ap, _bezierCurveTo as aq, drawPoint as ar, addRoundedRectPath as as, toTRBL as at, toTRBLCorners as au, _boundSegment as av, _normalizeAngle as aw, getRtlAdapter as ax, overrideTextDirection as ay, _textX as az, isArray as b, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, createContext as h, isObject as i, defined as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, isNumber as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _limitValue as w, _lookupByKey as x, getRelativePosition as y, _isPointInArea as z };\n","/*!\n * Chart.js v3.7.0\n * https://www.chartjs.org\n * (c) 2021 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, d as defaults, i as isObject, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as createContext, j as defined, s as sign, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as isNumber, w as _limitValue, x as _lookupByKey, y as getRelativePosition$1, z as _isPointInArea, A as _rlookupByKey, B as getAngleFromPoint, C as toPadding, D as each, E as getMaximumSize, F as _getParentNode, G as readUsedSize, I as throttled, J as supportsEventListenerOptions, K as _isDomSupported, L as log10, M as _factorize, N as finiteOrDefault, O as callback, Q as _addGrace, R as toDegrees, S as _measureText, U as _int16Range, V as _alignPixel, W as clipArea, X as renderText, Y as unclipArea, Z as toFont, $ as _toLeftRightCenter, a0 as _alignStartEnd, a1 as overrides, a2 as merge, a3 as _capitalize, a4 as descriptors, a5 as isFunction, a6 as _attachContext, a7 as _createResolver, a8 as _descriptors, a9 as mergeIf, aa as uid, ab as debounce, ac as retinaScale, ad as clearCanvas, ae as setsEqual, af as _elementsEqual, ag as _isClickEvent, ah as _isBetween, ai as _readValueToProps, aj as _updateBezierControlPoints, ak as _computeSegments, al as _boundSegments, am as _steppedInterpolation, an as _bezierInterpolation, ao as _pointInLine, ap as _steppedLineTo, aq as _bezierCurveTo, ar as drawPoint, as as addRoundedRectPath, at as toTRBL, au as toTRBLCorners, av as _boundSegment, aw as _normalizeAngle, ax as getRtlAdapter, ay as overrideTextDirection, az as _textX, aA as restoreTextDirection, aB as noop, aC as distanceBetweenPoints, aD as _setMinAndMaxByKey, aE as niceNum, aF as almostWhole, aG as almostEquals, aH as _decimalPlaces, aI as _longestText, aJ as _filterBetween, aK as _lookup } from './chunks/helpers.segment.js';\nexport { d as defaults } from './chunks/helpers.segment.js';\n\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = new Animator();\n\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid\n ? c1.mix(c0, factor).hexString()\n : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || (elapsed < duration));\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = (elapsed / duration) % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({res, rej});\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\n\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\ndefaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined,\n});\nconst animationOptions = Object.keys(defaults.animation);\ndefaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: (name) => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn',\n});\ndefaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n },\n});\ndefaults.describe('animations', {\n _fallback: 'animation',\n});\ndefaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n },\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n },\n }\n }\n});\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach((prop) => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {\n });\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {$shared: false, $animations: {}});\n }\n return options;\n}\n\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || (value === 0 || sign(value) === sign(otherValue)))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || (stacked === undefined && meta.stack !== undefined);\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {min, max, minDefined, maxDefined} = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if ((positive && value > 0) || (!positive && value < 0)) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {chart, _cachedMeta: meta} = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {iScale, vScale, index: datasetIndex} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {[iAxis]: index, [vAxis]: value} = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent,\n {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n }\n );\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n }\n}\nconst isDirectUpdateMode = (mode) => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked\n && {keys: getSortedDatasetIndices(chart, true), values: null};\nclass DatasetController {\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.$context = undefined;\n this._syncList = [];\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale\n ? meta.vScale\n : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {_cachedMeta: meta, _data: data} = this;\n const {iScale, _stacked} = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || (prev && cur[iAxis] < prev[iAxis]);\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {xScale, yScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]\n };\n return applyStack(stack, value, meta.index, {mode});\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {min: Number.POSITIVE_INFINITY, max: Number.NEGATIVE_INFINITY};\n const {min: otherMin, max: otherMax} = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || (elements.length - start);\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset\n ? this.resolveDatasetElementOptions(mode)\n : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context ||\n (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context ||\n (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: (!active && this.getSharedOptions(options)) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = (arr) => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n}\nDatasetController.defaults = {};\nDatasetController.prototype.datasetElementType = null;\nDatasetController.prototype.dataElementType = null;\n\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - (size / 2)\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {start, end, reverse, top, bottom};\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n const {start, end, reverse, top, bottom} = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {inflateAmount}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto'\n ? ratio === 1 ? 0.33 : 0\n : inflateAmount;\n}\nclass BarController extends DatasetController {\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {iScale, vScale} = meta;\n const {xAxisKey = 'x', yAxisKey = 'y'} = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {iScale, vScale} = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom)\n ? '[' + custom.start + ', ' + custom.end + ']'\n : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {index, _cachedMeta: {vScale}} = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {base, head: base} : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || (index === stack._top || index === stack._bottom),\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const metasets = iScale.getMatchingVisibleMetas(this._type);\n const stacked = iScale.options.stacked;\n const ilen = metasets.length;\n const stacks = [];\n let i, item;\n for (i = 0; i < ilen; ++i) {\n item = metasets[i];\n if (!item.controller.options.grouped) {\n continue;\n }\n if (typeof dataIndex !== 'undefined') {\n const val = item.controller.getParsed(dataIndex)[\n item.controller._cachedMeta.vScale.axis\n ];\n if (isNullOrUndef(val) || isNaN(val)) {\n continue;\n }\n }\n if (stacked === false || stacks.indexOf(item.stack) === -1 ||\n\t\t\t\t(stacked === undefined && item.stack === undefined)) {\n stacks.push(item.stack);\n }\n if (item.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = (name !== undefined)\n ? stacks.indexOf(name)\n : -1;\n return (index === -1)\n ? stacks.length - 1\n : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {_cachedMeta: {vScale, _stacked}, options: {base: baseValue, minBarLength}} = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n head = base + size;\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex'\n ? computeFlexCategoryTraits(index, ruler, options, stackCount)\n : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + (range.chunk * stackIndex) + (range.chunk / 2);\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n}\nBarController.id = 'bar';\nBarController.defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n};\nBarController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true,\n }\n }\n};\n\nclass BubbleController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {xScale, yScale} = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: meta.label,\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {$shared: false});\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n}\nBubbleController.id = 'bubble';\nBubbleController.defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n};\nBubbleController.overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n }\n }\n }\n }\n};\n\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {ratioX, ratioY, offsetX, offsetY};\n}\nclass DoughnutController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = (i) => +data[i];\n if (isObject(data[start])) {\n const {key = 'value'} = this._parsing;\n getter = (i) => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min,\n };\n }\n update(mode) {\n const chart = this.chart;\n const {chartArea} = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {circumference, rotation} = this._getRotationExtents();\n const {ratioX, ratioY, offsetX, offsetY} = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if ((reset && opts.animation.animateRotate) || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n}\nDoughnutController.id = 'doughnut';\nDoughnutController.defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n },\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r',\n};\nDoughnutController.descriptors = {\n _scriptable: (name) => name !== 'spacing',\n _indexable: (name) => name !== 'spacing',\n};\nDoughnutController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(tooltipItem) {\n let dataLabel = tooltipItem.label;\n const value = ': ' + tooltipItem.formattedValue;\n if (isArray(dataLabel)) {\n dataLabel = dataLabel.slice();\n dataLabel[0] += value;\n } else {\n dataLabel += value;\n }\n return dataLabel;\n }\n }\n }\n }\n};\n\nclass LineController extends DatasetController {\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {dataset: line, data: points = [], _dataset} = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {start, count} = getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {iScale, vScale, _stacked, _dataset} = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {spanGaps, segment} = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && (parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n}\nLineController.id = 'line';\nLineController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false,\n};\nLineController.overrides = {\n scales: {\n _index_: {\n type: 'category',\n },\n _value_: {\n type: 'linear',\n },\n }\n};\nfunction getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {iScale, _parsed} = meta;\n const axis = iScale.axis;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n _lookupByKey(_parsed, iScale.axis, min).lo,\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo),\n 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n _lookupByKey(_parsed, iScale.axis, max).hi + 1,\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max)).hi + 1),\n start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {start, count};\n}\nfunction scaleRangesChanged(meta) {\n const {xScale, yScale, _scaleRanges} = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min\n\t\t|| _scaleRanges.xmax !== xScale.max\n\t\t|| _scaleRanges.ymin !== yScale.min\n\t\t|| _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\n\nclass PolarAreaController extends DatasetController {\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value,\n };\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? (outerRadius / 100) * (opts.cutoutPercentage) : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - (radiusLength * this.index);\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const dataset = this.getDataset();\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(dataset.data[i]) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const dataset = this.getDataset();\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(dataset.data[index]) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index)\n ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle)\n : 0;\n }\n}\nPolarAreaController.id = 'polarArea';\nPolarAreaController.defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n },\n },\n indexAxis: 'r',\n startAngle: 0,\n};\nPolarAreaController.overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {labels: {pointStyle}} = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n },\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(context) {\n return context.chart.data.labels[context.dataIndex] + ': ' + context.formattedValue;\n }\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n};\n\nclass PieController extends DoughnutController {\n}\nPieController.id = 'pie';\nPieController.defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n};\n\nclass RadarController extends DatasetController {\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const dataset = this.getDataset();\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, dataset.data[i]);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n}\nRadarController.id = 'radar';\nRadarController.defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n },\n};\nRadarController.overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear',\n }\n }\n};\n\nclass ScatterController extends LineController {\n}\nScatterController.id = 'scatter';\nScatterController.defaults = {\n showLine: false,\n fill: false\n};\nScatterController.overrides = {\n interaction: {\n mode: 'point'\n },\n plugins: {\n tooltip: {\n callbacks: {\n title() {\n return '';\n },\n label(item) {\n return '(' + item.label + ', ' + item.formattedValue + ')';\n }\n }\n }\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n};\n\nvar controllers = /*#__PURE__*/Object.freeze({\n__proto__: null,\nBarController: BarController,\nBubbleController: BubbleController,\nDoughnutController: DoughnutController,\nLineController: LineController,\nPolarAreaController: PolarAreaController,\nPieController: PieController,\nRadarController: RadarController,\nScatterController: ScatterController\n});\n\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\nclass DateAdapter {\n constructor(options) {\n this.options = options || {};\n }\n formats() {\n return abstract();\n }\n parse(value, format) {\n return abstract();\n }\n format(timestamp, format) {\n return abstract();\n }\n add(timestamp, amount, unit) {\n return abstract();\n }\n diff(a, b, unit) {\n return abstract();\n }\n startOf(timestamp, unit, weekday) {\n return abstract();\n }\n endOf(timestamp, unit) {\n return abstract();\n }\n}\nDateAdapter.override = function(members) {\n Object.assign(DateAdapter.prototype, members);\n};\nvar adapters = {\n _date: DateAdapter\n};\n\nfunction getRelativePosition(e, chart) {\n if ('native' in e) {\n return {\n x: e.x,\n y: e.y\n };\n }\n return getRelativePosition$1(e, chart);\n}\nfunction evaluateAllVisibleItems(chart, handler) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n let index, data, element;\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n ({index, data} = metasets[i]);\n for (let j = 0, jlen = data.length; j < jlen; ++j) {\n element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction binarySearch(metaset, axis, value, intersect) {\n const {controller, data, _sorted} = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {lo: start.lo, hi: end.hi};\n }\n }\n }\n return {lo: 0, hi: data.length - 1};\n}\nfunction optimizedEvaluateItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {index, data} = metasets[i];\n const {lo, hi} = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function(pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition) {\n const items = [];\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return items;\n }\n const evaluationFunc = function(element, datasetIndex, index) {\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n };\n optimizedEvaluateItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {startAngle, endAngle} = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {angle} = getAngleFromPoint(element, {x: position.x, y: position.y});\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({element, datasetIndex, index});\n }\n }\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = _isPointInArea(center, chart.chartArea, chart._minPadding);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{element, datasetIndex, index}];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({element, datasetIndex, index});\n }\n }\n optimizedEvaluateItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition) {\n if (!_isPointInArea(position, chart.chartArea, chart._minPadding)) {\n return [];\n }\n return axis === 'r' && !intersect\n ? getNearestRadialItems(chart, position, axis, useFinalPosition)\n : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition);\n}\nfunction getAxisItems(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const items = [];\n const axis = options.axis;\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateAllVisibleItems(chart, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({element, datasetIndex, index});\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n intersectsItem = true;\n }\n });\n if (options.intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition)\n : getNearestItems(chart, position, axis, false, useFinalPosition);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach((meta) => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({element, datasetIndex: meta.index, index});\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n let items = options.intersect\n ? getIntersectItems(chart, position, axis, useFinalPosition) :\n getNearestItems(chart, position, axis, false, useFinalPosition);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({element: data[i], datasetIndex, index: i});\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getIntersectItems(chart, position, axis, useFinalPosition);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition);\n },\n x(chart, e, options, useFinalPosition) {\n return getAxisItems(chart, e, {axis: 'x', intersect: options.intersect}, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n return getAxisItems(chart, e, {axis: 'y', intersect: options.intersect}, useFinalPosition);\n }\n }\n};\n\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ?\n v0.index - v1.index :\n v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({position: pos, options: {stack, stackWeight = 1}} = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && (pos + stack),\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {stack, pos, stackWeight} = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {count: 0, placed: 0, weight: 0, size: 0});\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {vBoxMaxWidth, hBoxMaxHeight} = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {fullSize} = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {pos, box} = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {size: 0, count: 1};\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal\n ? {same: widthChanged, other: heightChanged}\n : {same: heightChanged, other: widthChanged};\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {left: 0, top: 0, right: 0, bottom: 0};\n positions.forEach((pos) => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal\n ? marginForPositions(['left', 'right'])\n : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(\n layout.width || chartArea.w,\n layout.height || chartArea.h,\n getMargins(layout.horizontal, chartArea)\n );\n const {same, other} = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {x, y} = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {count: 1, placed: 0, weight: 1};\n const weight = (layout.stackWeight / stack.weight) || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\ndefaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n});\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function() {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) =>\n wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w,\n };\n each(boxes.chartArea, (layout) => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {left: 0, top: 0, right: 0, bottom: 0});\n });\n }\n};\n\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {\n }\n}\n\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\n\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {passive: true} : false;\nfunction addListener(node, type, listener) {\n node.addEventListener(type, listener, eventListenerOptions);\n}\nfunction removeListener(chart, type, listener) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {x, y} = getRelativePosition$1(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null,\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {childList: true, subtree: true});\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled((event) => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart, (args) => {\n const event = args[0];\n return [event, event.offsetX, event.offsetY];\n });\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach((prop) => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach((key) => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\n\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || (typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas)) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\n\nclass Element {\n constructor() {\n this.x = undefined;\n this.y = undefined;\n this.active = false;\n this.options = undefined;\n this.$animations = undefined;\n }\n tooltipPosition(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nElement.defaults = {};\nElement.defaultRoutes = undefined;\n\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {notation, minimumFractionDigits: numDecimal, maximumFractionDigits: numDecimal};\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = tickValue / (Math.pow(10, Math.floor(log10(tickValue))));\n if (remain === 1 || remain === 2 || remain === 5) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {formatters};\n\ndefaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawBorder: true,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false,\n borderDash: [],\n borderDashOffset: 0.0,\n borderWidth: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2,\n }\n});\ndefaults.route('scale.ticks', 'color', '', 'color');\ndefaults.route('scale.grid', 'color', '', 'borderColor');\ndefaults.route('scale.grid', 'borderColor', '', 'borderColor');\ndefaults.route('scale.title', 'color', '', 'color');\ndefaults.describe('scale', {\n _fallback: false,\n _scriptable: (name) => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: (name) => name !== 'borderDash' && name !== 'tickBorderDash',\n});\ndefaults.describe('scales', {\n _fallback: 'scale',\n});\ndefaults.describe('scale.ticks', {\n _scriptable: (name) => name !== 'backdropPadding' && name !== 'callback',\n _indexable: (name) => name !== 'backdropPadding',\n});\n\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const ticksLimit = tickOpts.maxTicksLimit || determineMaxTicks(scale);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\n\nconst reverseAlign = (align) => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, (cache) => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return (lines * font.lineHeight) + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if ((reverse && position !== 'right') || (!reverse && position === 'right')) {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {top, left, bottom, right, chart} = scale;\n const {chartArea, scales} = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {titleX, titleY, maxWidth, rotation};\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {_userMin, _userMax, _suggestedMin, _suggestedMax} = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {min, max};\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {beginAtZero, grace, ticks: tickOpts} = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal()\n ? this.width + margins.left + margins.right\n : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = this.ticks.length;\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid)\n\t\t\t\t- tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(\n Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)),\n Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))\n ));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {chart, options: {ticks: tickOpts, title: titleOpts, grid: gridOpts}} = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {first, last, widest, highest} = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {ticks: {align, padding}, position} = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {axis, position} = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length) {\n const {ctx, _longestTextCache: caches} = this;\n const widths = [];\n const heights = [];\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; ++i) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {data: {}, gc: []};\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = (idx) => ({width: widths[idx] || 0, height: heights[idx] || 0});\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights,\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {min, max} = this;\n return min < 0 && max < 0 ? max :\n min > 0 && max > 0 ? min :\n 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context ||\n\t\t\t\t(tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context ||\n\t\t\t(this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal()\n ? h * cos > w * sin ? w / cos : h / sin\n : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {grid, position} = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = borderOpts.drawBorder ? borderOpts.borderWidth : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function(pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const optsAtIndex = grid.setContext(this.getContext(i));\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = grid.borderDash || [];\n const borderDashOffset = optsAtIndex.borderDashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset,\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {position, ticks: optionTicks} = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {align, crossAlign, padding, mirror} = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = ((chartArea.top + chartArea.bottom) / 2) + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = ((chartArea.left + chartArea.right) / 2) - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n if (isHorizontal) {\n x = pixel;\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = y + textOffset - labelPadding.top;\n let left = x - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor,\n };\n }\n items.push({\n rotation,\n label,\n font,\n color,\n strokeColor,\n strokeWidth,\n textOffset,\n textAlign,\n textBaseline,\n translation: [x, y],\n backdrop,\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {position, ticks} = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {position, ticks: {crossAlign, mirror, padding}} = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += (widest / 2);\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= (widest / 2);\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {textAlign, x};\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {top: 0, left: this.left, bottom: chart.height, right: this.right};\n } if (position === 'top' || position === 'bottom') {\n return {top: this.top, left: 0, bottom: this.bottom, right: chart.width};\n }\n }\n drawBackground() {\n const {ctx, options: {backgroundColor}, left, top, width, height} = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine(\n {x: item.x1, y: item.y1},\n {x: item.x2, y: item.y2},\n item\n );\n }\n if (grid.drawTicks) {\n drawLine(\n {x: item.tx1, y: item.ty1},\n {x: item.tx2, y: item.ty2},\n {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n }\n );\n }\n }\n }\n }\n drawBorder() {\n const {chart, ctx, options: {grid}} = this;\n const borderOpts = grid.setContext(this.getContext());\n const axisWidth = grid.drawBorder ? borderOpts.borderWidth : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.borderWidth;\n ctx.strokeStyle = borderOpts.borderColor;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n let i, ilen;\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n const tickFont = item.font;\n const label = item.label;\n if (item.backdrop) {\n ctx.fillStyle = item.backdrop.color;\n ctx.fillRect(item.backdrop.left, item.backdrop.top, item.backdrop.width, item.backdrop.height);\n }\n let y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, item);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {ctx, options: {position, title, reverse}} = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {titleX, titleY, maxWidth, rotation} = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: (chartArea) => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: (chartArea) => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: gz + 1,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: (chartArea) => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\n\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [\n parentScope ? defaults.get(parentScope) : {},\n defaults.get(scope),\n item.defaults\n ]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\n\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || (reg === this.plugins && arg.id)) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = new Registry();\n\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n }\n }\n return plugins;\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, plugins, options, all) {\n const result = [];\n const context = chart.getContext();\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, plugin, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, plugin, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n return config.createResolver(scopes, context, [''], {scriptable: false, indexable: false, allKeys: true});\n}\n\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, scaleOptions) {\n if (id === 'x' || id === 'y') {\n return id;\n }\n return scaleOptions.axis || axisFromPosition(scaleOptions.position) || id.charAt(0).toLowerCase();\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {scales: {}};\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const firstIDs = Object.create(null);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n firstIDs[axis] = firstIDs[axis] || id;\n scales[id] = mergeIf(Object.create(null), [{axis}, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || firstIDs[axis] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{axis}, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType,\n () => [[\n `datasets.${datasetType}`,\n ''\n ]]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`,\n () => [\n [\n `datasets.${datasetType}.transitions.${transition}`,\n `transitions.${transition}`,\n ],\n [\n `datasets.${datasetType}`,\n ''\n ]\n ]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`,\n () => [[\n `datasets.${datasetType}.elements.${elementType}`,\n `datasets.${datasetType}`,\n `elements.${elementType}`,\n ''\n ]]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`,\n () => [[\n `plugins.${id}`,\n ...plugin.additionalOptionScopes || [],\n ]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {options, type} = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {options, type} = this;\n return [\n options,\n overrides[type] || {},\n defaults.datasets[type] || {},\n {type},\n defaults,\n descriptors\n ];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {$shared: true};\n const {resolver, subPrefixes} = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {resolver} = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context)\n ? _attachContext(resolver, context, undefined, descriptorDefaults)\n : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value)\n && Object.getOwnPropertyNames(value).reduce((acc, key) => acc || isFunction(value[key]), false);\nfunction needContext(proxy, names) {\n const {isScriptable, isIndexable} = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if ((scriptable && (isFunction(value) || hasFunction(value)))\n || (indexable && isArray(value))) {\n return true;\n }\n }\n return false;\n}\n\nvar version = \"3.7.0\";\n\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || (KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x');\n}\nfunction compare2Level(l1, l2) {\n return function(a, b) {\n return a[l1] === b[l1]\n ? a[l2] - b[l2]\n : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = (key) => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter((c) => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nclass Chart {\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error(\n 'Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' +\n\t\t\t\t' must be destroyed before the canvas can be reused.'\n );\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {options: {aspectRatio, maintainAspectRatio}, width, height, _aspectRatio} = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {width, height};\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {size: newSize});\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(\n Object.keys(scaleOpts).map((id) => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n })\n );\n }\n each(items, (item) => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, (scale) => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {_metasets: metasets, data: {datasets}} = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {datasetElementType, dataElementType} = defaults.datasets[type];\n Object.assign(ControllerClass.prototype, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {controller} = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, (controller) => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {mode});\n this._layers.sort(compare2Level('z', '_idx'));\n const {_active, _lastEvent} = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, (scale) => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {_hiddenIndices} = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {method, start, count} of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = (idx) => new Set(\n _dataChanges\n .filter(c => c[0] === idx)\n .map((c, i) => i + ',' + c.splice(1).join(','))\n );\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet)\n .map(c => c.split(','))\n .map(a => ({method: a[1], start: +a[2], count: +a[3]}));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {cancelable: true}) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, (box) => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {mode, cancelable: true}) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({datasetIndex: i}) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {mode});\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {meta, index, mode, cancelable: true};\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {cancelable: true}) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({chart: this});\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {width, height} = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {cancelable: true}) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {cancelable: true}) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = this.chartArea;\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {chart: this, type: 'chart'}));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {visible});\n this.update((ctx) => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {canvas, ctx} = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n this.notifyPlugins('destroy');\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, (type) => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: _isPointInArea(e, this.chartArea, this._minPadding)\n };\n const eventFilter = (plugin) => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {_active: lastActive = [], options} = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n}\nconst invalidatePlugins = () => each(Chart.instances, (chart) => chart._plugins.invalidate());\nconst enumerable = true;\nObject.defineProperties(Chart, {\n defaults: {\n enumerable,\n value: defaults\n },\n instances: {\n enumerable,\n value: instances\n },\n overrides: {\n enumerable,\n value: overrides\n },\n registry: {\n enumerable,\n value: registry\n },\n version: {\n enumerable,\n value: version\n },\n getChart: {\n enumerable,\n value: getChart\n },\n register: {\n enumerable,\n value: (...items) => {\n registry.add(...items);\n invalidatePlugins();\n }\n },\n unregister: {\n enumerable,\n value: (...items) => {\n registry.remove(...items);\n invalidatePlugins();\n }\n }\n});\n\nfunction clipArc(ctx, element, endAngle) {\n const {startAngle, pixelMargin, x, y, outerRadius, innerRadius} = element;\n let angleMargin = pixelMargin / outerRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n const computeOuterLimit = (val) => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit),\n };\n}\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta),\n };\n}\nfunction pathArc(ctx, element, offset, spacing, end) {\n const {x, y, startAngle: start, pixelMargin, innerRadius: innerR} = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? (alpha * avNogSpacingRadius) / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {outerStart, outerEnd, innerStart, innerEnd} = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerEndAdjustedAngle);\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n ctx.arc(x, y, innerRadius, endAngle - (innerEnd / innerRadius), startAngle + (innerStart / innerRadius), true);\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing) {\n const {fullCircles, startAngle, circumference} = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, startAngle + TAU);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + circumference % TAU;\n if (circumference % TAU === 0) {\n endAngle += TAU;\n }\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.fill();\n return endAngle;\n}\nfunction drawFullCircleBorders(ctx, element, inner) {\n const {x, y, startAngle, pixelMargin, fullCircles} = element;\n const outerRadius = Math.max(element.outerRadius - pixelMargin, 0);\n const innerRadius = element.innerRadius + pixelMargin;\n let i;\n if (inner) {\n clipArc(ctx, element, startAngle + TAU);\n }\n ctx.beginPath();\n ctx.arc(x, y, innerRadius, startAngle + TAU, startAngle, true);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle, startAngle + TAU);\n for (i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n}\nfunction drawBorder(ctx, element, offset, spacing, endAngle) {\n const {options} = element;\n const {borderWidth, borderJoinStyle} = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n if (element.fullCircles) {\n drawFullCircleBorders(ctx, element, inner);\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n pathArc(ctx, element, offset, spacing, endAngle);\n ctx.stroke();\n}\nclass ArcElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {angle, distance} = getAngleFromPoint(point, {x: chartX, y: chartY});\n const {startAngle, endAngle, innerRadius, outerRadius, circumference} = this.getProps([\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference'\n ], useFinalPosition);\n const rAdjust = this.options.spacing / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return (betweenAngles && withinRadius);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, startAngle, endAngle, innerRadius, outerRadius} = this.getProps([\n 'x',\n 'y',\n 'startAngle',\n 'endAngle',\n 'innerRadius',\n 'outerRadius',\n 'circumference',\n ], useFinalPosition);\n const {offset, spacing} = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {options, circumference} = this;\n const offset = (options.offset || 0) / 2;\n const spacing = (options.spacing || 0) / 2;\n this.pixelMargin = (options.borderAlign === 'inner') ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n let radiusOffset = 0;\n if (offset) {\n radiusOffset = offset / 2;\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * radiusOffset, Math.sin(halfAngle) * radiusOffset);\n if (this.circumference >= PI) {\n radiusOffset = offset;\n }\n }\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n const endAngle = drawArc(ctx, this, radiusOffset, spacing);\n drawBorder(ctx, this, radiusOffset, spacing, endAngle);\n ctx.restore();\n }\n}\nArcElement.id = 'arc';\nArcElement.defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n};\nArcElement.defaultRoutes = {\n backgroundColor: 'backgroundColor'\n};\n\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {start: paramsStart = 0, end: paramsEnd = count - 1} = params;\n const {start: segmentStart, end: segmentEnd} = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {points, options} = line;\n const {count, start, loop, ilen} = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {move = true, reverse} = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {count, start, ilen} = pathVars(points, segment, params);\n const {move = true, reverse} = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = (index) => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {segments, options} = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {start, end: start + count - 1})) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nclass LineElement extends Element {\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {property, start: value, end: value});\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {start, end} = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || (this.points.length - start);\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {start, end: start + count - 1});\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n}\nLineElement.id = 'line';\nLineElement.defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0,\n};\nLineElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\nLineElement.descriptors = {\n _scriptable: true,\n _indexable: (name) => name !== 'borderDash' && name !== 'fill',\n};\n\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {[axis]: value} = el.getProps([axis], useFinalPosition);\n return (Math.abs(pos - value) < options.radius + options.hitRadius);\n}\nclass PointElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return ((Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2)) < Math.pow(options.hitRadius + options.radius, 2));\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y} = this.getProps(['x', 'y'], useFinalPosition);\n return {x, y};\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n return options.radius + options.hitRadius;\n }\n}\nPointElement.id = 'point';\nPointElement.defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n};\nPointElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nfunction getBarBounds(bar, useFinalPosition) {\n const {x, y, base, width, height} = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {left, top, right, bottom};\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {enableBorderRadius} = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r)),\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds\n\t\t&& (skipX || _isBetween(x, bounds.left, bounds.right))\n\t\t&& (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {inflateAmount, options: {borderColor, backgroundColor}} = this;\n const {inner, outer} = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {x, y, base, horizontal} = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nBarElement.id = 'bar';\nBarElement.defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n};\nBarElement.defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n};\n\nvar elements = /*#__PURE__*/Object.freeze({\n__proto__: null,\nArcElement: ArcElement,\nLineElement: LineElement,\nPointElement: PointElement,\nBarElement: BarElement\n});\n\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {x: pointAx, y: pointAy} = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs(\n (pointAx - avgX) * (data[j].y - pointAy) -\n (pointAx - data[j].x) * (avgY - pointAy)\n );\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX,\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {value: data});\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach((dataset) => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {iScale} = meta;\n const {min, max, minDefined, maxDefined} = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {start, count};\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false,\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {_data, indexAxis} = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (meta.type !== 'line') {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {start, count} = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this._decimated;\n },\n set: function(d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\n\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\nfunction decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n if (fill[0] === '-' || fill[0] === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction computeLinearBoundary(source) {\n const {scale = {}, fill} = source;\n let target = null;\n let horizontal;\n if (fill === 'start') {\n target = scale.bottom;\n } else if (fill === 'end') {\n target = scale.top;\n } else if (isObject(fill)) {\n target = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n target = scale.getBasePixel();\n }\n if (isNumberFinite(target)) {\n horizontal = scale.isHorizontal();\n return {\n x: horizontal ? target : null,\n y: horizontal ? null : target\n };\n }\n return null;\n}\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {x, y, radius} = this;\n bounds = bounds || {start: 0, end: TAU};\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {x, y, radius} = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\nfunction computeCircularBoundary(source) {\n const {scale, fill} = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const target = [];\n const start = options.reverse ? scale.max : scale.min;\n const end = options.reverse ? scale.min : scale.max;\n let i, center, value;\n if (fill === 'start') {\n value = start;\n } else if (fill === 'end') {\n value = end;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n if (options.grid.circular) {\n center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction findSegmentEnd(start, end, points) {\n for (;end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction pointsFromSegments(boundary, line) {\n const {x = null, y = null} = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({start, end}) => {\n end = findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({x: first.x, y});\n points.push({x: last.x, y});\n } else if (x !== null) {\n points.push({x, y: first.y});\n points.push({x, y: last.y});\n }\n });\n return points;\n}\nfunction buildStackLine(source) {\n const {scale, index, line} = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(createBoundaryLine({x: null, y: scale.bottom}, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({points, options: {}});\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {first, last, point} = findPoint(line, sourcePoint, 'x');\n if (!point || (first && last)) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {first, last, point};\n}\nfunction getTarget(source) {\n const {chart, fill, line} = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return createBoundaryLine(boundary, line);\n}\nfunction createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {tension: 0},\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _clip(ctx, target, clipY) {\n ctx.beginPath();\n target.path(ctx);\n ctx.lineTo(target.last().x, clipY);\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {property, start, end};\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {start, end} = segment;\n end = findSegmentEnd(start, end, points);\n const bounds = getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {top, bottom} = scale.chart.chartArea;\n const {property, start, end} = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\nfunction _fill(ctx, cfg) {\n const {line, target, property, color, scale} = cfg;\n const segments = _segments(line, target, property);\n for (const {source: src, target: tgt, start, end} of segments) {\n const {style: {backgroundColor = color} = {}} = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {move: lineLoop, reverse: true});\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction doFill(ctx, cfg) {\n const {line, target, above, below, area, scale} = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n _clip(ctx, target, area.top);\n _fill(ctx, {line, target, color: above, scale, property});\n ctx.restore();\n ctx.save();\n _clip(ctx, target, area.bottom);\n }\n _fill(ctx, {line, target, color: below, scale, property});\n ctx.restore();\n}\nfunction drawfill(ctx, source, area) {\n const target = getTarget(source);\n const {line, scale, axis} = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {above = color, below = color} = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {line, target, above, below, area, scale, axis});\n unclipArea(ctx);\n }\n}\nvar plugin_filler = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line,\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw) {\n drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (source) {\n drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!source || source.fill === false || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\n\nconst getBoxSize = (labelOpts, fontSize) => {\n let {boxHeight = fontSize, boxWidth = fontSize} = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter((item) => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {options, ctx} = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {boxWidth, itemHeight} = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxWidth, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {left: 0, top, row, width: itemWidth, height: itemHeight};\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, fontSize, boxWidth, itemHeight) {\n const {ctx, maxHeight, options: {labels: {padding}}} = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + (fontSize / 2) + ctx.measureText(legendItem.text).width;\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {left, top: currentColHeight, col, width: itemWidth, height: itemHeight};\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({width: currentColWidth, height: currentColHeight});\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {legendHitBoxes: hitboxes, options: {align, labels: {padding}, rtl}} = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {options: opts, columnSizes, lineWidths, ctx} = this;\n const {align, labels: labelOpts} = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {color: fontColor, padding} = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {boxWidth, boxHeight, itemHeight} = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function(x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxWidth * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function(x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + (itemHeight / 2), labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor || fontColor;\n ctx.fillStyle = legendItem.fontColor || fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right)\n && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width)\n && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction isListened(type, opts) {\n if (type === 'mousemove' && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({ctx: chart.ctx, options, chart});\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: (ctx) => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {labels: {usePointStyle, pointStyle, textAlign, color}} = chart.legend.options;\n return chart._getSortedDatasetMetas().map((meta) => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: 0,\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: (ctx) => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: '',\n }\n },\n descriptors: {\n _scriptable: (name) => !name.startsWith('on'),\n labels: {\n _scriptable: (name) => !['generateLabels', 'filter', 'sort'].includes(name),\n }\n },\n};\n\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {top, left, bottom, right, options} = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {titleX, titleY, maxWidth, rotation};\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {titleX, titleY, maxWidth, rotation} = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY],\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold',\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal',\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false,\n },\n};\n\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let x = 0;\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n x += pos.x;\n y += pos.y;\n ++count;\n }\n }\n return {\n x: x / count,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {element, datasetIndex, index} = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {label, value} = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {body, footer, title} = tooltip;\n const {boxWidth, boxHeight} = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight\n\t\t\t+ (titleLineCount - 1) * options.titleSpacing\n\t\t\t+ options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight\n\t\t\t+ (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight\n\t\t\t+ (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop\n\t\t\t+ footerLineCount * footerFont.lineHeight\n\t\t\t+ (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function(line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? (boxWidth + 2 + options.boxPadding) : 0;\n each(body, (bodyItem) => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {width, height};\n}\nfunction determineYAlign(chart, size) {\n const {y, height} = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > (chart.height - height / 2)) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {x, width} = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {x, width} = size;\n const {width: chartWidth, chartArea: {left, right}} = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {x, width} = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= (width / 2);\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {y, height} = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= (height / 2);\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {caretSize, caretPadding, cornerRadius} = options;\n const {xAlign, yAlign} = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center'\n ? tooltip.x + tooltip.width / 2\n : align === 'right'\n ? tooltip.x + tooltip.width - padding.right\n : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nclass Tooltip extends Element {\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart || config._chart;\n this._chart = this.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context ||\n\t\t\t(this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {callbacks} = options;\n const beforeTitle = callbacks.beforeTitle.apply(this, [context]);\n const title = callbacks.title.apply(this, [context]);\n const afterTitle = callbacks.afterTitle.apply(this, [context]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.beforeBody.apply(this, [tooltipItems]));\n }\n getBody(tooltipItems, options) {\n const {callbacks} = options;\n const bodyItems = [];\n each(tooltipItems, (context) => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(scoped.beforeLabel.call(this, context)));\n pushOrConcat(bodyItem.lines, scoped.label.call(this, context));\n pushOrConcat(bodyItem.after, splitNewlines(scoped.afterLabel.call(this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(options.callbacks.afterBody.apply(this, [tooltipItems]));\n }\n getFooter(tooltipItems, options) {\n const {callbacks} = options;\n const beforeFooter = callbacks.beforeFooter.apply(this, [tooltipItems]);\n const footer = callbacks.footer.apply(this, [tooltipItems]);\n const afterFooter = callbacks.afterFooter.apply(this, [tooltipItems]);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, (context) => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(scoped.labelColor.call(this, context));\n labelPointStyles.push(scoped.labelPointStyle.call(this, context));\n labelTextColors.push(scoped.labelTextColor.call(this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {chart: this.chart, tooltip: this, replay});\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {xAlign, yAlign} = this;\n const {caretSize, cornerRadius} = options;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(cornerRadius);\n const {x: ptX, y: ptY} = tooltipPoint;\n const {width, height} = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + (height / 2);\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + (caretSize);\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {x1, x2, x3, y1, y2, y3};\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColors = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColors.borderColor;\n ctx.fillStyle = labelColors.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = labelColors.borderWidth || 1;\n ctx.strokeStyle = labelColors.borderColor;\n ctx.setLineDash(labelColors.borderDash || []);\n ctx.lineDashOffset = labelColors.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth - boxPadding);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - boxPadding - 2);\n const borderRadius = toTRBLCorners(labelColors.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius,\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius,\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColors.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {body} = this;\n const {bodySpacing, bodyAlign, displayColors, boxHeight, boxWidth, boxPadding} = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function(line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right'\n ? bodyAlign === 'center' ? (boxWidth / 2 + boxPadding) : (boxWidth + 2 + boxPadding)\n : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {xAlign, yAlign} = this;\n const {x, y} = pt;\n const {width, height} = tooltipSize;\n const {topLeft, topRight, bottomLeft, bottomRight} = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({datasetIndex, index}) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index,\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {caretX, caretY, options} = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n}\nTooltip.positioners = positioners;\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({chart, options});\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', args) === false) {\n return;\n }\n if (tooltip) {\n tooltip.draw(chart.ctx);\n }\n chart.notifyPlugins('afterTooltipDraw', args);\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold',\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {\n },\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold',\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart',\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY'],\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0,\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation,\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n }\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: (name) => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false,\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\n\nvar plugins = /*#__PURE__*/Object.freeze({\n__proto__: null,\nDecimation: plugin_decimation,\nFiller: plugin_filler,\nLegend: plugin_legend,\nSubTitle: plugin_subtitle,\nTitle: plugin_title,\nTooltip: plugin_tooltip\n});\n\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({index, label: raw});\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nclass CategoryScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {index, label} of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index\n : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = (min === 0 && max === labels.length - 1) ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({value});\n }\n return ticks;\n }\n getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n}\nCategoryScale.id = 'category';\nCategoryScale.defaults = {\n ticks: {\n callback: CategoryScale.prototype.getLabelForValue\n }\n};\n\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {bounds, step, min, max, precision, count, maxTicks, maxDigits, includeBounds} = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {min: rmin, max: rmax} = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{value: rmin}, {value: rmax}];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(\n _decimalPlaces(spacing),\n _decimalPlaces(niceMin)\n );\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({value: min});\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n ticks.push({value: Math.round((niceMin + j * spacing) * factor) / factor});\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({value: max});\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({value: niceMax});\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {horizontal, minRotation}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {beginAtZero} = this.options;\n const {minDefined, maxDefined} = this.getUserBounds();\n let {min, max} = this;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = 1;\n if (max >= Number.MAX_SAFE_INTEGER || min <= Number.MIN_SAFE_INTEGER) {\n offset = Math.abs(max * 0.05);\n }\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {maxTicksLimit, stepSize} = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\n\nclass LinearScale extends LinearScaleBase {\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nLinearScale.id = 'linear';\nLinearScale.defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n};\n\nfunction isMajor(tickVal) {\n const remain = tickVal / (Math.pow(10, Math.floor(log10(tickVal))));\n return remain === 1;\n}\nfunction generateTicks(generationOptions, dataRange) {\n const endExp = Math.floor(log10(dataRange.max));\n const endSignificand = Math.ceil(dataRange.max / Math.pow(10, endExp));\n const ticks = [];\n let tickVal = finiteOrDefault(generationOptions.min, Math.pow(10, Math.floor(log10(dataRange.min))));\n let exp = Math.floor(log10(tickVal));\n let significand = Math.floor(tickVal / Math.pow(10, exp));\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n do {\n ticks.push({value: tickVal, major: isMajor(tickVal)});\n ++significand;\n if (significand === 10) {\n significand = 1;\n ++exp;\n precision = exp >= 0 ? 1 : precision;\n }\n tickVal = Math.round(significand * Math.pow(10, exp) * precision) / precision;\n } while (exp < endExp || (exp === endExp && significand < endSignificand));\n const lastTick = finiteOrDefault(generationOptions.max, tickVal);\n ticks.push({value: lastTick, major: isMajor(tickVal)});\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {minDefined, maxDefined} = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => (min = minDefined ? min : v);\n const setMax = v => (max = maxDefined ? max : v);\n const exp = (v, m) => Math.pow(10, Math.floor(log10(v)) + m);\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(exp(min, -1));\n setMax(exp(max, +1));\n }\n }\n if (min <= 0) {\n setMin(exp(max, -1));\n }\n if (max <= 0) {\n setMax(exp(min, +1));\n }\n if (this._zero && this.min !== this._suggestedMin && min === exp(this.min, 0)) {\n setMin(exp(min, -1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined\n ? '0'\n : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min\n ? 0\n : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nLogarithmicScale.id = 'logarithmic';\nLogarithmicScale.defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n};\n\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - (size / 2),\n end: pos + (size / 2)\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(\n orig.l - limits.l,\n limits.r - orig.r,\n orig.t - limits.t,\n limits.b - orig.b\n );\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const extra = getTickBackdropHeight(opts) / 2;\n const outerDistance = scale.drawingArea;\n const additionalAngle = opts.pointLabels.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const pointLabelPosition = scale.getPointPosition(i, outerDistance + extra + padding[i], additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const size = labelSizes[i];\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n items.push({\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n });\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= (w / 2);\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= (h / 2);\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabels(scale, labelCount) {\n const {ctx, options: {pointLabels}} = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n const plFont = toFont(optsAtIndex.font);\n const {x, y, textAlign, left, top, right, bottom} = scale._pointLabelItems[i];\n const {backdropColor} = optsAtIndex;\n if (!isNullOrUndef(backdropColor)) {\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillStyle = backdropColor;\n ctx.fillRect(left - padding.left, top - padding.top, right - left + padding.width, bottom - top + padding.height);\n }\n renderText(\n ctx,\n scale._pointLabels[i],\n x,\n y + (plFont.lineHeight / 2),\n plFont,\n {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n }\n );\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {ctx} = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {color, lineWidth} = gridLineOpts;\n if ((!circular && !labelCount) || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(gridLineOpts.borderDash);\n ctx.lineDashOffset = gridLineOpts.borderDashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {min, max} = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels()\n .map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n })\n .filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {left, top, right, bottom} = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom,\n };\n }\n drawBackground() {\n const {backgroundColor, grid: {circular}} = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {angleLines, grid} = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const optsAtIndex = grid.setContext(this.getContext(index - 1));\n drawRadiusLine(this, optsAtIndex, offset, labelCount);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {color, lineWidth} = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(\n -width / 2 - padding.left,\n -offset - tickFont.size / 2 - padding.top,\n width + padding.width,\n tickFont.size + padding.height\n );\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nRadialLinearScale.id = 'radialLinear';\nRadialLinearScale.defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n};\nRadialLinearScale.defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n};\nRadialLinearScale.descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n};\n\nconst INTERVALS = {\n millisecond: {common: true, size: 1, steps: 1000},\n second: {common: true, size: 1000, steps: 60},\n minute: {common: true, size: 60000, steps: 60},\n hour: {common: true, size: 3600000, steps: 24},\n day: {common: true, size: 86400000, steps: 30},\n week: {common: false, size: 604800000, steps: 4},\n month: {common: true, size: 2.628e9, steps: 12},\n quarter: {common: false, size: 7.884e9, steps: 4},\n year: {common: true, size: 3.154e10}\n};\nconst UNITS = (Object.keys(INTERVALS));\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {parser, round, isoWeekday} = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string'\n ? adapter.parse(value, parser)\n : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true)\n ? adapter.startOf(value, 'isoWeek', isoWeekday)\n : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {lo, hi} = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return (ilen === 0 || !majorUnit) ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nclass TimeScale extends Scale {\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {min, max, minDefined, maxDefined} = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {min, max};\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip\n ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min))\n : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined\n : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n initOffsets(timestamps) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {start, end, factor: 1 / (start + 1 + end)};\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(timeOpts.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort((a, b) => a - b).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n const label = this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n const formatter = options.ticks.callback;\n return formatter ? callback(formatter, [label, index, ticks], this) : label;\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: (tickLabelWidth * cosRotation) + (tickFontSize * sinRotation),\n h: (tickLabelWidth * sinRotation) + (tickFontSize * cosRotation)\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return (this._cache.data = metas[0].controller.getAllParsedValues(this));\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return (this._cache.data = this.normalize(timestamps));\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return (this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps));\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n}\nTimeScale.id = 'time';\nTimeScale.defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n major: {\n enabled: false\n }\n }\n};\n\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({lo, hi} = _lookupByKey(table, 'pos', val));\n }\n ({pos: prevSource, time: prevTarget} = table[lo]);\n ({pos: nextSource, time: nextTarget} = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({lo, hi} = _lookupByKey(table, 'time', val));\n }\n ({time: prevSource, pos: prevTarget} = table[lo]);\n ({time: nextSource, pos: nextTarget} = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {min, max} = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [\n {time: min, pos: 0},\n {time: max, pos: 1}\n ];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({time: curr, pos: i / (ilen - 1)});\n }\n }\n return table;\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nTimeSeriesScale.id = 'timeseries';\nTimeSeriesScale.defaults = TimeScale.defaults;\n\nvar scales = /*#__PURE__*/Object.freeze({\n__proto__: null,\nCategoryScale: CategoryScale,\nLinearScale: LinearScale,\nLogarithmicScale: LogarithmicScale,\nRadialLinearScale: RadialLinearScale,\nTimeScale: TimeScale,\nTimeSeriesScale: TimeSeriesScale\n});\n\nconst registerables = [\n controllers,\n elements,\n plugins,\n scales,\n];\n\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, plugin_filler as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, elements, layouts, plugins, registerables, registry, scales };\n","/*!\n * chartjs-adapter-moment v1.0.0\n * https://www.chartjs.org\n * (c) 2021 chartjs-adapter-moment Contributors\n * Released under the MIT license\n */\nimport moment from 'moment';\nimport { _adapters } from 'chart.js';\n\nconst FORMATS = {\n datetime: 'MMM D, YYYY, h:mm:ss a',\n millisecond: 'h:mm:ss.SSS a',\n second: 'h:mm:ss a',\n minute: 'h:mm a',\n hour: 'hA',\n day: 'MMM D',\n week: 'll',\n month: 'MMM YYYY',\n quarter: '[Q]Q - YYYY',\n year: 'YYYY'\n};\n\n_adapters._date.override(typeof moment === 'function' ? {\n _id: 'moment', // DEBUG ONLY\n\n formats: function() {\n return FORMATS;\n },\n\n parse: function(value, format) {\n if (typeof value === 'string' && typeof format === 'string') {\n value = moment(value, format);\n } else if (!(value instanceof moment)) {\n value = moment(value);\n }\n return value.isValid() ? value.valueOf() : null;\n },\n\n format: function(time, format) {\n return moment(time).format(format);\n },\n\n add: function(time, amount, unit) {\n return moment(time).add(amount, unit).valueOf();\n },\n\n diff: function(max, min, unit) {\n return moment(max).diff(moment(min), unit);\n },\n\n startOf: function(time, unit, weekday) {\n time = moment(time);\n if (unit === 'isoWeek') {\n weekday = Math.trunc(Math.min(Math.max(0, weekday), 6));\n return time.isoWeekday(weekday).startOf('day').valueOf();\n }\n return time.startOf(unit).valueOf();\n },\n\n endOf: function(time, unit) {\n return moment(time).endOf(unit).valueOf();\n }\n} : {});\n","/*\n * Copyright 2018 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** Alignment along the horizontal axis. */\nexport const Alignment = {\n CENTER: \"center\" as \"center\",\n LEFT: \"left\" as \"left\",\n RIGHT: \"right\" as \"right\",\n};\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Alignment = typeof Alignment[keyof typeof Alignment];\n","/*\n * Copyright 2018 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// tslint:disable:object-literal-sort-keys\nexport const Elevation = {\n ZERO: 0 as 0,\n ONE: 1 as 1,\n TWO: 2 as 2,\n THREE: 3 as 3,\n FOUR: 4 as 4,\n};\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Elevation = typeof Elevation[keyof typeof Elevation];\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// tslint:disable:object-literal-sort-keys\n\n/**\n * The four basic intents.\n */\nexport const Intent = {\n NONE: \"none\" as \"none\",\n PRIMARY: \"primary\" as \"primary\",\n SUCCESS: \"success\" as \"success\",\n WARNING: \"warning\" as \"warning\",\n DANGER: \"danger\" as \"danger\",\n};\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Intent = typeof Intent[keyof typeof Intent];\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const Position = {\n BOTTOM: \"bottom\" as \"bottom\",\n BOTTOM_LEFT: \"bottom-left\" as \"bottom-left\",\n BOTTOM_RIGHT: \"bottom-right\" as \"bottom-right\",\n LEFT: \"left\" as \"left\",\n LEFT_BOTTOM: \"left-bottom\" as \"left-bottom\",\n LEFT_TOP: \"left-top\" as \"left-top\",\n RIGHT: \"right\" as \"right\",\n RIGHT_BOTTOM: \"right-bottom\" as \"right-bottom\",\n RIGHT_TOP: \"right-top\" as \"right-top\",\n TOP: \"top\" as \"top\",\n TOP_LEFT: \"top-left\" as \"top-left\",\n TOP_RIGHT: \"top-right\" as \"top-right\",\n};\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type Position = typeof Position[keyof typeof Position];\n\nexport function isPositionHorizontal(position: Position) {\n /* istanbul ignore next */\n return (\n position === Position.TOP ||\n position === Position.TOP_LEFT ||\n position === Position.TOP_RIGHT ||\n position === Position.BOTTOM ||\n position === Position.BOTTOM_LEFT ||\n position === Position.BOTTOM_RIGHT\n );\n}\n\nexport function isPositionVertical(position: Position) {\n /* istanbul ignore next */\n return (\n position === Position.LEFT ||\n position === Position.LEFT_TOP ||\n position === Position.LEFT_BOTTOM ||\n position === Position.RIGHT ||\n position === Position.RIGHT_TOP ||\n position === Position.RIGHT_BOTTOM\n );\n}\n\nexport function getPositionIgnoreAngles(position: Position) {\n if (position === Position.TOP || position === Position.TOP_LEFT || position === Position.TOP_RIGHT) {\n return Position.TOP;\n } else if (\n position === Position.BOTTOM ||\n position === Position.BOTTOM_LEFT ||\n position === Position.BOTTOM_RIGHT\n ) {\n return Position.BOTTOM;\n } else if (position === Position.LEFT || position === Position.LEFT_TOP || position === Position.LEFT_BOTTOM) {\n return Position.LEFT;\n } else {\n return Position.RIGHT;\n }\n}\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Alignment } from \"./alignment\";\nimport { Elevation } from \"./elevation\";\nimport { Intent } from \"./intent\";\nimport { Position } from \"./position\";\n\nconst NS = process.env.BLUEPRINT_NAMESPACE || process.env.REACT_APP_BLUEPRINT_NAMESPACE || \"bp3\";\n\n// modifiers\nexport const ACTIVE = `${NS}-active`;\nexport const ALIGN_LEFT = `${NS}-align-left`;\nexport const ALIGN_RIGHT = `${NS}-align-right`;\nexport const DARK = `${NS}-dark`;\nexport const DISABLED = `${NS}-disabled`;\nexport const FILL = `${NS}-fill`;\nexport const FIXED = `${NS}-fixed`;\nexport const FIXED_TOP = `${NS}-fixed-top`;\nexport const INLINE = `${NS}-inline`;\nexport const INTERACTIVE = `${NS}-interactive`;\nexport const LARGE = `${NS}-large`;\nexport const LOADING = `${NS}-loading`;\nexport const MINIMAL = `${NS}-minimal`;\nexport const OUTLINED = `${NS}-outlined`;\nexport const MULTILINE = `${NS}-multiline`;\nexport const ROUND = `${NS}-round`;\nexport const SMALL = `${NS}-small`;\nexport const VERTICAL = `${NS}-vertical`;\nexport const POSITION_TOP = positionClass(Position.TOP);\nexport const POSITION_BOTTOM = positionClass(Position.BOTTOM);\nexport const POSITION_LEFT = positionClass(Position.LEFT);\nexport const POSITION_RIGHT = positionClass(Position.RIGHT);\n\nexport const ELEVATION_0 = elevationClass(Elevation.ZERO);\nexport const ELEVATION_1 = elevationClass(Elevation.ONE);\nexport const ELEVATION_2 = elevationClass(Elevation.TWO);\nexport const ELEVATION_3 = elevationClass(Elevation.THREE);\nexport const ELEVATION_4 = elevationClass(Elevation.FOUR);\n\nexport const INTENT_PRIMARY = intentClass(Intent.PRIMARY)!;\nexport const INTENT_SUCCESS = intentClass(Intent.SUCCESS)!;\nexport const INTENT_WARNING = intentClass(Intent.WARNING)!;\nexport const INTENT_DANGER = intentClass(Intent.DANGER)!;\n\nexport const FOCUS_DISABLED = `${NS}-focus-disabled`;\n\n// text utilities\nexport const UI_TEXT = `${NS}-ui-text`;\nexport const RUNNING_TEXT = `${NS}-running-text`;\nexport const MONOSPACE_TEXT = `${NS}-monospace-text`;\nexport const TEXT_LARGE = `${NS}-text-large`;\nexport const TEXT_SMALL = `${NS}-text-small`;\nexport const TEXT_MUTED = `${NS}-text-muted`;\nexport const TEXT_DISABLED = `${NS}-text-disabled`;\nexport const TEXT_OVERFLOW_ELLIPSIS = `${NS}-text-overflow-ellipsis`;\n\n// textual elements\nexport const BLOCKQUOTE = `${NS}-blockquote`;\nexport const CODE = `${NS}-code`;\nexport const CODE_BLOCK = `${NS}-code-block`;\nexport const HEADING = `${NS}-heading`;\nexport const LIST = `${NS}-list`;\nexport const LIST_UNSTYLED = `${NS}-list-unstyled`;\nexport const RTL = `${NS}-rtl`;\n\n// layout utilities\n/** @see https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block */\nexport const FIXED_POSITIONING_CONTAINING_BLOCK = `${NS}-fixed-positioning-containing-block`;\n\n// components\nexport const ALERT = `${NS}-alert`;\nexport const ALERT_BODY = `${ALERT}-body`;\nexport const ALERT_CONTENTS = `${ALERT}-contents`;\nexport const ALERT_FOOTER = `${ALERT}-footer`;\n\nexport const BREADCRUMB = `${NS}-breadcrumb`;\nexport const BREADCRUMB_CURRENT = `${BREADCRUMB}-current`;\nexport const BREADCRUMBS = `${BREADCRUMB}s`;\nexport const BREADCRUMBS_COLLAPSED = `${BREADCRUMB}s-collapsed`;\n\nexport const BUTTON = `${NS}-button`;\nexport const BUTTON_GROUP = `${BUTTON}-group`;\nexport const BUTTON_SPINNER = `${BUTTON}-spinner`;\nexport const BUTTON_TEXT = `${BUTTON}-text`;\n\nexport const CALLOUT = `${NS}-callout`;\nexport const CALLOUT_ICON = `${CALLOUT}-icon`;\n\nexport const CARD = `${NS}-card`;\n\nexport const COLLAPSE = `${NS}-collapse`;\nexport const COLLAPSE_BODY = `${COLLAPSE}-body`;\n\nexport const COLLAPSIBLE_LIST = `${NS}-collapse-list`;\n\nexport const CONTEXT_MENU = `${NS}-context-menu`;\nexport const CONTEXT_MENU_POPOVER_TARGET = `${CONTEXT_MENU}-popover-target`;\n\nexport const CONTROL_GROUP = `${NS}-control-group`;\n\nexport const DIALOG = `${NS}-dialog`;\nexport const DIALOG_CONTAINER = `${DIALOG}-container`;\nexport const DIALOG_BODY = `${DIALOG}-body`;\nexport const DIALOG_CLOSE_BUTTON = `${DIALOG}-close-button`;\nexport const DIALOG_FOOTER = `${DIALOG}-footer`;\nexport const DIALOG_FOOTER_ACTIONS = `${DIALOG}-footer-actions`;\nexport const DIALOG_HEADER = `${DIALOG}-header`;\n\nexport const DIALOG_STEP = `${NS}-dialog-step`;\nexport const DIALOG_STEP_CONTAINER = `${DIALOG_STEP}-container`;\nexport const DIALOG_STEP_TITLE = `${DIALOG_STEP}-title`;\nexport const DIALOG_STEP_ICON = `${DIALOG_STEP}-icon`;\nexport const DIALOG_STEP_VIEWED = `${DIALOG_STEP}-viewed`;\n\nexport const DIVIDER = `${NS}-divider`;\n\nexport const DRAWER = `${NS}-drawer`;\nexport const DRAWER_BODY = `${DRAWER}-body`;\nexport const DRAWER_FOOTER = `${DRAWER}-footer`;\nexport const DRAWER_HEADER = `${DRAWER}-header`;\n\nexport const EDITABLE_TEXT = `${NS}-editable-text`;\nexport const EDITABLE_TEXT_CONTENT = `${EDITABLE_TEXT}-content`;\nexport const EDITABLE_TEXT_EDITING = `${EDITABLE_TEXT}-editing`;\nexport const EDITABLE_TEXT_INPUT = `${EDITABLE_TEXT}-input`;\nexport const EDITABLE_TEXT_PLACEHOLDER = `${EDITABLE_TEXT}-placeholder`;\n\nexport const FLEX_EXPANDER = `${NS}-flex-expander`;\n\nexport const HTML_SELECT = `${NS}-html-select`;\n/** @deprecated prefer `` component */\nexport const SELECT = `${NS}-select`;\n\nexport const HTML_TABLE = `${NS}-html-table`;\nexport const HTML_TABLE_BORDERED = `${HTML_TABLE}-bordered`;\nexport const HTML_TABLE_CONDENSED = `${HTML_TABLE}-condensed`;\nexport const HTML_TABLE_STRIPED = `${HTML_TABLE}-striped`;\n\nexport const INPUT = `${NS}-input`;\nexport const INPUT_GHOST = `${INPUT}-ghost`;\nexport const INPUT_GROUP = `${INPUT}-group`;\nexport const INPUT_LEFT_CONTAINER = `${INPUT}-left-container`;\nexport const INPUT_ACTION = `${INPUT}-action`;\n\nexport const CONTROL = `${NS}-control`;\nexport const CONTROL_INDICATOR = `${CONTROL}-indicator`;\nexport const CONTROL_INDICATOR_CHILD = `${CONTROL_INDICATOR}-child`;\nexport const CHECKBOX = `${NS}-checkbox`;\nexport const RADIO = `${NS}-radio`;\nexport const SWITCH = `${NS}-switch`;\nexport const SWITCH_INNER_TEXT = `${SWITCH}-inner-text`;\nexport const FILE_INPUT = `${NS}-file-input`;\nexport const FILE_INPUT_HAS_SELECTION = `${NS}-file-input-has-selection`;\nexport const FILE_UPLOAD_INPUT = `${NS}-file-upload-input`;\nexport const FILE_UPLOAD_INPUT_CUSTOM_TEXT = `${NS}-file-upload-input-custom-text`;\n\nexport const KEY = `${NS}-key`;\nexport const KEY_COMBO = `${KEY}-combo`;\nexport const MODIFIER_KEY = `${NS}-modifier-key`;\n\nexport const HOTKEY = `${NS}-hotkey`;\nexport const HOTKEY_LABEL = `${HOTKEY}-label`;\nexport const HOTKEY_COLUMN = `${HOTKEY}-column`;\nexport const HOTKEY_DIALOG = `${HOTKEY}-dialog`;\n\nexport const LABEL = `${NS}-label`;\nexport const FORM_GROUP = `${NS}-form-group`;\nexport const FORM_CONTENT = `${NS}-form-content`;\nexport const FORM_HELPER_TEXT = `${NS}-form-helper-text`;\n\nexport const MENU = `${NS}-menu`;\nexport const MENU_ITEM = `${MENU}-item`;\nexport const MENU_ITEM_LABEL = `${MENU_ITEM}-label`;\nexport const MENU_SUBMENU = `${NS}-submenu`;\nexport const MENU_DIVIDER = `${MENU}-divider`;\nexport const MENU_HEADER = `${MENU}-header`;\n\nexport const MULTISTEP_DIALOG = `${NS}-multistep-dialog`;\nexport const MULTISTEP_DIALOG_PANELS = `${MULTISTEP_DIALOG}-panels`;\nexport const MULTISTEP_DIALOG_LEFT_PANEL = `${MULTISTEP_DIALOG}-left-panel`;\nexport const MULTISTEP_DIALOG_RIGHT_PANEL = `${MULTISTEP_DIALOG}-right-panel`;\nexport const MULTISTEP_DIALOG_FOOTER = `${MULTISTEP_DIALOG}-footer`;\n\nexport const NAVBAR = `${NS}-navbar`;\nexport const NAVBAR_GROUP = `${NAVBAR}-group`;\nexport const NAVBAR_HEADING = `${NAVBAR}-heading`;\nexport const NAVBAR_DIVIDER = `${NAVBAR}-divider`;\n\nexport const NON_IDEAL_STATE = `${NS}-non-ideal-state`;\nexport const NON_IDEAL_STATE_VISUAL = `${NON_IDEAL_STATE}-visual`;\n\nexport const NUMERIC_INPUT = `${NS}-numeric-input`;\n\nexport const OVERFLOW_LIST = `${NS}-overflow-list`;\nexport const OVERFLOW_LIST_SPACER = `${OVERFLOW_LIST}-spacer`;\n\nexport const OVERLAY = `${NS}-overlay`;\nexport const OVERLAY_BACKDROP = `${OVERLAY}-backdrop`;\nexport const OVERLAY_CONTAINER = `${OVERLAY}-container`;\nexport const OVERLAY_CONTENT = `${OVERLAY}-content`;\nexport const OVERLAY_INLINE = `${OVERLAY}-inline`;\nexport const OVERLAY_OPEN = `${OVERLAY}-open`;\nexport const OVERLAY_SCROLL_CONTAINER = `${OVERLAY}-scroll-container`;\n\nexport const PANEL_STACK = `${NS}-panel-stack`;\nexport const PANEL_STACK_HEADER = `${PANEL_STACK}-header`;\nexport const PANEL_STACK_HEADER_BACK = `${PANEL_STACK}-header-back`;\nexport const PANEL_STACK_VIEW = `${PANEL_STACK}-view`;\n\nexport const PANEL_STACK2 = `${NS}-panel-stack2`;\nexport const PANEL_STACK2_HEADER = `${PANEL_STACK}-header`;\nexport const PANEL_STACK2_HEADER_BACK = `${PANEL_STACK}-header-back`;\nexport const PANEL_STACK2_VIEW = `${PANEL_STACK}-view`;\n\nexport const POPOVER = `${NS}-popover`;\nexport const POPOVER_ARROW = `${POPOVER}-arrow`;\nexport const POPOVER_BACKDROP = `${POPOVER}-backdrop`;\nexport const POPOVER_CAPTURING_DISMISS = `${POPOVER}-capturing-dismiss`;\nexport const POPOVER_CONTENT = `${POPOVER}-content`;\nexport const POPOVER_CONTENT_SIZING = `${POPOVER_CONTENT}-sizing`;\nexport const POPOVER_DISMISS = `${POPOVER}-dismiss`;\nexport const POPOVER_DISMISS_OVERRIDE = `${POPOVER_DISMISS}-override`;\nexport const POPOVER_OPEN = `${POPOVER}-open`;\nexport const POPOVER_TARGET = `${POPOVER}-target`;\nexport const POPOVER_WRAPPER = `${POPOVER}-wrapper`;\nexport const TRANSITION_CONTAINER = `${NS}-transition-container`;\n\nexport const PROGRESS_BAR = `${NS}-progress-bar`;\nexport const PROGRESS_METER = `${NS}-progress-meter`;\nexport const PROGRESS_NO_STRIPES = `${NS}-no-stripes`;\nexport const PROGRESS_NO_ANIMATION = `${NS}-no-animation`;\n\nexport const PORTAL = `${NS}-portal`;\n\nexport const SKELETON = `${NS}-skeleton`;\n\nexport const SLIDER = `${NS}-slider`;\nexport const SLIDER_AXIS = `${SLIDER}-axis`;\nexport const SLIDER_HANDLE = `${SLIDER}-handle`;\nexport const SLIDER_LABEL = `${SLIDER}-label`;\nexport const SLIDER_TRACK = `${SLIDER}-track`;\nexport const SLIDER_PROGRESS = `${SLIDER}-progress`;\nexport const START = `${NS}-start`;\nexport const END = `${NS}-end`;\n\nexport const SPINNER = `${NS}-spinner`;\nexport const SPINNER_ANIMATION = `${SPINNER}-animation`;\nexport const SPINNER_HEAD = `${SPINNER}-head`;\nexport const SPINNER_NO_SPIN = `${NS}-no-spin`;\nexport const SPINNER_TRACK = `${SPINNER}-track`;\n\nexport const TAB = `${NS}-tab`;\nexport const TAB_INDICATOR = `${TAB}-indicator`;\nexport const TAB_INDICATOR_WRAPPER = `${TAB_INDICATOR}-wrapper`;\nexport const TAB_LIST = `${TAB}-list`;\nexport const TAB_PANEL = `${TAB}-panel`;\nexport const TABS = `${TAB}s`;\n\nexport const TAG = `${NS}-tag`;\nexport const TAG_REMOVE = `${TAG}-remove`;\n\nexport const TAG_INPUT = `${NS}-tag-input`;\nexport const TAG_INPUT_ICON = `${TAG_INPUT}-icon`;\nexport const TAG_INPUT_VALUES = `${TAG_INPUT}-values`;\n\nexport const TOAST = `${NS}-toast`;\nexport const TOAST_CONTAINER = `${TOAST}-container`;\nexport const TOAST_MESSAGE = `${TOAST}-message`;\n\nexport const TOOLTIP = `${NS}-tooltip`;\nexport const TOOLTIP_INDICATOR = `${TOOLTIP}-indicator`;\n\nexport const TREE = `${NS}-tree`;\nexport const TREE_NODE = `${NS}-tree-node`;\nexport const TREE_NODE_CARET = `${TREE_NODE}-caret`;\nexport const TREE_NODE_CARET_CLOSED = `${TREE_NODE_CARET}-closed`;\nexport const TREE_NODE_CARET_NONE = `${TREE_NODE_CARET}-none`;\nexport const TREE_NODE_CARET_OPEN = `${TREE_NODE_CARET}-open`;\nexport const TREE_NODE_CONTENT = `${TREE_NODE}-content`;\nexport const TREE_NODE_EXPANDED = `${TREE_NODE}-expanded`;\nexport const TREE_NODE_ICON = `${TREE_NODE}-icon`;\nexport const TREE_NODE_LABEL = `${TREE_NODE}-label`;\nexport const TREE_NODE_LIST = `${TREE_NODE}-list`;\nexport const TREE_NODE_SECONDARY_LABEL = `${TREE_NODE}-secondary-label`;\nexport const TREE_NODE_SELECTED = `${TREE_NODE}-selected`;\nexport const TREE_ROOT = `${NS}-tree-root`;\n\nexport const ICON = `${NS}-icon`;\n/** @deprecated use components and iconName prop APIs instead */\nexport const ICON_STANDARD = `${ICON}-standard`;\n/** @deprecated use components and iconName prop APIs instead */\nexport const ICON_LARGE = `${ICON}-large`;\n\n/**\n * Returns the namespace prefix for all Blueprint CSS classes.\n * Customize this namespace at build time with the `process.env.BLUEPRINT_NAMESPACE` environment variable.\n */\nexport function getClassNamespace() {\n return NS;\n}\n\n/** Return CSS class for alignment. */\nexport function alignmentClass(alignment: Alignment | undefined) {\n switch (alignment) {\n case Alignment.LEFT:\n return ALIGN_LEFT;\n case Alignment.RIGHT:\n return ALIGN_RIGHT;\n default:\n return undefined;\n }\n}\n\nexport function elevationClass(elevation: Elevation): string;\nexport function elevationClass(elevation: undefined): undefined;\nexport function elevationClass(elevation: Elevation | undefined): string | undefined;\nexport function elevationClass(elevation: Elevation | undefined) {\n if (elevation === undefined) {\n return undefined;\n }\n return `${NS}-elevation-${elevation}`;\n}\n\n/**\n * Returns CSS class for icon name.\n *\n * @deprecated These CSS classes rely on Blueprint's icon fonts, which are a legacy feature and will be\n * removed the next major version (4.x). Use the `` React component and `iconName` string enum prop\n * APIs instead – they render SVGs, which do not suffer from the blurriness of icon fonts and have\n * equivalent browser support.\n */\nexport function iconClass(iconName: string): string;\nexport function iconClass(iconName: undefined): undefined;\nexport function iconClass(iconName: string | undefined): string | undefined;\nexport function iconClass(iconName: string | undefined) {\n if (iconName == null) {\n return undefined;\n }\n return iconName.indexOf(`${NS}-icon-`) === 0 ? iconName : `${NS}-icon-${iconName}`;\n}\n\n/** Return CSS class for intent. */\nexport function intentClass(intent: Intent): string;\nexport function intentClass(intent: typeof Intent.NONE | undefined): undefined;\nexport function intentClass(intent: Intent | undefined): Intent | undefined;\nexport function intentClass(intent: Intent | undefined) {\n if (intent == null || intent === Intent.NONE) {\n return undefined;\n }\n return `${NS}-intent-${intent.toLowerCase()}`;\n}\n\nexport function positionClass(position: Position): string;\nexport function positionClass(position: undefined): undefined;\nexport function positionClass(position: Position | undefined): string | undefined;\nexport function positionClass(position: Position | undefined) {\n if (position === undefined) {\n return undefined;\n }\n return `${NS}-position-${position}`;\n}\n","/*\n * Copyright 2016 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst TAB_KEY_CODE = 9;\n\n/* istanbul ignore next */\n\n/**\n * A nifty little class that maintains event handlers to add a class to the container element\n * when entering \"mouse mode\" (on a `mousedown` event) and remove it when entering \"keyboard mode\"\n * (on a `tab` key `keydown` event).\n */\nexport class InteractionModeEngine {\n private isRunning = false;\n\n constructor(private container: Element, private className: string) {}\n\n /** Returns whether the engine is currently running. */\n public isActive() {\n return this.isRunning;\n }\n\n /** Enable behavior which applies the given className when in mouse mode. */\n public start() {\n this.container.addEventListener(\"mousedown\", this.handleMouseDown);\n this.isRunning = true;\n }\n\n /** Disable interaction mode behavior and remove className from container. */\n public stop() {\n this.reset();\n this.isRunning = false;\n }\n\n private reset() {\n this.container.classList.remove(this.className);\n // HACKHACK: see https://github.com/palantir/blueprint/issues/4342\n this.container.removeEventListener(\"keydown\", this.handleKeyDown as EventListener);\n this.container.removeEventListener(\"mousedown\", this.handleMouseDown);\n }\n\n private handleKeyDown = (e: KeyboardEvent) => {\n // HACKHACK: https://github.com/palantir/blueprint/issues/4165\n // eslint-disable-next-line deprecation/deprecation\n if (e.which === TAB_KEY_CODE) {\n this.reset();\n this.container.addEventListener(\"mousedown\", this.handleMouseDown);\n }\n };\n\n private handleMouseDown = () => {\n this.reset();\n this.container.classList.add(this.className);\n // HACKHACK: see https://github.com/palantir/blueprint/issues/4342\n this.container.addEventListener(\"keydown\", this.handleKeyDown as EventListener);\n };\n}\n","/*\n * Copyright 2016 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FOCUS_DISABLED } from \"../common/classes\";\nimport { InteractionModeEngine } from \"../common/interactionMode\";\n\n/* istanbul ignore next */\nconst fakeFocusEngine = {\n isActive: () => true,\n start: () => true,\n stop: () => true,\n};\n\nconst focusEngine =\n typeof document !== \"undefined\"\n ? new InteractionModeEngine(document.documentElement, FOCUS_DISABLED)\n : fakeFocusEngine;\n\nexport const FocusStyleManager = {\n alwaysShowFocus: () => focusEngine.stop(),\n isActive: () => focusEngine.isActive(),\n onlyShowFocusOnTabs: () => focusEngine.start(),\n};\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? prefix + \": \" + provided : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNameContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(Context).match;\n\n return path ? matchPath(location.pathname, path) : match;\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const method = replace ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as React from \"react\";\n\nimport { IconName } from \"@blueprintjs/icons\";\n\nimport { Intent } from \"./intent\";\nimport { IRef } from \"./refs\";\n\nexport const DISPLAYNAME_PREFIX = \"Blueprint3\";\n\n/**\n * Alias for all valid HTML props for `
    ` element.\n * Does not include React's `ref` or `key`.\n */\nexport type HTMLDivProps = React.HTMLAttributes;\n\n/**\n * Alias for all valid HTML props for `` element.\n * Does not include React's `ref` or `key`.\n */\nexport type HTMLInputProps = React.InputHTMLAttributes;\n\n/**\n * Alias for a `JSX.Element` or a value that renders nothing.\n *\n * In React, `boolean`, `null`, and `undefined` do not produce any output.\n */\nexport type MaybeElement = JSX.Element | false | null | undefined;\n\n/**\n * A shared base interface for all Blueprint component props.\n *\n * @deprecated use Props\n */\nexport interface IProps {\n /** A space-delimited list of class names to pass along to a child element. */\n className?: string;\n}\n// eslint-disable-next-line deprecation/deprecation\nexport type Props = IProps;\n\n/** @deprecated use IntentProps */\nexport interface IIntentProps {\n /** Visual intent color to apply to element. */\n intent?: Intent;\n}\n// eslint-disable-next-line deprecation/deprecation\nexport type IntentProps = IIntentProps;\n\n/**\n * Interface for a clickable action, such as a button or menu item.\n * These props can be spready directly to a `
    \n );\n }\n}\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport * as React from \"react\";\n\nimport * as Classes from \"../../common/classes\";\nimport { DISPLAYNAME_PREFIX, Props } from \"../../common/props\";\nimport { H6 } from \"../html/html\";\n\n// eslint-disable-next-line deprecation/deprecation\nexport type MenuDividerProps = IMenuDividerProps;\n/** @deprecated use MenuDividerProps */\nexport interface IMenuDividerProps extends Props {\n /** This component does not support children. */\n children?: never;\n\n /** Optional header title. */\n title?: React.ReactNode;\n}\n\nexport class MenuDivider extends React.Component {\n public static displayName = `${DISPLAYNAME_PREFIX}.MenuDivider`;\n\n public render() {\n const { className, title } = this.props;\n if (title == null) {\n // simple divider\n return
  • ;\n } else {\n // section header with title\n return (\n
  • \n
    {title}
    \n
  • \n );\n }\n }\n}\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport createContext from '@hypnosphi/create-react-context';\nexport var ManagerReferenceNodeContext = createContext();\nexport var ManagerReferenceNodeSetterContext = createContext();\n\nvar Manager =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(Manager, _React$Component);\n\n function Manager() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"referenceNode\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setReferenceNode\", function (newReferenceNode) {\n if (newReferenceNode && _this.referenceNode !== newReferenceNode) {\n _this.referenceNode = newReferenceNode;\n\n _this.forceUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = Manager.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.referenceNode = null;\n };\n\n _proto.render = function render() {\n return React.createElement(ManagerReferenceNodeContext.Provider, {\n value: this.referenceNode\n }, React.createElement(ManagerReferenceNodeSetterContext.Provider, {\n value: this.setReferenceNode\n }, this.props.children));\n };\n\n return Manager;\n}(React.Component);\n\nexport { Manager as default };","/**\n * Takes an argument and if it's an array, returns the first item in the array,\n * otherwise returns the argument. Used for Preact compatibility.\n */\nexport var unwrapArray = function unwrapArray(arg) {\n return Array.isArray(arg) ? arg[0] : arg;\n};\n/**\n * Takes a maybe-undefined function and arbitrary args and invokes the function\n * only if it is defined.\n */\n\nexport var safeInvoke = function safeInvoke(fn) {\n if (typeof fn === \"function\") {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return fn.apply(void 0, args);\n }\n};\n/**\n * Does a shallow equality check of two objects by comparing the reference\n * equality of each value.\n */\n\nexport var shallowEqual = function shallowEqual(objA, objB) {\n var aKeys = Object.keys(objA);\n var bKeys = Object.keys(objB);\n\n if (bKeys.length !== aKeys.length) {\n return false;\n }\n\n for (var i = 0; i < bKeys.length; i++) {\n var key = aKeys[i];\n\n if (objA[key] !== objB[key]) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Sets a ref using either a ref callback or a ref object\n */\n\nexport var setRef = function setRef(ref, node) {\n // if its a function call it\n if (typeof ref === \"function\") {\n return safeInvoke(ref, node);\n } // otherwise we should treat it as a ref object\n else if (ref != null) {\n ref.current = node;\n }\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport * as React from 'react';\nimport warning from 'warning';\nimport { ManagerReferenceNodeSetterContext } from './Manager';\nimport { safeInvoke, unwrapArray, setRef } from './utils';\n\nvar InnerReference =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerReference, _React$Component);\n\n function InnerReference() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"refHandler\", function (node) {\n setRef(_this.props.innerRef, node);\n safeInvoke(_this.props.setReferenceNode, node);\n });\n\n return _this;\n }\n\n var _proto = InnerReference.prototype;\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n };\n\n _proto.render = function render() {\n warning(Boolean(this.props.setReferenceNode), '`Reference` should not be used outside of a `Manager` component.');\n return unwrapArray(this.props.children)({\n ref: this.refHandler\n });\n };\n\n return InnerReference;\n}(React.Component);\n\nexport default function Reference(props) {\n return React.createElement(ManagerReferenceNodeSetterContext.Consumer, null, function (setReferenceNode) {\n return React.createElement(InnerReference, _extends({\n setReferenceNode: setReferenceNode\n }, props));\n });\n}","export default typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';\n","import isBrowser from './isBrowser';\n\nconst timeoutDuration = (function(){\n const longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\n for (let i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n return 1;\n }\n }\n return 0;\n}());\n\nexport function microtaskDebounce(fn) {\n let called = false\n return () => {\n if (called) {\n return\n }\n called = true\n window.Promise.resolve().then(() => {\n called = false\n fn()\n })\n }\n}\n\nexport function taskDebounce(fn) {\n let scheduled = false;\n return () => {\n if (!scheduled) {\n scheduled = true;\n setTimeout(() => {\n scheduled = false;\n fn();\n }, timeoutDuration);\n }\n };\n}\n\nconst supportsMicroTasks = isBrowser && window.Promise\n\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nexport default (supportsMicroTasks\n ? microtaskDebounce\n : taskDebounce);\n","/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nexport default function isFunction(functionToCheck) {\n const getType = {};\n return (\n functionToCheck &&\n getType.toString.call(functionToCheck) === '[object Function]'\n );\n}\n","/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nexport default function getStyleComputedProperty(element, property) {\n if (element.nodeType !== 1) {\n return [];\n }\n // NOTE: 1 DOM access here\n const window = element.ownerDocument.defaultView;\n const css = window.getComputedStyle(element, null);\n return property ? css[property] : css;\n}\n","/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nexport default function getParentNode(element) {\n if (element.nodeName === 'HTML') {\n return element;\n }\n return element.parentNode || element.host;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nexport default function getScrollParent(element) {\n // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n if (!element) {\n return document.body\n }\n\n switch (element.nodeName) {\n case 'HTML':\n case 'BODY':\n return element.ownerDocument.body\n case '#document':\n return element.body\n }\n\n // Firefox want us to check `-x` and `-y` variations as well\n const { overflow, overflowX, overflowY } = getStyleComputedProperty(element);\n if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n return element;\n }\n\n return getScrollParent(getParentNode(element));\n}\n","/**\n * Returns the reference node of the reference object, or the reference object itself.\n * @method\n * @memberof Popper.Utils\n * @param {Element|Object} reference - the reference element (the popper will be relative to this)\n * @returns {Element} parent\n */\nexport default function getReferenceNode(reference) {\n return reference && reference.referenceNode ? reference.referenceNode : reference;\n}\n","import isBrowser from './isBrowser';\n\nconst isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nconst isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nexport default function isIE(version) {\n if (version === 11) {\n return isIE11;\n }\n if (version === 10) {\n return isIE10;\n }\n return isIE11 || isIE10;\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nexport default function getOffsetParent(element) {\n if (!element) {\n return document.documentElement;\n }\n\n const noOffsetParent = isIE(10) ? document.body : null;\n\n // NOTE: 1 DOM access here\n let offsetParent = element.offsetParent || null;\n // Skip hidden elements which don't have an offsetParent\n while (offsetParent === noOffsetParent && element.nextElementSibling) {\n offsetParent = (element = element.nextElementSibling).offsetParent;\n }\n\n const nodeName = offsetParent && offsetParent.nodeName;\n\n if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n return element ? element.ownerDocument.documentElement : document.documentElement;\n }\n\n // .offsetParent will return the closest TH, TD or TABLE in case\n // no offsetParent is present, I hate this job...\n if (\n ['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 &&\n getStyleComputedProperty(offsetParent, 'position') === 'static'\n ) {\n return getOffsetParent(offsetParent);\n }\n\n return offsetParent;\n}\n","/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nexport default function getRoot(node) {\n if (node.parentNode !== null) {\n return getRoot(node.parentNode);\n }\n\n return node;\n}\n","import isOffsetContainer from './isOffsetContainer';\nimport getRoot from './getRoot';\nimport getOffsetParent from './getOffsetParent';\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nexport default function findCommonOffsetParent(element1, element2) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n return document.documentElement;\n }\n\n // Here we make sure to give as \"start\" the element that comes first in the DOM\n const order =\n element1.compareDocumentPosition(element2) &\n Node.DOCUMENT_POSITION_FOLLOWING;\n const start = order ? element1 : element2;\n const end = order ? element2 : element1;\n\n // Get common ancestor container\n const range = document.createRange();\n range.setStart(start, 0);\n range.setEnd(end, 0);\n const { commonAncestorContainer } = range;\n\n // Both nodes are inside #document\n if (\n (element1 !== commonAncestorContainer &&\n element2 !== commonAncestorContainer) ||\n start.contains(end)\n ) {\n if (isOffsetContainer(commonAncestorContainer)) {\n return commonAncestorContainer;\n }\n\n return getOffsetParent(commonAncestorContainer);\n }\n\n // one of the nodes is inside shadowDOM, find which one\n const element1root = getRoot(element1);\n if (element1root.host) {\n return findCommonOffsetParent(element1root.host, element2);\n } else {\n return findCommonOffsetParent(element1, getRoot(element2).host);\n }\n}\n","import getOffsetParent from './getOffsetParent';\n\nexport default function isOffsetContainer(element) {\n const { nodeName } = element;\n if (nodeName === 'BODY') {\n return false;\n }\n return (\n nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element\n );\n}\n","/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nexport default function getScroll(element, side = 'top') {\n const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n const nodeName = element.nodeName;\n\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n const html = element.ownerDocument.documentElement;\n const scrollingElement = element.ownerDocument.scrollingElement || html;\n return scrollingElement[upperSide];\n }\n\n return element[upperSide];\n}\n","import getScroll from './getScroll';\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nexport default function includeScroll(rect, element, subtract = false) {\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n const modifier = subtract ? -1 : 1;\n rect.top += scrollTop * modifier;\n rect.bottom += scrollTop * modifier;\n rect.left += scrollLeft * modifier;\n rect.right += scrollLeft * modifier;\n return rect;\n}\n","/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nexport default function getBordersSize(styles, axis) {\n const sideA = axis === 'x' ? 'Left' : 'Top';\n const sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n return (\n parseFloat(styles[`border${sideA}Width`]) +\n parseFloat(styles[`border${sideB}Width`])\n );\n}\n","import isIE from './isIE';\n\nfunction getSize(axis, body, html, computedStyle) {\n return Math.max(\n body[`offset${axis}`],\n body[`scroll${axis}`],\n html[`client${axis}`],\n html[`offset${axis}`],\n html[`scroll${axis}`],\n isIE(10)\n ? (parseInt(html[`offset${axis}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Top' : 'Left'}`]) + \n parseInt(computedStyle[`margin${axis === 'Height' ? 'Bottom' : 'Right'}`]))\n : 0 \n );\n}\n\nexport default function getWindowSizes(document) {\n const body = document.body;\n const html = document.documentElement;\n const computedStyle = isIE(10) && getComputedStyle(html);\n\n return {\n height: getSize('Height', body, html, computedStyle),\n width: getSize('Width', body, html, computedStyle),\n };\n}\n","/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nexport default function getClientRect(offsets) {\n return {\n ...offsets,\n right: offsets.left + offsets.width,\n bottom: offsets.top + offsets.height,\n };\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getBordersSize from './getBordersSize';\nimport getWindowSizes from './getWindowSizes';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\nimport isIE from './isIE';\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nexport default function getBoundingClientRect(element) {\n let rect = {};\n\n // IE10 10 FIX: Please, don't ask, the element isn't\n // considered in DOM in some circumstances...\n // This isn't reproducible in IE10 compatibility mode of IE11\n try {\n if (isIE(10)) {\n rect = element.getBoundingClientRect();\n const scrollTop = getScroll(element, 'top');\n const scrollLeft = getScroll(element, 'left');\n rect.top += scrollTop;\n rect.left += scrollLeft;\n rect.bottom += scrollTop;\n rect.right += scrollLeft;\n }\n else {\n rect = element.getBoundingClientRect();\n }\n }\n catch(e){}\n\n const result = {\n left: rect.left,\n top: rect.top,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top,\n };\n\n // subtract scrollbar size from sizes\n const sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};\n const width =\n sizes.width || element.clientWidth || result.width;\n const height =\n sizes.height || element.clientHeight || result.height;\n\n let horizScrollbar = element.offsetWidth - width;\n let vertScrollbar = element.offsetHeight - height;\n\n // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n // we make this check conditional for performance reasons\n if (horizScrollbar || vertScrollbar) {\n const styles = getStyleComputedProperty(element);\n horizScrollbar -= getBordersSize(styles, 'x');\n vertScrollbar -= getBordersSize(styles, 'y');\n\n result.width -= horizScrollbar;\n result.height -= vertScrollbar;\n }\n\n return getClientRect(result);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport includeScroll from './includeScroll';\nimport getScrollParent from './getScrollParent';\nimport getBoundingClientRect from './getBoundingClientRect';\nimport runIsIE from './isIE';\nimport getClientRect from './getClientRect';\n\nexport default function getOffsetRectRelativeToArbitraryNode(children, parent, fixedPosition = false) {\n const isIE10 = runIsIE(10);\n const isHTML = parent.nodeName === 'HTML';\n const childrenRect = getBoundingClientRect(children);\n const parentRect = getBoundingClientRect(parent);\n const scrollParent = getScrollParent(children);\n\n const styles = getStyleComputedProperty(parent);\n const borderTopWidth = parseFloat(styles.borderTopWidth);\n const borderLeftWidth = parseFloat(styles.borderLeftWidth);\n\n // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n if(fixedPosition && isHTML) {\n parentRect.top = Math.max(parentRect.top, 0);\n parentRect.left = Math.max(parentRect.left, 0);\n }\n let offsets = getClientRect({\n top: childrenRect.top - parentRect.top - borderTopWidth,\n left: childrenRect.left - parentRect.left - borderLeftWidth,\n width: childrenRect.width,\n height: childrenRect.height,\n });\n offsets.marginTop = 0;\n offsets.marginLeft = 0;\n\n // Subtract margins of documentElement in case it's being used as parent\n // we do this only on HTML because it's the only element that behaves\n // differently when margins are applied to it. The margins are included in\n // the box of the documentElement, in the other cases not.\n if (!isIE10 && isHTML) {\n const marginTop = parseFloat(styles.marginTop);\n const marginLeft = parseFloat(styles.marginLeft);\n\n offsets.top -= borderTopWidth - marginTop;\n offsets.bottom -= borderTopWidth - marginTop;\n offsets.left -= borderLeftWidth - marginLeft;\n offsets.right -= borderLeftWidth - marginLeft;\n\n // Attach marginTop and marginLeft because in some circumstances we may need them\n offsets.marginTop = marginTop;\n offsets.marginLeft = marginLeft;\n }\n\n if (\n isIE10 && !fixedPosition\n ? parent.contains(scrollParent)\n : parent === scrollParent && scrollParent.nodeName !== 'BODY'\n ) {\n offsets = includeScroll(offsets, parent);\n }\n\n return offsets;\n}\n","import getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getScroll from './getScroll';\nimport getClientRect from './getClientRect';\n\nexport default function getViewportOffsetRectRelativeToArtbitraryNode(element, excludeScroll = false) {\n const html = element.ownerDocument.documentElement;\n const relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n const width = Math.max(html.clientWidth, window.innerWidth || 0);\n const height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n const scrollTop = !excludeScroll ? getScroll(html) : 0;\n const scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n const offset = {\n top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n width,\n height,\n };\n\n return getClientRect(offset);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport getParentNode from './getParentNode';\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nexport default function isFixed(element) {\n const nodeName = element.nodeName;\n if (nodeName === 'BODY' || nodeName === 'HTML') {\n return false;\n }\n if (getStyleComputedProperty(element, 'position') === 'fixed') {\n return true;\n }\n const parentNode = getParentNode(element);\n if (!parentNode) {\n return false;\n }\n return isFixed(parentNode);\n}\n","import getStyleComputedProperty from './getStyleComputedProperty';\nimport isIE from './isIE';\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nexport default function getFixedPositionOffsetParent(element) {\n // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n if (!element || !element.parentElement || isIE()) {\n return document.documentElement;\n }\n let el = element.parentElement;\n while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n el = el.parentElement;\n }\n return el || document.documentElement;\n\n}\n","import getScrollParent from './getScrollParent';\nimport getParentNode from './getParentNode';\nimport getReferenceNode from './getReferenceNode';\nimport findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRectRelativeToArtbitraryNode';\nimport getWindowSizes from './getWindowSizes';\nimport isFixed from './isFixed';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nexport default function getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement,\n fixedPosition = false\n) {\n // NOTE: 1 DOM access here\n\n let boundaries = { top: 0, left: 0 };\n const offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n\n // Handle viewport case\n if (boundariesElement === 'viewport' ) {\n boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n }\n\n else {\n // Handle other cases based on DOM element used as boundaries\n let boundariesNode;\n if (boundariesElement === 'scrollParent') {\n boundariesNode = getScrollParent(getParentNode(reference));\n if (boundariesNode.nodeName === 'BODY') {\n boundariesNode = popper.ownerDocument.documentElement;\n }\n } else if (boundariesElement === 'window') {\n boundariesNode = popper.ownerDocument.documentElement;\n } else {\n boundariesNode = boundariesElement;\n }\n\n const offsets = getOffsetRectRelativeToArbitraryNode(\n boundariesNode,\n offsetParent,\n fixedPosition\n );\n\n // In case of HTML, we need a different computation\n if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n const { height, width } = getWindowSizes(popper.ownerDocument);\n boundaries.top += offsets.top - offsets.marginTop;\n boundaries.bottom = height + offsets.top;\n boundaries.left += offsets.left - offsets.marginLeft;\n boundaries.right = width + offsets.left;\n } else {\n // for all the other DOM elements, this one is good\n boundaries = offsets;\n }\n }\n\n // Add paddings\n padding = padding || 0;\n const isPaddingNumber = typeof padding === 'number';\n boundaries.left += isPaddingNumber ? padding : padding.left || 0; \n boundaries.top += isPaddingNumber ? padding : padding.top || 0; \n boundaries.right -= isPaddingNumber ? padding : padding.right || 0; \n boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0; \n\n return boundaries;\n}\n","import getBoundaries from '../utils/getBoundaries';\n\nfunction getArea({ width, height }) {\n return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeAutoPlacement(\n placement,\n refRect,\n popper,\n reference,\n boundariesElement,\n padding = 0\n) {\n if (placement.indexOf('auto') === -1) {\n return placement;\n }\n\n const boundaries = getBoundaries(\n popper,\n reference,\n padding,\n boundariesElement\n );\n\n const rects = {\n top: {\n width: boundaries.width,\n height: refRect.top - boundaries.top,\n },\n right: {\n width: boundaries.right - refRect.right,\n height: boundaries.height,\n },\n bottom: {\n width: boundaries.width,\n height: boundaries.bottom - refRect.bottom,\n },\n left: {\n width: refRect.left - boundaries.left,\n height: boundaries.height,\n },\n };\n\n const sortedAreas = Object.keys(rects)\n .map(key => ({\n key,\n ...rects[key],\n area: getArea(rects[key]),\n }))\n .sort((a, b) => b.area - a.area);\n\n const filteredAreas = sortedAreas.filter(\n ({ width, height }) =>\n width >= popper.clientWidth && height >= popper.clientHeight\n );\n\n const computedPlacement = filteredAreas.length > 0\n ? filteredAreas[0].key\n : sortedAreas[0].key;\n\n const variation = placement.split('-')[1];\n\n return computedPlacement + (variation ? `-${variation}` : '');\n}\n","import findCommonOffsetParent from './findCommonOffsetParent';\nimport getOffsetRectRelativeToArbitraryNode from './getOffsetRectRelativeToArbitraryNode';\nimport getFixedPositionOffsetParent from './getFixedPositionOffsetParent';\nimport getReferenceNode from './getReferenceNode';\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nexport default function getReferenceOffsets(state, popper, reference, fixedPosition = null) {\n const commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));\n return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n","/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nexport default function getOuterSizes(element) {\n const window = element.ownerDocument.defaultView;\n const styles = window.getComputedStyle(element);\n const x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);\n const y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);\n const result = {\n width: element.offsetWidth + y,\n height: element.offsetHeight + x,\n };\n return result;\n}\n","/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nexport default function getOppositePlacement(placement) {\n const hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n return placement.replace(/left|right|bottom|top/g, matched => hash[matched]);\n}\n","import getOuterSizes from './getOuterSizes';\nimport getOppositePlacement from './getOppositePlacement';\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nexport default function getPopperOffsets(popper, referenceOffsets, placement) {\n placement = placement.split('-')[0];\n\n // Get popper node sizes\n const popperRect = getOuterSizes(popper);\n\n // Add position, width and height to our offsets object\n const popperOffsets = {\n width: popperRect.width,\n height: popperRect.height,\n };\n\n // depending by the popper placement we have to compute its offsets slightly differently\n const isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n const mainSide = isHoriz ? 'top' : 'left';\n const secondarySide = isHoriz ? 'left' : 'top';\n const measurement = isHoriz ? 'height' : 'width';\n const secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n popperOffsets[mainSide] =\n referenceOffsets[mainSide] +\n referenceOffsets[measurement] / 2 -\n popperRect[measurement] / 2;\n if (placement === secondarySide) {\n popperOffsets[secondarySide] =\n referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n } else {\n popperOffsets[secondarySide] =\n referenceOffsets[getOppositePlacement(secondarySide)];\n }\n\n return popperOffsets;\n}\n","/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function find(arr, check) {\n // use native find if supported\n if (Array.prototype.find) {\n return arr.find(check);\n }\n\n // use `filter` to obtain the same behavior of `find`\n return arr.filter(check)[0];\n}\n","import isFunction from './isFunction';\nimport findIndex from './findIndex';\nimport getClientRect from '../utils/getClientRect';\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nexport default function runModifiers(modifiers, data, ends) {\n const modifiersToRun = ends === undefined\n ? modifiers\n : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n modifiersToRun.forEach(modifier => {\n if (modifier['function']) { // eslint-disable-line dot-notation\n console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n }\n const fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n if (modifier.enabled && isFunction(fn)) {\n // Add properties to offsets to make them a complete clientRect object\n // we do this before each modifier to make sure the previous one doesn't\n // mess with these values\n data.offsets.popper = getClientRect(data.offsets.popper);\n data.offsets.reference = getClientRect(data.offsets.reference);\n\n data = fn(data, modifier);\n }\n });\n\n return data;\n}\n","import find from './find';\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nexport default function findIndex(arr, prop, value) {\n // use native findIndex if supported\n if (Array.prototype.findIndex) {\n return arr.findIndex(cur => cur[prop] === value);\n }\n\n // use `find` + `indexOf` if `findIndex` isn't supported\n const match = find(arr, obj => obj[prop] === value);\n return arr.indexOf(match);\n}\n","import computeAutoPlacement from '../utils/computeAutoPlacement';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.
    \n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nexport default function update() {\n // if popper is destroyed, don't perform any further update\n if (this.state.isDestroyed) {\n return;\n }\n\n let data = {\n instance: this,\n styles: {},\n arrowStyles: {},\n attributes: {},\n flipped: false,\n offsets: {},\n };\n\n // compute reference element offsets\n data.offsets.reference = getReferenceOffsets(\n this.state,\n this.popper,\n this.reference,\n this.options.positionFixed\n );\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n data.placement = computeAutoPlacement(\n this.options.placement,\n data.offsets.reference,\n this.popper,\n this.reference,\n this.options.modifiers.flip.boundariesElement,\n this.options.modifiers.flip.padding\n );\n\n // store the computed placement inside `originalPlacement`\n data.originalPlacement = data.placement;\n\n data.positionFixed = this.options.positionFixed;\n\n // compute the popper offsets\n data.offsets.popper = getPopperOffsets(\n this.popper,\n data.offsets.reference,\n data.placement\n );\n\n data.offsets.popper.position = this.options.positionFixed\n ? 'fixed'\n : 'absolute';\n\n // run the modifiers\n data = runModifiers(this.modifiers, data);\n\n // the first `update` will call `onCreate` callback\n // the other ones will call `onUpdate` callback\n if (!this.state.isCreated) {\n this.state.isCreated = true;\n this.options.onCreate(data);\n } else {\n this.options.onUpdate(data);\n }\n}\n","/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nexport default function isModifierEnabled(modifiers, modifierName) {\n return modifiers.some(\n ({ name, enabled }) => enabled && name === modifierName\n );\n}\n","/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nexport default function getSupportedPropertyName(property) {\n const prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n const upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n for (let i = 0; i < prefixes.length; i++) {\n const prefix = prefixes[i];\n const toCheck = prefix ? `${prefix}${upperProp}` : property;\n if (typeof document.body.style[toCheck] !== 'undefined') {\n return toCheck;\n }\n }\n return null;\n}\n","import isModifierEnabled from '../utils/isModifierEnabled';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * Destroys the popper.\n * @method\n * @memberof Popper\n */\nexport default function destroy() {\n this.state.isDestroyed = true;\n\n // touch DOM only if `applyStyle` modifier is enabled\n if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n this.popper.removeAttribute('x-placement');\n this.popper.style.position = '';\n this.popper.style.top = '';\n this.popper.style.left = '';\n this.popper.style.right = '';\n this.popper.style.bottom = '';\n this.popper.style.willChange = '';\n this.popper.style[getSupportedPropertyName('transform')] = '';\n }\n\n this.disableEventListeners();\n\n // remove the popper if user explicitly asked for the deletion on destroy\n // do not use `remove` because IE11 doesn't support it\n if (this.options.removeOnDestroy) {\n this.popper.parentNode.removeChild(this.popper);\n }\n return this;\n}\n","/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nexport default function getWindow(element) {\n const ownerDocument = element.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView : window;\n}\n","import getScrollParent from './getScrollParent';\nimport getWindow from './getWindow';\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n const isBody = scrollParent.nodeName === 'BODY';\n const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n target.addEventListener(event, callback, { passive: true });\n\n if (!isBody) {\n attachToScrollParents(\n getScrollParent(target.parentNode),\n event,\n callback,\n scrollParents\n );\n }\n scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function setupEventListeners(\n reference,\n options,\n state,\n updateBound\n) {\n // Resize event listener on window\n state.updateBound = updateBound;\n getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n // Scroll event listener on scroll parents\n const scrollElement = getScrollParent(reference);\n attachToScrollParents(\n scrollElement,\n 'scroll',\n state.updateBound,\n state.scrollParents\n );\n state.scrollElement = scrollElement;\n state.eventsEnabled = true;\n\n return state;\n}\n","import setupEventListeners from '../utils/setupEventListeners';\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nexport default function enableEventListeners() {\n if (!this.state.eventsEnabled) {\n this.state = setupEventListeners(\n this.reference,\n this.options,\n this.state,\n this.scheduleUpdate\n );\n }\n}\n","import removeEventListeners from '../utils/removeEventListeners';\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger `onUpdate` callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nexport default function disableEventListeners() {\n if (this.state.eventsEnabled) {\n cancelAnimationFrame(this.scheduleUpdate);\n this.state = removeEventListeners(this.reference, this.state);\n }\n}\n","import getWindow from './getWindow';\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nexport default function removeEventListeners(reference, state) {\n // Remove resize event listener on window\n getWindow(reference).removeEventListener('resize', state.updateBound);\n\n // Remove scroll event listener on scroll parents\n state.scrollParents.forEach(target => {\n target.removeEventListener('scroll', state.updateBound);\n });\n\n // Reset state\n state.updateBound = null;\n state.scrollParents = [];\n state.scrollElement = null;\n state.eventsEnabled = false;\n return state;\n}\n","/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nexport default function isNumeric(n) {\n return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n","import isNumeric from './isNumeric';\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setStyles(element, styles) {\n Object.keys(styles).forEach(prop => {\n let unit = '';\n // add unit if the value is numeric and is one of the following\n if (\n ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !==\n -1 &&\n isNumeric(styles[prop])\n ) {\n unit = 'px';\n }\n element.style[prop] = styles[prop] + unit;\n });\n}\n","import getSupportedPropertyName from '../utils/getSupportedPropertyName';\nimport find from '../utils/find';\nimport getOffsetParent from '../utils/getOffsetParent';\nimport getBoundingClientRect from '../utils/getBoundingClientRect';\nimport getRoundedOffsets from '../utils/getRoundedOffsets';\nimport isBrowser from '../utils/isBrowser';\n\nconst isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function computeStyle(data, options) {\n const { x, y } = options;\n const { popper } = data.offsets;\n\n // Remove this legacy support in Popper.js v2\n const legacyGpuAccelerationOption = find(\n data.instance.modifiers,\n modifier => modifier.name === 'applyStyle'\n ).gpuAcceleration;\n if (legacyGpuAccelerationOption !== undefined) {\n console.warn(\n 'WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!'\n );\n }\n const gpuAcceleration =\n legacyGpuAccelerationOption !== undefined\n ? legacyGpuAccelerationOption\n : options.gpuAcceleration;\n\n const offsetParent = getOffsetParent(data.instance.popper);\n const offsetParentRect = getBoundingClientRect(offsetParent);\n\n // Styles\n const styles = {\n position: popper.position,\n };\n\n const offsets = getRoundedOffsets(\n data,\n window.devicePixelRatio < 2 || !isFirefox\n );\n\n const sideA = x === 'bottom' ? 'top' : 'bottom';\n const sideB = y === 'right' ? 'left' : 'right';\n\n // if gpuAcceleration is set to `true` and transform is supported,\n // we use `translate3d` to apply the position to the popper we\n // automatically use the supported prefixed version if needed\n const prefixedProperty = getSupportedPropertyName('transform');\n\n // now, let's make a step back and look at this code closely (wtf?)\n // If the content of the popper grows once it's been positioned, it\n // may happen that the popper gets misplaced because of the new content\n // overflowing its reference element\n // To avoid this problem, we provide two options (x and y), which allow\n // the consumer to define the offset origin.\n // If we position a popper on top of a reference element, we can set\n // `x` to `top` to make the popper grow towards its top instead of\n // its bottom.\n let left, top;\n if (sideA === 'bottom') {\n // when offsetParent is the positioning is relative to the bottom of the screen (excluding the scrollbar)\n // and not the bottom of the html element\n if (offsetParent.nodeName === 'HTML') {\n top = -offsetParent.clientHeight + offsets.bottom;\n } else {\n top = -offsetParentRect.height + offsets.bottom;\n }\n } else {\n top = offsets.top;\n }\n if (sideB === 'right') {\n if (offsetParent.nodeName === 'HTML') {\n left = -offsetParent.clientWidth + offsets.right;\n } else {\n left = -offsetParentRect.width + offsets.right;\n }\n } else {\n left = offsets.left;\n }\n if (gpuAcceleration && prefixedProperty) {\n styles[prefixedProperty] = `translate3d(${left}px, ${top}px, 0)`;\n styles[sideA] = 0;\n styles[sideB] = 0;\n styles.willChange = 'transform';\n } else {\n // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n const invertTop = sideA === 'bottom' ? -1 : 1;\n const invertLeft = sideB === 'right' ? -1 : 1;\n styles[sideA] = top * invertTop;\n styles[sideB] = left * invertLeft;\n styles.willChange = `${sideA}, ${sideB}`;\n }\n\n // Attributes\n const attributes = {\n 'x-placement': data.placement,\n };\n\n // Update `data` attributes, styles and arrowStyles\n data.attributes = { ...attributes, ...data.attributes };\n data.styles = { ...styles, ...data.styles };\n data.arrowStyles = { ...data.offsets.arrow, ...data.arrowStyles };\n\n return data;\n}\n","import find from './find';\n\n/**\n * Helper used to know if the given modifier depends from another one.
    \n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nexport default function isModifierRequired(\n modifiers,\n requestingName,\n requestedName\n) {\n const requesting = find(modifiers, ({ name }) => name === requestingName);\n\n const isRequired =\n !!requesting &&\n modifiers.some(modifier => {\n return (\n modifier.name === requestedName &&\n modifier.enabled &&\n modifier.order < requesting.order\n );\n });\n\n if (!isRequired) {\n const requesting = `\\`${requestingName}\\``;\n const requested = `\\`${requestedName}\\``;\n console.warn(\n `${requested} modifier is required by ${requesting} modifier in order to work, be sure to include it before ${requesting}!`\n );\n }\n return isRequired;\n}\n","/**\n * List of accepted placements to use as values of the `placement` option.
    \n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.
    \n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-end` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nexport default [\n 'auto-start',\n 'auto',\n 'auto-end',\n 'top-start',\n 'top',\n 'top-end',\n 'right-start',\n 'right',\n 'right-end',\n 'bottom-end',\n 'bottom',\n 'bottom-start',\n 'left-end',\n 'left',\n 'left-start',\n];\n","import placements from '../methods/placements';\n\n// Get rid of `auto` `auto-start` and `auto-end`\nconst validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nexport default function clockwise(placement, counter = false) {\n const index = validPlacements.indexOf(placement);\n const arr = validPlacements\n .slice(index + 1)\n .concat(validPlacements.slice(0, index));\n return counter ? arr.reverse() : arr;\n}\n","import getOppositePlacement from '../utils/getOppositePlacement';\nimport getOppositeVariation from '../utils/getOppositeVariation';\nimport getPopperOffsets from '../utils/getPopperOffsets';\nimport runModifiers from '../utils/runModifiers';\nimport getBoundaries from '../utils/getBoundaries';\nimport isModifierEnabled from '../utils/isModifierEnabled';\nimport clockwise from '../utils/clockwise';\n\nconst BEHAVIORS = {\n FLIP: 'flip',\n CLOCKWISE: 'clockwise',\n COUNTERCLOCKWISE: 'counterclockwise',\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function flip(data, options) {\n // if `inner` modifier is enabled, we can't use the `flip` modifier\n if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n return data;\n }\n\n if (data.flipped && data.placement === data.originalPlacement) {\n // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n return data;\n }\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n options.boundariesElement,\n data.positionFixed\n );\n\n let placement = data.placement.split('-')[0];\n let placementOpposite = getOppositePlacement(placement);\n let variation = data.placement.split('-')[1] || '';\n\n let flipOrder = [];\n\n switch (options.behavior) {\n case BEHAVIORS.FLIP:\n flipOrder = [placement, placementOpposite];\n break;\n case BEHAVIORS.CLOCKWISE:\n flipOrder = clockwise(placement);\n break;\n case BEHAVIORS.COUNTERCLOCKWISE:\n flipOrder = clockwise(placement, true);\n break;\n default:\n flipOrder = options.behavior;\n }\n\n flipOrder.forEach((step, index) => {\n if (placement !== step || flipOrder.length === index + 1) {\n return data;\n }\n\n placement = data.placement.split('-')[0];\n placementOpposite = getOppositePlacement(placement);\n\n const popperOffsets = data.offsets.popper;\n const refOffsets = data.offsets.reference;\n\n // using floor because the reference offsets may contain decimals we are not going to consider here\n const floor = Math.floor;\n const overlapsRef =\n (placement === 'left' &&\n floor(popperOffsets.right) > floor(refOffsets.left)) ||\n (placement === 'right' &&\n floor(popperOffsets.left) < floor(refOffsets.right)) ||\n (placement === 'top' &&\n floor(popperOffsets.bottom) > floor(refOffsets.top)) ||\n (placement === 'bottom' &&\n floor(popperOffsets.top) < floor(refOffsets.bottom));\n\n const overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n const overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n const overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n const overflowsBottom =\n floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n const overflowsBoundaries =\n (placement === 'left' && overflowsLeft) ||\n (placement === 'right' && overflowsRight) ||\n (placement === 'top' && overflowsTop) ||\n (placement === 'bottom' && overflowsBottom);\n\n // flip the variation if required\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n\n // flips variation if reference element overflows boundaries\n const flippedVariationByRef =\n !!options.flipVariations &&\n ((isVertical && variation === 'start' && overflowsLeft) ||\n (isVertical && variation === 'end' && overflowsRight) ||\n (!isVertical && variation === 'start' && overflowsTop) ||\n (!isVertical && variation === 'end' && overflowsBottom));\n\n // flips variation if popper content overflows boundaries\n const flippedVariationByContent =\n !!options.flipVariationsByContent &&\n ((isVertical && variation === 'start' && overflowsRight) ||\n (isVertical && variation === 'end' && overflowsLeft) ||\n (!isVertical && variation === 'start' && overflowsBottom) ||\n (!isVertical && variation === 'end' && overflowsTop));\n\n const flippedVariation = flippedVariationByRef || flippedVariationByContent;\n\n if (overlapsRef || overflowsBoundaries || flippedVariation) {\n // this boolean to detect any flip loop\n data.flipped = true;\n\n if (overlapsRef || overflowsBoundaries) {\n placement = flipOrder[index + 1];\n }\n\n if (flippedVariation) {\n variation = getOppositeVariation(variation);\n }\n\n data.placement = placement + (variation ? '-' + variation : '');\n\n // this object contains `position`, we want to preserve it along with\n // any additional property we may add in the future\n data.offsets.popper = {\n ...data.offsets.popper,\n ...getPopperOffsets(\n data.instance.popper,\n data.offsets.reference,\n data.placement\n ),\n };\n\n data = runModifiers(data.instance.modifiers, data, 'flip');\n }\n });\n return data;\n}\n","import isNumeric from '../utils/isNumeric';\nimport getClientRect from '../utils/getClientRect';\nimport find from '../utils/find';\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nexport function toValue(str, measurement, popperOffsets, referenceOffsets) {\n // separate value from unit\n const split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n const value = +split[1];\n const unit = split[2];\n\n // If it's not a number it's an operator, I guess\n if (!value) {\n return str;\n }\n\n if (unit.indexOf('%') === 0) {\n let element;\n switch (unit) {\n case '%p':\n element = popperOffsets;\n break;\n case '%':\n case '%r':\n default:\n element = referenceOffsets;\n }\n\n const rect = getClientRect(element);\n return rect[measurement] / 100 * value;\n } else if (unit === 'vh' || unit === 'vw') {\n // if is a vh or vw, we calculate the size based on the viewport\n let size;\n if (unit === 'vh') {\n size = Math.max(\n document.documentElement.clientHeight,\n window.innerHeight || 0\n );\n } else {\n size = Math.max(\n document.documentElement.clientWidth,\n window.innerWidth || 0\n );\n }\n return size / 100 * value;\n } else {\n // if is an explicit pixel unit, we get rid of the unit and keep the value\n // if is an implicit unit, it's px, and we return just the value\n return value;\n }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nexport function parseOffset(\n offset,\n popperOffsets,\n referenceOffsets,\n basePlacement\n) {\n const offsets = [0, 0];\n\n // Use height if placement is left or right and index is 0 otherwise use width\n // in this way the first offset will use an axis and the second one\n // will use the other one\n const useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n // Split the offset string to obtain a list of values and operands\n // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n const fragments = offset.split(/(\\+|\\-)/).map(frag => frag.trim());\n\n // Detect if the offset string contains a pair of values or a single one\n // they could be separated by comma or space\n const divider = fragments.indexOf(\n find(fragments, frag => frag.search(/,|\\s/) !== -1)\n );\n\n if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n console.warn(\n 'Offsets separated by white space(s) are deprecated, use a comma (,) instead.'\n );\n }\n\n // If divider is found, we divide the list of values and operands to divide\n // them by ofset X and Y.\n const splitRegex = /\\s*,\\s*|\\s+/;\n let ops = divider !== -1\n ? [\n fragments\n .slice(0, divider)\n .concat([fragments[divider].split(splitRegex)[0]]),\n [fragments[divider].split(splitRegex)[1]].concat(\n fragments.slice(divider + 1)\n ),\n ]\n : [fragments];\n\n // Convert the values with units to absolute pixels to allow our computations\n ops = ops.map((op, index) => {\n // Most of the units rely on the orientation of the popper\n const measurement = (index === 1 ? !useHeight : useHeight)\n ? 'height'\n : 'width';\n let mergeWithPrevious = false;\n return (\n op\n // This aggregates any `+` or `-` sign that aren't considered operators\n // e.g.: 10 + +5 => [10, +, +5]\n .reduce((a, b) => {\n if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n a[a.length - 1] = b;\n mergeWithPrevious = true;\n return a;\n } else if (mergeWithPrevious) {\n a[a.length - 1] += b;\n mergeWithPrevious = false;\n return a;\n } else {\n return a.concat(b);\n }\n }, [])\n // Here we convert the string values into number values (in px)\n .map(str => toValue(str, measurement, popperOffsets, referenceOffsets))\n );\n });\n\n // Loop trough the offsets arrays and execute the operations\n ops.forEach((op, index) => {\n op.forEach((frag, index2) => {\n if (isNumeric(frag)) {\n offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n }\n });\n });\n return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nexport default function offset(data, { offset }) {\n const { placement, offsets: { popper, reference } } = data;\n const basePlacement = placement.split('-')[0];\n\n let offsets;\n if (isNumeric(+offset)) {\n offsets = [+offset, 0];\n } else {\n offsets = parseOffset(offset, popper, reference, basePlacement);\n }\n\n if (basePlacement === 'left') {\n popper.top += offsets[0];\n popper.left -= offsets[1];\n } else if (basePlacement === 'right') {\n popper.top += offsets[0];\n popper.left += offsets[1];\n } else if (basePlacement === 'top') {\n popper.left += offsets[0];\n popper.top -= offsets[1];\n } else if (basePlacement === 'bottom') {\n popper.left += offsets[0];\n popper.top += offsets[1];\n }\n\n data.popper = popper;\n return data;\n}\n","import applyStyle, { applyStyleOnLoad } from './applyStyle';\nimport computeStyle from './computeStyle';\nimport arrow from './arrow';\nimport flip from './flip';\nimport keepTogether from './keepTogether';\nimport offset from './offset';\nimport preventOverflow from './preventOverflow';\nimport shift from './shift';\nimport hide from './hide';\nimport inner from './inner';\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.
    \n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.
    \n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nexport default {\n /**\n * Modifier used to shift the popper on the start or end of its reference\n * element.
    \n * It will read the variation of the `placement` property.
    \n * It can be one either `-end` or `-start`.\n * @memberof modifiers\n * @inner\n */\n shift: {\n /** @prop {number} order=100 - Index used to define the order of execution */\n order: 100,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: shift,\n },\n\n /**\n * The `offset` modifier can shift your popper on both its axis.\n *\n * It accepts the following units:\n * - `px` or unit-less, interpreted as pixels\n * - `%` or `%r`, percentage relative to the length of the reference element\n * - `%p`, percentage relative to the length of the popper element\n * - `vw`, CSS viewport width unit\n * - `vh`, CSS viewport height unit\n *\n * For length is intended the main axis relative to the placement of the popper.
    \n * This means that if the placement is `top` or `bottom`, the length will be the\n * `width`. In case of `left` or `right`, it will be the `height`.\n *\n * You can provide a single value (as `Number` or `String`), or a pair of values\n * as `String` divided by a comma or one (or more) white spaces.
    \n * The latter is a deprecated method because it leads to confusion and will be\n * removed in v2.
    \n * Additionally, it accepts additions and subtractions between different units.\n * Note that multiplications and divisions aren't supported.\n *\n * Valid examples are:\n * ```\n * 10\n * '10%'\n * '10, 10'\n * '10%, 10'\n * '10 + 10%'\n * '10 - 5vh + 3%'\n * '-10px + 5vh, 5px - 6%'\n * ```\n * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).\n *\n * @memberof modifiers\n * @inner\n */\n offset: {\n /** @prop {number} order=200 - Index used to define the order of execution */\n order: 200,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: offset,\n /** @prop {Number|String} offset=0\n * The offset value as described in the modifier description\n */\n offset: 0,\n },\n\n /**\n * Modifier used to prevent the popper from being positioned outside the boundary.\n *\n * A scenario exists where the reference itself is not within the boundaries.
    \n * We can say it has \"escaped the boundaries\" — or just \"escaped\".
    \n * In this case we need to decide whether the popper should either:\n *\n * - detach from the reference and remain \"trapped\" in the boundaries, or\n * - if it should ignore the boundary and \"escape with its reference\"\n *\n * When `escapeWithReference` is set to`true` and reference is completely\n * outside its boundaries, the popper will overflow (or completely leave)\n * the boundaries in order to remain attached to the edge of the reference.\n *\n * @memberof modifiers\n * @inner\n */\n preventOverflow: {\n /** @prop {number} order=300 - Index used to define the order of execution */\n order: 300,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: preventOverflow,\n /**\n * @prop {Array} [priority=['left','right','top','bottom']]\n * Popper will try to prevent overflow following these priorities by default,\n * then, it could overflow on the left and on top of the `boundariesElement`\n */\n priority: ['left', 'right', 'top', 'bottom'],\n /**\n * @prop {number} padding=5\n * Amount of pixel used to define a minimum distance between the boundaries\n * and the popper. This makes sure the popper always has a little padding\n * between the edges of its container\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='scrollParent'\n * Boundaries used by the modifier. Can be `scrollParent`, `window`,\n * `viewport` or any DOM element.\n */\n boundariesElement: 'scrollParent',\n },\n\n /**\n * Modifier used to make sure the reference and its popper stay near each other\n * without leaving any gap between the two. Especially useful when the arrow is\n * enabled and you want to ensure that it points to its reference element.\n * It cares only about the first axis. You can still have poppers with margin\n * between the popper and its reference element.\n * @memberof modifiers\n * @inner\n */\n keepTogether: {\n /** @prop {number} order=400 - Index used to define the order of execution */\n order: 400,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: keepTogether,\n },\n\n /**\n * This modifier is used to move the `arrowElement` of the popper to make\n * sure it is positioned between the reference element and its popper element.\n * It will read the outer size of the `arrowElement` node to detect how many\n * pixels of conjunction are needed.\n *\n * It has no effect if no `arrowElement` is provided.\n * @memberof modifiers\n * @inner\n */\n arrow: {\n /** @prop {number} order=500 - Index used to define the order of execution */\n order: 500,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: arrow,\n /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n element: '[x-arrow]',\n },\n\n /**\n * Modifier used to flip the popper's placement when it starts to overlap its\n * reference element.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n *\n * **NOTE:** this modifier will interrupt the current update cycle and will\n * restart it if it detects the need to flip the placement.\n * @memberof modifiers\n * @inner\n */\n flip: {\n /** @prop {number} order=600 - Index used to define the order of execution */\n order: 600,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: flip,\n /**\n * @prop {String|Array} behavior='flip'\n * The behavior used to change the popper's placement. It can be one of\n * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n * placements (with optional variations)\n */\n behavior: 'flip',\n /**\n * @prop {number} padding=5\n * The popper will flip if it hits the edges of the `boundariesElement`\n */\n padding: 5,\n /**\n * @prop {String|HTMLElement} boundariesElement='viewport'\n * The element which will define the boundaries of the popper position.\n * The popper will never be placed outside of the defined boundaries\n * (except if `keepTogether` is enabled)\n */\n boundariesElement: 'viewport',\n /**\n * @prop {Boolean} flipVariations=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the reference element overlaps its boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariations: false,\n /**\n * @prop {Boolean} flipVariationsByContent=false\n * The popper will switch placement variation between `-start` and `-end` when\n * the popper element overlaps its reference boundaries.\n *\n * The original placement should have a set variation.\n */\n flipVariationsByContent: false,\n },\n\n /**\n * Modifier used to make the popper flow toward the inner of the reference element.\n * By default, when this modifier is disabled, the popper will be placed outside\n * the reference element.\n * @memberof modifiers\n * @inner\n */\n inner: {\n /** @prop {number} order=700 - Index used to define the order of execution */\n order: 700,\n /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n enabled: false,\n /** @prop {ModifierFn} */\n fn: inner,\n },\n\n /**\n * Modifier used to hide the popper when its reference element is outside of the\n * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n * be used to hide with a CSS selector the popper when its reference is\n * out of boundaries.\n *\n * Requires the `preventOverflow` modifier before it in order to work.\n * @memberof modifiers\n * @inner\n */\n hide: {\n /** @prop {number} order=800 - Index used to define the order of execution */\n order: 800,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: hide,\n },\n\n /**\n * Computes the style that will be applied to the popper element to gets\n * properly positioned.\n *\n * Note that this modifier will not touch the DOM, it just prepares the styles\n * so that `applyStyle` modifier can apply it. This separation is useful\n * in case you need to replace `applyStyle` with a custom implementation.\n *\n * This modifier has `850` as `order` value to maintain backward compatibility\n * with previous versions of Popper.js. Expect the modifiers ordering method\n * to change in future major versions of the library.\n *\n * @memberof modifiers\n * @inner\n */\n computeStyle: {\n /** @prop {number} order=850 - Index used to define the order of execution */\n order: 850,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: computeStyle,\n /**\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: true,\n /**\n * @prop {string} [x='bottom']\n * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n * Change this if your popper should grow in a direction different from `bottom`\n */\n x: 'bottom',\n /**\n * @prop {string} [x='left']\n * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n * Change this if your popper should grow in a direction different from `right`\n */\n y: 'right',\n },\n\n /**\n * Applies the computed styles to the popper element.\n *\n * All the DOM manipulations are limited to this modifier. This is useful in case\n * you want to integrate Popper.js inside a framework or view library and you\n * want to delegate all the DOM manipulations to it.\n *\n * Note that if you disable this modifier, you must make sure the popper element\n * has its position set to `absolute` before Popper.js can do its work!\n *\n * Just disable this modifier and define your own to achieve the desired effect.\n *\n * @memberof modifiers\n * @inner\n */\n applyStyle: {\n /** @prop {number} order=900 - Index used to define the order of execution */\n order: 900,\n /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n enabled: true,\n /** @prop {ModifierFn} */\n fn: applyStyle,\n /** @prop {Function} */\n onLoad: applyStyleOnLoad,\n /**\n * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n * @prop {Boolean} gpuAcceleration=true\n * If true, it uses the CSS 3D transformation to position the popper.\n * Otherwise, it will use the `top` and `left` properties\n */\n gpuAcceleration: undefined,\n },\n};\n\n/**\n * The `dataObject` is an object containing all the information used by Popper.js.\n * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function shift(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const shiftvariation = placement.split('-')[1];\n\n // if shift shiftvariation is specified, run the modifier\n if (shiftvariation) {\n const { reference, popper } = data.offsets;\n const isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n const side = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n const shiftOffsets = {\n start: { [side]: reference[side] },\n end: {\n [side]: reference[side] + reference[measurement] - popper[measurement],\n },\n };\n\n data.offsets.popper = { ...popper, ...shiftOffsets[shiftvariation] };\n }\n\n return data;\n}\n","import getOffsetParent from '../utils/getOffsetParent';\nimport getBoundaries from '../utils/getBoundaries';\nimport getSupportedPropertyName from '../utils/getSupportedPropertyName';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function preventOverflow(data, options) {\n let boundariesElement =\n options.boundariesElement || getOffsetParent(data.instance.popper);\n\n // If offsetParent is the reference element, we really want to\n // go one step up and use the next offsetParent as reference to\n // avoid to make this modifier completely useless and look like broken\n if (data.instance.reference === boundariesElement) {\n boundariesElement = getOffsetParent(boundariesElement);\n }\n\n // NOTE: DOM access here\n // resets the popper's position so that the document size can be calculated excluding\n // the size of the popper element itself\n const transformProp = getSupportedPropertyName('transform');\n const popperStyles = data.instance.popper.style; // assignment to help minification\n const { top, left, [transformProp]: transform } = popperStyles;\n popperStyles.top = '';\n popperStyles.left = '';\n popperStyles[transformProp] = '';\n\n const boundaries = getBoundaries(\n data.instance.popper,\n data.instance.reference,\n options.padding,\n boundariesElement,\n data.positionFixed\n );\n\n // NOTE: DOM access here\n // restores the original style properties after the offsets have been computed\n popperStyles.top = top;\n popperStyles.left = left;\n popperStyles[transformProp] = transform;\n\n options.boundaries = boundaries;\n\n const order = options.priority;\n let popper = data.offsets.popper;\n\n const check = {\n primary(placement) {\n let value = popper[placement];\n if (\n popper[placement] < boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.max(popper[placement], boundaries[placement]);\n }\n return { [placement]: value };\n },\n secondary(placement) {\n const mainSide = placement === 'right' ? 'left' : 'top';\n let value = popper[mainSide];\n if (\n popper[placement] > boundaries[placement] &&\n !options.escapeWithReference\n ) {\n value = Math.min(\n popper[mainSide],\n boundaries[placement] -\n (placement === 'right' ? popper.width : popper.height)\n );\n }\n return { [mainSide]: value };\n },\n };\n\n order.forEach(placement => {\n const side =\n ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n popper = { ...popper, ...check[side](placement) };\n });\n\n data.offsets.popper = popper;\n\n return data;\n}\n","/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function keepTogether(data) {\n const { popper, reference } = data.offsets;\n const placement = data.placement.split('-')[0];\n const floor = Math.floor;\n const isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n const side = isVertical ? 'right' : 'bottom';\n const opSide = isVertical ? 'left' : 'top';\n const measurement = isVertical ? 'width' : 'height';\n\n if (popper[side] < floor(reference[opSide])) {\n data.offsets.popper[opSide] =\n floor(reference[opSide]) - popper[measurement];\n }\n if (popper[opSide] > floor(reference[side])) {\n data.offsets.popper[opSide] = floor(reference[side]);\n }\n\n return data;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOuterSizes from '../utils/getOuterSizes';\nimport isModifierRequired from '../utils/isModifierRequired';\nimport getStyleComputedProperty from '../utils/getStyleComputedProperty';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function arrow(data, options) {\n // arrow depends on keepTogether in order to work\n if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n return data;\n }\n\n let arrowElement = options.element;\n\n // if arrowElement is a string, suppose it's a CSS selector\n if (typeof arrowElement === 'string') {\n arrowElement = data.instance.popper.querySelector(arrowElement);\n\n // if arrowElement is not found, don't run the modifier\n if (!arrowElement) {\n return data;\n }\n } else {\n // if the arrowElement isn't a query selector we must check that the\n // provided DOM node is child of its popper node\n if (!data.instance.popper.contains(arrowElement)) {\n console.warn(\n 'WARNING: `arrow.element` must be child of its popper element!'\n );\n return data;\n }\n }\n\n const placement = data.placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n const len = isVertical ? 'height' : 'width';\n const sideCapitalized = isVertical ? 'Top' : 'Left';\n const side = sideCapitalized.toLowerCase();\n const altSide = isVertical ? 'left' : 'top';\n const opSide = isVertical ? 'bottom' : 'right';\n const arrowElementSize = getOuterSizes(arrowElement)[len];\n\n //\n // extends keepTogether behavior making sure the popper and its\n // reference have enough pixels in conjunction\n //\n\n // top/left side\n if (reference[opSide] - arrowElementSize < popper[side]) {\n data.offsets.popper[side] -=\n popper[side] - (reference[opSide] - arrowElementSize);\n }\n // bottom/right side\n if (reference[side] + arrowElementSize > popper[opSide]) {\n data.offsets.popper[side] +=\n reference[side] + arrowElementSize - popper[opSide];\n }\n data.offsets.popper = getClientRect(data.offsets.popper);\n\n // compute center of the popper\n const center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n // Compute the sideValue using the updated popper offsets\n // take popper margin in account because we don't have this info available\n const css = getStyleComputedProperty(data.instance.popper);\n const popperMarginSide = parseFloat(css[`margin${sideCapitalized}`]);\n const popperBorderSide = parseFloat(css[`border${sideCapitalized}Width`]);\n let sideValue =\n center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n // prevent arrowElement from being placed not contiguously to its popper\n sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n data.arrowElement = arrowElement;\n data.offsets.arrow = {\n [side]: Math.round(sideValue),\n [altSide]: '', // make sure to unset any eventual altSide value from the DOM node\n };\n\n return data;\n}\n","/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nexport default function getOppositeVariation(variation) {\n if (variation === 'end') {\n return 'start';\n } else if (variation === 'start') {\n return 'end';\n }\n return variation;\n}\n","import getClientRect from '../utils/getClientRect';\nimport getOppositePlacement from '../utils/getOppositePlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function inner(data) {\n const placement = data.placement;\n const basePlacement = placement.split('-')[0];\n const { popper, reference } = data.offsets;\n const isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n const subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n popper[isHoriz ? 'left' : 'top'] =\n reference[basePlacement] -\n (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n data.placement = getOppositePlacement(placement);\n data.offsets.popper = getClientRect(popper);\n\n return data;\n}\n","import isModifierRequired from '../utils/isModifierRequired';\nimport find from '../utils/find';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nexport default function hide(data) {\n if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n return data;\n }\n\n const refRect = data.offsets.reference;\n const bound = find(\n data.instance.modifiers,\n modifier => modifier.name === 'preventOverflow'\n ).boundaries;\n\n if (\n refRect.bottom < bound.top ||\n refRect.left > bound.right ||\n refRect.top > bound.bottom ||\n refRect.right < bound.left\n ) {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === true) {\n return data;\n }\n\n data.hide = true;\n data.attributes['x-out-of-boundaries'] = '';\n } else {\n // Avoid unnecessary DOM access if visibility hasn't changed\n if (data.hide === false) {\n return data;\n }\n\n data.hide = false;\n data.attributes['x-out-of-boundaries'] = false;\n }\n\n return data;\n}\n","/**\n * @function\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Boolean} shouldRound - If the offsets should be rounded at all\n * @returns {Object} The popper's position offsets rounded\n *\n * The tale of pixel-perfect positioning. It's still not 100% perfect, but as\n * good as it can be within reason.\n * Discussion here: https://github.com/FezVrasta/popper.js/pull/715\n *\n * Low DPI screens cause a popper to be blurry if not using full pixels (Safari\n * as well on High DPI screens).\n *\n * Firefox prefers no rounding for positioning and does not have blurriness on\n * high DPI screens.\n *\n * Only horizontal placement and left/right values need to be considered.\n */\nexport default function getRoundedOffsets(data, shouldRound) {\n const { popper, reference } = data.offsets;\n const { round, floor } = Math;\n const noRound = v => v;\n \n const referenceWidth = round(reference.width);\n const popperWidth = round(popper.width);\n \n const isVertical = ['left', 'right'].indexOf(data.placement) !== -1;\n const isVariation = data.placement.indexOf('-') !== -1;\n const sameWidthParity = referenceWidth % 2 === popperWidth % 2;\n const bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;\n\n const horizontalToInteger = !shouldRound\n ? noRound\n : isVertical || isVariation || sameWidthParity\n ? round\n : floor;\n const verticalToInteger = !shouldRound ? noRound : round;\n\n return {\n left: horizontalToInteger(\n bothOddWidth && !isVariation && shouldRound\n ? popper.left - 1\n : popper.left\n ),\n top: verticalToInteger(popper.top),\n bottom: verticalToInteger(popper.bottom),\n right: horizontalToInteger(popper.right),\n };\n}\n","import setStyles from '../utils/setStyles';\nimport setAttributes from '../utils/setAttributes';\nimport getReferenceOffsets from '../utils/getReferenceOffsets';\nimport computeAutoPlacement from '../utils/computeAutoPlacement';\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nexport default function applyStyle(data) {\n // any property present in `data.styles` will be applied to the popper,\n // in this way we can make the 3rd party modifiers add custom styles to it\n // Be aware, modifiers could override the properties defined in the previous\n // lines of this modifier!\n setStyles(data.instance.popper, data.styles);\n\n // any property present in `data.attributes` will be applied to the popper,\n // they will be set as HTML attributes of the element\n setAttributes(data.instance.popper, data.attributes);\n\n // if arrowElement is defined and arrowStyles has some properties\n if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n setStyles(data.arrowElement, data.arrowStyles);\n }\n\n return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nexport function applyStyleOnLoad(\n reference,\n popper,\n options,\n modifierOptions,\n state\n) {\n // compute reference element offsets\n const referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n // compute auto placement, store placement inside the data object,\n // modifiers will be able to edit `placement` if needed\n // and refer to originalPlacement to know the original value\n const placement = computeAutoPlacement(\n options.placement,\n referenceOffsets,\n popper,\n reference,\n options.modifiers.flip.boundariesElement,\n options.modifiers.flip.padding\n );\n\n popper.setAttribute('x-placement', placement);\n\n // Apply `position` to popper before anything else because\n // without the position applied we can't guarantee correct computations\n setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n return options;\n}\n","/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nexport default function setAttributes(element, attributes) {\n Object.keys(attributes).forEach(function(prop) {\n const value = attributes[prop];\n if (value !== false) {\n element.setAttribute(prop, attributes[prop]);\n } else {\n element.removeAttribute(prop);\n }\n });\n}\n","import modifiers from '../modifiers/index';\n\n/**\n * Default options provided to Popper.js constructor.
    \n * These can be overridden using the `options` argument of Popper.js.
    \n * To override an option, simply pass an object with the same\n * structure of the `options` object, as the 3rd argument. For example:\n * ```\n * new Popper(ref, pop, {\n * modifiers: {\n * preventOverflow: { enabled: false }\n * }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nexport default {\n /**\n * Popper's placement.\n * @prop {Popper.placements} placement='bottom'\n */\n placement: 'bottom',\n\n /**\n * Set this to true if you want popper to position it self in 'fixed' mode\n * @prop {Boolean} positionFixed=false\n */\n positionFixed: false,\n\n /**\n * Whether events (resize, scroll) are initially enabled.\n * @prop {Boolean} eventsEnabled=true\n */\n eventsEnabled: true,\n\n /**\n * Set to true if you want to automatically remove the popper when\n * you call the `destroy` method.\n * @prop {Boolean} removeOnDestroy=false\n */\n removeOnDestroy: false,\n\n /**\n * Callback called when the popper is created.
    \n * By default, it is set to no-op.
    \n * Access Popper.js instance with `data.instance`.\n * @prop {onCreate}\n */\n onCreate: () => {},\n\n /**\n * Callback called when the popper is updated. This callback is not called\n * on the initialization/creation of the popper, but only on subsequent\n * updates.
    \n * By default, it is set to no-op.
    \n * Access Popper.js instance with `data.instance`.\n * @prop {onUpdate}\n */\n onUpdate: () => {},\n\n /**\n * List of modifiers used to modify the offsets before they are applied to the popper.\n * They provide most of the functionalities of Popper.js.\n * @prop {modifiers}\n */\n modifiers,\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n","// Utils\nimport debounce from './utils/debounce';\nimport isFunction from './utils/isFunction';\n\n// Methods\nimport update from './methods/update';\nimport destroy from './methods/destroy';\nimport enableEventListeners from './methods/enableEventListeners';\nimport disableEventListeners from './methods/disableEventListeners';\nimport Defaults from './methods/defaults';\nimport placements from './methods/placements';\n\nexport default class Popper {\n /**\n * Creates a new Popper.js instance.\n * @class Popper\n * @param {Element|referenceObject} reference - The reference element used to position the popper\n * @param {Element} popper - The HTML / XML element used as the popper\n * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n * @return {Object} instance - The generated Popper.js instance\n */\n constructor(reference, popper, options = {}) {\n // make update() debounced, so that it only runs at most once-per-tick\n this.update = debounce(this.update.bind(this));\n\n // with {} we create a new object with the options inside it\n this.options = { ...Popper.Defaults, ...options };\n\n // init state\n this.state = {\n isDestroyed: false,\n isCreated: false,\n scrollParents: [],\n };\n\n // get reference and popper elements (allow jQuery wrappers)\n this.reference = reference && reference.jquery ? reference[0] : reference;\n this.popper = popper && popper.jquery ? popper[0] : popper;\n\n // Deep merge modifiers options\n this.options.modifiers = {};\n Object.keys({\n ...Popper.Defaults.modifiers,\n ...options.modifiers,\n }).forEach(name => {\n this.options.modifiers[name] = {\n // If it's a built-in modifier, use it as base\n ...(Popper.Defaults.modifiers[name] || {}),\n // If there are custom options, override and merge with default ones\n ...(options.modifiers ? options.modifiers[name] : {}),\n };\n });\n\n // Refactoring modifiers' list (Object => Array)\n this.modifiers = Object.keys(this.options.modifiers)\n .map(name => ({\n name,\n ...this.options.modifiers[name],\n }))\n // sort the modifiers by order\n .sort((a, b) => a.order - b.order);\n\n // modifiers have the ability to execute arbitrary code when Popper.js get inited\n // such code is executed in the same order of its modifier\n // they could add new properties to their options configuration\n // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n this.modifiers.forEach(modifierOptions => {\n if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n modifierOptions.onLoad(\n this.reference,\n this.popper,\n this.options,\n modifierOptions,\n this.state\n );\n }\n });\n\n // fire the first update to position the popper in the right place\n this.update();\n\n const eventsEnabled = this.options.eventsEnabled;\n if (eventsEnabled) {\n // setup event listeners, they will take care of update the position in specific situations\n this.enableEventListeners();\n }\n\n this.state.eventsEnabled = eventsEnabled;\n }\n\n // We can't use class properties because they don't get listed in the\n // class prototype and break stuff like Sinon stubs\n update() {\n return update.call(this);\n }\n destroy() {\n return destroy.call(this);\n }\n enableEventListeners() {\n return enableEventListeners.call(this);\n }\n disableEventListeners() {\n return disableEventListeners.call(this);\n }\n\n /**\n * Schedules an update. It will run on the next UI update available.\n * @method scheduleUpdate\n * @memberof Popper\n */\n scheduleUpdate = () => requestAnimationFrame(this.update);\n\n /**\n * Collection of utilities useful when writing custom modifiers.\n * Starting from version 1.7, this method is available only if you\n * include `popper-utils.js` before `popper.js`.\n *\n * **DEPRECATION**: This way to access PopperUtils is deprecated\n * and will be removed in v2! Use the PopperUtils module directly instead.\n * Due to the high instability of the methods contained in Utils, we can't\n * guarantee them to follow semver. Use them at your own risk!\n * @static\n * @private\n * @type {Object}\n * @deprecated since version 1.8\n * @member Utils\n * @memberof Popper\n */\n static Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\n\n static placements = placements;\n\n static Defaults = Defaults;\n}\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.
    \n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10.\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/inheritsLoose\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport deepEqual from \"deep-equal\";\nimport * as React from 'react';\nimport PopperJS from 'popper.js';\nimport { ManagerReferenceNodeContext } from './Manager';\nimport { unwrapArray, setRef, shallowEqual } from './utils';\nvar initialStyle = {\n position: 'absolute',\n top: 0,\n left: 0,\n opacity: 0,\n pointerEvents: 'none'\n};\nvar initialArrowStyle = {};\nexport var InnerPopper =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inheritsLoose(InnerPopper, _React$Component);\n\n function InnerPopper() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"state\", {\n data: undefined,\n placement: undefined\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperInstance\", void 0);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"popperNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"arrowNode\", null);\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setPopperNode\", function (popperNode) {\n if (!popperNode || _this.popperNode === popperNode) return;\n setRef(_this.props.innerRef, popperNode);\n _this.popperNode = popperNode;\n\n _this.updatePopperInstance();\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"setArrowNode\", function (arrowNode) {\n _this.arrowNode = arrowNode;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updateStateModifier\", {\n enabled: true,\n order: 900,\n fn: function fn(data) {\n var placement = data.placement;\n\n _this.setState({\n data: data,\n placement: placement\n });\n\n return data;\n }\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOptions\", function () {\n return {\n placement: _this.props.placement,\n eventsEnabled: _this.props.eventsEnabled,\n positionFixed: _this.props.positionFixed,\n modifiers: _extends({}, _this.props.modifiers, {\n arrow: _extends({}, _this.props.modifiers && _this.props.modifiers.arrow, {\n enabled: !!_this.arrowNode,\n element: _this.arrowNode\n }),\n applyStyle: {\n enabled: false\n },\n updateStateModifier: _this.updateStateModifier\n })\n };\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperStyle\", function () {\n return !_this.popperNode || !_this.state.data ? initialStyle : _extends({\n position: _this.state.data.offsets.popper.position\n }, _this.state.data.styles);\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getPopperPlacement\", function () {\n return !_this.state.data ? undefined : _this.state.placement;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getArrowStyle\", function () {\n return !_this.arrowNode || !_this.state.data ? initialArrowStyle : _this.state.data.arrowStyles;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"getOutOfBoundariesState\", function () {\n return _this.state.data ? _this.state.data.hide : undefined;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"destroyPopperInstance\", function () {\n if (!_this.popperInstance) return;\n\n _this.popperInstance.destroy();\n\n _this.popperInstance = null;\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"updatePopperInstance\", function () {\n _this.destroyPopperInstance();\n\n var _assertThisInitialize = _assertThisInitialized(_assertThisInitialized(_this)),\n popperNode = _assertThisInitialize.popperNode;\n\n var referenceElement = _this.props.referenceElement;\n if (!referenceElement || !popperNode) return;\n _this.popperInstance = new PopperJS(referenceElement, popperNode, _this.getOptions());\n });\n\n _defineProperty(_assertThisInitialized(_assertThisInitialized(_this)), \"scheduleUpdate\", function () {\n if (_this.popperInstance) {\n _this.popperInstance.scheduleUpdate();\n }\n });\n\n return _this;\n }\n\n var _proto = InnerPopper.prototype;\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // If the Popper.js options have changed, update the instance (destroy + create)\n if (this.props.placement !== prevProps.placement || this.props.referenceElement !== prevProps.referenceElement || this.props.positionFixed !== prevProps.positionFixed || !deepEqual(this.props.modifiers, prevProps.modifiers, {\n strict: true\n })) {\n // develop only check that modifiers isn't being updated needlessly\n if (process.env.NODE_ENV === \"development\") {\n if (this.props.modifiers !== prevProps.modifiers && this.props.modifiers != null && prevProps.modifiers != null && shallowEqual(this.props.modifiers, prevProps.modifiers)) {\n console.warn(\"'modifiers' prop reference updated even though all values appear the same.\\nConsider memoizing the 'modifiers' object to avoid needless rendering.\");\n }\n }\n\n this.updatePopperInstance();\n } else if (this.props.eventsEnabled !== prevProps.eventsEnabled && this.popperInstance) {\n this.props.eventsEnabled ? this.popperInstance.enableEventListeners() : this.popperInstance.disableEventListeners();\n } // A placement difference in state means popper determined a new placement\n // apart from the props value. By the time the popper element is rendered with\n // the new position Popper has already measured it, if the place change triggers\n // a size change it will result in a misaligned popper. So we schedule an update to be sure.\n\n\n if (prevState.placement !== this.state.placement) {\n this.scheduleUpdate();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n setRef(this.props.innerRef, null);\n this.destroyPopperInstance();\n };\n\n _proto.render = function render() {\n return unwrapArray(this.props.children)({\n ref: this.setPopperNode,\n style: this.getPopperStyle(),\n placement: this.getPopperPlacement(),\n outOfBoundaries: this.getOutOfBoundariesState(),\n scheduleUpdate: this.scheduleUpdate,\n arrowProps: {\n ref: this.setArrowNode,\n style: this.getArrowStyle()\n }\n });\n };\n\n return InnerPopper;\n}(React.Component);\n\n_defineProperty(InnerPopper, \"defaultProps\", {\n placement: 'bottom',\n eventsEnabled: true,\n referenceElement: undefined,\n positionFixed: false\n});\n\nvar placements = PopperJS.placements;\nexport { placements };\nexport default function Popper(_ref) {\n var referenceElement = _ref.referenceElement,\n props = _objectWithoutPropertiesLoose(_ref, [\"referenceElement\"]);\n\n return React.createElement(ManagerReferenceNodeContext.Consumer, null, function (referenceNode) {\n return React.createElement(InnerPopper, _extends({\n referenceElement: referenceElement !== undefined ? referenceElement : referenceNode\n }, props));\n });\n}","/*\n * Copyright 2020 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isFunction } from \"./functionUtils\";\n\nexport function elementIsOrContains(element: HTMLElement, testElement: HTMLElement) {\n return element === testElement || element.contains(testElement);\n}\n\n/**\n * Throttle an event on an EventTarget by wrapping it in a\n * `requestAnimationFrame` call. Returns the event handler that was bound to\n * given eventName so you can clean up after yourself.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/Events/scroll\n */\nexport function throttleEvent(target: EventTarget, eventName: string, newEventName: string) {\n const throttledFunc = throttleImpl((event: Event) => {\n target.dispatchEvent(new CustomEvent(newEventName, event));\n });\n target.addEventListener(eventName, throttledFunc);\n return throttledFunc;\n}\n\nexport interface IThrottledReactEventOptions {\n preventDefault?: boolean;\n}\n\n/**\n * Throttle a callback by wrapping it in a `requestAnimationFrame` call. Returns\n * the throttled function.\n *\n * @see https://www.html5rocks.com/en/tutorials/speed/animations/\n */\nexport function throttleReactEventCallback(\n callback: (event: E, ...otherArgs: any[]) => any,\n options: IThrottledReactEventOptions = {},\n) {\n const throttledFunc = throttleImpl(\n callback,\n (event2: E) => {\n if (options.preventDefault) {\n event2.preventDefault();\n }\n },\n // prevent React from reclaiming the event object before we reference it\n (event2: E) => event2.persist(),\n );\n return throttledFunc;\n}\n\n/**\n * Throttle a method by wrapping it in a `requestAnimationFrame` call. Returns\n * the throttled function.\n */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function throttle(method: T): T {\n return throttleImpl(method);\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction throttleImpl(\n onAnimationFrameRequested: T,\n onBeforeIsRunningCheck?: T,\n onAfterIsRunningCheck?: T,\n) {\n let isRunning = false;\n const func = (...args: any[]) => {\n // don't use safeInvoke, because we might have more than its max number\n // of typed params\n if (isFunction(onBeforeIsRunningCheck)) {\n onBeforeIsRunningCheck(...args);\n }\n\n if (isRunning) {\n return;\n }\n isRunning = true;\n\n if (isFunction(onAfterIsRunningCheck)) {\n onAfterIsRunningCheck(...args);\n }\n\n requestAnimationFrame(() => {\n onAnimationFrameRequested(...args);\n isRunning = false;\n });\n };\n return (func as any) as T;\n}\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element ().\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","/*\n * Copyright 2018 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as React from \"react\";\nimport { findDOMNode } from \"react-dom\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport ResizeObserver from \"resize-observer-polyfill\";\n\nimport { AbstractPureComponent2 } from \"../../common\";\nimport { DISPLAYNAME_PREFIX } from \"../../common/props\";\nimport { ResizeEntry } from \"./resizeObserverTypes\";\n\n// eslint-disable-next-line deprecation/deprecation\nexport type ResizeSensorProps = IResizeSensorProps;\n/** @deprecated use ResizeSensorProps */\nexport interface IResizeSensorProps {\n /**\n * Callback invoked when the wrapped element resizes.\n *\n * The `entries` array contains an entry for each observed element. In the\n * default case (no `observeParents`), the array will contain only one\n * element: the single child of the `ResizeSensor`.\n *\n * Note that this method is called _asynchronously_ after a resize is\n * detected and typically it will be called no more than once per frame.\n */\n onResize: (entries: ResizeEntry[]) => void;\n\n /**\n * If `true`, all parent DOM elements of the container will also be\n * observed for size changes. The array of entries passed to `onResize`\n * will now contain an entry for each parent element up to the root of the\n * document.\n *\n * Only enable this prop if a parent element resizes in a way that does\n * not also cause the child element to resize.\n *\n * @default false\n */\n observeParents?: boolean;\n}\n\n/** `ResizeSensor` requires a single DOM element child and will error otherwise. */\n@polyfill\nexport class ResizeSensor extends AbstractPureComponent2 {\n public static displayName = `${DISPLAYNAME_PREFIX}.ResizeSensor`;\n\n private element: Element | null = null;\n\n private observer = new ResizeObserver(entries => this.props.onResize?.(entries));\n\n public render() {\n // pass-through render of single child\n return React.Children.only(this.props.children);\n }\n\n public componentDidMount() {\n this.observeElement();\n }\n\n public componentDidUpdate(prevProps: ResizeSensorProps) {\n this.observeElement(this.props.observeParents !== prevProps.observeParents);\n }\n\n public componentWillUnmount() {\n this.observer.disconnect();\n }\n\n /**\n * Observe the DOM element, if defined and different from the currently\n * observed element. Pass `force` argument to skip element checks and always\n * re-observe.\n */\n private observeElement(force = false) {\n const element = this.getElement();\n if (!(element instanceof Element)) {\n // stop everything if not defined\n this.observer.disconnect();\n return;\n }\n\n if (element === this.element && !force) {\n // quit if given same element -- nothing to update (unless forced)\n return;\n } else {\n // clear observer list if new element\n this.observer.disconnect();\n // remember element reference for next time\n this.element = element;\n }\n\n // observer callback is invoked immediately when observing new elements\n this.observer.observe(element);\n\n if (this.props.observeParents) {\n let parent = element.parentElement;\n while (parent != null) {\n this.observer.observe(parent);\n parent = parent.parentElement;\n }\n }\n }\n\n private getElement() {\n try {\n // using findDOMNode for two reasons:\n // 1. cloning to insert a ref is unwieldy and not performant.\n // 2. ensure that we resolve to an actual DOM node (instead of any JSX ref instance).\n // HACKHACK: see https://github.com/palantir/blueprint/issues/3979\n /* eslint-disable-next-line react/no-find-dom-node */\n return findDOMNode(this);\n } catch {\n // swallow error if findDOMNode is run on unmounted component.\n return null;\n }\n }\n}\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport * as React from \"react\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Classes } from \"../../common\";\nimport { DISPLAYNAME_PREFIX, IntentProps } from \"../../common/props\";\n// eslint-disable-next-line import/no-cycle\nimport { Popover, PopoverInteractionKind } from \"../popover/popover\";\nimport { IPopoverSharedProps } from \"../popover/popoverSharedProps\";\n\n// eslint-disable-next-line deprecation/deprecation\nexport type TooltipProps = ITooltipProps;\n/** @deprecated use TooltipProps */\nexport interface ITooltipProps extends IPopoverSharedProps, IntentProps {\n /**\n * The content that will be displayed inside of the tooltip.\n */\n content: JSX.Element | string;\n\n /**\n * The amount of time in milliseconds the tooltip should remain open after\n * the user hovers off the trigger. The timer is canceled if the user mouses\n * over the target before it expires.\n *\n * @default 0\n */\n hoverCloseDelay?: number;\n\n /**\n * The amount of time in milliseconds the tooltip should wait before opening\n * after the user hovers over the trigger. The timer is canceled if the user\n * mouses away from the target before it expires.\n *\n * @default 100\n */\n hoverOpenDelay?: number;\n\n /**\n * The kind of hover interaction that triggers the display of the tooltip.\n * Tooltips do not support click interactions.\n *\n * @default PopoverInteractionKind.HOVER_TARGET_ONLY\n */\n interactionKind?: typeof PopoverInteractionKind.HOVER | typeof PopoverInteractionKind.HOVER_TARGET_ONLY;\n\n /**\n * Indicates how long (in milliseconds) the tooltip's appear/disappear\n * transition takes. This is used by React `CSSTransition` to know when a\n * transition completes and must match the duration of the animation in CSS.\n * Only set this prop if you override Blueprint's default transitions with\n * new transitions of a different length.\n *\n * @default 100\n */\n transitionDuration?: number;\n}\n\n/** @deprecated use { Tooltip2 } from \"@blueprintjs/popover2\" */\n@polyfill\nexport class Tooltip extends AbstractPureComponent2 {\n public static displayName = `${DISPLAYNAME_PREFIX}.Tooltip`;\n\n public static defaultProps: Partial = {\n hoverCloseDelay: 0,\n hoverOpenDelay: 100,\n minimal: false,\n transitionDuration: 100,\n };\n\n // eslint-disable-next-line deprecation/deprecation\n private popover: Popover | null = null;\n\n public render() {\n const { children, intent, popoverClassName, ...restProps } = this.props;\n const classes = classNames(\n Classes.TOOLTIP,\n { [Classes.MINIMAL]: this.props.minimal },\n Classes.intentClass(intent),\n popoverClassName,\n );\n\n return (\n /* eslint-disable deprecation/deprecation */\n (this.popover = ref)}\n >\n {children}\n \n );\n }\n\n public reposition() {\n if (this.popover != null) {\n this.popover.reposition();\n }\n }\n}\n","/*\n * Copyright 2017 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport PopperJS from \"popper.js\";\n\n// Popper placement utils\n// ======================\n\n/** Converts a full placement to one of the four positions by stripping text after the `-`. */\nexport function getPosition(placement: PopperJS.Placement) {\n return placement.split(\"-\")[0] as PopperJS.Position;\n}\n\n/** Returns true if position is left or right. */\nexport function isVerticalPosition(side: PopperJS.Position) {\n return [\"left\", \"right\"].indexOf(side) !== -1;\n}\n\n/** Returns the opposite position. */\nexport function getOppositePosition(side: PopperJS.Position) {\n switch (side) {\n case \"top\":\n return \"bottom\";\n case \"left\":\n return \"right\";\n case \"bottom\":\n return \"top\";\n default:\n return \"left\";\n }\n}\n\n/** Returns the CSS alignment keyword corresponding to given placement. */\nexport function getAlignment(placement: PopperJS.Placement) {\n const align = placement.split(\"-\")[1] as \"start\" | \"end\" | undefined;\n switch (align) {\n case \"start\":\n return \"left\";\n case \"end\":\n return \"right\";\n default:\n return \"center\";\n }\n}\n\n// Popper modifiers\n// ================\n\n/** Modifier helper function to compute popper transform-origin based on arrow position */\nexport function getTransformOrigin(data: PopperJS.Data) {\n const position = getPosition(data.placement);\n if (data.arrowElement == null) {\n return isVerticalPosition(position)\n ? `${getOppositePosition(position)} ${getAlignment(position)}`\n : `${getAlignment(position)} ${getOppositePosition(position)}`;\n } else {\n const arrowSizeShift = data.arrowElement.clientHeight / 2;\n const { arrow } = data.offsets;\n // can use keyword for dimension without the arrow, to ease computation burden.\n // move origin by half arrow's height to keep it centered.\n return isVerticalPosition(position)\n ? `${getOppositePosition(position)} ${arrow.top + arrowSizeShift}px`\n : `${arrow.left + arrowSizeShift}px ${getOppositePosition(position)}`;\n }\n}\n\n// additional space between arrow and edge of target\nconst ARROW_SPACING = 4;\n\n/** Popper modifier that offsets popper and arrow so arrow points out of the correct side */\nexport const arrowOffsetModifier: PopperJS.ModifierFn = data => {\n if (data.arrowElement == null) {\n return data;\n }\n // our arrows have equal width and height\n const arrowSize = data.arrowElement.clientWidth;\n // this logic borrowed from original Popper arrow modifier itself\n const position = getPosition(data.placement);\n const isVertical = isVerticalPosition(position);\n const len = isVertical ? \"width\" : \"height\";\n const offsetSide = isVertical ? \"left\" : \"top\";\n\n const arrowOffsetSize = Math.round(arrowSize / 2 / Math.sqrt(2));\n // offset popover by arrow size, offset arrow in the opposite direction\n if (position === \"top\" || position === \"left\") {\n // the \"up & back\" directions require negative popper offsets\n data.offsets.popper[offsetSide] -= arrowOffsetSize + ARROW_SPACING;\n // can only use left/top on arrow so gotta get clever with 100% + X\n data.offsets.arrow[offsetSide] = data.offsets.popper[len] - arrowSize + arrowOffsetSize;\n } else {\n data.offsets.popper[offsetSide] += arrowOffsetSize + ARROW_SPACING;\n data.offsets.arrow[offsetSide] = -arrowOffsetSize;\n }\n return data;\n};\n","/*\n * Copyright 2017 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Placement } from \"popper.js\";\nimport * as React from \"react\";\nimport { PopperArrowProps } from \"react-popper\";\n\nimport * as Classes from \"../../common/classes\";\nimport { DISPLAYNAME_PREFIX } from \"../../common/props\";\nimport { getPosition } from \"./popperUtils\";\n\n// these paths come from the Core Kit Sketch file\n// https://github.com/palantir/blueprint/blob/develop/resources/sketch/Core%20Kit.sketch\nconst SVG_SHADOW_PATH =\n \"M8.11 6.302c1.015-.936 1.887-2.922 1.887-4.297v26c0-1.378\" +\n \"-.868-3.357-1.888-4.297L.925 17.09c-1.237-1.14-1.233-3.034 0-4.17L8.11 6.302z\";\nconst SVG_ARROW_PATH =\n \"M8.787 7.036c1.22-1.125 2.21-3.376 2.21-5.03V0v30-2.005\" +\n \"c0-1.654-.983-3.9-2.21-5.03l-7.183-6.616c-.81-.746-.802-1.96 0-2.7l7.183-6.614z\";\n\n/** Modifier helper function to compute arrow rotate() transform */\nfunction getArrowAngle(placement?: Placement) {\n if (placement == null) {\n return 0;\n }\n // can only be top/left/bottom/right - auto is resolved internally\n switch (getPosition(placement)) {\n case \"top\":\n return -90;\n case \"left\":\n return 180;\n case \"bottom\":\n return 90;\n default:\n return 0;\n }\n}\n\nexport interface IPopoverArrowProps {\n arrowProps: PopperArrowProps;\n placement: Placement;\n}\n\nexport const PopoverArrow: React.FunctionComponent = ({\n arrowProps: { ref, style },\n placement,\n}) => (\n
    \n \n \n \n \n
    \n);\nPopoverArrow.displayName = `${DISPLAYNAME_PREFIX}.PopoverArrow`;\n","/*\n * Copyright 2017 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Placement } from \"popper.js\";\n\nimport { Position } from \"../../common/position\";\nimport { PopoverPosition } from \"./popoverSharedProps\";\n\n/**\n * Convert a position to a placement.\n *\n * @param position the position to convert\n */\nexport function positionToPlacement(position: PopoverPosition): Placement {\n /* istanbul ignore next */\n switch (position) {\n case Position.TOP_LEFT:\n return \"top-start\";\n case Position.TOP:\n return \"top\";\n case Position.TOP_RIGHT:\n return \"top-end\";\n case Position.RIGHT_TOP:\n return \"right-start\";\n case Position.RIGHT:\n return \"right\";\n case Position.RIGHT_BOTTOM:\n return \"right-end\";\n case Position.BOTTOM_RIGHT:\n return \"bottom-end\";\n case Position.BOTTOM:\n return \"bottom\";\n case Position.BOTTOM_LEFT:\n return \"bottom-start\";\n case Position.LEFT_BOTTOM:\n return \"left-end\";\n case Position.LEFT:\n return \"left\";\n case Position.LEFT_TOP:\n return \"left-start\";\n case \"auto\":\n case \"auto-start\":\n case \"auto-end\":\n // Return the string unchanged.\n return position;\n default:\n return assertNever(position);\n }\n}\n\n/* istanbul ignore next */\nfunction assertNever(x: never): never {\n throw new Error(\"Unexpected position: \" + x);\n}\n","/*\n * Copyright 2017 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport { ModifierFn } from \"popper.js\";\nimport * as React from \"react\";\nimport { polyfill } from \"react-lifecycles-compat\";\nimport { Manager, Popper, PopperChildrenProps, Reference, ReferenceChildrenProps } from \"react-popper\";\n\nimport { AbstractPureComponent2, Classes, IRef, refHandler, setRef } from \"../../common\";\nimport * as Errors from \"../../common/errors\";\nimport { DISPLAYNAME_PREFIX, HTMLDivProps } from \"../../common/props\";\nimport * as Utils from \"../../common/utils\";\nimport { Overlay } from \"../overlay/overlay\";\nimport { ResizeSensor } from \"../resize-sensor/resizeSensor\";\n// eslint-disable-next-line import/no-cycle\nimport { Tooltip } from \"../tooltip/tooltip\";\nimport { PopoverArrow } from \"./popoverArrow\";\nimport { positionToPlacement } from \"./popoverMigrationUtils\";\nimport { IPopoverSharedProps, PopperModifiers } from \"./popoverSharedProps\";\nimport { arrowOffsetModifier, getTransformOrigin } from \"./popperUtils\";\n\nexport const PopoverInteractionKind = {\n CLICK: \"click\" as \"click\",\n CLICK_TARGET_ONLY: \"click-target\" as \"click-target\",\n HOVER: \"hover\" as \"hover\",\n HOVER_TARGET_ONLY: \"hover-target\" as \"hover-target\",\n};\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport type PopoverInteractionKind = typeof PopoverInteractionKind[keyof typeof PopoverInteractionKind];\n\nexport interface IPopoverProps extends IPopoverSharedProps {\n /** HTML props for the backdrop element. Can be combined with `backdropClassName`. */\n backdropProps?: React.HTMLProps;\n\n /**\n * The content displayed inside the popover. This can instead be provided as\n * the _second_ element in `children` (first is `target`).\n */\n content?: string | JSX.Element;\n\n /**\n * Whether the wrapper and target should take up the full width of their container.\n * Note that supplying `true` for this prop will force `targetTagName=\"div\"` and\n * `wrapperTagName=\"div\"`.\n */\n fill?: boolean;\n\n /**\n * The kind of interaction that triggers the display of the popover.\n *\n * @default PopoverInteractionKind.CLICK\n */\n interactionKind?: PopoverInteractionKind;\n\n /**\n * Enables an invisible overlay beneath the popover that captures clicks and\n * prevents interaction with the rest of the document until the popover is\n * closed. This prop is only available when `interactionKind` is\n * `PopoverInteractionKind.CLICK`. When popovers with backdrop are opened,\n * they become focused.\n *\n * @default false\n */\n hasBackdrop?: boolean;\n\n /**\n * Ref supplied to the `Classes.POPOVER` element.\n */\n popoverRef?: IRef;\n\n /**\n * The target to which the popover content is attached. This can instead be\n * provided as the _first_ element in `children`.\n */\n target?: string | JSX.Element;\n}\n\nexport interface IPopoverState {\n transformOrigin: string;\n isOpen: boolean;\n hasDarkParent: boolean;\n}\n\n/** @deprecated use { Popover2 } from \"@blueprintjs/popover2\" */\n@polyfill\nexport class Popover extends AbstractPureComponent2 {\n public static displayName = `${DISPLAYNAME_PREFIX}.Popover`;\n\n // eslint-disable-next-line deprecation/deprecation\n private popoverRef = Utils.createReactRef();\n\n public static defaultProps: IPopoverProps = {\n boundary: \"scrollParent\",\n captureDismiss: false,\n defaultIsOpen: false,\n disabled: false,\n fill: false,\n hasBackdrop: false,\n hoverCloseDelay: 300,\n hoverOpenDelay: 150,\n inheritDarkTheme: true,\n interactionKind: PopoverInteractionKind.CLICK,\n minimal: false,\n modifiers: {},\n openOnTargetFocus: true,\n // N.B. we don't set a default for `placement` or `position` here because that would trigger\n // a warning in validateProps if the other prop is specified by a user of this component\n targetTagName: \"span\",\n transitionDuration: 300,\n usePortal: true,\n wrapperTagName: \"span\",\n };\n\n /**\n * DOM element that contains the popover.\n * When `usePortal={true}`, this element will be portaled outside the usual DOM flow,\n * so this reference can be very useful for testing.\n */\n public popoverElement: HTMLElement | null = null;\n\n /** DOM element that contains the target. */\n public targetElement: HTMLElement | null = null;\n\n public state: IPopoverState = {\n hasDarkParent: false,\n isOpen: this.getIsOpen(this.props),\n transformOrigin: \"\",\n };\n\n private cancelOpenTimeout?: () => void;\n\n // a flag that lets us detect mouse movement between the target and popover,\n // now that mouseleave is triggered when you cross the gap between the two.\n private isMouseInTargetOrPopover = false;\n\n // a flag that indicates whether the target previously lost focus to another\n // element on the same page.\n private lostFocusOnSamePage = true;\n\n // Reference to the Poppper.scheduleUpdate() function, this changes every time the popper is mounted\n private popperScheduleUpdate?: () => void;\n\n private handlePopoverRef: IRef = refHandler(this, \"popoverElement\", this.props.popoverRef);\n\n private handleTargetRef = (ref: HTMLElement | null) => (this.targetElement = ref);\n\n public render() {\n // rename wrapper tag to begin with uppercase letter so it's recognized\n // as JSX component instead of intrinsic element. but because of its\n // type, tsc actually recognizes that it is _any_ intrinsic element, so\n // it can typecheck the HTML props!!\n const { className, disabled, fill, placement, position = \"auto\" } = this.props;\n const { isOpen } = this.state;\n let { wrapperTagName } = this.props;\n if (fill) {\n wrapperTagName = \"div\";\n }\n\n const isContentEmpty = Utils.ensureElement(this.understandChildren().content) == null;\n // need to do this check in render(), because `isOpen` is derived from\n // state, and state can't necessarily be accessed in validateProps.\n if (isContentEmpty && !disabled && isOpen !== false && !Utils.isNodeEnv(\"production\")) {\n console.warn(Errors.POPOVER_WARN_EMPTY_CONTENT);\n }\n\n const wrapperClasses = classNames(Classes.POPOVER_WRAPPER, className, {\n [Classes.FILL]: fill,\n });\n\n const wrapper = React.createElement(\n wrapperTagName!,\n { className: wrapperClasses },\n {this.renderTarget},\n \n \n {this.renderPopover}\n \n ,\n );\n\n return {wrapper};\n }\n\n public componentDidMount() {\n this.updateDarkParent();\n }\n\n public componentDidUpdate(prevProps: IPopoverProps, prevState: IPopoverState) {\n super.componentDidUpdate(prevProps, prevState);\n\n if (prevProps.popoverRef !== this.props.popoverRef) {\n setRef(prevProps.popoverRef, null);\n this.handlePopoverRef = refHandler(this, \"popoverElement\", this.props.popoverRef);\n setRef(this.props.popoverRef, this.popoverElement);\n }\n\n this.updateDarkParent();\n\n const nextIsOpen = this.getIsOpen(this.props);\n\n if (this.props.isOpen != null && nextIsOpen !== this.state.isOpen) {\n this.setOpenState(nextIsOpen);\n // tricky: setOpenState calls setState only if this.props.isOpen is\n // not controlled, so we need to invoke setState manually here.\n this.setState({ isOpen: nextIsOpen });\n } else if (this.props.disabled && this.state.isOpen && this.props.isOpen == null) {\n // special case: close an uncontrolled popover when disabled is set to true\n this.setOpenState(false);\n }\n }\n\n /**\n * Instance method to instruct the `Popover` to recompute its position.\n *\n * This method should only be used if you are updating the target in a way\n * that does not cause it to re-render, such as changing its _position_\n * without changing its _size_ (since `Popover` already repositions when it\n * detects a resize).\n */\n public reposition = () => this.popperScheduleUpdate?.();\n\n protected validateProps(props: IPopoverProps & { children?: React.ReactNode }) {\n if (props.isOpen == null && props.onInteraction != null) {\n console.warn(Errors.POPOVER_WARN_UNCONTROLLED_ONINTERACTION);\n }\n if (props.hasBackdrop && !props.usePortal) {\n console.warn(Errors.POPOVER_WARN_HAS_BACKDROP_INLINE);\n }\n if (props.hasBackdrop && props.interactionKind !== PopoverInteractionKind.CLICK) {\n console.error(Errors.POPOVER_HAS_BACKDROP_INTERACTION);\n }\n if (props.placement !== undefined && props.position !== undefined) {\n console.warn(Errors.POPOVER_WARN_PLACEMENT_AND_POSITION_MUTEX);\n }\n\n const childrenCount = React.Children.count(props.children);\n const hasContentProp = props.content !== undefined;\n const hasTargetProp = props.target !== undefined;\n\n if (childrenCount === 0 && !hasTargetProp) {\n console.error(Errors.POPOVER_REQUIRES_TARGET);\n }\n if (childrenCount > 2) {\n console.warn(Errors.POPOVER_WARN_TOO_MANY_CHILDREN);\n }\n if (childrenCount > 0 && hasTargetProp) {\n console.warn(Errors.POPOVER_WARN_DOUBLE_TARGET);\n }\n if (childrenCount === 2 && hasContentProp) {\n console.warn(Errors.POPOVER_WARN_DOUBLE_CONTENT);\n }\n }\n\n private updateDarkParent() {\n if (this.props.usePortal && this.state.isOpen) {\n const hasDarkParent = this.targetElement != null && this.targetElement.closest(`.${Classes.DARK}`) != null;\n this.setState({ hasDarkParent });\n }\n }\n\n private renderPopover = (popperProps: PopperChildrenProps) => {\n const { usePortal, interactionKind } = this.props;\n const { transformOrigin } = this.state;\n\n // Need to update our reference to this on every render as it will change.\n this.popperScheduleUpdate = popperProps.scheduleUpdate;\n\n const popoverHandlers: HTMLDivProps = {\n // always check popover clicks for dismiss class\n onClick: this.handlePopoverClick,\n };\n if (\n interactionKind === PopoverInteractionKind.HOVER ||\n (!usePortal && interactionKind === PopoverInteractionKind.HOVER_TARGET_ONLY)\n ) {\n popoverHandlers.onMouseEnter = this.handleMouseEnter;\n popoverHandlers.onMouseLeave = this.handleMouseLeave;\n }\n\n const popoverClasses = classNames(\n Classes.POPOVER,\n {\n [Classes.DARK]: this.props.inheritDarkTheme && this.state.hasDarkParent,\n [Classes.MINIMAL]: this.props.minimal,\n [Classes.POPOVER_CAPTURING_DISMISS]: this.props.captureDismiss,\n },\n this.props.popoverClassName,\n );\n\n return (\n
    \n \n \n {this.isArrowEnabled() && (\n \n )}\n
    {this.understandChildren().content}
    \n
    \n \n
    \n );\n };\n\n private renderTarget = (referenceProps: ReferenceChildrenProps) => {\n const { fill, openOnTargetFocus, targetClassName, targetProps = {} } = this.props;\n const { isOpen } = this.state;\n const isControlled = this.isControlled();\n const isHoverInteractionKind = this.isHoverInteractionKind();\n let { targetTagName } = this.props;\n if (fill) {\n targetTagName = \"div\";\n }\n\n const finalTargetProps: React.HTMLProps = isHoverInteractionKind\n ? {\n // HOVER handlers\n onBlur: this.handleTargetBlur,\n onFocus: this.handleTargetFocus,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n }\n : {\n // CLICK needs only one handler\n onClick: this.handleTargetClick,\n };\n finalTargetProps.className = classNames(\n Classes.POPOVER_TARGET,\n { [Classes.POPOVER_OPEN]: isOpen },\n targetProps.className,\n targetClassName,\n );\n finalTargetProps.ref = referenceProps.ref;\n\n const rawTarget = Utils.ensureElement(this.understandChildren().target);\n\n if (rawTarget === undefined) {\n return null;\n }\n\n const rawTabIndex = rawTarget.props.tabIndex;\n // ensure target is focusable if relevant prop enabled\n const tabIndex = rawTabIndex == null && openOnTargetFocus && isHoverInteractionKind ? 0 : rawTabIndex;\n const clonedTarget: JSX.Element = React.cloneElement(rawTarget, {\n className: classNames(rawTarget.props.className, {\n // this class is mainly useful for button targets; we should only apply it for uncontrolled popovers\n // when they are opened by a user interaction\n [Classes.ACTIVE]: isOpen && !isControlled && !isHoverInteractionKind,\n }),\n // force disable single Tooltip child when popover is open (BLUEPRINT-552)\n /* eslint-disable-next-line deprecation/deprecation */\n disabled: isOpen && Utils.isElementOfType(rawTarget, Tooltip) ? true : rawTarget.props.disabled,\n tabIndex,\n });\n const target = React.createElement(\n targetTagName!,\n {\n ...targetProps,\n ...finalTargetProps,\n },\n clonedTarget,\n );\n\n return {target};\n };\n\n // content and target can be specified as props or as children. this method\n // normalizes the two approaches, preferring child over prop.\n private understandChildren() {\n const { children, content: contentProp, target: targetProp } = this.props;\n // #validateProps asserts that 1 <= children.length <= 2 so content is optional\n const [targetChild, contentChild] = React.Children.toArray(children);\n return {\n content: contentChild == null ? contentProp : contentChild,\n target: targetChild == null ? targetProp : targetChild,\n };\n }\n\n private isControlled = () => this.props.isOpen !== undefined;\n\n private getIsOpen(props: IPopoverProps) {\n // disabled popovers should never be allowed to open.\n if (props.disabled) {\n return false;\n } else if (props.isOpen != null) {\n return props.isOpen;\n } else {\n return props.defaultIsOpen!;\n }\n }\n\n private getPopperModifiers(): PopperModifiers {\n const { boundary, modifiers } = this.props;\n const { flip = {}, preventOverflow = {} } = modifiers!;\n return {\n ...modifiers,\n arrowOffset: {\n enabled: this.isArrowEnabled(),\n fn: arrowOffsetModifier,\n order: 510,\n },\n flip: { boundariesElement: boundary, ...flip },\n preventOverflow: { boundariesElement: boundary, ...preventOverflow },\n updatePopoverState: {\n enabled: true,\n fn: this.updatePopoverState,\n order: 900,\n },\n };\n }\n\n private handleTargetFocus = (e: React.FocusEvent) => {\n if (this.props.openOnTargetFocus && this.isHoverInteractionKind()) {\n if (e.relatedTarget == null && !this.lostFocusOnSamePage) {\n // ignore this focus event -- the target was already focused but the page itself\n // lost focus (e.g. due to switching tabs).\n return;\n }\n this.handleMouseEnter((e as unknown) as React.MouseEvent);\n }\n this.props.targetProps?.onFocus?.(e);\n };\n\n private handleTargetBlur = (e: React.FocusEvent) => {\n if (this.props.openOnTargetFocus && this.isHoverInteractionKind()) {\n // if the next element to receive focus is within the popover, we'll want to leave the\n // popover open. e.relatedTarget ought to tell us the next element to receive focus, but if the user just\n // clicked on an element which is not focusable (either by default or with a tabIndex attribute),\n // it won't be set. So, we filter those out here and assume that a click handler somewhere else will\n // close the popover if necessary.\n if (e.relatedTarget != null && !this.isElementInPopover(e.relatedTarget as HTMLElement)) {\n this.handleMouseLeave((e as unknown) as React.MouseEvent);\n }\n }\n this.lostFocusOnSamePage = e.relatedTarget != null;\n this.props.targetProps?.onBlur?.(e);\n };\n\n private handleMouseEnter = (e: React.MouseEvent) => {\n this.isMouseInTargetOrPopover = true;\n\n // if we're entering the popover, and the mode is set to be HOVER_TARGET_ONLY, we want to manually\n // trigger the mouse leave event, as hovering over the popover shouldn't count.\n if (\n !this.props.usePortal &&\n this.isElementInPopover(e.target as Element) &&\n this.props.interactionKind === PopoverInteractionKind.HOVER_TARGET_ONLY &&\n !this.props.openOnTargetFocus\n ) {\n this.handleMouseLeave(e);\n } else if (!this.props.disabled) {\n // only begin opening popover when it is enabled\n this.setOpenState(true, e, this.props.hoverOpenDelay);\n }\n this.props.targetProps?.onMouseEnter?.(e);\n };\n\n private handleMouseLeave = (e: React.MouseEvent) => {\n this.isMouseInTargetOrPopover = false;\n\n // wait until the event queue is flushed, because we want to leave the\n // popover open if the mouse entered the popover immediately after\n // leaving the target (or vice versa).\n this.setTimeout(() => {\n if (this.isMouseInTargetOrPopover) {\n return;\n }\n // user-configurable closing delay is helpful when moving mouse from target to popover\n this.setOpenState(false, e, this.props.hoverCloseDelay);\n });\n this.props.targetProps?.onMouseLeave?.(e);\n };\n\n private handlePopoverClick = (e: React.MouseEvent) => {\n const eventTarget = e.target as HTMLElement;\n const eventPopover = eventTarget.closest(`.${Classes.POPOVER}`);\n const isEventFromSelf = eventPopover === this.popoverRef.current;\n const isEventPopoverCapturing = eventPopover?.classList.contains(Classes.POPOVER_CAPTURING_DISMISS);\n // an OVERRIDE inside a DISMISS does not dismiss, and a DISMISS inside an OVERRIDE will dismiss.\n const dismissElement = eventTarget.closest(`.${Classes.POPOVER_DISMISS}, .${Classes.POPOVER_DISMISS_OVERRIDE}`);\n const shouldDismiss = dismissElement != null && dismissElement.classList.contains(Classes.POPOVER_DISMISS);\n const isDisabled = eventTarget.closest(`:disabled, .${Classes.DISABLED}`) != null;\n if (shouldDismiss && !isDisabled && (!isEventPopoverCapturing || isEventFromSelf)) {\n this.setOpenState(false, e);\n }\n };\n\n private handleOverlayClose = (e?: React.SyntheticEvent) => {\n if (this.targetElement === null || e === undefined) {\n return;\n }\n\n const eventTarget = e.target as HTMLElement;\n // if click was in target, target event listener will handle things, so don't close\n if (!Utils.elementIsOrContains(this.targetElement, eventTarget) || e.nativeEvent instanceof KeyboardEvent) {\n this.setOpenState(false, e);\n }\n };\n\n private handleTargetClick = (e: React.MouseEvent) => {\n // ensure click did not originate from within inline popover before closing\n if (!this.props.disabled && !this.isElementInPopover(e.target as HTMLElement)) {\n if (this.props.isOpen == null) {\n this.setState(prevState => ({ isOpen: !prevState.isOpen }));\n } else {\n this.setOpenState(!this.props.isOpen, e);\n }\n }\n this.props.targetProps?.onClick?.(e);\n };\n\n // a wrapper around setState({isOpen}) that will call props.onInteraction instead when in controlled mode.\n // starts a timeout to delay changing the state if a non-zero duration is provided.\n private setOpenState(isOpen: boolean, e?: React.SyntheticEvent, timeout?: number) {\n // cancel any existing timeout because we have new state\n this.cancelOpenTimeout?.();\n if (timeout !== undefined && timeout > 0) {\n this.cancelOpenTimeout = this.setTimeout(() => this.setOpenState(isOpen, e), timeout);\n } else {\n if (this.props.isOpen == null) {\n this.setState({ isOpen });\n } else {\n this.props.onInteraction?.(isOpen, e);\n }\n if (!isOpen) {\n // non-null assertion because the only time `e` is undefined is when in controlled mode\n // or the rare special case in uncontrolled mode when the `disabled` flag is toggled true\n this.props.onClose?.(e!);\n }\n }\n }\n\n private isArrowEnabled() {\n const { minimal, modifiers } = this.props;\n // omitting `arrow` from `modifiers` uses Popper default, which does show an arrow.\n return !minimal && (modifiers?.arrow == null || modifiers.arrow.enabled);\n }\n\n private isElementInPopover(element: Element) {\n return this.popoverElement?.contains(element);\n }\n\n private isHoverInteractionKind() {\n return (\n this.props.interactionKind === PopoverInteractionKind.HOVER ||\n this.props.interactionKind === PopoverInteractionKind.HOVER_TARGET_ONLY\n );\n }\n\n /** Popper modifier that updates React state (for style properties) based on latest data. */\n private updatePopoverState: ModifierFn = data => {\n // always set string; let shouldComponentUpdate determine if update is necessary\n this.setState({ transformOrigin: getTransformOrigin(data) });\n return data;\n };\n}\n","/*\n * Copyright 2017 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport * as React from \"react\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Classes } from \"../../common\";\nimport { DISPLAYNAME_PREFIX, Props } from \"../../common/props\";\n\n// eslint-disable-next-line deprecation/deprecation\nexport type TextProps = ITextProps;\n/** @deprecated use TextProps */\nexport interface ITextProps extends Props {\n /**\n * Indicates that this component should be truncated with an ellipsis if it overflows its container.\n * The `title` attribute will also be added when content overflows to show the full text of the children on hover.\n *\n * @default false\n */\n ellipsize?: boolean;\n\n /**\n * HTML tag name to use for rendered element.\n *\n * @default \"div\"\n */\n tagName?: keyof JSX.IntrinsicElements;\n\n /**\n * HTML title of the element\n */\n title?: string;\n}\n\nexport interface ITextState {\n textContent: string;\n isContentOverflowing: boolean;\n}\n\n@polyfill\nexport class Text extends AbstractPureComponent2 {\n public static displayName = `${DISPLAYNAME_PREFIX}.Text`;\n\n public static defaultProps: Partial = {\n ellipsize: false,\n tagName: \"div\",\n };\n\n public state: ITextState = {\n isContentOverflowing: false,\n textContent: \"\",\n };\n\n private textRef: HTMLElement | null = null;\n\n public componentDidMount() {\n this.update();\n }\n\n public componentDidUpdate() {\n this.update();\n }\n\n public render() {\n const classes = classNames(\n {\n [Classes.TEXT_OVERFLOW_ELLIPSIS]: this.props.ellipsize,\n },\n this.props.className,\n );\n const { children, tagName, title } = this.props;\n\n return React.createElement(\n tagName!,\n {\n className: classes,\n ref: (ref: HTMLElement | null) => (this.textRef = ref),\n title: title ?? (this.state.isContentOverflowing ? this.state.textContent : undefined),\n },\n children,\n );\n }\n\n private update() {\n if (this.textRef?.textContent == null) {\n return;\n }\n const newState = {\n isContentOverflowing: this.props.ellipsize! && this.textRef.scrollWidth > this.textRef.clientWidth,\n textContent: this.textRef.textContent,\n };\n this.setState(newState);\n }\n}\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport { Modifiers } from \"popper.js\";\nimport * as React from \"react\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Classes, Position } from \"../../common\";\nimport { DISPLAYNAME_PREFIX, ActionProps, LinkProps } from \"../../common/props\";\nimport { Icon } from \"../icon/icon\";\nimport { IPopoverProps, Popover, PopoverInteractionKind } from \"../popover/popover\";\nimport { Text } from \"../text/text\";\n// this cyclic import can be removed in v4.0 (https://github.com/palantir/blueprint/issues/3829)\n// eslint-disable-next-line import/no-cycle\nimport { Menu } from \"./menu\";\n\n// eslint-disable-next-line deprecation/deprecation\nexport type MenuItemProps = IMenuItemProps;\n/** @deprecated use MenuItemProps */\nexport interface IMenuItemProps extends ActionProps, LinkProps {\n // override from IActionProps to make it required\n /** Item text, required for usability. */\n text: React.ReactNode;\n\n /** Whether this menu item should appear with an active state. */\n active?: boolean;\n\n /**\n * Children of this component will be rendered in a __submenu__ that appears when hovering or\n * clicking on this menu item.\n *\n * Use `text` prop for the content of the menu item itself.\n */\n children?: React.ReactNode;\n\n /**\n * Whether this menu item is non-interactive. Enabling this prop will ignore `href`, `tabIndex`,\n * and mouse event handlers (in particular click, down, enter, leave).\n */\n disabled?: boolean;\n\n /**\n * Right-aligned label text content, useful for displaying hotkeys.\n *\n * This prop actually supports JSX elements, but TypeScript will throw an error because\n * `HTMLAttributes` only allows strings. Use `labelElement` to supply a JSX element in TypeScript.\n */\n label?: string;\n\n /**\n * A space-delimited list of class names to pass along to the right-aligned label wrapper element.\n */\n labelClassName?: string;\n\n /**\n * Right-aligned label content, useful for displaying hotkeys.\n */\n labelElement?: React.ReactNode;\n\n /**\n * Whether the text should be allowed to wrap to multiple lines.\n * If `false`, text will be truncated with an ellipsis when it reaches `max-width`.\n *\n * @default false\n */\n multiline?: boolean;\n\n /**\n * Props to spread to `Popover`. Note that `content` and `minimal` cannot be\n * changed and `usePortal` defaults to `false` so all submenus will live in\n * the same container.\n */\n popoverProps?: Partial;\n\n /**\n * Whether an enabled item without a submenu should automatically close its parent popover when clicked.\n *\n * @default true\n */\n shouldDismissPopover?: boolean;\n\n /**\n * Name of the HTML tag that wraps the MenuItem.\n *\n * @default \"a\"\n */\n tagName?: keyof JSX.IntrinsicElements;\n\n /**\n * A space-delimited list of class names to pass along to the text wrapper element.\n */\n textClassName?: string;\n\n /**\n * HTML title to be passed to the component\n */\n htmlTitle?: string;\n}\n\n@polyfill\nexport class MenuItem extends AbstractPureComponent2> {\n public static defaultProps: MenuItemProps = {\n disabled: false,\n multiline: false,\n popoverProps: {},\n shouldDismissPopover: true,\n text: \"\",\n };\n\n public static displayName = `${DISPLAYNAME_PREFIX}.MenuItem`;\n\n public render() {\n const {\n active,\n className,\n children,\n disabled,\n icon,\n intent,\n labelClassName,\n labelElement,\n multiline,\n popoverProps,\n shouldDismissPopover,\n text,\n textClassName,\n tagName = \"a\",\n htmlTitle,\n ...htmlProps\n } = this.props;\n const hasSubmenu = children != null;\n\n const intentClass = Classes.intentClass(intent);\n const anchorClasses = classNames(\n Classes.MENU_ITEM,\n intentClass,\n {\n [Classes.ACTIVE]: active,\n [Classes.INTENT_PRIMARY]: active && intentClass == null,\n [Classes.DISABLED]: disabled,\n // prevent popover from closing when clicking on submenu trigger or disabled item\n [Classes.POPOVER_DISMISS]: shouldDismissPopover && !disabled && !hasSubmenu,\n },\n className,\n );\n\n const target = React.createElement(\n tagName,\n {\n ...htmlProps,\n ...(disabled ? DISABLED_PROPS : {}),\n className: anchorClasses,\n },\n ,\n \n {text}\n ,\n this.maybeRenderLabel(labelElement),\n hasSubmenu ? : undefined,\n );\n\n const liClasses = classNames({ [Classes.MENU_SUBMENU]: hasSubmenu });\n return
  • {this.maybeRenderPopover(target, children)}
  • ;\n }\n\n private maybeRenderLabel(labelElement?: React.ReactNode) {\n const { label, labelClassName } = this.props;\n if (label == null && labelElement == null) {\n return null;\n }\n return (\n \n {label}\n {labelElement}\n \n );\n }\n\n private maybeRenderPopover(target: JSX.Element, children?: React.ReactNode) {\n if (children == null) {\n return target;\n }\n const { disabled, popoverProps } = this.props;\n return (\n /* eslint-disable-next-line deprecation/deprecation */\n {children}}\n minimal={true}\n popoverClassName={classNames(Classes.MENU_SUBMENU, popoverProps?.popoverClassName)}\n target={target}\n />\n );\n }\n}\n\nconst SUBMENU_POPOVER_MODIFIERS: Modifiers = {\n // 20px padding - scrollbar width + a bit\n flip: { boundariesElement: \"viewport\", padding: 20 },\n // shift popover up 5px so MenuItems align\n offset: { offset: -5 },\n preventOverflow: { boundariesElement: \"viewport\", padding: 20 },\n};\n\n// props to ignore when disabled\nconst DISABLED_PROPS: React.AnchorHTMLAttributes = {\n href: undefined,\n onClick: undefined,\n onMouseDown: undefined,\n onMouseEnter: undefined,\n onMouseLeave: undefined,\n tabIndex: -1,\n};\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport * as React from \"react\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Classes, IRef } from \"../../common\";\nimport { DISPLAYNAME_PREFIX, Props } from \"../../common/props\";\nimport { MenuDivider } from \"./menuDivider\";\n// this cyclic import can be removed in v4.0 (https://github.com/palantir/blueprint/issues/3829)\n// eslint-disable-next-line import/no-cycle\nimport { MenuItem } from \"./menuItem\";\n\n// eslint-disable-next-line deprecation/deprecation\nexport type MenuProps = IMenuProps;\n/** @deprecated use MenuProps */\nexport interface IMenuProps extends Props, React.HTMLAttributes {\n /** Whether the menu items in this menu should use a large appearance. */\n large?: boolean;\n\n /** Ref handler that receives the HTML `
      ` element backing this component. */\n ulRef?: IRef;\n}\n\n@polyfill\nexport class Menu extends AbstractPureComponent2 {\n public static displayName = `${DISPLAYNAME_PREFIX}.Menu`;\n\n /** @deprecated use MenuDivider */\n public static Divider = MenuDivider;\n\n /** @deprecated use MenuItem*/\n public static Item = MenuItem;\n\n public render() {\n const { className, children, large, ulRef, ...htmlProps } = this.props;\n const classes = classNames(Classes.MENU, { [Classes.LARGE]: large }, className);\n return (\n
        \n {children}\n
      \n );\n }\n}\n","/*\n * Copyright 2017 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport * as React from \"react\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Alignment, Classes } from \"../../common\";\nimport { DISPLAYNAME_PREFIX, HTMLDivProps, Props } from \"../../common/props\";\n\n// eslint-disable-next-line deprecation/deprecation\nexport type ButtonGroupProps = IButtonGroupProps;\n/** @deprecated use ButtonGroupProps */\nexport interface IButtonGroupProps extends Props, HTMLDivProps {\n /**\n * Text alignment within button. By default, icons and text will be centered\n * within the button. Passing `\"left\"` or `\"right\"` will align the button\n * text to that side and push `icon` and `rightIcon` to either edge. Passing\n * `\"center\"` will center the text and icons together.\n */\n alignText?: Alignment;\n\n /**\n * Whether the button group should take up the full width of its container.\n *\n * @default false\n */\n fill?: boolean;\n\n /**\n * Whether the child buttons should appear with minimal styling.\n *\n * @default false\n */\n minimal?: boolean;\n\n /**\n * Whether the child buttons should appear with large styling.\n *\n * @default false\n */\n large?: boolean;\n\n /**\n * Whether the button group should appear with vertical styling.\n *\n * @default false\n */\n vertical?: boolean;\n}\n\n// this component is simple enough that tests would be purely tautological.\n/* istanbul ignore next */\n@polyfill\nexport class ButtonGroup extends AbstractPureComponent2 {\n public static displayName = `${DISPLAYNAME_PREFIX}.ButtonGroup`;\n\n public render() {\n const { alignText, className, fill, minimal, large, vertical, ...htmlProps } = this.props;\n const buttonGroupClasses = classNames(\n Classes.BUTTON_GROUP,\n {\n [Classes.FILL]: fill,\n [Classes.LARGE]: large,\n [Classes.MINIMAL]: minimal,\n [Classes.VERTICAL]: vertical,\n },\n Classes.alignmentClass(alignText),\n className,\n );\n return (\n
      \n {this.props.children}\n
      \n );\n }\n}\n","/*\n * Copyright 2016 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport * as React from \"react\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Classes } from \"../../common\";\nimport { DISPLAYNAME_PREFIX, ActionProps, IntentProps, LinkProps, Props, MaybeElement } from \"../../common/props\";\nimport { ButtonGroup } from \"../button/buttonGroup\";\nimport { AnchorButton, Button } from \"../button/buttons\";\nimport { Icon, IconName } from \"../icon/icon\";\n\nexport type ToastProps = IToastProps;\nexport interface IToastProps extends Props, IntentProps {\n /**\n * Action rendered as a minimal `AnchorButton`. The toast is dismissed automatically when the\n * user clicks the action button. Note that the `intent` prop is ignored (the action button\n * cannot have its own intent color that might conflict with the toast's intent). Omit this\n * prop to omit the action button.\n */\n action?: ActionProps & LinkProps;\n\n /** Name of a Blueprint UI icon (or an icon element) to render before the message. */\n icon?: IconName | MaybeElement;\n\n /** Message to display in the body of the toast. */\n message: React.ReactNode;\n\n /**\n * Callback invoked when the toast is dismissed, either by the user or by the timeout.\n * The value of the argument indicates whether the toast was closed because the timeout expired.\n */\n onDismiss?: (didTimeoutExpire: boolean) => void;\n\n /**\n * Milliseconds to wait before automatically dismissing toast.\n * Providing a value less than or equal to 0 will disable the timeout (this is discouraged).\n *\n * @default 5000\n */\n timeout?: number;\n}\n\n@polyfill\nexport class Toast extends AbstractPureComponent2 {\n public static defaultProps: IToastProps = {\n className: \"\",\n message: \"\",\n timeout: 5000,\n };\n\n public static displayName = `${DISPLAYNAME_PREFIX}.Toast`;\n\n public render(): JSX.Element {\n const { className, icon, intent, message } = this.props;\n return (\n \n \n {message}\n \n {this.maybeRenderActionButton()}\n
    \n );\n }\n\n public componentDidMount() {\n this.startTimeout();\n }\n\n public componentDidUpdate(prevProps: IToastProps) {\n if (prevProps.timeout !== this.props.timeout) {\n if (this.props.timeout! > 0) {\n this.startTimeout();\n } else {\n this.clearTimeouts();\n }\n }\n }\n\n public componentWillUnmount() {\n this.clearTimeouts();\n }\n\n private maybeRenderActionButton() {\n const { action } = this.props;\n if (action == null) {\n return undefined;\n } else {\n return ;\n }\n }\n\n private handleActionClick = (e: React.MouseEvent) => {\n this.props.action?.onClick?.(e);\n this.triggerDismiss(false);\n };\n\n private handleCloseClick = () => this.triggerDismiss(false);\n\n private triggerDismiss(didTimeoutExpire: boolean) {\n this.clearTimeouts();\n this.props.onDismiss?.(didTimeoutExpire);\n }\n\n private startTimeout = () => {\n this.clearTimeouts();\n if (this.props.timeout! > 0) {\n this.setTimeout(() => this.triggerDismiss(true), this.props.timeout);\n }\n };\n}\n","/*\n * Copyright 2016 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport classNames from \"classnames\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Classes, Position } from \"../../common\";\nimport { TOASTER_CREATE_NULL, TOASTER_MAX_TOASTS_INVALID, TOASTER_WARN_INLINE } from \"../../common/errors\";\nimport { ESCAPE } from \"../../common/keys\";\nimport { DISPLAYNAME_PREFIX, Props } from \"../../common/props\";\nimport { isNodeEnv } from \"../../common/utils\";\nimport { Overlay } from \"../overlay/overlay\";\nimport { IToastProps, Toast } from \"./toast\";\n\nexport type IToastOptions = IToastProps & { key: string };\nexport type ToasterPosition =\n | typeof Position.TOP\n | typeof Position.TOP_LEFT\n | typeof Position.TOP_RIGHT\n | typeof Position.BOTTOM\n | typeof Position.BOTTOM_LEFT\n | typeof Position.BOTTOM_RIGHT;\n\n/** Instance methods available on a `` component instance. */\nexport interface IToaster {\n /**\n * Shows a new toast to the user, or updates an existing toast corresponding to the provided key (optional).\n *\n * Returns the unique key of the toast.\n */\n show(props: IToastProps, key?: string): string;\n\n /** Dismiss the given toast instantly. */\n dismiss(key: string): void;\n\n /** Dismiss all toasts instantly. */\n clear(): void;\n\n /** Returns the props for all current toasts. */\n getToasts(): IToastOptions[];\n}\n\n/**\n * Props supported by the `` component.\n * These props can be passed as an argument to the static `Toaster.create(props?, container?)` method.\n */\nexport interface IToasterProps extends Props {\n /**\n * Whether a toast should acquire application focus when it first opens.\n * This is disabled by default so that toasts do not interrupt the user's flow.\n * Note that `enforceFocus` is always disabled for `Toaster`s.\n *\n * @default false\n */\n autoFocus?: boolean;\n\n /**\n * Whether pressing the `esc` key should clear all active toasts.\n *\n * @default true\n */\n canEscapeKeyClear?: boolean;\n\n /**\n * Whether the toaster should be rendered into a new element attached to `document.body`.\n * If `false`, then positioning will be relative to the parent element.\n *\n * This prop is ignored by `Toaster.create()` as that method always appends a new element\n * to the container.\n *\n * @default true\n */\n usePortal?: boolean;\n\n /**\n * Position of `Toaster` within its container.\n *\n * @default Position.TOP\n */\n position?: ToasterPosition;\n\n /**\n * The maximum number of active toasts that can be displayed at once.\n *\n * When the limit is about to be exceeded, the oldest active toast is removed.\n *\n * @default undefined\n */\n maxToasts?: number;\n}\n\nexport interface IToasterState {\n toasts: IToastOptions[];\n}\n\n@polyfill\nexport class Toaster extends AbstractPureComponent2 implements IToaster {\n public static displayName = `${DISPLAYNAME_PREFIX}.Toaster`;\n\n public static defaultProps: IToasterProps = {\n autoFocus: false,\n canEscapeKeyClear: true,\n position: Position.TOP,\n usePortal: true,\n };\n\n /**\n * Create a new `Toaster` instance that can be shared around your application.\n * The `Toaster` will be rendered into a new element appended to the given container.\n */\n public static create(props?: IToasterProps, container = document.body): IToaster {\n if (props != null && props.usePortal != null && !isNodeEnv(\"production\")) {\n console.warn(TOASTER_WARN_INLINE);\n }\n const containerElement = document.createElement(\"div\");\n container.appendChild(containerElement);\n const toaster = ReactDOM.render(\n ,\n containerElement,\n ) as Toaster;\n if (toaster == null) {\n throw new Error(TOASTER_CREATE_NULL);\n }\n return toaster;\n }\n\n public state: IToasterState = {\n toasts: [],\n };\n\n // auto-incrementing identifier for un-keyed toasts\n private toastId = 0;\n\n public show(props: IToastProps, key?: string) {\n if (this.props.maxToasts) {\n // check if active number of toasts are at the maxToasts limit\n this.dismissIfAtLimit();\n }\n const options = this.createToastOptions(props, key);\n if (key === undefined || this.isNewToastKey(key)) {\n this.setState(prevState => ({\n toasts: [options, ...prevState.toasts],\n }));\n } else {\n this.setState(prevState => ({\n toasts: prevState.toasts.map(t => (t.key === key ? options : t)),\n }));\n }\n return options.key;\n }\n\n public dismiss(key: string, timeoutExpired = false) {\n this.setState(({ toasts }) => ({\n toasts: toasts.filter(t => {\n const matchesKey = t.key === key;\n if (matchesKey) {\n t.onDismiss?.(timeoutExpired);\n }\n return !matchesKey;\n }),\n }));\n }\n\n public clear() {\n this.state.toasts.forEach(t => t.onDismiss?.(false));\n this.setState({ toasts: [] });\n }\n\n public getToasts() {\n return this.state.toasts;\n }\n\n public render() {\n const classes = classNames(Classes.TOAST_CONTAINER, this.getPositionClasses(), this.props.className);\n return (\n 0 || this.props.children != null}\n onClose={this.handleClose}\n // $pt-transition-duration * 3 + $pt-transition-duration / 2\n transitionDuration={350}\n transitionName={Classes.TOAST}\n usePortal={this.props.usePortal}\n >\n {this.state.toasts.map(this.renderToast, this)}\n {this.props.children}\n \n );\n }\n\n protected validateProps({ maxToasts }: IToasterProps) {\n // maximum number of toasts should not be a number less than 1\n if (maxToasts !== undefined && maxToasts < 1) {\n throw new Error(TOASTER_MAX_TOASTS_INVALID);\n }\n }\n\n private isNewToastKey(key: string) {\n return this.state.toasts.every(toast => toast.key !== key);\n }\n\n private dismissIfAtLimit() {\n if (this.state.toasts.length === this.props.maxToasts) {\n // dismiss the oldest toast to stay within the maxToasts limit\n this.dismiss(this.state.toasts[this.state.toasts.length - 1].key!);\n }\n }\n\n private renderToast = (toast: IToastOptions) => {\n return ;\n };\n\n private createToastOptions(props: IToastProps, key = `toast-${this.toastId++}`) {\n // clone the object before adding the key prop to avoid leaking the mutation\n return { ...props, key };\n }\n\n private getPositionClasses() {\n const positions = this.props.position!.split(\"-\");\n // NOTE that there is no -center class because that's the default style\n return [\n ...positions.map(p => `${Classes.TOAST_CONTAINER}-${p.toLowerCase()}`),\n `${Classes.TOAST_CONTAINER}-${this.props.usePortal ? \"in-portal\" : \"inline\"}`,\n ];\n }\n\n private getDismissHandler = (toast: IToastOptions) => (timeoutExpired: boolean) => {\n this.dismiss(toast.key, timeoutExpired);\n };\n\n private handleClose = (e: React.SyntheticEvent) => {\n // NOTE that `e` isn't always a KeyboardEvent but that's the only type we care about\n // HACKHACK: https://github.com/palantir/blueprint/issues/4165\n /* eslint-disable-next-line deprecation/deprecation */\n if ((e as React.KeyboardEvent).which === ESCAPE) {\n this.clear();\n }\n };\n}\n\nexport const OverlayToaster = Toaster;\nexport type OverlayToasterProps = IToasterProps;\n","/// \nimport * as SuperAgent from 'superagent';\nimport * as Blueprint from '@blueprintjs/core';\n\nlet toaster: Blueprint.IToaster;\n\nexport function success(message: string, timeout?: number): string {\n\tif (timeout === undefined) {\n\t\ttimeout = 5000;\n\t}\n\n\treturn toaster.show({\n\t\tintent: Blueprint.Intent.SUCCESS,\n\t\tmessage: message,\n\t\ttimeout: timeout,\n\t});\n}\n\nexport function info(message: string, timeout?: number): string {\n\tif (timeout === undefined) {\n\t\ttimeout = 5000;\n\t}\n\n\treturn toaster.show({\n\t\tintent: Blueprint.Intent.PRIMARY,\n\t\tmessage: message,\n\t\ttimeout: timeout,\n\t});\n}\n\nexport function warning(message: string, timeout?: number): string {\n\tif (timeout === undefined) {\n\t\ttimeout = 5000;\n\t}\n\n\treturn toaster.show({\n\t\tintent: Blueprint.Intent.WARNING,\n\t\tmessage: message,\n\t\ttimeout: timeout,\n\t});\n}\n\nexport function error(message: string, timeout?: number): string {\n\tif (timeout === undefined) {\n\t\ttimeout = 5000;\n\t}\n\n\treturn toaster.show({\n\t\tintent: Blueprint.Intent.DANGER,\n\t\tmessage: message,\n\t\ttimeout: timeout,\n\t});\n}\n\nexport function errorRes(res: SuperAgent.Response, message: string,\n\t\t\t\t\t\t\t\t\t\t\t\t timeout?: number): string {\n\tif (timeout === undefined) {\n\t\ttimeout = 5000;\n\t}\n\n\ttry {\n\t\tmessage = res.body.error_msg || message;\n\t} catch(err) {\n\t}\n\n\treturn toaster.show({\n\t\tintent: Blueprint.Intent.DANGER,\n\t\tmessage: message,\n\t\ttimeout: timeout,\n\t});\n}\n\nexport function dismiss(key: string) {\n\ttoaster.dismiss(key);\n}\n\nexport function init() {\n\tif (toaster) {\n\t\treturn;\n\t}\n\n\tif (Blueprint.Toaster) {\n\t\ttoaster = Blueprint.Toaster.create({\n\t\t\tposition: Blueprint.Position.BOTTOM,\n\t\t}, document.getElementById('toaster'));\n\t} else {\n\t\tconsole.error('Failed to load toaster')\n\t}\n}\n","/// \nimport * as SuperAgent from 'superagent';\nimport * as Theme from './Theme';\n\nexport let token = '';\n\nexport function load(): Promise {\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/csrf')\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\ttoken = res.body.token;\n\n\t\t\t\tif (res.body.theme === 'light') {\n\t\t\t\t\tTheme.light();\n\t\t\t\t} else {\n\t\t\t\t\tTheme.dark();\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n","/// \nimport * as SuperAgent from 'superagent';\nimport * as Alert from './Alert';\nimport * as Csrf from './Csrf';\n\nexport interface Callback {\n\t(): void;\n}\n\nlet callbacks: Set = new Set();\nexport let theme = 'dark';\n\nexport function save(): Promise {\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/theme')\n\t\t\t.send({\n\t\t\t\ttheme: theme,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to save theme');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function light(): void {\n\ttheme = 'light';\n\tdocument.body.className = '';\n\tcallbacks.forEach((callback: Callback): void => {\n\t\tcallback();\n\t});\n}\n\nexport function dark(): void {\n\ttheme = 'dark';\n\tdocument.body.className = 'bp3-dark';\n\tcallbacks.forEach((callback: Callback): void => {\n\t\tcallback();\n\t});\n}\n\nexport function toggle(): void {\n\tif (theme === 'light') {\n\t\tdark();\n\t} else {\n\t\tlight();\n\t}\n}\n\nexport function editorTheme(): string {\n\tif (theme === \"light\") {\n\t\treturn \"eclipse\";\n\t} else {\n\t\treturn \"dracula\";\n\t}\n}\n\nexport function chartColor1(): string {\n\tif (theme === \"light\") {\n\t\treturn 'rgba(0, 0, 0, 0.9)';\n\t} else {\n\t\treturn 'rgba(255, 255, 255, 1)';\n\t}\n}\n\nexport function chartColor2(): string {\n\tif (theme === \"light\") {\n\t\treturn 'rgba(0, 0, 0, 0.2)';\n\t} else {\n\t\treturn 'rgba(255, 255, 255, 0.2)';\n\t}\n}\n\nexport function chartColor3(): string {\n\tif (theme === \"light\") {\n\t\treturn '#6f6f6f';\n\t} else {\n\t\treturn '#e5e5e5';\n\t}\n}\n\nexport function addChangeListener(callback: Callback): void {\n\tcallbacks.add(callback);\n}\n\nexport function removeChangeListener(callback: () => void): void {\n\tcallbacks.delete(callback);\n}\n","/// \nimport * as Flux from 'flux';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass Dispatcher extends Flux.Dispatcher {}\nexport default new Dispatcher();\n","/// \nimport * as Events from 'events';\n\nexport default class EventEmitter extends Events.EventEmitter {\n\temitDefer(event: string | symbol, ...args: any[]): void {\n\t\tsetTimeout((): void => {\n\t\t\tthis.emit(event, ...args);\n\t\t});\n\t}\n}\n","/// \nexport const SYNC = 'subscription.sync';\nexport const CHANGE = 'subscription.change';\n\nexport interface Subscription {\n\tactive?: boolean;\n\tstatus?: string;\n\tplan?: string;\n\tquantity?: number;\n\tamount?: number;\n\tperiod_end?: string;\n\ttrial_end?: string;\n\tcancel_at_period_end?: boolean;\n\tbalance?: number;\n\turl_key?: string;\n}\n\nexport type SubscriptionRo = Readonly;\n\nexport interface SubscriptionDispatch {\n\ttype: string;\n\tdata?: Subscription;\n}\n","/// \nexport const CHANGE = 'change';\n\nexport interface Dispatch {\n\ttype: string;\n\tdata?: any;\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as SubscriptionTypes from '../types/SubscriptionTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass SubscriptionStore extends EventEmitter {\n\t_subscription: SubscriptionTypes.SubscriptionRo;\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget subscription(): SubscriptionTypes.SubscriptionRo {\n\t\treturn this._subscription;\n\t}\n\n\tget subscriptionM(): SubscriptionTypes.Subscription {\n\t\tif (this._subscription) {\n\t\t\treturn {\n\t\t\t\t...this._subscription,\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_sync(subscription: SubscriptionTypes.Subscription): void {\n\t\tthis._subscription = Object.freeze(subscription);\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: SubscriptionTypes.SubscriptionDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase SubscriptionTypes.SYNC:\n\t\t\t\tthis._sync(action.data);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new SubscriptionStore();\n","/// \nexport const ADD = 'loading.add';\nexport const DONE = 'loading.done';\n\nexport interface LoadingDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as LoadingTypes from '../types/LoadingTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass LoadingStore extends EventEmitter {\n\t_loaders: Set = new Set();\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget loading(): boolean {\n\t\treturn !!this._loaders.size;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_add(id: string): void {\n\t\tthis._loaders.add(id);\n\t\tthis.emitChange();\n\t}\n\n\t_done(id: string): void {\n\t\tthis._loaders.delete(id);\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: LoadingTypes.LoadingDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase LoadingTypes.ADD:\n\t\t\t\tthis._add(action.data.id);\n\t\t\t\tbreak;\n\n\t\t\tcase LoadingTypes.DONE:\n\t\t\t\tthis._done(action.data.id);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new LoadingStore();\n","/// \nimport * as React from 'react';\nimport LoadingStore from '../stores/LoadingStore';\n\ninterface Props {\n\tstyle?: React.CSSProperties;\n\tsize?: string;\n\tintent?: string;\n}\n\ninterface State {\n\tloading: boolean;\n}\n\nconst css = {\n\tprogress: {\n\t\twidth: '100%',\n\t\theight: '4px',\n\t\tborderRadius: 0,\n\t} as React.CSSProperties,\n\tprogressBar: {\n\t\twidth: '50%',\n\t\tborderRadius: 0,\n\t} as React.CSSProperties,\n};\n\nexport default class LoadingBar extends React.Component {\n\tconstructor(props: Props, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tloading: LoadingStore.loading,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tLoadingStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tLoadingStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\tloading: LoadingStore.loading,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet progress: JSX.Element;\n\n\t\tif (!this.state.loading) {\n\t\t\tprogress =
    ;\n\t\t} else {\n\t\t\tlet className = 'bp3-progress-bar bp3-no-stripes bp3-no-animation ';\n\t\t\tif (this.props.intent) {\n\t\t\t\tclassName += ' bp3-intent-' + this.props.intent;\n\t\t\t}\n\n\t\t\tprogress =
    \n\t\t\t\t\n\t\t\t
    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t{progress}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as Flux from 'flux';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass EventDispatcher extends Flux.Dispatcher {}\nexport default new EventDispatcher();\n","/// \nexport function uuid(): string {\n\treturn (+new Date() + Math.floor(Math.random() * 999999)).toString(36);\n}\n\nexport function random(min: number, max: number): number {\n\treturn Math.round(Math.random() * (max - min) + min);\n}\n\nexport function zeroPad(num: number, width: number): string {\n\tif (num < Math.pow(10, width)) {\n\t\treturn ('0'.repeat(width - 1) + num).slice(-width);\n\t}\n\treturn num.toString();\n}\n\nexport function capitalize(str: string): string {\n\treturn str.charAt(0).toUpperCase() + str.slice(1);\n}\n\nexport function formatAmount(amount: number): string {\n\tif (!amount) {\n\t\treturn '-';\n\t}\n\treturn '$' + (amount / 100).toFixed(2);\n}\n\nexport function formatBytes(bytes: number, decimals: number): string {\n\tif (!bytes) {\n\t\treturn '0B';\n\t}\telse if (bytes < 1024) {\n\t\treturn bytes + 'B';\n\t} else if (bytes < 1048576) {\n\t\treturn Math.round(bytes / 1024).toFixed(decimals) + 'KB';\n\t} else if (bytes < 1073741824) {\n\t\treturn (bytes / 1048576).toFixed(decimals) + 'MB';\n\t} else if (bytes < 1099511627776) {\n\t\treturn (bytes / 1073741824).toFixed(decimals) + 'GB';\n\t} else {\n\t\treturn (bytes / 1099511627776).toFixed(decimals) + 'TB';\n\t}\n}\n\nexport function formatMs(ms: number): string {\n\tif (ms < 1000) {\n\t\treturn ms + 'ms';\n\t} else {\n\t\treturn (ms / 1000) + 's';\n\t}\n}\n\nexport function formatUptime(time: number): string {\n\tlet days = Math.floor(time / 86400);\n\ttime -= days * 86400;\n\tlet hours = Math.floor(time / 3600);\n\ttime -= hours * 3600;\n\tlet minutes = Math.floor(time / 60);\n\ttime -= minutes * 60;\n\treturn days + 'd ' + hours + 'h ' + minutes + 'm ' + time + 's';\n}\n\nexport function formatDate(dateStr: string): string {\n\tif (!dateStr || dateStr === '0001-01-01T00:00:00Z') {\n\t\treturn '';\n\t}\n\n\tlet date = new Date(dateStr);\n\tlet str = '';\n\n\tlet hours = date.getHours();\n\tlet period = 'AM';\n\n\tif (hours > 12) {\n\t\tperiod = 'PM';\n\t\thours -= 12;\n\t} else if (hours === 0) {\n\t\thours = 12;\n\t}\n\n\tlet day;\n\tswitch (date.getDay()) {\n\t\tcase 0:\n\t\t\tday = 'Sun';\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tday = 'Mon';\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tday = 'Tue';\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tday = 'Wed';\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tday = 'Thu';\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tday = 'Fri';\n\t\t\tbreak;\n\t\tcase 6:\n\t\t\tday = 'Sat';\n\t\t\tbreak;\n\t}\n\n\tlet month;\n\tswitch (date.getMonth()) {\n\t\tcase 0:\n\t\t\tmonth = 'Jan';\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tmonth = 'Feb';\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tmonth = 'Mar';\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tmonth = 'Apr';\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tmonth = 'May';\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tmonth = 'Jun';\n\t\t\tbreak;\n\t\tcase 6:\n\t\t\tmonth = 'Jul';\n\t\t\tbreak;\n\t\tcase 7:\n\t\t\tmonth = 'Aug';\n\t\t\tbreak;\n\t\tcase 8:\n\t\t\tmonth = 'Sep';\n\t\t\tbreak;\n\t\tcase 9:\n\t\t\tmonth = 'Oct';\n\t\t\tbreak;\n\t\tcase 10:\n\t\t\tmonth = 'Nov';\n\t\t\tbreak;\n\t\tcase 11:\n\t\t\tmonth = 'Dec';\n\t\t\tbreak;\n\t}\n\n\tstr += day + ' ';\n\tstr += date.getDate() + ' ';\n\tstr += month + ' ';\n\tstr += date.getFullYear() + ', ';\n\tstr += hours + ':';\n\tstr += zeroPad(date.getMinutes(), 2) + ':';\n\tstr += zeroPad(date.getSeconds(), 2) + ' ';\n\tstr += period;\n\n\treturn str;\n}\n\nexport function formatDateShort(dateStr: string): string {\n\tif (!dateStr || dateStr === '0001-01-01T00:00:00Z') {\n\t\treturn '';\n\t}\n\n\tlet date = new Date(dateStr);\n\tlet curDate = new Date();\n\n\tlet month;\n\tswitch (date.getMonth()) {\n\t\tcase 0:\n\t\t\tmonth = 'Jan';\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tmonth = 'Feb';\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tmonth = 'Mar';\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tmonth = 'Apr';\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tmonth = 'May';\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tmonth = 'Jun';\n\t\t\tbreak;\n\t\tcase 6:\n\t\t\tmonth = 'Jul';\n\t\t\tbreak;\n\t\tcase 7:\n\t\t\tmonth = 'Aug';\n\t\t\tbreak;\n\t\tcase 8:\n\t\t\tmonth = 'Sep';\n\t\t\tbreak;\n\t\tcase 9:\n\t\t\tmonth = 'Oct';\n\t\t\tbreak;\n\t\tcase 10:\n\t\t\tmonth = 'Nov';\n\t\t\tbreak;\n\t\tcase 11:\n\t\t\tmonth = 'Dec';\n\t\t\tbreak;\n\t}\n\n\tlet str = month + ' ' + date.getDate();\n\n\tif (date.getFullYear() !== curDate.getFullYear()) {\n\t\tstr += ' ' + date.getFullYear();\n\t}\n\n\treturn str;\n}\n\nexport function formatDateShortTime(dateStr: string): string {\n\tif (!dateStr || dateStr === '0001-01-01T00:00:00Z') {\n\t\treturn '';\n\t}\n\n\tlet date = new Date(dateStr);\n\tlet curDate = new Date();\n\n\tlet month;\n\tswitch (date.getMonth()) {\n\t\tcase 0:\n\t\t\tmonth = 'Jan';\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tmonth = 'Feb';\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tmonth = 'Mar';\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tmonth = 'Apr';\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tmonth = 'May';\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tmonth = 'Jun';\n\t\t\tbreak;\n\t\tcase 6:\n\t\t\tmonth = 'Jul';\n\t\t\tbreak;\n\t\tcase 7:\n\t\t\tmonth = 'Aug';\n\t\t\tbreak;\n\t\tcase 8:\n\t\t\tmonth = 'Sep';\n\t\t\tbreak;\n\t\tcase 9:\n\t\t\tmonth = 'Oct';\n\t\t\tbreak;\n\t\tcase 10:\n\t\t\tmonth = 'Nov';\n\t\t\tbreak;\n\t\tcase 11:\n\t\t\tmonth = 'Dec';\n\t\t\tbreak;\n\t}\n\n\tlet str = month + ' ' + date.getDate();\n\n\tif (date.getFullYear() !== curDate.getFullYear()) {\n\t\tstr += ' ' + date.getFullYear();\n\t} else if (date.getMonth() === curDate.getMonth() &&\n\t\t\tdate.getDate() === curDate.getDate()) {\n\t\tlet hours = date.getHours();\n\t\tlet period = 'AM';\n\n\t\tif (hours > 12) {\n\t\t\tperiod = 'PM';\n\t\t\thours -= 12;\n\t\t} else if (hours === 0) {\n\t\t\thours = 12;\n\t\t}\n\n\t\tstr = hours + ':';\n\t\tstr += zeroPad(date.getMinutes(), 2) + ':';\n\t\tstr += zeroPad(date.getSeconds(), 2) + ' ';\n\t\tstr += period;\n\t}\n\n\treturn str;\n}\n","/// \nimport Dispatcher from './dispatcher/Dispatcher';\nimport * as LoadingTypes from './types/LoadingTypes';\nimport * as MiscUtils from './utils/MiscUtils';\n\nexport default class Loader {\n\t_id: string;\n\n\tconstructor() {\n\t\tthis._id = MiscUtils.uuid();\n\t}\n\n\tloading(): Loader {\n\t\tDispatcher.dispatch({\n\t\t\ttype: LoadingTypes.ADD,\n\t\t\tdata: {\n\t\t\t\tid: this._id,\n\t\t\t},\n\t\t});\n\t\treturn this;\n\t}\n\n\tdone(): Loader {\n\t\tDispatcher.dispatch({\n\t\t\ttype: LoadingTypes.DONE,\n\t\t\tdata: {\n\t\t\t\tid: this._id,\n\t\t\t},\n\t\t});\n\t\treturn this;\n\t}\n}\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as SubscriptionTypes from '../types/SubscriptionTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\n\nexport function sync(update: boolean): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/subscription' + (update ? '/update' : ''))\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to sync subscription');\n\t\t\t\t\treject(err);\n\n\t\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\t\ttype: SubscriptionTypes.SYNC,\n\t\t\t\t\t\tdata: {},\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: SubscriptionTypes.SYNC,\n\t\t\t\t\tdata: res.body,\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function activate(license: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/subscription')\n\t\t\t.send({\n\t\t\t\tlicense: license,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to activate subscription');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: SubscriptionTypes.SYNC,\n\t\t\t\t\tdata: res.body,\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function checkout(plan: string, card: string,\n\t\temail: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('https://app.pritunl.com/subscription')\n\t\t\t.send({\n\t\t\t\tplan: plan,\n\t\t\t\tcard: card,\n\t\t\t\temail: email,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve('');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to checkout');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve(res.body.msg);\n\n\t\t\t\tsync(true);\n\t\t\t});\n\t});\n}\n\nexport function payment(key: string, plan: string, card: string,\n\t\temail: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('https://app.pritunl.com/subscription')\n\t\t\t.send({\n\t\t\t\tkey: key,\n\t\t\t\tplan: plan,\n\t\t\t\tcard: card,\n\t\t\t\temail: email,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to update payment');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\n\t\t\t\tsync(true);\n\t\t\t});\n\t});\n}\n\nexport function cancel(key: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('https://app.pritunl.com/subscription')\n\t\t\t.send({\n\t\t\t\tkey: key,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to cancel subscription');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\n\t\t\t\tsync(true);\n\t\t\t});\n\t});\n}\n\nEventDispatcher.register((action: SubscriptionTypes.SubscriptionDispatch) => {\n\tswitch (action.type) {\n\t\tcase SubscriptionTypes.CHANGE:\n\t\t\tsync(false);\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as MobileDetect from 'mobile-detect';\n\nlet md = new MobileDetect(window.navigator.userAgent);\n\nexport const mobile = !!md.mobile();\n\nexport const loadDelay = 700;\n\nexport const u2fErrorCodes: {[index: number]: string} = {\n\t0: 'ok',\n\t1: 'other',\n\t2: 'bad request',\n\t3: 'configuration unsupported',\n\t4: 'device ineligible',\n\t5: 'timed out',\n};\n\nexport const sessionTypes: {[key: string]: string} = {\n\tadmin: 'Admin',\n\tproxy: 'Service',\n\tuser: 'User',\n};\n\nexport const operatingSystems: {[key: string]: string} = {\n\tlinux: 'Linux',\n\tmacos_1010: 'macOS 10.10',\n\tmacos_1011: 'macOS 10.11',\n\tmacos_1012: 'macOS 10.12',\n\tmacos_1013: 'macOS 10.13',\n\tmacos_1014: 'macOS 10.14',\n\tmacos_1015: 'macOS 10.15',\n\tmacos11: 'macOS 11',\n\tmacos12: 'macOS 12',\n\tmacos13: 'macOS 13',\n\tmacos14: 'macOS 14',\n\twindows_xp: 'Windows XP',\n\twindows_7: 'Windows 7',\n\twindows_vista: 'Windows Vista',\n\twindows_8: 'Windows 8',\n\twindows_10: 'Windows 10',\n\twindows_11: 'Windows 11',\n\tchrome_os: 'Chrome OS',\n\tios_8: 'iOS 8',\n\tios_9: 'iOS 9',\n\tios_10: 'iOS 10',\n\tios_11: 'iOS 11',\n\tios_12: 'iOS 12',\n\tios_13: 'iOS 13',\n\tios_14: 'iOS 14',\n\tios_15: 'iOS 15',\n\tios_16: 'iOS 16',\n\tios_17: 'iOS 17',\n\tios_18: 'iOS 18',\n\tandroid_4: 'Android KitKat 4.4',\n\tandroid_5: 'Android Lollipop 5',\n\tandroid_6: 'Android Marshmallow 6',\n\tandroid_7: 'Android Nougat 7',\n\tandroid_8: 'Android Oreo 8',\n\tandroid_9: 'Android Pie 9',\n\tandroid_10: 'Android 10',\n\tandroid_11: 'Android 11',\n\tandroid_12: 'Android 12',\n\tandroid_13: 'Android 13',\n\tandroid_14: 'Android 14',\n\tblackberry_10: 'Blackerry 10',\n\twindows_phone: 'Windows Phone',\n\tfirefox_os: 'Firefox OS',\n\tkindle: 'Kindle',\n};\n\nexport const browsers: {[key: string]: string} = {\n\tchrome: 'Chrome',\n\tchrome_mobile: 'Chrome Mobile',\n\tsafari: 'Safari',\n\tsafari_mobile: 'Safari Mobile',\n\tfirefox: 'Firefox',\n\tfirefox_mobile: 'Firefox Mobile',\n\tedge: 'Microsoft Edge',\n\tinternet_explorer: 'Internet Explorer',\n\tinternet_explorer_mobile: 'Internet Explorer Mobile',\n\topera: 'Opera',\n\topera_mobile: 'Opera Mobile',\n};\n\nexport const locations: {[key: string]: string} = {\n\tUS: 'United States',\n\tUS_AL: 'Alabama, US',\n\tUS_AK: 'Alaska, US',\n\tUS_AZ: 'Arizona, US',\n\tUS_AR: 'Arkansas, US',\n\tUS_CA: 'California, US',\n\tUS_CO: 'Colorado, US',\n\tUS_CT: 'Connecticut, US',\n\tUS_DE: 'Delaware, US',\n\tUS_FL: 'Florida, US',\n\tUS_GA: 'Georgia, US',\n\tUS_HI: 'Hawaii, US',\n\tUS_ID: 'Idaho, US',\n\tUS_IL: 'Illinois, US',\n\tUS_IN: 'Indiana, US',\n\tUS_IA: 'Iowa, US',\n\tUS_KS: 'Kansas, US',\n\tUS_KY: 'Kentucky, US',\n\tUS_LA: 'Louisiana, US',\n\tUS_ME: 'Maine, US',\n\tUS_MD: 'Maryland, US',\n\tUS_MA: 'Massachusetts, US',\n\tUS_MI: 'Michigan, US',\n\tUS_MN: 'Minnesota, US',\n\tUS_MS: 'Mississippi, US',\n\tUS_MO: 'Missouri, US',\n\tUS_MT: 'Montana, US',\n\tUS_NE: 'Nebraska, US',\n\tUS_NV: 'Nevada, US',\n\tUS_NH: 'New Hampshire, US',\n\tUS_NJ: 'New Jersey, US',\n\tUS_NM: 'New Mexico, US',\n\tUS_NY: 'New York, US',\n\tUS_NC: 'North Carolina, US',\n\tUS_ND: 'North Dakota, US',\n\tUS_OH: 'Ohio, US',\n\tUS_OK: 'Oklahoma, US',\n\tUS_OR: 'Oregon, US',\n\tUS_PA: 'Pennsylvania, US',\n\tUS_RI: 'Rhode Island, US',\n\tUS_SC: 'South Carolina, US',\n\tUS_SD: 'South Dakota, US',\n\tUS_TN: 'Tennessee, US',\n\tUS_TX: 'Texas, US',\n\tUS_UT: 'Utah, US',\n\tUS_VT: 'Vermont, US',\n\tUS_VA: 'Virginia, US',\n\tUS_WA: 'Washington, US',\n\tUS_DC: 'Washington DC, US',\n\tUS_WV: 'West Virginia, US',\n\tUS_WI: 'Wisconsin, US',\n\tUS_WY: 'Wyoming, US',\n\tAF: 'Afghanistan',\n\tAX: 'Åland Islands',\n\tAL: 'Albania',\n\tDZ: 'Algeria',\n\tAS: 'American Samoa',\n\tAD: 'Andorra',\n\tAO: 'Angola',\n\tAI: 'Anguilla',\n\tAQ: 'Antarctica',\n\tAG: 'Antigua and Barbuda',\n\tAR: 'Argentina',\n\tAM: 'Armenia',\n\tAW: 'Aruba',\n\tAU: 'Australia',\n\tAT: 'Austria',\n\tAZ: 'Azerbaijan',\n\tBS: 'Bahamas',\n\tBH: 'Bahrain',\n\tBD: 'Bangladesh',\n\tBB: 'Barbados',\n\tBY: 'Belarus',\n\tBE: 'Belgium',\n\tBZ: 'Belize',\n\tBJ: 'Benin',\n\tBM: 'Bermuda',\n\tBT: 'Bhutan',\n\tBO: 'Bolivia',\n\tBQ: 'Bonaire',\n\tBA: 'Bosnia and Herzegovina',\n\tBW: 'Botswana',\n\tBV: 'Bouvet Island',\n\tBR: 'Brazil',\n\tIO: 'British Indian Ocean Territory',\n\tBN: 'Brunei Darussalam',\n\tBG: 'Bulgaria',\n\tBF: 'Burkina Faso',\n\tBI: 'Burundi',\n\tCV: 'Cabo Verde',\n\tKH: 'Cambodia',\n\tCM: 'Cameroon',\n\tCA: 'Canada',\n\tKY: 'Cayman Islands',\n\tCF: 'Central African Republic',\n\tTD: 'Chad',\n\tCL: 'Chile',\n\tCN: 'China',\n\tCX: 'Christmas Island',\n\tCC: 'Cocos Islands',\n\tCO: 'Colombia',\n\tKM: 'Comoros',\n\tCG: 'Congo',\n\tCD: 'Congo Democratic Republic',\n\tCK: 'Cook Islands',\n\tCR: 'Costa Rica',\n\tCI: 'Côte dIvoire',\n\tHR: 'Croatia',\n\tCU: 'Cuba',\n\tCW: 'Curaçao',\n\tCY: 'Cyprus',\n\tCZ: 'Czechia',\n\tDK: 'Denmark',\n\tDJ: 'Djibouti',\n\tDM: 'Dominica',\n\tDO: 'Dominican Republic',\n\tEC: 'Ecuador',\n\tEG: 'Egypt',\n\tSV: 'El Salvador',\n\tGQ: 'Equatorial Guinea',\n\tER: 'Eritrea',\n\tEE: 'Estonia',\n\tET: 'Ethiopia',\n\tFK: 'Falkland Islands',\n\tFO: 'Faroe Islands',\n\tFJ: 'Fiji',\n\tFI: 'Finland',\n\tFR: 'France',\n\tGF: 'French Guiana',\n\tPF: 'French Polynesia',\n\tTF: 'French Southern Territories',\n\tGA: 'Gabon',\n\tGM: 'Gambia',\n\tGE: 'Georgia',\n\tDE: 'Germany',\n\tGH: 'Ghana',\n\tGI: 'Gibraltar',\n\tGR: 'Greece',\n\tGL: 'Greenland',\n\tGD: 'Grenada',\n\tGP: 'Guadeloupe',\n\tGU: 'Guam',\n\tGT: 'Guatemala',\n\tGG: 'Guernsey',\n\tGN: 'Guinea',\n\tGW: 'Guinea-Bissau',\n\tGY: 'Guyana',\n\tHT: 'Haiti',\n\tHM: 'Heard Island and McDonald Islands',\n\tVA: 'Holy See',\n\tHN: 'Honduras',\n\tHK: 'Hong Kong',\n\tHU: 'Hungary',\n\tIS: 'Iceland',\n\tIN: 'India',\n\tID: 'Indonesia',\n\tIR: 'Iran',\n\tIQ: 'Iraq',\n\tIE: 'Ireland',\n\tIM: 'Isle of Man',\n\tIL: 'Israel',\n\tIT: 'Italy',\n\tJM: 'Jamaica',\n\tJP: 'Japan',\n\tJE: 'Jersey',\n\tJO: 'Jordan',\n\tKZ: 'Kazakhstan',\n\tKE: 'Kenya',\n\tKI: 'Kiribati',\n\tKP: 'North Korea',\n\tKR: 'South Korea',\n\tKW: 'Kuwait',\n\tKG: 'Kyrgyzstan',\n\tLA: 'Lao Peoples',\n\tLV: 'Latvia',\n\tLB: 'Lebanon',\n\tLS: 'Lesotho',\n\tLR: 'Liberia',\n\tLY: 'Libya',\n\tLI: 'Liechtenstein',\n\tLT: 'Lithuania',\n\tLU: 'Luxembourg',\n\tMO: 'Macao',\n\tMK: 'Macedonia',\n\tMG: 'Madagascar',\n\tMW: 'Malawi',\n\tMY: 'Malaysia',\n\tMV: 'Maldives',\n\tML: 'Mali',\n\tMT: 'Malta',\n\tMH: 'Marshall Islands',\n\tMQ: 'Martinique',\n\tMR: 'Mauritania',\n\tMU: 'Mauritius',\n\tYT: 'Mayotte',\n\tMX: 'Mexico',\n\tFM: 'Micronesia',\n\tMD: 'Moldova',\n\tMC: 'Monaco',\n\tMN: 'Mongolia',\n\tME: 'Montenegro',\n\tMS: 'Montserrat',\n\tMA: 'Morocco',\n\tMZ: 'Mozambique',\n\tMM: 'Myanmar',\n\tNA: 'Namibia',\n\tNR: 'Nauru',\n\tNP: 'Nepal',\n\tNL: 'Netherlands',\n\tNC: 'New Caledonia',\n\tNZ: 'New Zealand',\n\tNI: 'Nicaragua',\n\tNE: 'Niger',\n\tNG: 'Nigeria',\n\tNU: 'Niue',\n\tNF: 'Norfolk Island',\n\tMP: 'Northern Mariana Islands',\n\tNO: 'Norway',\n\tOM: 'Oman',\n\tPK: 'Pakistan',\n\tPW: 'Palau',\n\tPS: 'Palestine, State of',\n\tPA: 'Panama',\n\tPG: 'Papua New Guinea',\n\tPY: 'Paraguay',\n\tPE: 'Peru',\n\tPH: 'Philippines',\n\tPN: 'Pitcairn',\n\tPL: 'Poland',\n\tPT: 'Portugal',\n\tPR: 'Puerto Rico',\n\tQA: 'Qatar',\n\tRE: 'Réunion',\n\tRO: 'Romania',\n\tRU: 'Russian Federation',\n\tRW: 'Rwanda',\n\tBL: 'Saint Barthélemy',\n\tSH: 'Saint Helena',\n\tKN: 'Saint Kitts and Nevis',\n\tLC: 'Saint Lucia',\n\tMF: 'Saint Martin',\n\tPM: 'Saint Pierre and Miquelon',\n\tVC: 'Saint Vincent and the Grenadines',\n\tWS: 'Samoa',\n\tSM: 'San Marino',\n\tST: 'Sao Tome and Principe',\n\tSA: 'Saudi Arabia',\n\tSN: 'Senegal',\n\tRS: 'Serbia',\n\tSC: 'Seychelles',\n\tSL: 'Sierra Leone',\n\tSG: 'Singapore',\n\tSX: 'Sint Maarten',\n\tSK: 'Slovakia',\n\tSI: 'Slovenia',\n\tSB: 'Solomon Islands',\n\tSO: 'Somalia',\n\tZA: 'South Africa',\n\tGS: 'South Georgia and the South Sandwich Islands',\n\tSS: 'South Sudan',\n\tES: 'Spain',\n\tLK: 'Sri Lanka',\n\tSD: 'Sudan',\n\tSR: 'Suriname',\n\tSJ: 'Svalbard and Jan Mayen',\n\tSZ: 'Swaziland',\n\tSE: 'Sweden',\n\tCH: 'Switzerland',\n\tSY: 'Syrian Arab Republic',\n\tTW: 'Taiwan',\n\tTJ: 'Tajikistan',\n\tTZ: 'Tanzania',\n\tTH: 'Thailand',\n\tTL: 'Timor-Leste',\n\tTG: 'Togo',\n\tTK: 'Tokelau',\n\tTO: 'Tonga',\n\tTT: 'Trinidad and Tobago',\n\tTN: 'Tunisia',\n\tTR: 'Turkey',\n\tTM: 'Turkmenistan',\n\tTC: 'Turks and Caicos Islands',\n\tTV: 'Tuvalu',\n\tUG: 'Uganda',\n\tUA: 'Ukraine',\n\tAE: 'United Arab Emirates',\n\tGB: 'United Kingdom',\n\tUM: 'United States Minor Outlying Islands',\n\tUY: 'Uruguay',\n\tUZ: 'Uzbekistan',\n\tVU: 'Vanuatu',\n\tVE: 'Venezuela',\n\tVN: 'Viet Nam',\n\tVG: 'British Virgin Islands',\n\tVI: 'US Virgin Islands',\n\tWF: 'Wallis and Futuna',\n\tEH: 'Western Sahara',\n\tYE: 'Yemen',\n\tZM: 'Zambia',\n\tZW: 'Zimbabwe',\n};\n","/// \nimport * as React from 'react';\nimport * as Blueprint from '@blueprintjs/core';\nimport * as Constants from '../Constants';\nimport * as MiscUtils from '../utils/MiscUtils';\n\ninterface Props {\n\tstyle?: React.CSSProperties;\n\tgrouped?: boolean;\n\tclassName?: string;\n\tdialogClassName?: string;\n\thidden?: boolean;\n\tprogressClassName?: string;\n\tlabel?: string;\n\tdialogLabel?: string;\n\tconfirmMsg?: string;\n\tconfirmInput?: boolean;\n\titems?: string[];\n\tdisabled?: boolean;\n\tsafe?: boolean;\n\tonConfirm?: () => void;\n}\n\ninterface State {\n\tinput: string;\n\tdialog: boolean;\n\tconfirm: number;\n\tconfirming: string;\n}\n\nconst css = {\n\tbox: {\n\t\tdisplay: 'inline-flex',\n\t\tverticalAlign: 'middle',\n\t} as React.CSSProperties,\n\tactionProgress: {\n\t\tposition: 'absolute',\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\tborderRadius: 0,\n\t\tborderBottomLeftRadius: '3px',\n\t\tborderBottomRightRadius: '3px',\n\t\twidth: '100%',\n\t\theight: '4px',\n\t} as React.CSSProperties,\n\tsquareActionProgress: {\n\t\tposition: 'absolute',\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\tborderRadius: 0,\n\t\tborderBottomLeftRadius: '1px',\n\t\tborderBottomRightRadius: '3px',\n\t\twidth: '100%',\n\t\theight: '4px',\n\t} as React.CSSProperties,\n\tdialog: {\n\t\twidth: '340px',\n\t\tposition: 'absolute',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '220px',\n\t\tmargin: '18px 0 0 0',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n};\n\nexport default class ConfirmButton extends React.Component {\n\tconstructor(props: Props, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tinput: '',\n\t\t\tdialog: false,\n\t\t\tconfirm: 0,\n\t\t\tconfirming: null,\n\t\t};\n\t}\n\n\topenDialog = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdialog: true,\n\t\t});\n\t}\n\n\tcloseDialog = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdialog: false,\n\t\t});\n\t}\n\n\tcloseDialogConfirm = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdialog: false,\n\t\t});\n\t\tif (this.props.onConfirm) {\n\t\t\tthis.props.onConfirm();\n\t\t}\n\t}\n\n\tconfirm = (evt: React.MouseEvent<{}>): void => {\n\t\tlet confirmId = MiscUtils.uuid();\n\n\t\tif (evt.shiftKey) {\n\t\t\tif (this.props.onConfirm) {\n\t\t\t\tthis.props.onConfirm();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tconfirming: confirmId,\n\t\t});\n\n\t\tlet i = 10;\n\t\tlet id = setInterval(() => {\n\t\t\tif (i > 100) {\n\t\t\t\tclearInterval(id);\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tif (this.state.confirming === confirmId) {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\tconfirm: 0,\n\t\t\t\t\t\t\tconfirming: null,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (this.props.onConfirm) {\n\t\t\t\t\t\t\tthis.props.onConfirm();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}, 250);\n\t\t\t\treturn;\n\t\t\t} else if (!this.state.confirming) {\n\t\t\t\tclearInterval(id);\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tconfirm: 0,\n\t\t\t\t\tconfirming: null,\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (i % 10 === 0) {\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tconfirm: i / 10,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\ti += 2;\n\t\t}, 8);\n\t}\n\n\tclearConfirm = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tconfirm: 0,\n\t\t\tconfirming: null,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet dialog = Constants.mobile || this.props.safe;\n\n\t\tlet style = {\n\t\t\t...this.props.style,\n\t\t};\n\t\tstyle.position = 'relative';\n\n\t\tlet className = this.props.className || '';\n\t\tif (!this.props.label) {\n\t\t\tclassName += ' bp3-button-empty';\n\t\t}\n\n\t\tlet dialogClassName = this.props.dialogClassName ||\n\t\t\tthis.props.className || '';\n\t\tif (!this.props.label && !this.props.dialogLabel) {\n\t\t\tdialogClassName += ' bp3-button-empty';\n\t\t}\n\n\t\tlet confirmInput: JSX.Element;\n\t\tif (this.props.confirmInput) {\n\t\t\tconfirmInput = \n\t\t\t\tEnter \"delete\" to confirm:\n\t\t\t\t {\n\t\t\t\t\t\tif (evt.key === \"Enter\" && this.state.input === 'delete') {\n\t\t\t\t\t\t\tthis.closeDialogConfirm();\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={(evt): void => {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\tinput: evt.target.value,\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t;\n\t\t}\n\n\t\tif (dialog) {\n\t\t\tlet confirmMsg = this.props.confirmMsg ? this.props.confirmMsg :\n\t\t\t\t'Confirm ' + (this.props.label || '');\n\t\t\tlet itemsList: JSX.Element;\n\t\t\tif (this.props.items) {\n\t\t\t\tlet items: JSX.Element[] = [];\n\t\t\t\tfor (let item of this.props.items) {\n\t\t\t\t\titems.push(
  • {item}
  • );\n\t\t\t\t}\n\t\t\t\titemsList =
      {items}
    ;\n\t\t\t}\n\n\t\t\treturn
    \n\t\t\t\t\n\t\t\t\t\t{this.props.label}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t{confirmMsg}\n\t\t\t\t\t\t{itemsList}\n\t\t\t\t\t\t{confirmInput}\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\tCancel\n\t\t\t\t\t\t\t{this.props.dialogLabel || this.props.label}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t} else {\n\t\t\tlet confirmElem: JSX.Element;\n\n\t\t\tif (this.state.confirming) {\n\t\t\t\tlet confirmStyle = {\n\t\t\t\t\twidth: this.state.confirm * 10 + '%',\n\t\t\t\t\tbackgroundColor: style.color,\n\t\t\t\t\tborderRadius: 0,\n\t\t\t\t\tleft: 0,\n\t\t\t\t};\n\n\t\t\t\tlet progressStyle: React.CSSProperties;\n\t\t\t\tif (this.props.grouped) {\n\t\t\t\t\tprogressStyle = css.squareActionProgress;\n\t\t\t\t} else {\n\t\t\t\t\tprogressStyle = css.actionProgress;\n\t\t\t\t}\n\n\t\t\t\tconfirmElem = \n\t\t\t\t\t
    \n\t\t\t\t
    ;\n\t\t\t}\n\n\t\t\treturn \n\t\t\t\t{this.props.label}\n\t\t\t\t{confirmElem}\n\t\t\t;\n\t\t}\n\t}\n}\n","/// \nimport * as React from 'react';\nimport ReactStripeCheckout from 'react-stripe-checkout';\nimport * as SubscriptionActions from '../actions/SubscriptionActions';\nimport * as SubscriptionTypes from '../types/SubscriptionTypes';\nimport SubscriptionStore from '../stores/SubscriptionStore';\nimport * as Alert from '../Alert';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport ConfirmButton from './ConfirmButton';\n\ninterface State {\n\tsubscription: SubscriptionTypes.SubscriptionRo;\n\tupdate: boolean;\n\tmessage: string;\n\tlicense: string;\n\tdisabled: boolean;\n}\n\nconst css = {\n\tcard: {\n\t\tpadding: '10px',\n\t\tminWidth: '310px',\n\t\tmaxWidth: '350px',\n\t\twidth: 'calc(100% - 20px)',\n\t\tmargin: '30px auto',\n\t} as React.CSSProperties,\n\tcard2: {\n\t\tpadding: '5px',\n\t\tminWidth: '310px',\n\t\tmaxWidth: '380px',\n\t\twidth: 'calc(100% - 20px)',\n\t\tmargin: '30px auto',\n\t} as React.CSSProperties,\n\tstatus: {\n\t\twidth: '180px',\n\t\tmargin: '20px auto',\n\t\tfontSize: '16px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '2px 0',\n\t} as React.CSSProperties,\n\tmessage: {\n\t\tmargin: '0 0 10px 0',\n\t} as React.CSSProperties,\n\tlicense: {\n\t\twidth: '100%',\n\t\theight: '130px',\n\t\tmargin: '0 0 10px 0',\n\t\tresize: 'none',\n\t\tfontFamily: '\"Lucida Console\", Monaco, monospace',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\twidth: '150px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tbutton2: {\n\t\twidth: '160px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tbutton3: {\n\t\twidth: '195px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmargin: '0 auto',\n\t} as React.CSSProperties,\n};\n\nexport default class Subscription extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tsubscription: SubscriptionStore.subscription,\n\t\t\tupdate: false,\n\t\t\tmessage: '',\n\t\t\tlicense: '',\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tSubscriptionStore.addChangeListener(this.onChange);\n\t\tif (!this.state.subscription.active) {\n\t\t\tSubscriptionActions.sync(true);\n\t\t}\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tSubscriptionStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tsubscription: SubscriptionStore.subscription,\n\t\t});\n\t}\n\n\tupdate(): JSX.Element {\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t{this.state.message}\n\t\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\tlicense: evt.target.value,\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tupdate: false,\n\t\t\t\t\t\t\t\tlicense: '',\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>Cancel\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tSubscriptionActions.activate(\n\t\t\t\t\t\t\t\tthis.state.license,\n\t\t\t\t\t\t\t).then((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\tupdate: false,\n\t\t\t\t\t\t\t\t\tlicense: '',\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>Update License\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n\n\tactivate(): JSX.Element {\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t{this.state.message}\n\t\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\tlicense: evt.target.value,\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tSubscriptionActions.activate(\n\t\t\t\t\t\t\t\tthis.state.license,\n\t\t\t\t\t\t\t).then((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>Activate License\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tSubscriptionActions.checkout(\n\t\t\t\t\t\t\t\t'zero',\n\t\t\t\t\t\t\t\ttoken.id,\n\t\t\t\t\t\t\t\ttoken.email,\n\t\t\t\t\t\t\t).then((message: string): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonScriptError={(err): void => {\n\t\t\t\t\t\t\tAlert.error('Failed to load Stripe Checkout');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tstripeKey=\"pk_live_plmoOl3lS3k5dMNQViZWGfVR\"\n\t\t\t\t\t>\n\t\t\t\t\t\tSubscribe\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n\n\treactivate(): JSX.Element {\n\t\tlet sub = this.state.subscription;\n\t\tlet canceling = sub.cancel_at_period_end || sub.status === 'canceled';\n\t\tlet status = sub.cancel_at_period_end ? 'canceled' : sub.status;\n\t\tlet periodEnd = MiscUtils.formatDateShort(sub.period_end);\n\t\tlet trialEnd = MiscUtils.formatDateShort(sub.trial_end);\n\n\t\tlet balance: string;\n\t\tlet balanceLabel: string;\n\t\tif (sub.balance < 0) {\n\t\t\tbalance = MiscUtils.formatAmount(sub.balance * -1);\n\t\t\tbalanceLabel = 'Credit';\n\t\t} else {\n\t\t\tbalance = MiscUtils.formatAmount(sub.balance);\n\t\t\tbalanceLabel = 'Balance';\n\t\t}\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t{this.state.message}\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Status:
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{MiscUtils.capitalize(status)}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Plan:
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{MiscUtils.capitalize(sub.plan)}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Amount:
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{MiscUtils.formatAmount(sub.amount)}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Quantity:
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{sub.quantity}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t
    {balanceLabel}:
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{balance}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{canceling ? 'Ends' : 'Renew'}:\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{periodEnd}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t
    Trial Ends:
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{trialEnd}\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tSubscriptionActions.cancel(\n\t\t\t\t\t\t\t\tthis.state.subscription.url_key,\n\t\t\t\t\t\t\t).then((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tSubscriptionActions.payment(\n\t\t\t\t\t\t\t\tthis.state.subscription.url_key,\n\t\t\t\t\t\t\t\t'zero',\n\t\t\t\t\t\t\t\ttoken.id,\n\t\t\t\t\t\t\t\ttoken.email,\n\t\t\t\t\t\t\t).then((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonScriptError={(err): void => {\n\t\t\t\t\t\t\tAlert.error('Failed to load Stripe Checkout');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tstripeKey=\"pk_live_plmoOl3lS3k5dMNQViZWGfVR\"\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{canceling ? 'Reactivate Subscription' : 'Update Payment'}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tSubscriptionActions.activate('').then((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tupdate: true,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>Update License\n\t\t\t\t
    \n\t\t\t\n\t\t;\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.state.update) {\n\t\t\treturn this.update();\n\t\t} else if (this.state.subscription.status) {\n\t\t\treturn this.reactivate();\n\t\t} else {\n\t\t\treturn this.activate();\n\t\t}\n\t}\n}\n","/// \nexport const SYNC = 'user.sync';\nexport const TRAVERSE = 'user.traverse';\nexport const FILTER = 'user.filter';\nexport const LOAD = 'user.load';\nexport const UNLOAD = 'user.unload';\nexport const CHANGE = 'user.change';\n\nexport interface User {\n\tid: string;\n\ttype?: string;\n\tusername?: string;\n\tpassword?: string;\n\ttoken?: string;\n\tsecret?: string;\n\tlast_active?: string;\n\troles?: string[];\n\tadministrator?: string;\n\tgenerate_secret?: boolean;\n\tdisabled?: boolean;\n\tactive_until?: string;\n\tpermissions?: string[];\n}\n\nexport interface Filter {\n\tid?: string;\n\tusername?: string;\n\ttype?: string;\n\tadministrator?: boolean;\n\tdisabled?: boolean;\n\trole?: string;\n}\n\nexport type Users = User[];\n\nexport type UserRo = Readonly;\nexport type UsersRo = ReadonlyArray;\n\nexport interface UserDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tuser?: User;\n\t\tusers?: Users;\n\t\tpage?: number;\n\t\tpageCount?: number;\n\t\tfilter?: Filter;\n\t\tcount?: number;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as UserTypes from '../types/UserTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass UsersStore extends EventEmitter {\n\t_users: UserTypes.UsersRo = Object.freeze([]);\n\t_page: number;\n\t_pageCount: number;\n\t_filter: UserTypes.Filter = null;\n\t_count: number;\n\t_map: {[key: string]: number} = {};\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget users(): UserTypes.UsersRo {\n\t\treturn this._users;\n\t}\n\n\tget usersM(): UserTypes.Users {\n\t\tlet users: UserTypes.Users = [];\n\t\tthis._users.forEach((user: UserTypes.UserRo): void => {\n\t\t\tusers.push({\n\t\t\t\t...user,\n\t\t\t});\n\t\t});\n\t\treturn users;\n\t}\n\n\tget page(): number {\n\t\treturn this._page || 0;\n\t}\n\n\tget pageCount(): number {\n\t\treturn this._pageCount || 50;\n\t}\n\n\tget pages(): number {\n\t\treturn Math.ceil(this.count / this.pageCount);\n\t}\n\n\tget filter(): UserTypes.Filter {\n\t\treturn this._filter;\n\t}\n\n\tget count(): number {\n\t\treturn this._count || 0;\n\t}\n\n\tuser(id: string): UserTypes.UserRo {\n\t\tlet i = this._map[id];\n\t\tif (i === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._users[i];\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_traverse(page: number): void {\n\t\tthis._page = Math.min(this.pages, page);\n\t}\n\n\t_filterCallback(filter: UserTypes.Filter): void {\n\t\tif ((this._filter !== null && filter === null) ||\n\t\t\t\t(this._filter === {} && filter !== null) || (\n\t\t\t\tfilter && this._filter && (\n\t\t\t\t\tfilter.type !== this._filter.type ||\n\t\t\t\t\tfilter.administrator !== this._filter.administrator ||\n\t\t\t\t\tfilter.disabled !== this._filter.disabled ||\n\t\t\t\t\tfilter.role !== this._filter.role\n\t\t\t\t))) {\n\t\t\tthis._traverse(0);\n\t\t}\n\t\tthis._filter = filter;\n\t\tthis.emitChange();\n\t}\n\n\t_sync(users: UserTypes.User[], count: number): void {\n\t\tthis._map = {};\n\t\tfor (let i = 0; i < users.length; i++) {\n\t\t\tusers[i] = Object.freeze(users[i]);\n\t\t\tthis._map[users[i].id] = i;\n\t\t}\n\n\t\tthis._count = count;\n\t\tthis._users = Object.freeze(users);\n\t\tthis._page = Math.min(this.pages, this.page);\n\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: UserTypes.UserDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase UserTypes.TRAVERSE:\n\t\t\t\tthis._traverse(action.data.page);\n\t\t\t\tbreak;\n\n\t\t\tcase UserTypes.FILTER:\n\t\t\t\tthis._filterCallback(action.data.filter);\n\t\t\t\tbreak;\n\n\t\t\tcase UserTypes.SYNC:\n\t\t\t\tthis._sync(action.data.users, action.data.count);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new UsersStore();\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as UserTypes from '../types/UserTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass UserStore extends EventEmitter {\n\t_user: UserTypes.UserRo;\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget user(): UserTypes.UserRo {\n\t\treturn this._user;\n\t}\n\n\tget userM(): UserTypes.User {\n\t\tif (this._user) {\n\t\t\treturn {\n\t\t\t\t...this._user,\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_load(user: UserTypes.User): void {\n\t\tthis._user = Object.freeze(user);\n\t\tthis.emitChange();\n\t}\n\n\t_unload(): void {\n\t\tthis._user = null;\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: UserTypes.UserDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase UserTypes.LOAD:\n\t\t\t\tthis._load(action.data.user);\n\t\t\t\tbreak;\n\t\t\tcase UserTypes.UNLOAD:\n\t\t\t\tthis._unload();\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new UserStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as UserTypes from '../types/UserTypes';\nimport UserStore from '../stores/UserStore';\nimport UsersStore from '../stores/UsersStore';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\n\nexport function load(userId: string): Promise {\n\tif (!userId) {\n\t\tlet user: UserTypes.User = {\n\t\t\tid: null,\n\t\t\ttype: 'local',\n\t\t\troles: [],\n\t\t\tpermissions: [],\n\t\t};\n\n\t\tDispatcher.dispatch({\n\t\t\ttype: UserTypes.LOAD,\n\t\t\tdata: {\n\t\t\t\tuser: user,\n\t\t\t},\n\t\t});\n\n\t\treturn Promise.resolve();\n\t}\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/user/' + userId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load user');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: UserTypes.LOAD,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tuser: res.body,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function reload(): Promise {\n\treturn load(UserStore.user ? UserStore.user.id : null);\n}\n\nexport function unload(): void {\n\tDispatcher.dispatch({\n\t\ttype: UserTypes.UNLOAD,\n\t});\n}\n\nexport function sync(): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/user')\n\t\t\t.query({\n\t\t\t\t...UsersStore.filter,\n\t\t\t\tpage: UsersStore.page,\n\t\t\t\tpage_count: UsersStore.pageCount,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load users');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: UserTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tusers: res.body.users,\n\t\t\t\t\t\tcount: res.body.count,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function traverse(page: number): Promise {\n\tDispatcher.dispatch({\n\t\ttype: UserTypes.TRAVERSE,\n\t\tdata: {\n\t\t\tpage: page,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function filter(filt: UserTypes.Filter): Promise {\n\tDispatcher.dispatch({\n\t\ttype: UserTypes.FILTER,\n\t\tdata: {\n\t\t\tfilter: filt,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function commit(user: UserTypes.User): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/user/' + user.id)\n\t\t\t.send(user)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to save user');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: UserTypes.LOAD,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tuser: res.body,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function create(user: UserTypes.User): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/user')\n\t\t\t.send(user)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to create user');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function remove(userIds: string[]): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/user')\n\t\t\t.send(userIds)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete users');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nEventDispatcher.register((action: UserTypes.UserDispatch) => {\n\tswitch (action.type) {\n\t\tcase UserTypes.CHANGE:\n\t\t\tsync();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as AgentTypes from './AgentTypes';\n\nexport const SYNC = 'audit.sync';\nexport const TRAVERSE = 'audit.traverse';\nexport const CHANGE = 'audit.change';\n\nexport interface Audit {\n\tid: string;\n\tuser?: string;\n\ttimestamp?: string;\n\ttype?: string;\n\tfields?: {[key: string]: string};\n\tagent?: AgentTypes.Agent;\n}\n\nexport type Audits = Audit[];\n\nexport type AuditRo = Readonly;\nexport type AuditsRo = ReadonlyArray;\n\nexport interface AuditDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tuserId?: string;\n\t\taudit?: Audit;\n\t\taudits?: Audits;\n\t\tpage?: number;\n\t\tcount?: number;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as AuditTypes from '../types/AuditTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass AuditsStore extends EventEmitter {\n\t_userId: string;\n\t_audits: AuditTypes.AuditsRo = Object.freeze([]);\n\t_page: number;\n\t_pageCount: number;\n\t_count: number;\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget userId(): string {\n\t\treturn this._userId;\n\t}\n\n\tget audits(): AuditTypes.AuditsRo {\n\t\treturn this._audits;\n\t}\n\n\tget auditsM(): AuditTypes.Audits {\n\t\tlet audits: AuditTypes.Audits = [];\n\t\tthis._audits.forEach((audit: AuditTypes.AuditRo): void => {\n\t\t\taudits.push({\n\t\t\t\t...audit,\n\t\t\t});\n\t\t});\n\t\treturn audits;\n\t}\n\n\tget page(): number {\n\t\treturn this._page || 0;\n\t}\n\n\tget pageCount(): number {\n\t\treturn this._pageCount || 10;\n\t}\n\n\tget pages(): number {\n\t\treturn Math.ceil(this.count / this.pageCount);\n\t}\n\n\tget count(): number {\n\t\treturn this._count || 0;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_traverse(page: number): void {\n\t\tthis._page = Math.min(this.pages, page);\n\t}\n\n\t_sync(userId: string, audits: AuditTypes.Audit[], count: number): void {\n\t\tthis._userId = userId;\n\n\t\tfor (let i = 0; i < audits.length; i++) {\n\t\t\taudits[i] = Object.freeze(audits[i]);\n\t\t}\n\n\t\tthis._count = count;\n\t\tthis._audits = Object.freeze(audits);\n\t\tthis._page = Math.min(this.pages, this.page);\n\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: AuditTypes.AuditDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase AuditTypes.TRAVERSE:\n\t\t\t\tthis._traverse(action.data.page);\n\t\t\t\tbreak;\n\n\t\t\tcase AuditTypes.SYNC:\n\t\t\t\tthis._sync(action.data.userId, action.data.audits, action.data.count);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new AuditsStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as AuditTypes from '../types/AuditTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport AuditsStore from '../stores/AuditsStore';\n\nlet syncId: string;\n\nexport function load(userId: string): Promise {\n\tif (!userId) {\n\t\treturn Promise.resolve();\n\t}\n\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/audit/' + userId)\n\t\t\t.query({\n\t\t\t\tpage: AuditsStore.page,\n\t\t\t\tpage_count: AuditsStore.pageCount,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load audits');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: AuditTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tuserId: userId,\n\t\t\t\t\t\taudits: res.body.audits,\n\t\t\t\t\t\tcount: res.body.count,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function reload(): Promise {\n\treturn load(AuditsStore.userId);\n}\n\nexport function traverse(page: number): Promise {\n\tDispatcher.dispatch({\n\t\ttype: AuditTypes.TRAVERSE,\n\t\tdata: {\n\t\t\tpage: page,\n\t\t},\n\t});\n\n\treturn reload();\n}\n\nEventDispatcher.register((action: AuditTypes.AuditDispatch) => {\n\tswitch (action.type) {\n\t\tcase AuditTypes.CHANGE:\n\t\t\treload();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as React from 'react';\nimport * as ReactRouter from 'react-router-dom';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport * as UserTypes from '../types/UserTypes';\n\ninterface Props {\n\tuser: UserTypes.UserRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n}\n\nconst css = {\n\tcard: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '2px 0 0 0',\n\t\tpaddingTop: '3px',\n\t\tminHeight: '18px',\n\t} as React.CSSProperties,\n\tname: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t} as React.CSSProperties,\n\ttype: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '9px',\n\t} as React.CSSProperties,\n\tlastActivity: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '9px',\n\t\twhiteSpace: 'nowrap',\n\t} as React.CSSProperties,\n\troles: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '0 8px 8px 8px',\n\t} as React.CSSProperties,\n\ttag: {\n\t\tmargin: '8px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\tnameLink: {\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n};\n\nexport default class User extends React.Component {\n\trender(): JSX.Element {\n\t\tlet user = this.props.user;\n\t\tlet roles: JSX.Element[] = [];\n\n\t\tfor (let role of user.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet cardStyle = {\n\t\t\t...css.card,\n\t\t};\n\t\tif (user.disabled) {\n\t\t\tcardStyle.opacity = 0.6;\n\t\t}\n\n\t\tlet userType: string;\n\t\tswitch (user.type) {\n\t\t\tcase 'local':\n\t\t\t\tuserType = 'Local';\n\t\t\t\tbreak;\n\t\t\tcase 'google':\n\t\t\t\tuserType = 'Google';\n\t\t\t\tbreak;\n\t\t\tcase 'onelogin':\n\t\t\t\tuserType = 'OneLogin';\n\t\t\t\tbreak;\n\t\t\tcase 'okta':\n\t\t\t\tuserType = 'Okta';\n\t\t\t\tbreak;\n\t\t\tcase 'authzero':\n\t\t\t\tuserType = 'Auth0';\n\t\t\t\tbreak;\n\t\t\tcase 'azure':\n\t\t\t\tuserType = 'Azure';\n\t\t\t\tbreak;\n\t\t\tcase 'jumpcloud':\n\t\t\t\tuserType = 'JumpCloud';\n\t\t\t\tbreak;\n\t\t\tcase 'api':\n\t\t\t\tuserType = 'API';\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tuserType = user.type;\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{user.username}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{userType}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{MiscUtils.formatDateShortTime(user.last_active) || 'Inactive'}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\tadmin\n\t\t\t\t\n\t\t\t\t{roles}\n\t\t\t
    \n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\n\ntype OnChange = (val: string) => void;\n\ninterface Props {\n\tstyle: React.CSSProperties;\n\tplaceholder: string;\n\tvalue: string;\n\tonChange: OnChange;\n}\n\nexport default class SearchInput extends React.Component {\n\trender(): JSX.Element {\n\t\treturn
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.props.onChange(evt.target.value);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\n\ntype OnToggle = () => void;\n\ninterface Props {\n\tstyle?: React.CSSProperties;\n\tlabel: string;\n\tchecked: boolean;\n\tonToggle: OnToggle;\n}\n\nexport default class SwitchNull extends React.Component {\n\trender(): JSX.Element {\n\t\tlet style: React.CSSProperties = {\n\t\t\t...this.props.style,\n\t\t};\n\n\t\tif (this.props.checked === null || this.props.checked === undefined) {\n\t\t\tstyle.opacity = 0.5;\n\t\t}\n\n\t\treturn ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as UserTypes from '../types/UserTypes';\nimport SearchInput from './SearchInput';\nimport SwitchNull from './SwitchNull';\n\ninterface Props {\n\tfilter: UserTypes.Filter;\n\tonFilter: (filter: UserTypes.Filter) => void;\n}\n\nconst css = {\n\tfilters: {\n\t\tmargin: '-15px 0 5px 0',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '200px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\twidth: '150px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\ttype: {\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tcheck: {\n\t\tmargin: '12px 5px 8px 5px',\n\t} as React.CSSProperties,\n};\n\nexport default class UsersFilter extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tmenu: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.filter === null) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.username = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.username;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.role = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.role;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tlet val = evt.target.value;\n\n\t\t\t\t\t\tif (val === 'any') {\n\t\t\t\t\t\t\tdelete filter.type;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfilter.type = val;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (filter.administrator === undefined) {\n\t\t\t\t\t\tfilter.administrator = true;\n\t\t\t\t\t} else if (filter.administrator === true) {\n\t\t\t\t\t\tfilter.administrator = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.administrator;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (filter.disabled === undefined) {\n\t\t\t\t\t\tfilter.disabled = true;\n\t\t\t\t\t} else if (filter.disabled === true) {\n\t\t\t\t\t\tfilter.disabled = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.disabled;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\n\ninterface Props {\n\twide?: boolean;\n}\n\nconst css = {\n\tpage: {\n\t\tmargin: '0 auto',\n\t\tpadding: '30px 20px',\n\t\tminWidth: '200px',\n\t\tmaxWidth: '1100px',\n\t} as React.CSSProperties,\n\tpageWide: {\n\t\tmargin: '0 auto',\n\t\tpadding: '30px 20px',\n\t\tminWidth: '200px',\n\t\tmaxWidth: '1250px',\n\t} as React.CSSProperties,\n};\n\nexport default class Page extends React.Component {\n\trender(): JSX.Element {\n\t\treturn
    \n\t\t\t{this.props.children}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\n\ninterface Props {\n\tlabel?: string;\n}\n\nconst css = {\n\theader: {\n\t\tfontSize: '24px',\n\t\tpaddingBottom: '8px',\n\t\tmarginBottom: '20px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\tmargin: 0,\n\t} as React.CSSProperties,\n};\n\nexport default class PageHeader extends React.Component {\n\trender(): JSX.Element {\n\t\tlet label: JSX.Element;\n\t\tif (this.props.label) {\n\t\t\tlabel =

    {this.props.label}

    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t{label}\n\t\t\t{this.props.children}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport UsersStore from '../stores/UsersStore';\nimport * as UserActions from '../actions/UserActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class Users extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: UsersStore.page,\n\t\t\tpageCount: UsersStore.pageCount,\n\t\t\tpages: UsersStore.pages,\n\t\t\tcount: UsersStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tUsersStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tUsersStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: UsersStore.page,\n\t\t\tpageCount: UsersStore.pageCount,\n\t\t\tpages: UsersStore.pages,\n\t\t\tcount: UsersStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tUserActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tUserActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tUserActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tUserActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tUserActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ReactRouter from 'react-router-dom';\nimport * as UserTypes from '../types/UserTypes';\nimport UsersStore from '../stores/UsersStore';\nimport * as UserActions from '../actions/UserActions';\nimport * as AuditActions from '../actions/AuditActions';\nimport User from './User';\nimport UsersFilter from './UsersFilter';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\nimport UsersPage from './UsersPage';\nimport ConfirmButton from './ConfirmButton';\n\ninterface Selected {\n\t[key: string]: boolean;\n}\n\ninterface State {\n\tusers: UserTypes.UsersRo;\n\tfilter: UserTypes.Filter;\n\tselected: Selected;\n\tlastSelected: string;\n\tdisabled: boolean;\n}\n\nconst css = {\n\tusers: {\n\t\twidth: '100%',\n\t\tmarginTop: '-5px',\n\t\tdisplay: 'table',\n\t\tborderSpacing: '0 5px',\n\t} as React.CSSProperties,\n\tusersBox: {\n\t\twidth: '100%',\n\t\toverflowY: 'auto',\n\t} as React.CSSProperties,\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n};\n\nexport default class Users extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tusers: UsersStore.users,\n\t\t\tfilter: UsersStore.filter,\n\t\t\tselected: {},\n\t\t\tlastSelected: null,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tget selected(): boolean {\n\t\tfor (let key in this.state.selected) {\n\t\t\tif (this.state.selected[key]) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tcomponentDidMount(): void {\n\t\tUsersStore.addChangeListener(this.onChange);\n\t\tAuditActions.traverse(0);\n\t\tUserActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tUsersStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tlet users = UsersStore.users;\n\t\tlet selected: Selected = {};\n\t\tlet curSelected = this.state.selected;\n\n\t\tusers.forEach((user: UserTypes.User): void => {\n\t\t\tif (curSelected[user.id]) {\n\t\t\t\tselected[user.id] = true;\n\t\t\t}\n\t\t});\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tusers: users,\n\t\t\tfilter: UsersStore.filter,\n\t\t\tselected: selected,\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tUserActions.remove(Object.keys(this.state.selected)).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tselected: {},\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet usersDom: JSX.Element[] = [];\n\n\t\tthis.state.users.forEach((user: UserTypes.UserRo): void => {\n\t\t\tusersDom.push( {\n\t\t\t\t\tlet selected = {\n\t\t\t\t\t\t...this.state.selected,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (shift) {\n\t\t\t\t\t\tlet users = this.state.users;\n\t\t\t\t\t\tlet start: number;\n\t\t\t\t\t\tlet end: number;\n\n\t\t\t\t\t\tfor (let i = 0; i < users.length; i++) {\n\t\t\t\t\t\t\tlet usr = users[i];\n\n\t\t\t\t\t\t\tif (usr.id === user.id) {\n\t\t\t\t\t\t\t\tstart = i;\n\t\t\t\t\t\t\t} else if (usr.id === this.state.lastSelected) {\n\t\t\t\t\t\t\t\tend = i;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (start !== undefined && end !== undefined) {\n\t\t\t\t\t\t\tif (start > end) {\n\t\t\t\t\t\t\t\tend = [start, start = end][0];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor (let i = start; i <= end; i++) {\n\t\t\t\t\t\t\t\tselected[users[i].id] = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tlastSelected: user.id,\n\t\t\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (selected[user.id]) {\n\t\t\t\t\t\tdelete selected[user.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselected[user.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tlastSelected: user.id,\n\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>);\n\t\t});\n\n\t\tlet filterClass = 'bp3-button bp3-intent-primary bp3-icon-filter ';\n\t\tif (this.state.filter) {\n\t\t\tfilterClass += 'bp3-active';\n\t\t}\n\n\t\tlet selectedNames: string[] = [];\n\t\tfor (let userId of Object.keys(this.state.selected)) {\n\t\t\tlet user = UsersStore.user(userId);\n\t\t\tif (user) {\n\t\t\t\tselectedNames.push(user.username || userId);\n\t\t\t} else {\n\t\t\t\tselectedNames.push(userId);\n\t\t\t}\n\t\t}\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Users

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (this.state.filter === null) {\n\t\t\t\t\t\t\t\t\tUserActions.filter({});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tUserActions.filter(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFilters\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tNew\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tUserActions.filter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{usersDom}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tselected: {},\n\t\t\t\t\t\tlastSelected: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as AgentTypes from './AgentTypes';\n\nexport const SYNC = 'session.sync';\nexport const CHANGE = 'session.change';\nexport const SHOW_REMOVED = 'session.show_removed';\n\nexport interface Session {\n\tid: string;\n\ttype?: string;\n\tuser?: string;\n\ttimestamp?: string;\n\tlast_active?: string;\n\tremoved?: boolean;\n\tagent?: AgentTypes.Agent;\n}\n\nexport type Sessions = Session[];\n\nexport type SessionRo = Readonly;\nexport type SessionsRo = ReadonlyArray;\n\nexport interface SessionDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tuserId?: string;\n\t\tsession?: Session;\n\t\tsessions?: Sessions;\n\t\tshowRemoved?: boolean;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as SessionTypes from '../types/SessionTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass SessionsStore extends EventEmitter {\n\t_userId: string;\n\t_showRemoved: boolean;\n\t_sessions: SessionTypes.SessionsRo = Object.freeze([]);\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget userId(): string {\n\t\treturn this._userId;\n\t}\n\n\tget sessions(): SessionTypes.SessionsRo {\n\t\treturn this._sessions;\n\t}\n\n\tget sessionsM(): SessionTypes.Sessions {\n\t\tlet sessions: SessionTypes.Sessions = [];\n\t\tthis._sessions.forEach((session: SessionTypes.SessionRo): void => {\n\t\t\tsessions.push({\n\t\t\t\t...session,\n\t\t\t});\n\t\t});\n\t\treturn sessions;\n\t}\n\n\tget showRemoved(): boolean {\n\t\treturn this._showRemoved;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_sync(userId: string, sessions: SessionTypes.Session[]): void {\n\t\tthis._userId = userId;\n\n\t\tfor (let i = 0; i < sessions.length; i++) {\n\t\t\tsessions[i] = Object.freeze(sessions[i]);\n\t\t}\n\n\t\tthis._sessions = Object.freeze(sessions);\n\t\tthis.emitChange();\n\t}\n\n\t_setShowRemoved(state: boolean): void {\n\t\tthis._showRemoved = state;\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: SessionTypes.SessionDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase SessionTypes.SYNC:\n\t\t\t\tthis._sync(action.data.userId, action.data.sessions);\n\t\t\t\tbreak;\n\t\t\tcase SessionTypes.SHOW_REMOVED:\n\t\t\t\tthis._setShowRemoved(action.data.showRemoved);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new SessionsStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as SessionTypes from '../types/SessionTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport SessionsStore from '../stores/SessionsStore';\n\nlet syncId: string;\n\nexport function _load(userId: string): Promise {\n\tif (!userId) {\n\t\treturn Promise.resolve();\n\t}\n\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/session/' + userId)\n\t\t\t.query({\n\t\t\t\tshow_removed: SessionsStore.showRemoved,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load sessions');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: SessionTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tuserId: userId,\n\t\t\t\t\t\tsessions: res.body,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function load(userId: string): Promise {\n\tDispatcher.dispatch({\n\t\ttype: SessionTypes.SHOW_REMOVED,\n\t\tdata: {\n\t\t\tshowRemoved: false,\n\t\t},\n\t});\n\n\treturn _load(userId);\n}\n\nexport function reload(): Promise {\n\treturn _load(SessionsStore.userId);\n}\n\nexport function showRemoved(state: boolean): Promise {\n\tDispatcher.dispatch({\n\t\ttype: SessionTypes.SHOW_REMOVED,\n\t\tdata: {\n\t\t\tshowRemoved: state,\n\t\t},\n\t});\n\n\treturn reload();\n}\n\nexport function remove(sessionId: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/session/' + sessionId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete session');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nEventDispatcher.register((action: SessionTypes.SessionDispatch) => {\n\tswitch (action.type) {\n\t\tcase SessionTypes.CHANGE:\n\t\t\treload();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as React from 'react';\nimport * as Constants from '../Constants';\n\ninterface Props {\n\thidden: boolean;\n\ticonClass: string;\n\ttitle: string;\n\tdescription?: string;\n}\n\ninterface State {\n\tinitialized: boolean;\n}\n\nconst css = {\n\tstate: {\n\t\theight: 'auto',\n\t} as React.CSSProperties,\n};\n\nexport default class NonState extends React.Component {\n\ttimeout: number;\n\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tinitialized: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tthis.timeout = window.setTimeout((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tinitialized: true,\n\t\t\t});\n\t\t}, Constants.loadDelay);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tif (this.timeout) {\n\t\t\twindow.clearTimeout(this.timeout);\n\t\t}\n\t}\n\n\trender(): JSX.Element {\n\t\tlet description: JSX.Element;\n\t\tif (this.props.description) {\n\t\t\tdescription =
    \n\t\t\t\t{this.props.description}\n\t\t\t
    ;\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t

    {this.props.title}

    \n\t\t\t{description}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as AgentTypes from '../types/AgentTypes';\n\nexport function formatContinent(agent: AgentTypes.Agent): string {\n\treturn agent.continent && agent.continent_code ?\n\t\tagent.continent + ((agent.continent_code &&\n\t\tagent.continent_code !== 'XX') ? ' (' + agent.continent_code + ')' : '') :\n\t\tagent.continent || agent.continent_code || 'Unknown';\n}\n\nexport function formatLocation(agent: AgentTypes.Agent): string {\n\treturn ((agent.city && agent.city !== 'Unknown') ? agent.city + ', ' : '') +\n\t\t(agent.region || 'Unknown') +\n\t\t((agent.region_code && agent.region_code !== 'XX') ?\n\t\t\t' (' + agent.region_code + ')' : '');\n}\n\nexport function formatCountry(agent: AgentTypes.Agent): string {\n\treturn (agent.country || 'Unknown') +\n\t\t((agent.country_code && agent.country_code !== 'XX') ?\n\t\t\t' (' + agent.country_code + ')' : '');\n}\n\nexport function formatCoordinates(agent: AgentTypes.Agent): string {\n\treturn agent.latitude && agent.longitude ?\n\t\tagent.latitude + ', ' + agent.longitude : 'Unknown';\n}\n","/// \nimport * as React from 'react';\n\nexport interface Field {\n\tvalueClass?: string;\n\tlabel: string;\n\tvalue: string | number | string[];\n}\n\nexport interface Bar {\n\tprogressClass?: string;\n\tlabel: string;\n\tvalue: number;\n}\n\nexport interface Props {\n\tstyle?: React.CSSProperties;\n\thidden?: boolean;\n\tfields?: Field[];\n\tbars?: Bar[];\n}\n\nconst css = {\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tvalue: {\n\t\twordWrap: 'break-word',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n};\n\nexport default class PageInfo extends React.Component {\n\trender(): JSX.Element {\n\t\tlet fields: JSX.Element[] = [];\n\t\tlet bars: JSX.Element[] = [];\n\n\t\tfor (let field of this.props.fields || []) {\n\t\t\tif (field == null) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet value: string | JSX.Element[];\n\n\t\t\tif (typeof field.value === 'string') {\n\t\t\t\tvalue = field.value;\n\t\t\t} else if (typeof field.value === 'number') {\n\t\t\t\tvalue = field.value.toString();\n\t\t\t} else {\n\t\t\t\tvalue = [];\n\t\t\t\tfor (let i = 0; i < field.value.length; i++) {\n\t\t\t\t\tvalue.push(
    {field.value[i]}
    );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfields.push(\n\t\t\t\t
    \n\t\t\t\t\t{field.label}\n\t\t\t\t\t\n\t\t\t\t\t\t{value}\n\t\t\t\t\t
    \n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tfor (let bar of this.props.bars || []) {\n\t\t\tlet style: React.CSSProperties = {\n\t\t\t\twidth: (bar.value || 0) + '%',\n\t\t\t};\n\n\t\t\tbars.push(\n\t\t\t\t
    \n\t\t\t\t\t{bar.label}\n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet labelStyle: React.CSSProperties;\n\t\tif (this.props.style) {\n\t\t\tlabelStyle = {\n\t\t\t\t...css.label,\n\t\t\t\t...this.props.style,\n\t\t\t};\n\t\t} else {\n\t\t\tlabelStyle = css.label;\n\t\t}\n\n\t\treturn \n\t\t\t{fields}\n\t\t\t{bars}\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as SessionTypes from '../types/SessionTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport * as AgentUtils from '../utils/AgentUtils';\nimport * as Constants from '../Constants';\nimport * as SessionActions from '../actions/SessionActions';\nimport PageInfo from './PageInfo';\n\ninterface Props {\n\tsession: SessionTypes.SessionRo;\n}\n\ninterface State {\n\tdisabled: boolean;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tinfo: {\n\t\tmarginBottom: '-5px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '290px',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n};\n\nexport default class Session extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tSessionActions.remove(this.props.session.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet session = this.props.session;\n\t\tlet agent = session.agent || {};\n\n\t\tlet cardStyle = {\n\t\t\t...css.card,\n\t\t};\n\t\tif (session.removed) {\n\t\t\tcardStyle.opacity = 0.6;\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as SessionTypes from '../types/SessionTypes';\nimport SessionsStore from '../stores/SessionsStore';\nimport * as SessionActions from '../actions/SessionActions';\nimport NonState from './NonState';\nimport Session from './Session';\nimport PageHeader from './PageHeader';\n\ninterface Props {\n\tuserId: string;\n}\n\ninterface State {\n\tsessions: SessionTypes.SessionsRo;\n\tshowEnded: boolean;\n\tdisabled: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '15px 0 -5px 0',\n\t} as React.CSSProperties,\n};\n\nexport default class Sessions extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tsessions: SessionsStore.sessions,\n\t\t\tshowEnded: false,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tSessionsStore.addChangeListener(this.onChange);\n\t\tif (this.props.userId) {\n\t\t\tSessionActions.load(this.props.userId);\n\t\t}\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tSessionsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tsessions: SessionsStore.sessions,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tif (!this.props.userId) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet sessions: JSX.Element[] = [];\n\n\t\tthis.state.sessions.forEach((\n\t\t\t\tsession: SessionTypes.SessionRo): void => {\n\t\t\tif (session.removed && !this.state.showEnded) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tsessions.push();\n\t\t});\n\n\t\treturn
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    User Sessions

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tshowEnded: !this.state.showEnded,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tSessionActions.showRemoved(!this.state.showEnded);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{(this.state.showEnded ? 'Hide' : 'Show') + ' ended sessions'}\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t{sessions}\n\t\t\t
    \n\t\t\t\n\t\t
    ;\n\t}\n}\n","export type Base64urlString = string;\n\nexport function base64urlToBuffer(\n baseurl64String: Base64urlString,\n): ArrayBuffer {\n // Base64url to Base64\n const padding = \"==\".slice(0, (4 - (baseurl64String.length % 4)) % 4);\n const base64String =\n baseurl64String.replace(/-/g, \"+\").replace(/_/g, \"/\") + padding;\n\n // Base64 to binary string\n const str = atob(base64String);\n\n // Binary string to buffer\n const buffer = new ArrayBuffer(str.length);\n const byteView = new Uint8Array(buffer);\n for (let i = 0; i < str.length; i++) {\n byteView[i] = str.charCodeAt(i);\n }\n return buffer;\n}\n\nexport function bufferToBase64url(buffer: ArrayBuffer): Base64urlString {\n // Buffer to binary string\n const byteView = new Uint8Array(buffer);\n let str = \"\";\n for (const charCode of byteView) {\n str += String.fromCharCode(charCode);\n }\n\n // Binary string to base64\n const base64String = btoa(str);\n\n // Base64 to base64url\n // We assume that the base64url string is well-formed.\n const base64urlString = base64String\n .replace(/\\+/g, \"-\")\n .replace(/\\//g, \"_\")\n .replace(/=/g, \"\");\n return base64urlString;\n}\n","// We export these values in order so that they can be used to deduplicate\n// schema definitions in minified JS code.\n\nimport { Schema, SchemaProperty } from \"./schema-format\";\n\n// TODO: Parcel isn't deduplicating these values.\nexport const copyValue = \"copy\";\nexport const convertValue = \"convert\";\n\nexport function convert(\n conversionFn: (v: From) => To,\n schema: Schema,\n input: any,\n): any {\n if (schema === copyValue) {\n return input;\n }\n if (schema === convertValue) {\n return conversionFn(input);\n }\n if (schema instanceof Array) {\n return input.map((v: any) => convert(conversionFn, schema[0], v));\n }\n if (schema instanceof Object) {\n const output: any = {};\n for (const [key, schemaField] of Object.entries(schema)) {\n if (schemaField.deriveFn) {\n const v = schemaField.deriveFn(input);\n if (v !== undefined) {\n input[key] = v;\n }\n }\n\n if (!(key in input)) {\n if (schemaField.required) {\n throw new Error(`Missing key: ${key}`);\n }\n continue;\n }\n // Fields can be null (rather than missing or `undefined`), e.g. the\n // `userHandle` field of the `AuthenticatorAssertionResponse`:\n // https://www.w3.org/TR/webauthn/#iface-authenticatorassertionresponse\n if (input[key] == null) {\n output[key] = null;\n continue;\n }\n output[key] = convert(\n conversionFn,\n schemaField.schema,\n input[key],\n );\n }\n return output;\n }\n}\n\nexport function derived(\n schema: Schema,\n deriveFn: (v: any) => any,\n): SchemaProperty {\n return {\n required: true,\n schema,\n deriveFn,\n };\n}\n\nexport function required(schema: Schema): SchemaProperty {\n return {\n required: true,\n schema,\n };\n}\n\nexport function optional(schema: Schema): SchemaProperty {\n return {\n required: false,\n schema,\n };\n}\n","import { Schema } from \"../schema-format\";\nimport {\n convertValue as convert,\n copyValue as copy,\n derived,\n optional,\n required,\n} from \"../convert\";\n\n// Shared by `create()` and `get()`.\n\nconst publicKeyCredentialDescriptorSchema: Schema = {\n type: required(copy),\n id: required(convert),\n transports: optional(copy),\n};\n\nconst simplifiedExtensionsSchema: Schema = {\n appid: optional(copy),\n appidExclude: optional(copy),\n credProps: optional(copy),\n};\n\nconst simplifiedClientExtensionResultsSchema = {\n appid: optional(copy),\n appidExclude: optional(copy),\n credProps: optional(copy),\n};\n\n// `navigator.create()` request\n\nexport const credentialCreationOptions: Schema = {\n publicKey: required({\n rp: required(copy),\n user: required({\n id: required(convert),\n name: required(copy),\n displayName: required(copy),\n }),\n\n challenge: required(convert),\n pubKeyCredParams: required(copy),\n\n timeout: optional(copy),\n excludeCredentials: optional([publicKeyCredentialDescriptorSchema]),\n authenticatorSelection: optional(copy),\n attestation: optional(copy),\n extensions: optional(simplifiedExtensionsSchema),\n }),\n signal: optional(copy),\n};\n\n// `navigator.create()` response\n\nexport const publicKeyCredentialWithAttestation: Schema = {\n type: required(copy),\n id: required(copy),\n rawId: required(convert),\n response: required({\n clientDataJSON: required(convert),\n attestationObject: required(convert),\n transports: derived(\n copy,\n (response: any) => response.getTransports?.() || [],\n ),\n }),\n clientExtensionResults: derived(\n simplifiedClientExtensionResultsSchema,\n (pkc: PublicKeyCredential) => pkc.getClientExtensionResults(),\n ),\n};\n\n// `navigator.get()` request\n\nexport const credentialRequestOptions: Schema = {\n mediation: optional(copy),\n publicKey: required({\n challenge: required(convert),\n timeout: optional(copy),\n rpId: optional(copy),\n allowCredentials: optional([publicKeyCredentialDescriptorSchema]),\n userVerification: optional(copy),\n extensions: optional(simplifiedExtensionsSchema),\n }),\n signal: optional(copy),\n};\n\n// `navigator.get()` response\n\nexport const publicKeyCredentialWithAssertion: Schema = {\n type: required(copy),\n id: required(copy),\n rawId: required(convert),\n response: required({\n clientDataJSON: required(convert),\n authenticatorData: required(convert),\n signature: required(convert),\n userHandle: required(convert),\n }),\n clientExtensionResults: derived(\n simplifiedClientExtensionResultsSchema,\n (pkc: PublicKeyCredential) => pkc.getClientExtensionResults(),\n ),\n};\n\nexport const schema: { [s: string]: Schema } = {\n credentialCreationOptions,\n publicKeyCredentialWithAttestation,\n credentialRequestOptions,\n publicKeyCredentialWithAssertion,\n};\n","import { base64urlToBuffer, bufferToBase64url } from \"../base64url\";\nimport { convert } from \"../convert\";\nimport {\n CredentialCreationOptionsJSON,\n CredentialRequestOptionsJSON,\n PublicKeyCredentialWithAssertionJSON,\n PublicKeyCredentialWithAttestationJSON,\n} from \"./json\";\nimport {\n credentialCreationOptions,\n credentialRequestOptions,\n publicKeyCredentialWithAssertion,\n publicKeyCredentialWithAttestation,\n} from \"./schema\";\n\nexport function createRequestFromJSON(\n requestJSON: CredentialCreationOptionsJSON,\n): CredentialCreationOptions {\n return convert(base64urlToBuffer, credentialCreationOptions, requestJSON);\n}\n\nexport function createResponseToJSON(\n credential: PublicKeyCredential,\n): PublicKeyCredentialWithAttestationJSON {\n return convert(\n bufferToBase64url,\n publicKeyCredentialWithAttestation,\n credential,\n );\n}\n\nexport async function create(\n requestJSON: CredentialCreationOptionsJSON,\n): Promise {\n const credential = (await navigator.credentials.create(\n createRequestFromJSON(requestJSON),\n )) as PublicKeyCredential;\n return createResponseToJSON(credential);\n}\n\nexport function getRequestFromJSON(\n requestJSON: CredentialRequestOptionsJSON,\n): CredentialRequestOptions {\n return convert(base64urlToBuffer, credentialRequestOptions, requestJSON);\n}\n\nexport function getResponseToJSON(\n credential: PublicKeyCredential,\n): PublicKeyCredentialWithAssertionJSON {\n return convert(\n bufferToBase64url,\n publicKeyCredentialWithAssertion,\n credential,\n );\n}\n\nexport async function get(\n requestJSON: CredentialRequestOptionsJSON,\n): Promise {\n const credential = (await navigator.credentials.get(\n getRequestFromJSON(requestJSON),\n )) as PublicKeyCredential;\n return getResponseToJSON(credential);\n}\n\ndeclare global {\n interface Window {\n PublicKeyCredential: PublicKeyCredential | undefined;\n }\n}\n","/// \nexport const SYNC = 'device.sync';\nexport const CHANGE = 'device.change';\n\nexport interface Device {\n\tid?: string;\n\tuser?: string;\n\tname?: string;\n\ttype?: string;\n\tmode?: string;\n\talert_levels?: number[];\n\ttimestamp?: string;\n\tdisabled?: boolean;\n\tactive_until?: string;\n\tnumber?: string;\n\tlast_active?: string;\n\twan_rp_id?: string;\n\tssh_public_key?: string;\n}\n\nexport type Devices = Device[];\n\nexport type DeviceRo = Readonly;\nexport type DevicesRo = ReadonlyArray;\n\nexport interface DeviceDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tuserId?: string;\n\t\tdevice?: Device;\n\t\tdevices?: Devices;\n\t\tshowRemoved?: boolean;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as DeviceTypes from '../types/DeviceTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass DevicesStore extends EventEmitter {\n\t_userId: string;\n\t_devices: DeviceTypes.DevicesRo = Object.freeze([]);\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget userId(): string {\n\t\treturn this._userId;\n\t}\n\n\tget devices(): DeviceTypes.DevicesRo {\n\t\treturn this._devices;\n\t}\n\n\tget devicesM(): DeviceTypes.Devices {\n\t\tlet devices: DeviceTypes.Devices = [];\n\t\tthis._devices.forEach((device: DeviceTypes.DeviceRo): void => {\n\t\t\tdevices.push({\n\t\t\t\t...device,\n\t\t\t});\n\t\t});\n\t\treturn devices;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_sync(userId: string, devices: DeviceTypes.Device[]): void {\n\t\tthis._userId = userId;\n\n\t\tfor (let i = 0; i < devices.length; i++) {\n\t\t\tdevices[i] = Object.freeze(devices[i]);\n\t\t}\n\n\t\tthis._devices = Object.freeze(devices);\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: DeviceTypes.DeviceDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase DeviceTypes.SYNC:\n\t\t\t\tthis._sync(action.data.userId, action.data.devices);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new DevicesStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as DeviceTypes from '../types/DeviceTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport DevicesStore from '../stores/DevicesStore';\n\nlet syncId: string;\n\nexport function load(userId: string): Promise {\n\tif (!userId) {\n\t\treturn Promise.resolve();\n\t}\n\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/device/' + userId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load devices');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: DeviceTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tuserId: userId,\n\t\t\t\t\t\tdevices: res.body,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function reload(): Promise {\n\treturn load(DevicesStore.userId);\n}\n\nexport function create(device: DeviceTypes.Device): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/device')\n\t\t\t.send(device)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to create device');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function testAlert(deviceId: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/device/' + deviceId + '/alert')\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to send test alert');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function commit(device: DeviceTypes.Device): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/device/' + device.id)\n\t\t\t.send(device)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to save device');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function remove(deviceId: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/device/' + deviceId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete device');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nEventDispatcher.register((action: DeviceTypes.DeviceDispatch) => {\n\tswitch (action.type) {\n\t\tcase DeviceTypes.CHANGE:\n\t\t\treload();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as React from 'react';\nimport * as Blueprint from '@blueprintjs/core';\n\ninterface Props {\n\ttitle: string;\n\tcontent: string;\n}\n\ninterface State {\n\tpopover: boolean;\n}\n\nconst css = {\n\tbox: {\n\t\tposition: 'relative',\n\t\tdisplay: 'inline',\n\t} as React.CSSProperties,\n\tcontent: {\n\t\tpadding: '20px',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tposition: 'absolute',\n\t\ttop: '-7px',\n\t\tleft: '-2px',\n\t\tpadding: '7px',\n\t\tbackground: 'none',\n\t\topacity: 0.3,\n\t} as React.CSSProperties,\n\tpopover: {\n\t\twidth: '230px',\n\t} as React.CSSProperties,\n\tpopoverTarget: {\n\t\ttop: '9px',\n\t\tleft: '18px',\n\t} as React.CSSProperties,\n\tdialog: {\n\t\tmaxWidth: '400px',\n\t\tmargin: '30px 20px',\n\t} as React.CSSProperties,\n};\n\nlet dialog = true;\n\nexport default class Help extends React.Component {\n\tconstructor(props: Props, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpopover: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tlet helpElm: JSX.Element;\n\t\tif (this.state.popover) {\n\t\t\tif (dialog) {\n\t\t\t\thelpElm = {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\tpopover: false,\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t
    \n\t\t\t\t\t\t{this.props.content}\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tpopover: !this.state.popover,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>Close\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t;\n\t\t\t} else {\n\t\t\t\thelpElm = \n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    {this.props.title}
    \n\t\t\t\t\t\t\t\t\t
    {this.props.content}
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t;\n\t\t\t}\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tpopover: !this.state.popover,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{helpElm}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport Help from './Help';\n\ninterface Props {\n\thidden?: boolean;\n\tdisabled?: boolean;\n\tlabel: string;\n\thelp: string;\n\tchecked: boolean;\n\tonToggle: () => void;\n}\n\nconst css = {\n\tlabel: {\n\t\tdisplay: 'inline-block',\n\t} as React.CSSProperties,\n};\n\nexport default class PageSwitch extends React.Component {\n\trender(): JSX.Element {\n\t\treturn ;\n\t}\n}\n","/// \nimport * as React from 'react';\n\ninterface Props {\n\tstyle?: React.CSSProperties;\n\tmessage: string;\n\tchanged: boolean;\n\tdisabled: boolean;\n\thidden?: boolean;\n\tlight?: boolean;\n\tonCancel: () => void;\n\tonSave: () => void;\n}\n\nconst css = {\n\tmessage: {\n\t\tmarginTop: '6px',\n\t} as React.CSSProperties,\n\tbox: {\n\t\tmarginTop: '15px',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmarginLeft: '10px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tflexShrink: 0,\n\t} as React.CSSProperties,\n};\n\nexport default class PageSave extends React.Component {\n\trender(): JSX.Element {\n\t\tlet style: React.CSSProperties = this.props.light ? null : css.box;\n\n\t\tif (this.props.style) {\n\t\t\tstyle = {\n\t\t\t\t...style,\n\t\t\t\t...this.props.style,\n\t\t\t};\n\t\t}\n\n\t\treturn \n\t\t\t{this.props.children}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\tCancel\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tSave\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport Help from './Help';\n\ninterface Props {\n\thidden?: boolean;\n\tdisabled?: boolean;\n\treadOnly?: boolean;\n\tautoSelect?: boolean;\n\tnarrow?: boolean;\n\tlabel: string;\n\thelp: string;\n\ttype: string;\n\tplaceholder: string;\n\tvalue: string | number;\n\tonChange?: (val: string) => void;\n}\n\nconst css = {\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tlabelNarrow: {\n\t\twidth: '100%',\n\t\tmaxWidth: '220px',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n};\n\nexport default class PageInput extends React.Component {\n\tautoSelect = (evt: React.MouseEvent): void => {\n\t\tevt.currentTarget.select();\n\t}\n\n\trender(): JSX.Element {\n\t\tlet value: any = this.props.value;\n\t\tvalue = isNaN(value) ? this.props.value || '' : this.props.value;\n\n\t\treturn \n\t\t\t{this.props.label}\n\t\t\t\n\t\t\t {\n\t\t\t\t\tif (this.props.onChange) {\n\t\t\t\t\t\tthis.props.onChange(evt.target.value);\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as DeviceTypes from '../types/DeviceTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport * as DeviceActions from '../actions/DeviceActions';\nimport * as PageInfos from './PageInfo';\nimport PageInfo from './PageInfo';\nimport ConfirmButton from './ConfirmButton';\nimport * as Alert from '../Alert';\nimport PageSwitch from \"./PageSwitch\";\nimport PageSave from \"./PageSave\";\nimport PageInput from \"./PageInput\";\n\ninterface Props {\n\tdevice: DeviceTypes.DeviceRo;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\tdevice: DeviceTypes.Device;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tinfo: {\n\t\tmarginBottom: '-5px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\tmarginBottom: '11px',\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\tcontrolButton: {\n\t\tmarginRight: '10px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingTop: '10px',\n\t} as React.CSSProperties,\n};\n\nexport default class Device extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\tdevice: null,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet device: any;\n\n\t\tif (this.state.changed) {\n\t\t\tdevice = {\n\t\t\t\t...this.state.device,\n\t\t\t};\n\t\t} else {\n\t\t\tdevice = {\n\t\t\t\t...this.props.device,\n\t\t\t};\n\t\t}\n\n\t\tdevice[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tdevice: device,\n\t\t});\n\t}\n\n\ttoggleLevel(level: number) {\n\t\tlet device: any;\n\n\t\tif (this.state.changed) {\n\t\t\tdevice = {\n\t\t\t\t...this.state.device,\n\t\t\t};\n\t\t} else {\n\t\t\tdevice = {\n\t\t\t\t...this.props.device,\n\t\t\t};\n\t\t}\n\n\t\tlet levels: number[] = Object.assign([], (device.alert_levels || []));\n\t\tlet index = levels.indexOf(level);\n\n\t\tif (index !== -1) {\n\t\t\tlevels.splice(index, 1);\n\t\t} else {\n\t\t\tlevels.push(level);\n\t\t}\n\n\t\tdevice.alert_levels = levels;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tdevice: device,\n\t\t});\n\t}\n\n\tonTestAlert = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tDeviceActions.testAlert(this.props.device.id).then((): void => {\n\t\t\tAlert.success('Test alert sent');\n\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tDeviceActions.commit(this.state.device).then((): void => {\n\t\t\tAlert.success('Device name updated');\n\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t\tchanged: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tdevice: null,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tDeviceActions.remove(this.props.device.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet device: DeviceTypes.Device = this.state.device ||\n\t\t\tthis.props.device;\n\n\t\tlet isPhone: boolean = this.props.device.mode === 'phone';\n\n\t\tlet deviceType = 'Unknown';\n\t\tswitch (device.type) {\n\t\t\tcase 'webauthn':\n\t\t\t\tdeviceType = 'WebAuthn';\n\t\t\t\tbreak;\n\t\t\tcase 'u2f':\n\t\t\t\tdeviceType = 'U2F';\n\t\t\t\tbreak;\n\t\t\tcase 'smart_card':\n\t\t\t\tdeviceType = 'Smart Card';\n\t\t\t\tbreak;\n\t\t\tcase 'call':\n\t\t\t\tdeviceType = 'Call';\n\t\t\t\tbreak;\n\t\t\tcase 'message':\n\t\t\t\tdeviceType = 'SMS';\n\t\t\t\tbreak;\n\t\t}\n\n\t\tlet deviceMode = 'Unknown';\n\t\tswitch (device.mode) {\n\t\t\tcase 'secondary':\n\t\t\t\tdeviceMode = 'Secondary';\n\t\t\t\tbreak;\n\t\t\tcase 'ssh':\n\t\t\t\tdeviceMode = 'SSH';\n\t\t\t\tbreak;\n\t\t\tcase 'phone':\n\t\t\t\tdeviceMode = 'Phone';\n\t\t\t\tbreak;\n\t\t}\n\n\t\tlet deviceOther: PageInfos.Field;\n\t\tif (device.wan_rp_id) {\n\t\t\tdeviceOther = {\n\t\t\t\tlabel: 'WebAuthn Domain',\n\t\t\t\tvalue: device.wan_rp_id,\n\t\t\t};\n\t\t} else if (device.type === 'smart_card') {\n\t\t\tdeviceOther = {\n\t\t\t\tlabel: 'SSH Public Key',\n\t\t\t\tvalue: device.ssh_public_key,\n\t\t\t};\n\t\t} else if (device.type === 'call' || device.type === 'message') {\n\t\t\tdeviceOther = {\n\t\t\t\tlabel: 'Phone Number',\n\t\t\t\tvalue: device.number,\n\t\t\t};\n\t\t}\n\n\t\tlet alertIcon = 'bp3-icon-phone';\n\t\tif (device.type === 'message') {\n\t\t\talertIcon = 'bp3-icon-mobile-phone';\n\t\t}\n\n\t\tlet cardStyle = {\n\t\t\t...css.card,\n\t\t};\n\t\tif (device.disabled) {\n\t\t\tcardStyle.opacity = 0.6;\n\t\t}\n\n\t\tlet fields1: PageInfos.Field[];\n\t\tlet fields2: PageInfos.Field[];\n\n\t\tif (isPhone) {\n\t\t\tfields1 = [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'ID',\n\t\t\t\t\tvalue: device.id || 'None',\n\t\t\t\t},\n\t\t\t];\n\t\t\tfields2 = [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Type',\n\t\t\t\t\tvalue: deviceType,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Mode',\n\t\t\t\t\tvalue: deviceMode,\n\t\t\t\t},\n\t\t\t\tdeviceOther,\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Registered',\n\t\t\t\t\tvalue: MiscUtils.formatDate(device.timestamp) || 'Unknown',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Last Active',\n\t\t\t\t\tvalue: MiscUtils.formatDate(device.last_active) || 'Unknown',\n\t\t\t\t},\n\t\t\t];\n\t\t} else {\n\t\t\tfields1 = [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'ID',\n\t\t\t\t\tvalue: device.id || 'None',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Type',\n\t\t\t\t\tvalue: deviceType,\n\t\t\t\t},\n\t\t\t\tdeviceOther,\n\t\t\t];\n\t\t\tfields2 = [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Mode',\n\t\t\t\t\tvalue: deviceMode,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Registered',\n\t\t\t\t\tvalue: MiscUtils.formatDate(device.timestamp) || 'Unknown',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Last Active',\n\t\t\t\t\tvalue: MiscUtils.formatDate(device.last_active) || 'Unknown',\n\t\t\t\t},\n\t\t\t];\n\t\t}\n\n\t\tlet testButton: JSX.Element;\n\t\tif (isPhone) {\n\t\t\ttestButton = {\n\t\t\t\t\tthis.onTestAlert();\n\t\t\t\t}}\n\t\t\t/>;\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggleLevel(1);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggleLevel(5);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggleLevel(10);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tdevice: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t>\n\t\t\t\t{testButton}\n\t\t\t\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as SuperAgent from 'superagent';\nimport * as WebAuthn from '@github/webauthn-json';\nimport * as DeviceTypes from '../types/DeviceTypes';\nimport DevicesStore from '../stores/DevicesStore';\nimport * as DeviceActions from '../actions/DeviceActions';\nimport * as Constants from \"../Constants\";\nimport NonState from './NonState';\nimport Device from './Device';\nimport PageHeader from './PageHeader';\nimport Loader from \"../Loader\";\nimport * as Csrf from \"../Csrf\";\nimport * as Alert from \"../Alert\";\n\ninterface Props {\n\tuserId: string;\n}\n\ninterface State {\n\tdevices: DeviceTypes.DevicesRo;\n\tdeviceType: string;\n\tdeviceName: string;\n\tdevicePubKey: string;\n\tdevicePhoneNumber: string;\n\tshowEnded: boolean;\n\tdisabled: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '15px 0 -5px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tmarginTop: '18px',\n\t} as React.CSSProperties,\n\tgroupBox: {\n\t} as React.CSSProperties,\n\tinputBox: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class Devices extends React.Component {\n\talertKey: string;\n\tu2fToken: string;\n\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdevices: DevicesStore.devices,\n\t\t\tdeviceName: '',\n\t\t\tdeviceType: '',\n\t\t\tdevicePubKey: '',\n\t\t\tdevicePhoneNumber: '',\n\t\t\tshowEnded: false,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tDevicesStore.addChangeListener(this.onChange);\n\t\tif (this.props.userId) {\n\t\t\tDeviceActions.load(this.props.userId);\n\t\t}\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tDevicesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdevices: DevicesStore.devices,\n\t\t});\n\t}\n\n\twanRegister = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\n\t\tlet loader = new Loader().loading();\n\n\t\tSuperAgent\n\t\t\t.get('/device/' + DevicesStore.userId + '/webauthn/register')\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to request device registration');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.wanCreate(res.body.token, res.body.options);\n\t\t\t});\n\t}\n\n\twanCreate = (token: string, options: any): void => {\n\t\tWebAuthn.create(options).then((cred: any): void => {\n\t\t\tcred.name = this.state.deviceName;\n\t\t\tcred.token = token;\n\t\t\tthis.wanRespond(cred);\n\t\t}).catch((err: any): void => {\n\t\t\tAlert.errorRes(err, 'Failed to register device');\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\twanRespond = (cred: any): void => {\n\t\tlet loader = new Loader().loading();\n\n\t\tSuperAgent\n\t\t\t.post('/device/' + DevicesStore.userId + '/webauthn/register')\n\t\t\t.send(cred)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tdeviceName: '',\n\t\t\t\t});\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to register device');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tAlert.success('Successfully registered device');\n\t\t\t});\n\t}\n\n\taddDevice = (): void => {\n\t\tif (this.state.deviceType === 'smart_card') {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: true,\n\t\t\t});\n\n\t\t\tDeviceActions.create({\n\t\t\t\tid: null,\n\t\t\t\tuser: this.props.userId,\n\t\t\t\tname: this.state.deviceName,\n\t\t\t\ttype: this.state.deviceType,\n\t\t\t\tmode: 'ssh',\n\t\t\t\tssh_public_key: this.state.devicePubKey,\n\t\t\t}).then((): void => {\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tdeviceName: '',\n\t\t\t\t\tdevicePubKey: '',\n\t\t\t\t\tdevicePhoneNumber: '',\n\t\t\t\t});\n\n\t\t\t\tAlert.success('Successfully registered device');\n\t\t\t}).catch((): void => {\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tdisabled: false,\n\t\t\t\t});\n\t\t\t});\n\t\t} else if (this.state.deviceType === 'phone_call' ||\n\t\t\tthis.state.deviceType === 'phone_message') {\n\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: true,\n\t\t\t});\n\n\t\t\tlet deviceTypes = this.state.deviceType.split('_');\n\t\t\tlet deviceMode = deviceTypes[0];\n\t\t\tlet deviceType = deviceTypes[1];\n\n\t\t\tDeviceActions.create({\n\t\t\t\tid: null,\n\t\t\t\tuser: this.props.userId,\n\t\t\t\tname: this.state.deviceName,\n\t\t\t\ttype: deviceType,\n\t\t\t\tmode: deviceMode,\n\t\t\t\tnumber: this.state.devicePhoneNumber,\n\t\t\t}).then((): void => {\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tdisabled: false,\n\t\t\t\t\tdeviceName: '',\n\t\t\t\t\tdevicePubKey: '',\n\t\t\t\t\tdevicePhoneNumber: '',\n\t\t\t\t});\n\n\t\t\t\tAlert.success('Successfully registered device');\n\t\t\t}).catch((): void => {\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tdisabled: false,\n\t\t\t\t});\n\t\t\t});\n\t\t} else {\n\t\t\tthis.wanRegister();\n\t\t}\n\t}\n\n\trender(): JSX.Element {\n\t\tif (!this.props.userId) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet devices: JSX.Element[] = [];\n\n\t\tthis.state.devices.forEach((device: DeviceTypes.DeviceRo): void => {\n\t\t\tdevices.push();\n\t\t});\n\n\t\treturn
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    User Devices

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\tdeviceType: evt.target.value,\n\t\t\t\t\t\t\t\t\t\t\tdevicePubKey: '',\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\tdeviceName: evt.target.value,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonKeyPress={(evt): void => {\n\t\t\t\t\t\t\t\t\t\tif (this.state.deviceType !== 'smart_card' &&\n\t\t\t\t\t\t\t\t\t\t\t\tevt.key === 'Enter') {\n\t\t\t\t\t\t\t\t\t\t\tthis.addDevice();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\tdevicePubKey: evt.target.value,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonKeyPress={(evt): void => {\n\t\t\t\t\t\t\t\t\t\tif (evt.key === 'Enter') {\n\t\t\t\t\t\t\t\t\t\t\tthis.addDevice();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\tdevicePhoneNumber: evt.target.value,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonKeyPress={(evt): void => {\n\t\t\t\t\t\t\t\t\t\tif (evt.key === 'Enter') {\n\t\t\t\t\t\t\t\t\t\t\tthis.addDevice();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\tAdd Device\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{devices}\n\t\t\t
    \n\t\t\t\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as AuditTypes from '../types/AuditTypes';\nimport * as Constants from '../Constants';\nimport * as AgentUtils from '../utils/AgentUtils';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport PageInfo from './PageInfo';\n\ninterface Props {\n\taudit: AuditTypes.AuditRo;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tinfo: {\n\t\tmarginBottom: '-5px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '290px',\n\t} as React.CSSProperties,\n};\n\nexport default class Audit extends React.Component {\n\trender(): JSX.Element {\n\t\tlet audit = this.props.audit;\n\t\tlet agent = audit.agent || {};\n\n\t\tlet fields: string[] = [];\n\t\tfor (let key in audit.fields) {\n\t\t\tif (!audit.fields.hasOwnProperty(key)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tfields.push(key + ': ' + audit.fields[key]);\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport AuditsStore from '../stores/AuditsStore';\nimport * as AuditActions from '../actions/AuditActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class AuditsPage extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: AuditsStore.page,\n\t\t\tpageCount: AuditsStore.pageCount,\n\t\t\tpages: AuditsStore.pages,\n\t\t\tcount: AuditsStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tAuditsStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tAuditsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: AuditsStore.page,\n\t\t\tpageCount: AuditsStore.pageCount,\n\t\t\tpages: AuditsStore.pages,\n\t\t\tcount: AuditsStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tAuditActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tAuditActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tAuditActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tAuditActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tAuditActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as AuditTypes from '../types/AuditTypes';\nimport AuditsStore from '../stores/AuditsStore';\nimport * as AuditActions from '../actions/AuditActions';\nimport NonState from './NonState';\nimport Audit from './Audit';\nimport PageHeader from './PageHeader';\nimport AuditsPage from './AuditsPage';\n\ninterface Props {\n\tuserId: string;\n}\n\ninterface State {\n\taudits: AuditTypes.AuditsRo;\n\tdisabled: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '10px 0 0 0',\n\t} as React.CSSProperties,\n};\n\nexport default class Audits extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\taudits: AuditsStore.audits,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tAuditsStore.addChangeListener(this.onChange);\n\t\tif (this.props.userId) {\n\t\t\tAuditActions.load(this.props.userId);\n\t\t}\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tAuditsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\taudits: AuditsStore.audits,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tif (!this.props.userId) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet audits: JSX.Element[] = [];\n\n\t\tthis.state.audits.forEach((\n\t\t\t\taudit: AuditTypes.AuditRo): void => {\n\t\t\taudits.push();\n\t\t});\n\n\t\treturn
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    User Audit Events

    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t{audits}\n\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t
    ;\n\t}\n}\n","/// \nimport * as AgentTypes from './AgentTypes';\n\nexport const SYNC = 'sshcertificate.sync';\nexport const TRAVERSE = 'sshcertificate.traverse';\nexport const CHANGE = 'sshcertificate.change';\n\nexport interface Info {\n\tserial?: string;\n\texpires?: string;\n\tprincipals?: string[];\n\textensions?: string[];\n}\n\nexport interface Sshcertificate {\n\tid: string;\n\tuser_id?: string;\n\tauthority_ids?: string[];\n\ttimestamp?: string;\n\tagent?: AgentTypes.Agent;\n\tcertificates_info?: Info[];\n}\n\nexport type Sshcertificates = Sshcertificate[];\n\nexport type SshcertificateRo = Readonly;\nexport type SshcertificatesRo = ReadonlyArray;\n\nexport interface SshcertificateDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tuserId?: string;\n\t\tcertificate?: Sshcertificate;\n\t\tcertificates?: Sshcertificates;\n\t\tpage?: number;\n\t\tcount?: number;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as SshcertificateTypes from '../types/SshcertificateTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass SshcertificatesStore extends EventEmitter {\n\t_userId: string;\n\t_sshcertificates: SshcertificateTypes.SshcertificatesRo = Object.freeze([]);\n\t_page: number;\n\t_pageCount: number;\n\t_count: number;\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget userId(): string {\n\t\treturn this._userId;\n\t}\n\n\tget sshcertificates(): SshcertificateTypes.SshcertificatesRo {\n\t\treturn this._sshcertificates;\n\t}\n\n\tget sshcertificatesM(): SshcertificateTypes.Sshcertificates {\n\t\tlet sshcertificates: SshcertificateTypes.Sshcertificates = [];\n\t\tthis._sshcertificates.forEach((\n\t\t\t\tsshcertificate: SshcertificateTypes.SshcertificateRo): void => {\n\t\t\tsshcertificates.push({\n\t\t\t\t...sshcertificate,\n\t\t\t});\n\t\t});\n\t\treturn sshcertificates;\n\t}\n\n\tget page(): number {\n\t\treturn this._page || 0;\n\t}\n\n\tget pageCount(): number {\n\t\treturn this._pageCount || 10;\n\t}\n\n\tget pages(): number {\n\t\treturn Math.ceil(this.count / this.pageCount);\n\t}\n\n\tget count(): number {\n\t\treturn this._count || 0;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_traverse(page: number): void {\n\t\tthis._page = Math.min(this.pages, page);\n\t}\n\n\t_sync(userId: string, certs: SshcertificateTypes.Sshcertificate[],\n\t\t\tcount: number): void {\n\t\tthis._userId = userId;\n\n\t\tfor (let i = 0; i < certs.length; i++) {\n\t\t\tcerts[i] = Object.freeze(certs[i]);\n\t\t}\n\n\t\tthis._count = count;\n\t\tthis._sshcertificates = Object.freeze(certs);\n\t\tthis._page = Math.min(this.pages, this.page);\n\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: SshcertificateTypes.SshcertificateDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase SshcertificateTypes.TRAVERSE:\n\t\t\t\tthis._traverse(action.data.page);\n\t\t\t\tbreak;\n\n\t\t\tcase SshcertificateTypes.SYNC:\n\t\t\t\tthis._sync(action.data.userId, action.data.certificates,\n\t\t\t\t\taction.data.count);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new SshcertificatesStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as SshcertificateTypes from '../types/SshcertificateTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport SshcertificatesStore from '../stores/SshcertificatesStore';\n\nlet syncId: string;\n\nexport function load(userId: string): Promise {\n\tif (!userId) {\n\t\treturn Promise.resolve();\n\t}\n\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/sshcertificate/' + userId)\n\t\t\t.query({\n\t\t\t\tpage: SshcertificatesStore.page,\n\t\t\t\tpage_count: SshcertificatesStore.pageCount,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load SSH certificates');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: SshcertificateTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tuserId: userId,\n\t\t\t\t\t\tcertificates: res.body.certificates,\n\t\t\t\t\t\tcount: res.body.count,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function reload(): Promise {\n\treturn load(SshcertificatesStore.userId);\n}\n\nexport function traverse(page: number): Promise {\n\tDispatcher.dispatch({\n\t\ttype: SshcertificateTypes.TRAVERSE,\n\t\tdata: {\n\t\t\tpage: page,\n\t\t},\n\t});\n\n\treturn reload();\n}\n\nEventDispatcher.register((\n\t\taction: SshcertificateTypes.SshcertificateDispatch) => {\n\tswitch (action.type) {\n\t\tcase SshcertificateTypes.CHANGE:\n\t\t\treload();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as React from 'react';\nimport * as SshcertificateTypes from '../types/SshcertificateTypes';\nimport * as AgentUtils from '../utils/AgentUtils';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport PageInfo from './PageInfo';\n\ninterface Props {\n\tsshcertificate: SshcertificateTypes.SshcertificateRo;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tinfo: {\n\t\tmarginBottom: '-5px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '290px',\n\t} as React.CSSProperties,\n};\n\nexport default class Sshcertificate extends React.Component {\n\trender(): JSX.Element {\n\t\tlet sshcertificate = this.props.sshcertificate;\n\t\tlet agent = sshcertificate.agent || {};\n\n\t\tlet certsInfo: string[] = [];\n\t\tfor (let info of sshcertificate.certificates_info) {\n\t\t\tcertsInfo.push(info.serial + ': ' + MiscUtils.formatDateShortTime(\n\t\t\t\tinfo.expires));\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport SshcertificatesStore from '../stores/SshcertificatesStore';\nimport * as SshcertificateActions from '../actions/SshcertificateActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class SshcertificatesPage extends React.Component<\n\t\tProps, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: SshcertificatesStore.page,\n\t\t\tpageCount: SshcertificatesStore.pageCount,\n\t\t\tpages: SshcertificatesStore.pages,\n\t\t\tcount: SshcertificatesStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tSshcertificatesStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tSshcertificatesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: SshcertificatesStore.page,\n\t\t\tpageCount: SshcertificatesStore.pageCount,\n\t\t\tpages: SshcertificatesStore.pages,\n\t\t\tcount: SshcertificatesStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tSshcertificateActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tSshcertificateActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tSshcertificateActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tSshcertificateActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tSshcertificateActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as SshcertificateTypes from '../types/SshcertificateTypes';\nimport SshcertificatesStore from '../stores/SshcertificatesStore';\nimport * as SshcertificateActions from '../actions/SshcertificateActions';\nimport NonState from './NonState';\nimport Sshcertificate from './Sshcertificate';\nimport PageHeader from './PageHeader';\nimport SshcertificatesPage from './SshcertificatesPage';\n\ninterface Props {\n\tuserId: string;\n}\n\ninterface State {\n\tsshcertificates: SshcertificateTypes.SshcertificatesRo;\n\tdisabled: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '15px 0 0 0',\n\t} as React.CSSProperties,\n};\n\nexport default class Sshcertificates extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tsshcertificates: SshcertificatesStore.sshcertificates,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tSshcertificatesStore.addChangeListener(this.onChange);\n\t\tif (this.props.userId) {\n\t\t\tSshcertificateActions.load(this.props.userId);\n\t\t}\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tSshcertificatesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tsshcertificates: SshcertificatesStore.sshcertificates,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tif (!this.props.userId) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet sshcertificates: JSX.Element[] = [];\n\n\t\tthis.state.sshcertificates.forEach((\n\t\t\t\tsshcertificate: SshcertificateTypes.SshcertificateRo): void => {\n\t\t\tsshcertificates.push();\n\t\t});\n\n\t\treturn
    \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    User SSH Certificates

    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t{sshcertificates}\n\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\n\ninterface Props {\n\tclassName?: string;\n\thidden?: boolean;\n}\n\nconst css = {\n\tpanel: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tpadding: '0 10px',\n\t} as React.CSSProperties,\n};\n\nexport default class PagePanel extends React.Component {\n\trender(): JSX.Element {\n\t\treturn \n\t\t\t{this.props.children}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\n\nexport default class PageSplit extends React.Component<{}, {}> {\n\trender(): JSX.Element {\n\t\treturn
    \n\t\t\t{this.props.children}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport Help from './Help';\nimport ConfirmButton from './ConfirmButton';\n\ninterface Props {\n\tbuttonClass?: string;\n\thidden?: boolean;\n\tdisabled?: boolean;\n\tbuttonConfirm?: boolean;\n\tbuttonDisabled?: boolean;\n\treadOnly?: boolean;\n\tautoSelect?: boolean;\n\tlabel?: string;\n\tlabelTop?: boolean;\n\tlistStyle?: boolean;\n\thelp?: string;\n\ttype: string;\n\tplaceholder?: string;\n\tvalue: string;\n\tonChange?: (val: string) => void;\n\tonSubmit: () => void;\n}\n\nconst css = {\n\tgroup: {\n\t\tmarginBottom: '15px',\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tgroupList: {\n\t\tmarginTop: '5px',\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tgroupTop: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tinputBox: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n\tbuttonTop: {\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n};\n\nexport default class PageInputButton extends React.Component {\n\tautoSelect = (evt: React.MouseEvent): void => {\n\t\tevt.currentTarget.select();\n\t}\n\n\trender(): JSX.Element {\n\t\tlet buttonClass = 'bp3-button';\n\t\tif (this.props.buttonClass) {\n\t\t\tbuttonClass += ' ' + this.props.buttonClass;\n\t\t}\n\n\t\tlet buttonLabel = '';\n\t\tlet buttonStyle: React.CSSProperties;\n\t\tif (this.props.labelTop) {\n\t\t\tbuttonStyle = css.buttonTop;\n\t\t} else {\n\t\t\tbuttonLabel = this.props.label || '';\n\t\t}\n\n\t\tlet button: JSX.Element;\n\t\tif (this.props.buttonConfirm) {\n\t\t\tbutton = ;\n\t\t} else {\n\t\t\tbutton = {buttonLabel};\n\t\t}\n\n\t\tif (this.props.labelTop) {\n\t\t\treturn \n\t\t\t\t{this.props.label}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (this.props.onChange) {\n\t\t\t\t\t\t\t\t\tthis.props.onChange(evt.target.value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonKeyPress={(evt): void => {\n\t\t\t\t\t\t\t\tif (evt.key === 'Enter') {\n\t\t\t\t\t\t\t\t\tthis.props.onSubmit();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t{button}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t;\n\t\t} else {\n\t\t\treturn \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (this.props.onChange) {\n\t\t\t\t\t\t\t\tthis.props.onChange(evt.target.value);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonKeyPress={(evt): void => {\n\t\t\t\t\t\t\tif (evt.key === 'Enter') {\n\t\t\t\t\t\t\t\tthis.props.onSubmit();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{button}\n\t\t\t\t
    \n\t\t\t
    ;\n\t\t}\n\t}\n}\n","/// \nimport * as React from 'react';\nimport Help from './Help';\n\ninterface Props {\n\thidden?: boolean;\n\tdisabled?: boolean;\n\tlabel: string;\n\thelp: string;\n\tvalue: string;\n\tonChange: (val: string) => void;\n}\n\nconst css = {\n\tlabel: {\n\t\tdisplay: 'inline-block',\n\t} as React.CSSProperties,\n};\n\nexport default class PageSelect extends React.Component {\n\trender(): JSX.Element {\n\t\treturn ;\n\t}\n}\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Classes } from \"@blueprintjs/core\";\n\nconst NS = Classes.getClassNamespace();\n\nexport const DATEINPUT = `${NS}-dateinput`;\nexport const DATEINPUT_POPOVER = `${DATEINPUT}-popover`;\n\nexport const DATEPICKER = `${NS}-datepicker`;\nexport const DATEPICKER_CAPTION = `${DATEPICKER}-caption`;\nexport const DATEPICKER_CAPTION_CARET = `${DATEPICKER_CAPTION}-caret`;\nexport const DATEPICKER_CAPTION_MEASURE = `${DATEPICKER_CAPTION}-measure`;\nexport const DATEPICKER_CAPTION_SELECT = `${DATEPICKER_CAPTION}-select`;\nexport const DATEPICKER_DAY = \"DayPicker-Day\";\nexport const DATEPICKER_DAY_DISABLED = `${DATEPICKER_DAY}--disabled`;\nexport const DATEPICKER_DAY_OUTSIDE = `${DATEPICKER_DAY}--outside`;\nexport const DATEPICKER_DAY_SELECTED = `${DATEPICKER_DAY}--selected`;\nexport const DATEPICKER_DAY_IS_TODAY = `${DATEPICKER_DAY}--isToday`;\nexport const DATEPICKER_DAY_WRAPPER = `${DATEPICKER}-day-wrapper`;\nexport const DATEPICKER_FOOTER = `${DATEPICKER}-footer`;\nexport const DATEPICKER_MONTH_SELECT = `${DATEPICKER}-month-select`;\nexport const DATEPICKER_YEAR_SELECT = `${DATEPICKER}-year-select`;\nexport const DATEPICKER_NAVBAR = `${DATEPICKER}-navbar`;\nexport const DATEPICKER_NAVBUTTON = `DayPicker-NavButton`;\nexport const DATEPICKER_TIMEPICKER_WRAPPER = `${DATEPICKER}-timepicker-wrapper`;\n\nexport const DATERANGEPICKER = `${NS}-daterangepicker`;\nexport const DATERANGEPICKER_CONTIGUOUS = `${DATERANGEPICKER}-contiguous`;\nexport const DATERANGEPICKER_SINGLE_MONTH = `${DATERANGEPICKER}-single-month`;\nexport const DATERANGEPICKER_DAY_SELECTED_RANGE = `${DATEPICKER_DAY}--selected-range`;\nexport const DATERANGEPICKER_DAY_HOVERED_RANGE = `${DATEPICKER_DAY}--hovered-range`;\nexport const DATERANGEPICKER_SHORTCUTS = `${DATERANGEPICKER}-shortcuts`;\nexport const DATERANGEPICKER_TIMEPICKERS = `${DATERANGEPICKER}-timepickers`;\n\nexport const DATETIMEPICKER = `${NS}-datetimepicker`;\n\nexport const TIMEPICKER = `${NS}-timepicker`;\nexport const TIMEPICKER_ARROW_BUTTON = `${TIMEPICKER}-arrow-button`;\nexport const TIMEPICKER_ARROW_ROW = `${TIMEPICKER}-arrow-row`;\nexport const TIMEPICKER_DIVIDER_TEXT = `${TIMEPICKER}-divider-text`;\nexport const TIMEPICKER_HOUR = `${TIMEPICKER}-hour`;\nexport const TIMEPICKER_INPUT = `${TIMEPICKER}-input`;\nexport const TIMEPICKER_INPUT_ROW = `${TIMEPICKER}-input-row`;\nexport const TIMEPICKER_MILLISECOND = `${TIMEPICKER}-millisecond`;\nexport const TIMEPICKER_MINUTE = `${TIMEPICKER}-minute`;\nexport const TIMEPICKER_SECOND = `${TIMEPICKER}-second`;\nexport const TIMEPICKER_AMPM_SELECT = `${TIMEPICKER}-ampm-select`;\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DateRange } from \"./dateRange\";\nimport { Months } from \"./months\";\n\nexport function isDateValid(date: Date | false | null): date is Date {\n return date instanceof Date && !isNaN(date.valueOf());\n}\n\nexport function areEqual(date1: Date, date2: Date) {\n if (date1 == null && date2 == null) {\n return true;\n } else if (date1 == null || date2 == null) {\n return false;\n } else {\n return date1.getTime() === date2.getTime();\n }\n}\n\nexport function areRangesEqual(dateRange1: DateRange, dateRange2: DateRange) {\n if (dateRange1 == null && dateRange2 == null) {\n return true;\n } else if (dateRange1 == null || dateRange2 == null) {\n return false;\n } else {\n const [start1, end1] = dateRange1;\n const [start2, end2] = dateRange2;\n const areStartsEqual = (start1 == null && start2 == null) || areSameDay(start1, start2);\n const areEndsEqual = (end1 == null && end2 == null) || areSameDay(end1, end2);\n return areStartsEqual && areEndsEqual;\n }\n}\n\nexport function areSameDay(date1: Date, date2: Date) {\n return areSameMonth(date1, date2) && date1.getDate() === date2.getDate();\n}\n\nexport function areSameMonth(date1: Date, date2: Date) {\n return (\n date1 != null &&\n date2 != null &&\n date1.getMonth() === date2.getMonth() &&\n date1.getFullYear() === date2.getFullYear()\n );\n}\n\nexport function areSameTime(date1: Date, date2: Date) {\n return (\n date1 != null &&\n date2 != null &&\n date1.getHours() === date2.getHours() &&\n date1.getMinutes() === date2.getMinutes() &&\n date1.getSeconds() === date2.getSeconds() &&\n date1.getMilliseconds() === date2.getMilliseconds()\n );\n}\n\nexport function clone(d: Date) {\n return new Date(d.getTime());\n}\n\nexport function isDayInRange(date: Date, dateRange: DateRange, exclusive = false) {\n if (date == null) {\n return false;\n }\n\n const day = clone(date);\n const start = clone(dateRange[0]);\n const end = clone(dateRange[1]);\n\n day.setHours(0, 0, 0, 0);\n start.setHours(0, 0, 0, 0);\n end.setHours(0, 0, 0, 0);\n\n return start <= day && day <= end && (!exclusive || (!areSameDay(start, day) && !areSameDay(day, end)));\n}\n\nexport function isDayRangeInRange(innerRange: DateRange, outerRange: DateRange) {\n return (\n (innerRange[0] == null || isDayInRange(innerRange[0], outerRange)) &&\n (innerRange[1] == null || isDayInRange(innerRange[1], outerRange))\n );\n}\n\nexport function isMonthInRange(date: Date, dateRange: DateRange) {\n if (date == null) {\n return false;\n }\n\n const day = clone(date);\n const start = clone(dateRange[0]);\n const end = clone(dateRange[1]);\n\n day.setDate(1);\n start.setDate(1);\n end.setDate(1);\n day.setHours(0, 0, 0, 0);\n start.setHours(0, 0, 0, 0);\n end.setHours(0, 0, 0, 0);\n\n return start <= day && day <= end;\n}\n\nexport const isTimeEqualOrGreaterThan = (time: Date, timeToCompare: Date) => time.getTime() >= timeToCompare.getTime();\nexport const isTimeEqualOrSmallerThan = (time: Date, timeToCompare: Date) => time.getTime() <= timeToCompare.getTime();\n\nexport function isTimeInRange(date: Date, minDate: Date, maxDate: Date): boolean {\n const time = getDateOnlyWithTime(date);\n const minTime = getDateOnlyWithTime(minDate);\n const maxTime = getDateOnlyWithTime(maxDate);\n\n const isTimeGreaterThanMinTime = isTimeEqualOrGreaterThan(time, minTime);\n const isTimeSmallerThanMaxTime = isTimeEqualOrSmallerThan(time, maxTime);\n\n if (isTimeEqualOrSmallerThan(maxTime, minTime)) {\n return isTimeGreaterThanMinTime || isTimeSmallerThanMaxTime;\n }\n\n return isTimeGreaterThanMinTime && isTimeSmallerThanMaxTime;\n}\n\nexport function getTimeInRange(time: Date, minTime: Date, maxTime: Date) {\n if (areSameTime(minTime, maxTime)) {\n return maxTime;\n } else if (isTimeInRange(time, minTime, maxTime)) {\n return time;\n } else if (isTimeSameOrAfter(time, maxTime)) {\n return maxTime;\n }\n\n return minTime;\n}\n\n/**\n * Returns true if the time part of `date` is later than or equal to the time\n * part of `dateToCompare`. The day, month, and year parts will not be compared.\n */\nexport function isTimeSameOrAfter(date: Date, dateToCompare: Date): boolean {\n const time = getDateOnlyWithTime(date);\n const timeToCompare = getDateOnlyWithTime(dateToCompare);\n\n return isTimeEqualOrGreaterThan(time, timeToCompare);\n}\n\n/**\n * @returns a Date at the exact time-wise midpoint between startDate and endDate\n */\nexport function getDateBetween(dateRange: DateRange) {\n const start = dateRange[0].getTime();\n const end = dateRange[1].getTime();\n const middle = start + (end - start) * 0.5;\n return new Date(middle);\n}\n\nexport function getDateTime(date: Date | null, time?: Date | null) {\n if (date == null) {\n return null;\n } else if (time == null) {\n // cannot use default argument because `null` is a common value in this package.\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0, 0);\n } else {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n time.getHours(),\n time.getMinutes(),\n time.getSeconds(),\n time.getMilliseconds(),\n );\n }\n}\n\nexport function getDateOnlyWithTime(date: Date): Date {\n return new Date(0, 0, 0, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n}\n\nexport function getDatePreviousMonth(date: Date): Date {\n if (date.getMonth() === Months.JANUARY) {\n return new Date(date.getFullYear() - 1, Months.DECEMBER);\n } else {\n return new Date(date.getFullYear(), date.getMonth() - 1);\n }\n}\n\nexport function getDateNextMonth(date: Date): Date {\n if (date.getMonth() === Months.DECEMBER) {\n return new Date(date.getFullYear() + 1, Months.JANUARY);\n } else {\n return new Date(date.getFullYear(), date.getMonth() + 1);\n }\n}\n\nexport function convert24HourMeridiem(hour: number, toPm: boolean): number {\n if (hour < 0 || hour > 23) {\n throw new Error(`hour must be between [0,23] inclusive: got ${hour}`);\n }\n return toPm ? (hour % 12) + 12 : hour % 12;\n}\n\nexport function getIsPmFrom24Hour(hour: number): boolean {\n if (hour < 0 || hour > 23) {\n throw new Error(`hour must be between [0,23] inclusive: got ${hour}`);\n }\n return hour >= 12;\n}\n\nexport function get12HourFrom24Hour(hour: number): number {\n if (hour < 0 || hour > 23) {\n throw new Error(`hour must be between [0,23] inclusive: got ${hour}`);\n }\n const newHour = hour % 12;\n return newHour === 0 ? 12 : newHour;\n}\n\nexport function get24HourFrom12Hour(hour: number, isPm: boolean): number {\n if (hour < 1 || hour > 12) {\n throw new Error(`hour must be between [1,12] inclusive: got ${hour}`);\n }\n const newHour = hour === 12 ? 0 : hour;\n return isPm ? newHour + 12 : newHour;\n}\n\nexport function isToday(date: Date): boolean {\n return areSameDay(date, new Date());\n}\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst ns = \"[Blueprint]\";\n\nexport const DATEPICKER_DEFAULT_VALUE_INVALID =\n ns + ` defaultValue must be within minDate and maxDate bounds.`;\nexport const DATEPICKER_INITIAL_MONTH_INVALID =\n ns + ` initialMonth must be within minDate and maxDate bounds.`;\nexport const DATEPICKER_MAX_DATE_INVALID = ns + ` maxDate must be later than minDate.`;\nexport const DATEPICKER_VALUE_INVALID = ns + ` value prop must be within minDate and maxDate bounds.`;\n\nexport const DATERANGEPICKER_DEFAULT_VALUE_INVALID = DATEPICKER_DEFAULT_VALUE_INVALID.replace(\n \"DatePicker\",\n \"DateRangePicker\",\n);\nexport const DATERANGEPICKER_INITIAL_MONTH_INVALID = DATEPICKER_INITIAL_MONTH_INVALID.replace(\n \"DatePicker\",\n \"DateRangePicker\",\n);\nexport const DATERANGEPICKER_MAX_DATE_INVALID = DATEPICKER_MAX_DATE_INVALID.replace(\"DatePicker\", \"DateRangePicker\");\nexport const DATERANGEPICKER_VALUE_INVALID = DATEPICKER_VALUE_INVALID.replace(\"DatePicker\", \"DateRangePicker\");\nexport const DATERANGEPICKER_PREFERRED_BOUNDARY_TO_MODIFY_INVALID =\n \" preferredBoundaryToModify must be a valid Boundary if defined.\";\n\nexport const DATERANGEINPUT_NULL_VALUE =\n ns +\n ` value cannot be null. Pass undefined to clear the value and operate in` +\n \" uncontrolled mode, or pass [null, null] to clear the value and continue operating in controlled mode.\";\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Measure width in pixels of a string displayed with styles provided by `className`.\n * Should only be used if measuring can't be done with existing DOM elements.\n */\nexport function measureTextWidth(text: string, className = \"\", containerElement = document.body) {\n if (containerElement == null) {\n return 0;\n }\n const span = document.createElement(\"span\");\n span.classList.add(className);\n span.textContent = text;\n\n containerElement.appendChild(span);\n const spanWidth = span.offsetWidth;\n span.remove();\n\n return spanWidth;\n}\n\nexport function padWithZeroes(str: string, minLength: number) {\n if (str.length < minLength) {\n return `${stringRepeat(\"0\", minLength - str.length)}${str}`;\n } else {\n return str;\n }\n}\n\nfunction stringRepeat(str: string, numTimes: number) {\n return new Array(numTimes + 1).join(str);\n}\n","/*\n * Copyright 2015 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as React from \"react\";\nimport { CaptionElementProps } from \"react-day-picker\";\nimport { polyfill } from \"react-lifecycles-compat\";\n\nimport { AbstractPureComponent2, Divider, HTMLSelect, Icon, OptionProps } from \"@blueprintjs/core\";\n\nimport * as Classes from \"./common/classes\";\nimport { clone } from \"./common/dateUtils\";\nimport { measureTextWidth } from \"./common/utils\";\n\nexport interface IDatePickerCaptionProps extends CaptionElementProps {\n maxDate: Date;\n minDate: Date;\n onMonthChange?: (month: number) => void;\n onYearChange?: (year: number) => void;\n /** Callback invoked when the month or year `\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t{this.props.label}\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as NodeTypes from '../types/NodeTypes';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport * as CertificateTypes from '../types/CertificateTypes';\nimport * as NodeActions from '../actions/NodeActions';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport CertificatesStore from '../stores/CertificatesStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport ServicesStore from '../stores/ServicesStore';\nimport PageInput from './PageInput';\nimport PageSwitch from './PageSwitch';\nimport PageInputSwitch from './PageInputSwitch';\nimport PageSelectButton from './PageSelectButton';\nimport PageInfo from './PageInfo';\nimport PageSave from './PageSave';\nimport ConfirmButton from './ConfirmButton';\nimport Help from './Help';\n\ninterface Props {\n\tnode: NodeTypes.NodeRo;\n\tservices: ServiceTypes.ServicesRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tcertificates: CertificateTypes.CertificatesRo;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\tnode: NodeTypes.Node;\n\taddService: string;\n\taddCert: string;\n\taddAuthority: string;\n\tforwardedChecked: boolean;\n\tforwardedProtoChecked: boolean;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px 10px 0 10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tprotocol: {\n\t\tminWidth: '90px',\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n\tport: {\n\t\tminWidth: '120px',\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class Node extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\tnode: null,\n\t\t\taddService: null,\n\t\t\taddAuthority: null,\n\t\t\taddCert: null,\n\t\t\tforwardedChecked: false,\n\t\t\tforwardedProtoChecked: false,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet node: any;\n\n\t\tif (this.state.changed) {\n\t\t\tnode = {\n\t\t\t\t...this.state.node,\n\t\t\t};\n\t\t} else {\n\t\t\tnode = {\n\t\t\t\t...this.props.node,\n\t\t\t};\n\t\t}\n\n\t\tnode[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tnode: node,\n\t\t});\n\t}\n\n\ttoggleType(typ: string): void {\n\t\tlet node: NodeTypes.Node = this.state.node || this.props.node;\n\n\t\tlet vals = (node.type || '').split('_');\n\n\t\tlet i = vals.indexOf(typ);\n\t\tif (i === -1) {\n\t\t\tvals.push(typ);\n\t\t} else {\n\t\t\tvals.splice(i, 1);\n\t\t}\n\n\t\tvals = vals.filter((val): boolean => {\n\t\t\treturn !!val;\n\t\t});\n\n\t\tvals.sort();\n\n\t\tlet val = vals.join('_');\n\t\tif (val === '') {\n\t\t\tval = 'management';\n\t\t}\n\n\t\tthis.set('type', val);\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tNodeActions.commit(this.state.node).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tnode: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tNodeActions.remove(this.props.node.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddService = (): void => {\n\t\tlet node: NodeTypes.Node;\n\n\t\tif (!this.state.addService && !this.props.services.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet serviceId = this.state.addService || this.props.services[0].id;\n\n\t\tif (this.state.changed) {\n\t\t\tnode = {\n\t\t\t\t...this.state.node,\n\t\t\t};\n\t\t} else {\n\t\t\tnode = {\n\t\t\t\t...this.props.node,\n\t\t\t};\n\t\t}\n\n\t\tlet services = [\n\t\t\t...(node.services || []),\n\t\t];\n\n\t\tif (services.indexOf(serviceId) === -1) {\n\t\t\tservices.push(serviceId);\n\t\t}\n\n\t\tservices.sort();\n\n\t\tnode.services = services;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tnode: node,\n\t\t});\n\t}\n\n\tonRemoveService = (service: string): void => {\n\t\tlet node: NodeTypes.Node;\n\n\t\tif (this.state.changed) {\n\t\t\tnode = {\n\t\t\t\t...this.state.node,\n\t\t\t};\n\t\t} else {\n\t\t\tnode = {\n\t\t\t\t...this.props.node,\n\t\t\t};\n\t\t}\n\n\t\tlet services = [\n\t\t\t...(node.services || []),\n\t\t];\n\n\t\tlet i = services.indexOf(service);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tservices.splice(i, 1);\n\n\t\tnode.services = services;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tnode: node,\n\t\t});\n\t}\n\n\tonAddAuthority = (): void => {\n\t\tlet node: NodeTypes.Node;\n\n\t\tif (!this.state.addAuthority && !this.props.authorities.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet authorityId = this.state.addAuthority;\n\n\t\tif (!authorityId) {\n\t\t\tfor (let authority of this.props.authorities) {\n\t\t\t\tif (!authority.proxy_hosting) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tauthorityId = authority.id;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (this.state.changed) {\n\t\t\tnode = {\n\t\t\t\t...this.state.node,\n\t\t\t};\n\t\t} else {\n\t\t\tnode = {\n\t\t\t\t...this.props.node,\n\t\t\t};\n\t\t}\n\n\t\tlet authorities = [\n\t\t\t...(node.authorities || []),\n\t\t];\n\n\t\tif (authorities.indexOf(authorityId) === -1) {\n\t\t\tauthorities.push(authorityId);\n\t\t}\n\n\t\tauthorities.sort();\n\n\t\tnode.authorities = authorities;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tnode: node,\n\t\t});\n\t}\n\n\tonRemoveAuthority = (authority: string): void => {\n\t\tlet node: NodeTypes.Node;\n\n\t\tif (this.state.changed) {\n\t\t\tnode = {\n\t\t\t\t...this.state.node,\n\t\t\t};\n\t\t} else {\n\t\t\tnode = {\n\t\t\t\t...this.props.node,\n\t\t\t};\n\t\t}\n\n\t\tlet authorities = [\n\t\t\t...(node.authorities || []),\n\t\t];\n\n\t\tlet i = authorities.indexOf(authority);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tauthorities.splice(i, 1);\n\n\t\tnode.authorities = authorities;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tnode: node,\n\t\t});\n\t}\n\n\tonAddCert = (): void => {\n\t\tlet node: NodeTypes.Node;\n\n\t\tif (!this.state.addCert && !this.props.certificates.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet certId = this.state.addCert || this.props.certificates[0].id;\n\n\t\tif (this.state.changed) {\n\t\t\tnode = {\n\t\t\t\t...this.state.node,\n\t\t\t};\n\t\t} else {\n\t\t\tnode = {\n\t\t\t\t...this.props.node,\n\t\t\t};\n\t\t}\n\n\t\tlet certificates = [\n\t\t\t...(node.certificates || []),\n\t\t];\n\n\t\tif (certificates.indexOf(certId) === -1) {\n\t\t\tcertificates.push(certId);\n\t\t}\n\n\t\tcertificates.sort();\n\n\t\tnode.certificates = certificates;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tnode: node,\n\t\t});\n\t}\n\n\tonRemoveCert = (certId: string): void => {\n\t\tlet node: NodeTypes.Node;\n\n\t\tif (this.state.changed) {\n\t\t\tnode = {\n\t\t\t\t...this.state.node,\n\t\t\t};\n\t\t} else {\n\t\t\tnode = {\n\t\t\t\t...this.props.node,\n\t\t\t};\n\t\t}\n\n\t\tlet certificates = [\n\t\t\t...(node.certificates || []),\n\t\t];\n\n\t\tlet i = certificates.indexOf(certId);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tcertificates.splice(i, 1);\n\n\t\tnode.certificates = certificates;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tnode: node,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet node: NodeTypes.Node = this.state.node || this.props.node;\n\t\tlet active = node.requests_min !== 0 || node.memory !== 0 ||\n\t\t\t\tnode.load1 !== 0 || node.load5 !== 0 || node.load15 !== 0;\n\n\t\tlet services: JSX.Element[] = [];\n\t\tfor (let serviceId of (node.services || [])) {\n\t\t\tlet service = ServicesStore.serviceName(serviceId);\n\t\t\tif (!service) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tservices.push(\n\t\t\t\t\n\t\t\t\t\t{service.name}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveService(service.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet servicesSelect: JSX.Element[] = [];\n\t\tif (this.props.services.length) {\n\t\t\tfor (let service of this.props.services) {\n\t\t\t\tservicesSelect.push(\n\t\t\t\t\t,\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tservicesSelect.push();\n\t\t}\n\n\t\tlet authorities: JSX.Element[] = [];\n\t\tfor (let authorityId of (node.authorities || [])) {\n\t\t\tlet authority = AuthoritiesStore.authority(authorityId);\n\t\t\tif (!authority || !authority.proxy_hosting) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tauthorities.push(\n\t\t\t\t\n\t\t\t\t\t{authority.name}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveAuthority(authority.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet authoritiesSelect: JSX.Element[] = [];\n\t\tif (this.props.authorities.length) {\n\t\t\tfor (let authority of this.props.authorities) {\n\t\t\t\tif (!authority.proxy_hosting) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tauthoritiesSelect.push(\n\t\t\t\t\t{authority.name},\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (!authoritiesSelect.length) {\n\t\t\tauthoritiesSelect.push();\n\t\t}\n\n\t\tlet certificates: JSX.Element[] = [];\n\t\tfor (let certId of (node.certificates || [])) {\n\t\t\tlet cert = CertificatesStore.certificate(certId);\n\t\t\tif (!cert) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcertificates.push(\n\t\t\t\t\n\t\t\t\t\t{cert.name}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveCert(cert.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet hasCertificates = false;\n\t\tlet certificatesSelect: JSX.Element[] = [];\n\t\tif (this.props.certificates.length) {\n\t\t\tfor (let certificate of this.props.certificates) {\n\t\t\t\thasCertificates = true;\n\n\t\t\t\tcertificatesSelect.push(\n\t\t\t\t\t,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (!hasCertificates) {\n\t\t\tcertificatesSelect = [\n\t\t\t\t,\n\t\t\t];\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggleType('management');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggleType('user');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggleType('proxy');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggleType('bastion');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('management_domain', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('user_domain', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('webauthn_domain', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('no_redirect_server', !node.no_redirect_server);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\tServices\n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{services}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddService: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddService}\n\t\t\t\t\t>\n\t\t\t\t\t\t{servicesSelect}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tAuthority Bastions\n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{authorities}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddAuthority: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddAuthority}\n\t\t\t\t\t>\n\t\t\t\t\t\t{authoritiesSelect}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tCertificates\n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{certificates}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddCert: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddCert}\n\t\t\t\t\t>\n\t\t\t\t\t\t{certificatesSelect}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet nde: NodeTypes.Node;\n\n\t\t\t\t\t\t\tif (this.state.changed) {\n\t\t\t\t\t\t\t\tnde = {\n\t\t\t\t\t\t\t\t\t...this.state.node,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnde = {\n\t\t\t\t\t\t\t\t\t...this.props.node,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tnde.forwarded_for_header = val;\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tchanged: true,\n\t\t\t\t\t\t\t\tforwardedChecked: state,\n\t\t\t\t\t\t\t\tnode: nde,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet nde: NodeTypes.Node;\n\n\t\t\t\t\t\t\tif (this.state.changed) {\n\t\t\t\t\t\t\t\tnde = {\n\t\t\t\t\t\t\t\t\t...this.state.node,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnde = {\n\t\t\t\t\t\t\t\t\t...this.props.node,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tnde.forwarded_proto_header = val;\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tchanged: true,\n\t\t\t\t\t\t\t\tforwardedProtoChecked: state,\n\t\t\t\t\t\t\t\tnode: nde,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tforwardedChecked: false,\n\t\t\t\t\t\tforwardedProtoChecked: false,\n\t\t\t\t\t\tnode: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as NodeTypes from '../types/NodeTypes';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport * as CertificateTypes from '../types/CertificateTypes';\nimport NodesStore from '../stores/NodesStore';\nimport ServicesStore from '../stores/ServicesStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport CertificatesStore from '../stores/CertificatesStore';\nimport * as NodeActions from '../actions/NodeActions';\nimport * as ServiceActions from '../actions/ServiceActions';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport * as CertificateActions from '../actions/CertificateActions';\nimport Node from './Node';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\n\ninterface State {\n\tnodes: NodeTypes.NodesRo;\n\tservices: ServiceTypes.ServicesRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tcertificates: CertificateTypes.CertificatesRo;\n\tdisabled: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n};\n\nexport default class Nodes extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tnodes: NodesStore.nodes,\n\t\t\tservices: ServicesStore.servicesName,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tcertificates: CertificatesStore.certificates,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tNodesStore.addChangeListener(this.onChange);\n\t\tServicesStore.addChangeListener(this.onChange);\n\t\tAuthoritiesStore.addChangeListener(this.onChange);\n\t\tCertificatesStore.addChangeListener(this.onChange);\n\t\tNodeActions.sync();\n\t\tServiceActions.syncNames();\n\t\tAuthorityActions.sync();\n\t\tCertificateActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tNodesStore.removeChangeListener(this.onChange);\n\t\tServicesStore.removeChangeListener(this.onChange);\n\t\tAuthoritiesStore.removeChangeListener(this.onChange);\n\t\tCertificatesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tnodes: NodesStore.nodes,\n\t\t\tservices: ServicesStore.servicesName,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tcertificates: CertificatesStore.certificates,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet nodesDom: JSX.Element[] = [];\n\n\t\tthis.state.nodes.forEach((node: NodeTypes.NodeRo): void => {\n\t\t\tnodesDom.push();\n\t\t});\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Nodes

    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t{nodesDom}\n\t\t\t
    \n\t\t;\n\t}\n}\n","/// \nexport const SYNC = 'policy.sync';\nexport const CHANGE = 'policy.change';\n\nexport interface Rule {\n\ttype?: string;\n\tdisable?: boolean;\n\tvalues?: string[];\n}\n\nexport interface Policy {\n\tid: string;\n\tname?: string;\n\tdisabled?: boolean;\n\tservices?: string[];\n\tauthorities?: string[];\n\troles?: string[];\n\trules?: {[key: string]: Rule};\n\tadmin_secondary?: string;\n\tuser_secondary?: string;\n\tproxy_secondary?: string;\n\tauthority_secondary?: string;\n\tadmin_device_secondary?: boolean;\n\tuser_device_secondary?: boolean;\n\tproxy_device_secondary?: boolean;\n\tauthority_device_secondary?: boolean;\n\tauthority_require_smart_card?: boolean;\n}\n\nexport type Policies = Policy[];\n\nexport type PolicyRo = Readonly;\nexport type PoliciesRo = ReadonlyArray;\n\nexport interface PolicyDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tpolicy?: Policy;\n\t\tpolicies?: Policies;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as PolicyTypes from '../types/PolicyTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass PoliciesStore extends EventEmitter {\n\t_policies: PolicyTypes.PoliciesRo = Object.freeze([]);\n\t_map: {[key: string]: number} = {};\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget policies(): PolicyTypes.PoliciesRo {\n\t\treturn this._policies;\n\t}\n\n\tget policiesM(): PolicyTypes.Policies {\n\t\tlet policies: PolicyTypes.Policies = [];\n\t\tthis._policies.forEach((\n\t\t\t\tpolicy: PolicyTypes.PolicyRo): void => {\n\t\t\tpolicies.push({\n\t\t\t\t...policy,\n\t\t\t});\n\t\t});\n\t\treturn policies;\n\t}\n\n\tpolicy(id: string): PolicyTypes.PolicyRo {\n\t\tlet i = this._map[id];\n\t\tif (i === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._policies[i];\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_sync(policies: PolicyTypes.Policy[]): void {\n\t\tthis._map = {};\n\t\tfor (let i = 0; i < policies.length; i++) {\n\t\t\tpolicies[i] = Object.freeze(policies[i]);\n\t\t\tthis._map[policies[i].id] = i;\n\t\t}\n\n\t\tthis._policies = Object.freeze(policies);\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: PolicyTypes.PolicyDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase PolicyTypes.SYNC:\n\t\t\t\tthis._sync(action.data.policies);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new PoliciesStore();\n","/// \nexport const SYNC = 'settings.sync';\nexport const CHANGE = 'settings.change';\n\nexport interface Provider {\n\tid?: string;\n\ttype?: string;\n\tlabel?: string;\n\tdefault_roles?: string[];\n\tauto_create?: boolean;\n\trole_management?: string;\n}\n\nexport interface AzureProvider extends Provider {\n\ttenant?: string;\n\tclient_id?: string;\n\tclient_secret?: string;\n}\n\nexport interface GoogleProvider extends Provider {\n\tdomain?: string;\n\tgoogle_key?: string;\n\tgoogle_email?: string;\n}\n\nexport interface SamlProvider extends Provider {\n\tissuer_url?: string;\n\tsaml_url?: string;\n\tsaml_cert?: string;\n}\n\nexport interface JumpCloudProvider extends Provider {\n\tissuer_url?: string;\n\tsaml_url?: string;\n\tsaml_cert?: string;\n\tjumpcloud_app_id?: string;\n\tjumpcloud_secret?: string;\n}\n\nexport type ProviderAny = Provider & AzureProvider & GoogleProvider &\n\tSamlProvider & JumpCloudProvider;\nexport type Providers = ProviderAny[];\n\nexport interface SecondaryProvider {\n\tid?: string;\n\ttype?: string;\n\tlabel?: string;\n\tname?: string;\n}\n\nexport interface DuoProvider extends SecondaryProvider {\n\tduo_hostname?: string;\n\tduo_key?: string;\n\tduo_secret?: string;\n\tpush_factor?: boolean;\n\tphone_factor?: boolean;\n\tpasscode_factor?: boolean;\n\tsms_factor?: boolean;\n}\n\nexport interface OneLoginProvider extends SecondaryProvider {\n\tone_login_region?: string;\n\tone_login_id?: string;\n\tone_login_secret?: string;\n\tpush_factor?: boolean;\n\tpasscode_factor?: boolean;\n}\n\nexport interface OktaProvider extends SecondaryProvider {\n\tokta_domain?: string;\n\tokta_token?: string;\n\tpush_factor?: boolean;\n\tpasscode_factor?: boolean;\n}\n\nexport type SecondaryProviderAny = SecondaryProvider & DuoProvider &\n\tOneLoginProvider & OktaProvider;\nexport type SecondaryProviders = SecondaryProviderAny[];\n\nexport interface Settings {\n\tauth_providers: Providers;\n\tauth_secondary_providers: SecondaryProviders;\n\tauth_admin_expire: number;\n\tauth_admin_max_duration: number;\n\tauth_proxy_expire: number;\n\tauth_proxy_max_duration: number;\n\tauth_user_expire: number;\n\tauth_user_max_duration: number;\n\telastic_address: string;\n\telastic_username: string;\n\telastic_password: string;\n\telastic_proxy_requests: boolean;\n}\n\nexport type SettingsRo = Readonly;\n\nexport interface SettingsDispatch {\n\ttype: string;\n\tdata?: Settings;\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as SettingsTypes from '../types/SettingsTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass SettingsStore extends EventEmitter {\n\t_settings: SettingsTypes.SettingsRo;\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget settings(): SettingsTypes.SettingsRo {\n\t\treturn this._settings;\n\t}\n\n\tget settingsM(): SettingsTypes.Settings {\n\t\tif (this._settings) {\n\t\t\treturn {\n\t\t\t\t...this._settings,\n\t\t\t};\n\t\t}\n\t\treturn undefined;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_sync(settings: SettingsTypes.Settings): void {\n\t\tthis._settings = Object.freeze(settings);\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: SettingsTypes.SettingsDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase SettingsTypes.SYNC:\n\t\t\t\tthis._sync(action.data);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new SettingsStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as PolicyTypes from '../types/PolicyTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\n\nexport function sync(): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/policy')\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load policies');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: PolicyTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tpolicies: res.body,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function commit(cert: PolicyTypes.Policy): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/policy/' + cert.id)\n\t\t\t.send(cert)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to save policy');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function create(cert: PolicyTypes.Policy): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/policy')\n\t\t\t.send(cert)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to create policy');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function remove(certId: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/policy/' + certId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete policies');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nEventDispatcher.register((action: PolicyTypes.PolicyDispatch) => {\n\tswitch (action.type) {\n\t\tcase PolicyTypes.CHANGE:\n\t\t\tsync();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as SettingsTypes from '../types/SettingsTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\n\nexport function sync(): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/settings')\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to sync builds');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: SettingsTypes.SYNC,\n\t\t\t\t\tdata: res.body,\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function commit(\n\t\tsettings: SettingsTypes.Settings): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/settings')\n\t\t\t.send(settings)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to commit settings');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: SettingsTypes.SYNC,\n\t\t\t\t\tdata: res.body,\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nEventDispatcher.register((action: SettingsTypes.SettingsDispatch) => {\n\tswitch (action.type) {\n\t\tcase SettingsTypes.CHANGE:\n\t\t\tsync();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as React from 'react';\nimport * as PolicyTypes from '../types/PolicyTypes';\nimport * as Constants from '../Constants';\nimport PageSwitch from './PageSwitch';\nimport PageInputButton from './PageInputButton';\nimport PageSelectButton from './PageSelectButton';\nimport Help from './Help';\n\ninterface Props {\n\trule: PolicyTypes.Rule;\n\tonChange: (state: PolicyTypes.Rule) => void;\n}\n\ninterface State {\n\taddValue: string;\n}\n\nconst css = {\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n};\n\nexport default class PolicyRule extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\taddValue: '',\n\t\t};\n\t}\n\n\tclone(): PolicyTypes.Rule {\n\t\treturn {\n\t\t\t...this.props.rule,\n\t\t};\n\t}\n\n\tonAddValue = (value: string): void => {\n\t\tif (!value) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet rule = this.clone();\n\n\t\tlet values = [\n\t\t\t...rule.values,\n\t\t];\n\n\t\tif (values.indexOf(value) === -1) {\n\t\t\tvalues.push(value);\n\t\t}\n\n\t\tvalues.sort();\n\n\t\trule.values = values;\n\n\t\tthis.props.onChange(rule);\n\t}\n\n\tonRemoveValue(value: string): void {\n\t\tlet rule = this.clone();\n\n\t\tlet values = [\n\t\t\t...rule.values,\n\t\t];\n\n\t\tlet i = values.indexOf(value);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tvalues.splice(i, 1);\n\n\t\trule.values = values;\n\n\t\tthis.props.onChange(rule);\n\t}\n\n\trender(): JSX.Element {\n\t\tlet rule = this.props.rule;\n\t\tlet defaultOption: string;\n\n\t\tlet label: string;\n\t\tlet selectLabel: string;\n\t\tlet selectPlaceholder: string;\n\t\tlet options: {[key: string]: string};\n\t\tswitch (this.props.rule.type) {\n\t\t\tcase 'operating_system':\n\t\t\t\tlabel = 'Permitted Operating Systems';\n\t\t\t\tselectLabel = 'Operating system policies';\n\t\t\t\toptions = Constants.operatingSystems;\n\t\t\t\tbreak;\n\t\t\tcase 'browser':\n\t\t\t\tlabel = 'Permitted Browsers';\n\t\t\t\tselectLabel = 'Browser policies';\n\t\t\t\toptions = Constants.browsers;\n\t\t\t\tbreak;\n\t\t\tcase 'location':\n\t\t\t\tlabel = 'Permitted Locations';\n\t\t\t\tselectLabel = 'Location policies';\n\t\t\t\toptions = Constants.locations;\n\t\t\t\tbreak;\n\t\t\tcase 'whitelist_networks':\n\t\t\t\tlabel = 'Permitted Networks';\n\t\t\t\tselectLabel = 'Permitted network policies';\n\t\t\t\tselectPlaceholder = 'Add network';\n\t\t\t\tbreak;\n\t\t\tcase 'blacklist_networks':\n\t\t\t\tlabel = 'Blocked Networks';\n\t\t\t\tselectLabel = 'Blocked network policies';\n\t\t\t\tselectPlaceholder = 'Add network';\n\t\t\t\tbreak;\n\t\t}\n\n\t\tlet optionsSelect: JSX.Element[] = [];\n\t\tfor (let option in options) {\n\t\t\tif (!options.hasOwnProperty(option)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!defaultOption) {\n\t\t\t\tdefaultOption = option;\n\t\t\t}\n\n\t\t\toptionsSelect.push(\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet values: JSX.Element[] = [];\n\t\tfor (let value of rule.values || []) {\n\t\t\tvalues.push(\n\t\t\t\t\n\t\t\t\t\t{options ? options[value] || value : value}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveValue(value);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet inputElem: JSX.Element;\n\t\tif (options) {\n\t\t\tinputElem = {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\taddValue: val,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSubmit={(): void => {\n\t\t\t\t\tthis.onAddValue(this.state.addValue || defaultOption);\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{optionsSelect}\n\t\t\t;\n\t\t} else {\n\t\t\tinputElem = {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\taddValue: val,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSubmit={(): void => {\n\t\t\t\t\tthis.onAddValue(this.state.addValue);\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\taddValue: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>;\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.values = rule.values == null ? [] : null;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.disable = !state.disable;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t\n\t\t\t\t{label}\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t{values}\n\t\t\t\t
    \n\t\t\t\n\t\t\t{inputElem}\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as PolicyTypes from '../types/PolicyTypes';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport * as SettingsTypes from '../types/SettingsTypes';\nimport * as PolicyActions from '../actions/PolicyActions';\nimport ServicesStore from '../stores/ServicesStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport PolicyRule from './PolicyRule';\nimport PageInput from './PageInput';\nimport PageSwitch from './PageSwitch';\nimport PageSelect from './PageSelect';\nimport PageSelectButton from './PageSelectButton';\nimport PageInputButton from './PageInputButton';\nimport PageInfo from './PageInfo';\nimport PageSave from './PageSave';\nimport ConfirmButton from './ConfirmButton';\nimport Help from './Help';\nimport * as Alert from '../Alert';\n\ninterface Props {\n\tpolicy: PolicyTypes.PolicyRo;\n\tservices: ServiceTypes.ServicesRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tproviders: SettingsTypes.SecondaryProviders;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\tpolicy: PolicyTypes.Policy;\n\taddService: string;\n\taddAuthority: string;\n\taddRole: string;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px 10px 0 10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tprotocol: {\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n\tport: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class Policy extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\tpolicy: null,\n\t\t\taddService: null,\n\t\t\taddAuthority: null,\n\t\t\taddRole: null,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet policy: any;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tpolicy[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\tsetRule(name: string, rule: PolicyTypes.Rule): void {\n\t\tlet policy: any;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tlet rules = {\n\t\t\t...policy.rules,\n\t\t};\n\n\t\tif (rule.values == null) {\n\t\t\tdelete rules[name];\n\t\t} else {\n\t\t\trules[name] = rule;\n\t\t}\n\n\t\tpolicy.rules = rules;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tPolicyActions.commit(this.state.policy).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tpolicy: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tPolicyActions.remove(this.props.policy.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddService = (): void => {\n\t\tlet policy: PolicyTypes.Policy;\n\n\t\tif (!this.state.addService && !this.props.services.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet serviceId = this.state.addService || this.props.services[0].id;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tlet services = [\n\t\t\t...policy.services,\n\t\t];\n\n\t\tif (services.indexOf(serviceId) === -1) {\n\t\t\tservices.push(serviceId);\n\t\t}\n\n\t\tservices.sort();\n\n\t\tpolicy.services = services;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\tonRemoveService = (service: string): void => {\n\t\tlet policy: PolicyTypes.Policy;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tlet services = [\n\t\t\t...policy.services,\n\t\t];\n\n\t\tlet i = services.indexOf(service);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tservices.splice(i, 1);\n\n\t\tpolicy.services = services;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\tonAddAuthority = (): void => {\n\t\tlet policy: PolicyTypes.Policy;\n\n\t\tif (!this.state.addAuthority && !this.props.authorities.length) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet authorityId = this.state.addAuthority ||\n\t\t\tthis.props.authorities[0].id;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tlet authorities = [\n\t\t\t...policy.authorities,\n\t\t];\n\n\t\tif (authorities.indexOf(authorityId) === -1) {\n\t\t\tauthorities.push(authorityId);\n\t\t}\n\n\t\tauthorities.sort();\n\n\t\tpolicy.authorities = authorities;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\tonRemoveAuthority = (authority: string): void => {\n\t\tlet policy: PolicyTypes.Policy;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tlet authorities = [\n\t\t\t...policy.authorities,\n\t\t];\n\n\t\tlet i = authorities.indexOf(authority);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tauthorities.splice(i, 1);\n\n\t\tpolicy.authorities = authorities;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\tonAddRole = (): void => {\n\t\tlet policy: PolicyTypes.Policy;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...policy.roles,\n\t\t];\n\n\t\tif (!this.state.addRole) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (roles.indexOf(this.state.addRole) === -1) {\n\t\t\troles.push(this.state.addRole);\n\t\t}\n\n\t\troles.sort();\n\n\t\tpolicy.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\tonRemoveRole(role: string): void {\n\t\tlet policy: PolicyTypes.Policy;\n\n\t\tif (this.state.changed) {\n\t\t\tpolicy = {\n\t\t\t\t...this.state.policy,\n\t\t\t};\n\t\t} else {\n\t\t\tpolicy = {\n\t\t\t\t...this.props.policy,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...policy.roles,\n\t\t];\n\n\t\tlet i = roles.indexOf(role);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\troles.splice(i, 1);\n\n\t\tpolicy.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tpolicy: policy,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet policy: PolicyTypes.Policy = this.state.policy ||\n\t\t\tthis.props.policy;\n\n\t\tlet services: JSX.Element[] = [];\n\t\tfor (let serviceId of policy.services || []) {\n\t\t\tlet service = ServicesStore.serviceName(serviceId);\n\t\t\tif (!service) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tservices.push(\n\t\t\t\t\n\t\t\t\t\t{service.name}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveService(service.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet servicesSelect: JSX.Element[] = [];\n\t\tif (this.props.services.length) {\n\t\t\tfor (let service of this.props.services) {\n\t\t\t\tservicesSelect.push(\n\t\t\t\t\t{service.name},\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tservicesSelect.push();\n\t\t}\n\n\t\tlet authorities: JSX.Element[] = [];\n\t\tfor (let authorityId of policy.authorities || []) {\n\t\t\tlet authority = AuthoritiesStore.authority(authorityId);\n\t\t\tif (!authority) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tauthorities.push(\n\t\t\t\t\n\t\t\t\t\t{authority.name}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveAuthority(authority.id);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet authoritiesSelect: JSX.Element[] = [];\n\t\tif (this.props.authorities.length) {\n\t\t\tfor (let authority of this.props.authorities) {\n\t\t\t\tauthoritiesSelect.push(\n\t\t\t\t\t{authority.name},\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\tauthoritiesSelect.push();\n\t\t}\n\n\t\tlet roles: JSX.Element[] = [];\n\t\tfor (let role of policy.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveRole(role);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet operatingSystem = policy.rules.operating_system || {\n\t\t\ttype: 'operating_system',\n\t\t};\n\t\tlet browser = policy.rules.browser || {\n\t\t\ttype: 'browser',\n\t\t};\n\t\tlet location = policy.rules.location || {\n\t\t\ttype: 'location',\n\t\t};\n\t\tlet whitelistNetworks = policy.rules.whitelist_networks || {\n\t\t\ttype: 'whitelist_networks',\n\t\t};\n\t\tlet blacklistNetworks = policy.rules.blacklist_networks || {\n\t\t\ttype: 'blacklist_networks',\n\t\t};\n\n\t\tlet providerIds: string[] = [];\n\t\tlet adminProviders: JSX.Element[] = [];\n\t\tlet userProviders: JSX.Element[] = [];\n\t\tlet proxyProviders: JSX.Element[] = [];\n\t\tlet authorityProviders: JSX.Element[] = [];\n\t\tif (this.props.providers.length) {\n\t\t\tfor (let provider of this.props.providers) {\n\t\t\t\tproviderIds.push(provider.id);\n\t\t\t\tadminProviders.push({provider.name});\n\t\t\t\tuserProviders.push({provider.name});\n\t\t\t\tproxyProviders.push({provider.name});\n\t\t\t\tauthorityProviders.push({provider.name});\n\t\t\t}\n\t\t} else {\n\t\t\tadminProviders.push(None);\n\t\t\tuserProviders.push(None);\n\t\t\tproxyProviders.push(None);\n\t\t\tauthorityProviders.push(None);\n\t\t}\n\t\tlet adminProvider = policy.admin_secondary &&\n\t\t\tproviderIds.indexOf(policy.admin_secondary) !== -1;\n\t\tlet userProvider = policy.user_secondary &&\n\t\t\tproviderIds.indexOf(policy.user_secondary) !== -1;\n\t\tlet proxyProvider = policy.proxy_secondary &&\n\t\t\tproviderIds.indexOf(policy.proxy_secondary) !== -1;\n\t\tlet authorityProvider = policy.authority_secondary &&\n\t\t\tproviderIds.indexOf(policy.authority_secondary) !== -1;\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddRole}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\tServices\n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{services}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddService: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddService}\n\t\t\t\t\t>\n\t\t\t\t\t\t{servicesSelect}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tAuthorities\n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{authorities}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddAuthority: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddAuthority}\n\t\t\t\t\t>\n\t\t\t\t\t\t{authoritiesSelect}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (adminProvider) {\n\t\t\t\t\t\t\t\tthis.set('admin_secondary', null);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.props.providers.length === 0) {\n\t\t\t\t\t\t\t\t\tAlert.warning(\n\t\t\t\t\t\t\t\t\t\t'No two-factor authentication providers exist');\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.set('admin_secondary', this.props.providers[0].id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('admin_secondary', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{adminProviders}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (userProvider) {\n\t\t\t\t\t\t\t\tthis.set('user_secondary', null);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.props.providers.length === 0) {\n\t\t\t\t\t\t\t\t\tAlert.warning(\n\t\t\t\t\t\t\t\t\t\t'No two-factor authentication providers exist');\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.set('user_secondary', this.props.providers[0].id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('user_secondary', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{userProviders}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (proxyProvider) {\n\t\t\t\t\t\t\t\tthis.set('proxy_secondary', null);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.props.providers.length === 0) {\n\t\t\t\t\t\t\t\t\tAlert.warning(\n\t\t\t\t\t\t\t\t\t\t'No two-factor authentication providers exist');\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.set('proxy_secondary', this.props.providers[0].id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('proxy_secondary', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{proxyProviders}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (authorityProvider) {\n\t\t\t\t\t\t\t\tthis.set('authority_secondary', null);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.props.providers.length === 0) {\n\t\t\t\t\t\t\t\t\tAlert.warning(\n\t\t\t\t\t\t\t\t\t\t'No two-factor authentication providers exist');\n\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.set('authority_secondary', this.props.providers[0].id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('authority_secondary', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{authorityProviders}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('disabled', !policy.disabled)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setRule('whitelist_networks', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setRule('blacklist_networks', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setRule('location', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setRule('operating_system', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setRule('browser', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('admin_device_secondary',\n\t\t\t\t\t\t\t\t!policy.admin_device_secondary)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('user_device_secondary',\n\t\t\t\t\t\t\t\t!policy.user_device_secondary)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('proxy_device_secondary',\n\t\t\t\t\t\t\t\t!policy.proxy_device_secondary)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('authority_device_secondary',\n\t\t\t\t\t\t\t\t!policy.authority_device_secondary)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('authority_require_smart_card',\n\t\t\t\t\t\t\t\t!policy.authority_require_smart_card)\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tpolicy: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as PolicyTypes from '../types/PolicyTypes';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport * as SettingsTypes from '../types/SettingsTypes';\nimport PoliciesStore from '../stores/PoliciesStore';\nimport ServicesStore from '../stores/ServicesStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport SettingsStore from '../stores/SettingsStore';\nimport * as PolicyActions from '../actions/PolicyActions';\nimport * as ServiceActions from '../actions/ServiceActions';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport * as SettingsActions from '../actions/SettingsActions';\nimport NonState from './NonState';\nimport Policy from './Policy';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\n\ninterface State {\n\tpolicies: PolicyTypes.PoliciesRo;\n\tservices: ServiceTypes.ServicesRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tproviders: SettingsTypes.SecondaryProviders;\n\tdisabled: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n};\n\nexport default class Policies extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpolicies: PoliciesStore.policies,\n\t\t\tservices: ServicesStore.servicesName,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tproviders: SettingsStore.settings ?\n\t\t\t\tSettingsStore.settings.auth_secondary_providers : [],\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tPoliciesStore.addChangeListener(this.onChange);\n\t\tServicesStore.addChangeListener(this.onChange);\n\t\tAuthoritiesStore.addChangeListener(this.onChange);\n\t\tSettingsStore.addChangeListener(this.onChange);\n\t\tPolicyActions.sync();\n\t\tServiceActions.syncNames();\n\t\tAuthorityActions.sync();\n\t\tSettingsActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tPoliciesStore.removeChangeListener(this.onChange);\n\t\tServicesStore.removeChangeListener(this.onChange);\n\t\tAuthoritiesStore.removeChangeListener(this.onChange);\n\t\tSettingsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpolicies: PoliciesStore.policies,\n\t\t\tservices: ServicesStore.servicesName,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tproviders: SettingsStore.settings ?\n\t\t\t\tSettingsStore.settings.auth_secondary_providers : [],\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet policiesDom: JSX.Element[] = [];\n\n\t\tthis.state.policies.forEach((policy: PolicyTypes.PolicyRo): void => {\n\t\t\tpoliciesDom.push();\n\t\t});\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Policies

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tPolicyActions.create(null).then((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>New\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t{policiesDom}\n\t\t\t
    \n\t\t\t\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as Blueprint from '@blueprintjs/core';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport Help from './Help';\nimport PageInput from './PageInput';\nimport PageInputButton from './PageInputButton';\nimport PageSwitch from './PageSwitch';\nimport PageSelect from './PageSelect';\nimport * as NodeTypes from \"../types/NodeTypes\";\n\ninterface Props {\n\thidden?: boolean;\n\tdisabled?: boolean;\n\tnodes: NodeTypes.NodesRo;\n\tauthority: AuthorityTypes.AuthorityRo;\n\tproxy: boolean;\n}\n\ninterface State {\n\tpopover: boolean;\n\troute53: boolean;\n\tawsAccessKey: string;\n\tawsSecretKey: string;\n\thostCertificate: boolean;\n\thostname: string;\n\tserver: string;\n\taddRole: string;\n\troles: string[];\n}\n\nconst css = {\n\tbox: {\n\t\tmarginBottom: '15px',\n\t} as React.CSSProperties,\n\tbutton: {\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\tcallout: {\n\t\tmarginBottom: '15px',\n\t} as React.CSSProperties,\n\tpopover: {\n\t\twidth: '230px',\n\t} as React.CSSProperties,\n\tpopoverTarget: {\n\t\ttop: '9px',\n\t\tleft: '18px',\n\t} as React.CSSProperties,\n\tdialog: {\n\t\tmaxWidth: '480px',\n\t\tmargin: '30px 20px',\n\t} as React.CSSProperties,\n\ttextarea: {\n\t\twidth: '100%',\n\t\tresize: 'none',\n\t\tfontSize: '12px',\n\t\tfontFamily: '\"Lucida Console\", Monaco, monospace',\n\t} as React.CSSProperties,\n};\n\nexport default class AuthorityDeploy extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpopover: false,\n\t\t\troute53: false,\n\t\t\tawsAccessKey: '',\n\t\t\tawsSecretKey: '',\n\t\t\thostCertificate: null,\n\t\t\thostname: '',\n\t\t\tserver: null,\n\t\t\taddRole: '',\n\t\t\troles: [],\n\t\t};\n\t}\n\n\tonAddRole = (): void => {\n\t\tlet roles = [\n\t\t\t...this.state.roles,\n\t\t];\n\n\t\tif (!this.state.addRole) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (roles.indexOf(this.state.addRole) === -1) {\n\t\t\troles.push(this.state.addRole);\n\t\t}\n\n\t\troles.sort();\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\taddRole: '',\n\t\t\troles: roles,\n\t\t});\n\t}\n\n\tonRemoveRole(role: string): void {\n\t\tlet roles = [\n\t\t\t...this.state.roles,\n\t\t];\n\n\t\tlet i = roles.indexOf(role);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\troles.splice(i, 1);\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\taddRole: '',\n\t\t\troles: roles,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet popoverElem: JSX.Element;\n\n\t\tif (this.state.popover) {\n\t\t\tlet content = '';\n\t\t\tlet callout = 'Use the startup script below to provision a ' +\n\t\t\t\t'Pritunl Zero host.';\n\t\t\tlet errorMsg = '';\n\t\t\tlet errorMsgElem: JSX.Element;\n\t\t\tlet hostCertificate = this.state.hostCertificate;\n\t\t\tlet hostCertificateDisabled = false;\n\t\t\tif (hostCertificate === null) {\n\t\t\t\thostCertificate = this.props.authority.host_certificates;\n\t\t\t}\n\n\t\t\tlet servers = new Set();\n\t\t\tlet serverDefault: string = null;\n\t\t\tlet serversElm: JSX.Element[] = [];\n\t\t\tif (this.props.nodes) {\n\t\t\t\tfor (let node of this.props.nodes) {\n\t\t\t\t\tif (node.user_domain) {\n\t\t\t\t\t\tservers.add(node.user_domain);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!this.props.authority.host_tokens.length || servers.size === 0) {\n\t\t\t\thostCertificate = false;\n\t\t\t\thostCertificateDisabled = true;\n\t\t\t}\n\n\t\t\tservers.forEach((server: string): void => {\n\t\t\t\tif (!serverDefault) {\n\t\t\t\t\tserverDefault = server;\n\t\t\t\t}\n\t\t\t\tserversElm.push();\n\t\t\t});\n\t\t\tif (servers.size === 1) {\n\t\t\t\tserversElm = [];\n\t\t\t}\n\n\t\t\tlet bastionUsername = '';\n\t\t\tlet bastionHostname = '';\n\t\t\tif (this.props.proxy) {\n\t\t\t\tlet bastionSplit = this.props.authority.host_proxy.split('@');\n\t\t\t\tif (bastionSplit.length === 2) {\n\t\t\t\t\tbastionUsername = this.props.authority.host_proxy.split('@')[0];\n\t\t\t\t\tif (bastionSplit[1].indexOf(\n\t\t\t\t\t\t\tthis.props.authority.host_domain) !== -1) {\n\t\t\t\t\t\tbastionHostname = bastionSplit[1].replace(\n\t\t\t\t\t\t\t'.' + this.props.authority.host_domain, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!bastionUsername) {\n\t\t\t\t\terrorMsg = 'Bastion host is missing username.';\n\t\t\t\t} else if (!bastionHostname) {\n\t\t\t\t\terrorMsg = 'Bastion hostname is not a subdomain of host domain.';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet epel = '';\n\t\t\tlet boto = '';\n\t\t\tlet route53 = '';\n\t\t\tif (this.state.route53 && hostCertificate) {\n\t\t\t\tepel = '\\nsudo yum -y install epel-release || ' +\n\t\t\t\t\t'sudo rpm -Uvh https://dl.fedoraproject.org/' +\n\t\t\t\t\t'pub/epel/epel-release-latest-7.noarch.rpm';\n\t\t\t\tboto = ' python2-boto3 python27-boto3';\n\t\t\t\tif (this.state.awsAccessKey) {\n\t\t\t\t\troute53 += '\\nsudo pritunl-ssh-host config aws-access-key ' +\n\t\t\t\t\t\tthis.state.awsAccessKey;\n\t\t\t\t}\n\t\t\t\tif (this.state.awsSecretKey) {\n\t\t\t\t\troute53 += '\\nsudo pritunl-ssh-host config aws-secret-key ' +\n\t\t\t\t\t\tthis.state.awsSecretKey;\n\t\t\t\t}\n\t\t\t\troute53 += '\\nsudo pritunl-ssh-host config route-53-zone ' +\n\t\t\t\t\tthis.props.authority.host_domain;\n\t\t\t}\n\n\t\t\tlet roles: JSX.Element[] = [];\n\t\t\tfor (let role of this.state.roles) {\n\t\t\t\troles.push(\n\t\t\t\t\t\n\t\t\t\t\t\t{role}\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.onRemoveRole(role);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    ,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (this.props.proxy) {\n\t\t\t\tcallout = 'Open port 9748 and use the startup script below to ' +\n\t\t\t\t\t'provision a Pritunl Zero host. Provisioning may take several ' +\n\t\t\t\t\t'minutes if the servers DNS record was created recently.';\n\t\t\t\tcontent = `#!/bin/bash\nsudo sed -i '/^TrustedUserCAKeys/d' /etc/ssh/sshd_config\nsudo sed -i '/^AuthorizedPrincipalsFile/d' /etc/ssh/sshd_config\nsudo tee -a /etc/ssh/sshd_config << EOF\n\nMatch User ${bastionUsername}\n\tAllowAgentForwarding no\n\tAllowTcpForwarding yes\n\tPermitOpen *:22\n\tGatewayPorts no\n\tX11Forwarding no\n\tPermitTunnel no\n\tForceCommand echo 'Pritunl Zero Bastion Host'\n\tTrustedUserCAKeys /etc/ssh/trusted\n\tAuthorizedPrincipalsFile /etc/ssh/principals\nMatch all\nEOF\nsudo tee /etc/ssh/principals << EOF\nbastion\nEOF\nsudo tee /etc/ssh/trusted << EOF\n${this.props.authority.public_key}\nEOF\n\nsudo tee -a /etc/yum.repos.d/pritunl.repo << EOF\n[pritunl]\nname=Pritunl Repository\nbaseurl=https://repo.pritunl.com/stable/yum/centos/7/\ngpgcheck=1\nenabled=1\nEOF\n\ngpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A\ngpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp\nsudo rpm --import key.tmp\nrm -f key.tmp${epel}\nsudo yum -y install pritunl-ssh-host${boto}\n${route53}\nsudo pritunl-ssh-host config add-token ${\n\tthis.props.authority.host_tokens.length ?\n\tthis.props.authority.host_tokens[0] : 'HOST_TOKEN_UNAVAILABLE'}\nsudo pritunl-ssh-host config hostname ${bastionHostname}\nsudo pritunl-ssh-host config server ${this.state.server || serverDefault}\nsudo useradd ${bastionUsername} || true\n\nsudo systemctl restart sshd || true\nsudo service sshd restart || true`;\n\t\t\t} else if (hostCertificate) {\n\t\t\t\tcallout = 'Open port 9748 and use the startup script below to ' +\n\t\t\t\t\t'provision a Pritunl Zero host. Provisioning may take several ' +\n\t\t\t\t\t'minutes if the servers DNS record was created recently.';\n\t\t\t\tcontent = `#!/bin/bash\nsudo sed -i '/^TrustedUserCAKeys/d' /etc/ssh/sshd_config\nsudo sed -i '/^AuthorizedPrincipalsFile/d' /etc/ssh/sshd_config\nsudo tee -a /etc/ssh/sshd_config << EOF\n\nTrustedUserCAKeys /etc/ssh/trusted\nAuthorizedPrincipalsFile /etc/ssh/principals\nEOF\nsudo tee /etc/ssh/principals << EOF\nemergency\n${this.state.roles.length ? this.state.roles.join('\\n') + '\\n' : ''}EOF\nsudo tee /etc/ssh/trusted << EOF\n${this.props.authority.public_key}\nEOF\n\nsudo tee -a /etc/yum.repos.d/pritunl.repo << EOF\n[pritunl]\nname=Pritunl Repository\nbaseurl=https://repo.pritunl.com/stable/yum/centos/7/\ngpgcheck=1\nenabled=1\nEOF\n\ngpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A\ngpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp\nsudo rpm --import key.tmp\nrm -f key.tmp${epel}\nsudo yum -y install pritunl-ssh-host${boto}\n${route53}\nsudo pritunl-ssh-host config add-token ${\n\tthis.props.authority.host_tokens.length ?\n\tthis.props.authority.host_tokens[0] : 'HOST_TOKEN_UNAVAILABLE'}\nsudo pritunl-ssh-host config hostname ${this.state.hostname}\nsudo pritunl-ssh-host config server ${this.state.server || serverDefault}\n\nsudo systemctl restart sshd || true\nsudo service sshd restart || true`;\n\t\t\t} else {\n\t\t\t\tcontent = `#!/bin/bash\nsudo sed -i '/^TrustedUserCAKeys/d' /etc/ssh/sshd_config\nsudo sed -i '/^AuthorizedPrincipalsFile/d' /etc/ssh/sshd_config\nsudo tee -a /etc/ssh/sshd_config << EOF\n\nTrustedUserCAKeys /etc/ssh/trusted\nAuthorizedPrincipalsFile /etc/ssh/principals\nEOF\nsudo tee /etc/ssh/principals << EOF\nemergency\n${this.state.roles.length ? this.state.roles.join('\\n') + '\\n' : ''}EOF\nsudo tee /etc/ssh/trusted << EOF\n${this.props.authority.public_key}\nEOF\n\nsudo systemctl restart sshd || true\nsudo service sshd restart || true`;\n\t\t\t}\n\n\t\t\tif (errorMsg) {\n\t\t\t\terrorMsgElem =
    \n\t\t\t\t\t\n\t\t\t\t\t\t{errorMsg}\n\t\t\t\t\t
    \n\t\t\t\t;\n\t\t\t}\n\n\t\t\tlet title = '';\n\t\t\tif (this.props.proxy) {\n\t\t\t\ttitle = 'Generate Bastion Deploy Script';\n\t\t\t} else {\n\t\t\t\ttitle = 'Generate Deploy Script';\n\t\t\t}\n\n\t\t\tpopoverElem = {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tpopover: false,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{errorMsgElem}\n\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\thostCertificate: !hostCertificate,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tserver: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{serversElm}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\thostname: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\troute53: !this.state.route53,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tawsAccessKey: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tawsSecretKey: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\tRoles\n\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{roles}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddRole}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tevt.currentTarget.select();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tpopover: !this.state.popover,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>Close\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t;\n\t\t}\n\n\t\tlet buttonLabel = '';\n\t\tif (this.props.proxy) {\n\t\t\tbuttonLabel = 'Generate Bastion Deploy Script';\n\t\t} else {\n\t\t\tbuttonLabel = 'Generate Deploy Script';\n\t\t}\n\n\t\treturn ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport Help from './Help';\n\ninterface Props {\n\thidden?: boolean;\n\tdisabled?: boolean;\n\treadOnly?: boolean;\n\tlabel: string;\n\thelp: string;\n\tplaceholder: string;\n\trows: number;\n\ttabs: string[];\n\tvalues: string[];\n\tonChange: (tab: string, val: string) => void;\n}\n\ninterface State {\n\tactiveIndex: number;\n}\n\nconst css = {\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\ttextarea: {\n\t\twidth: '100%',\n\t\tresize: 'none',\n\t\tfontSize: '12px',\n\t\tfontFamily: '\"Lucida Console\", Monaco, monospace',\n\t} as React.CSSProperties,\n\ttab: {\n\t\tfontSize: '12px',\n\t\tlineHeight: '24px',\n\t\tuserSelect: 'none',\n\t} as React.CSSProperties,\n};\n\nexport default class PageTextAreaTab extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tactiveIndex: 0,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tlet activeIndex = this.state.activeIndex || 0;\n\n\t\tlet tabs: JSX.Element[] = [];\n\t\tfor (let i = 0; i < (this.props.tabs || []).length; i++) {\n\t\t\tlet tab = this.props.tabs[i];\n\t\t\tlet index = i;\n\n\t\t\ttabs.push(\n\t\t\t\t {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\tactiveIndex: index,\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t>{tab}\n\t\t\t);\n\t\t}\n\n\t\treturn \n\t\t\t{this.props.label}\n\t\t\t\n\t\t\t
    \n\t\t\t\t
      \n\t\t\t\t\t{tabs}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.props.onChange(\n\t\t\t\t\t\tthis.props.tabs[this.state.activeIndex],\n\t\t\t\t\t\tevt.target.value,\n\t\t\t\t\t);\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport * as NodeTypes from \"../types/NodeTypes\";\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport PageInput from './PageInput';\nimport PageSwitch from './PageSwitch';\nimport PageSelect from './PageSelect';\nimport PageInputButton from './PageInputButton';\nimport AuthorityDeploy from './AuthorityDeploy';\nimport PageTextAreaTab from './PageTextAreaTab';\nimport * as PageInfos from './PageInfo';\nimport PageInfo from './PageInfo';\nimport PageSave from './PageSave';\nimport ConfirmButton from './ConfirmButton';\nimport Help from './Help';\nimport * as MiscUtils from \"../utils/MiscUtils\";\nimport AuthoritiesStore from \"../stores/AuthoritiesStore\";\n\ninterface Props {\n\tnodes: NodeTypes.NodesRo;\n\tauthority: AuthorityTypes.AuthorityRo;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\tauthority: AuthorityTypes.Authority;\n\taddRole: string;\n\taddMatch: string;\n\taddSubnet: string;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px 10px 0 10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\thostname: {\n\t\tflex: '1',\n\t\tminWidth: '160px',\n\t} as React.CSSProperties,\n\tport: {\n\t\twidth: '60px',\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n};\n\nexport default class Authority extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\tauthority: null,\n\t\t\taddRole: null,\n\t\t\taddMatch: null,\n\t\t\taddSubnet: null,\n\t\t};\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tif (this.props.authority) {\n\t\t\tAuthorityActions.clearSecret(this.props.authority.id);\n\t\t}\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet authority: any;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tauthority[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\ttoggle(name: string): void {\n\t\tlet authority: any;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tauthority[name] = !authority[name];\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tAuthorityActions.commit(this.state.authority).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tauthority: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tAuthorityActions.remove(this.props.authority.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddRole = (): void => {\n\t\tlet authority: AuthorityTypes.Authority;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...authority.roles,\n\t\t];\n\n\t\tif (!this.state.addRole) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (roles.indexOf(this.state.addRole) === -1) {\n\t\t\troles.push(this.state.addRole);\n\t\t}\n\n\t\troles.sort();\n\n\t\tauthority.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\tonRemoveRole(role: string): void {\n\t\tlet authority: AuthorityTypes.Authority;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...authority.roles,\n\t\t];\n\n\t\tlet i = roles.indexOf(role);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\troles.splice(i, 1);\n\n\t\tauthority.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\tonAddMatch = (): void => {\n\t\tlet authority: AuthorityTypes.Authority;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tlet matches = [\n\t\t\t...(authority.host_matches || []),\n\t\t];\n\n\t\tif (!this.state.addMatch) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (matches.indexOf(this.state.addMatch) === -1) {\n\t\t\tmatches.push(this.state.addMatch);\n\t\t}\n\n\t\tmatches.sort();\n\n\t\tauthority.host_matches = matches;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddMatch: '',\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\tonRemoveMatch(match: string): void {\n\t\tlet authority: AuthorityTypes.Authority;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tlet matches = [\n\t\t\t...authority.host_matches,\n\t\t];\n\n\t\tlet i = matches.indexOf(match);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tmatches.splice(i, 1);\n\n\t\tauthority.host_matches = matches;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddMatch: '',\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\tonAddSubnet = (): void => {\n\t\tlet authority: AuthorityTypes.Authority;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tlet subnets = [\n\t\t\t...(authority.host_subnets || []),\n\t\t];\n\n\t\tif (!this.state.addSubnet) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (subnets.indexOf(this.state.addSubnet) === -1) {\n\t\t\tsubnets.push(this.state.addSubnet);\n\t\t}\n\n\t\tsubnets.sort();\n\n\t\tauthority.host_subnets = subnets;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddSubnet: '',\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\tonRemoveSubnet(subnet: string): void {\n\t\tlet authority: AuthorityTypes.Authority;\n\n\t\tif (this.state.changed) {\n\t\t\tauthority = {\n\t\t\t\t...this.state.authority,\n\t\t\t};\n\t\t} else {\n\t\t\tauthority = {\n\t\t\t\t...this.props.authority,\n\t\t\t};\n\t\t}\n\n\t\tlet subnets = [\n\t\t\t...authority.host_subnets,\n\t\t];\n\n\t\tlet i = subnets.indexOf(subnet);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tsubnets.splice(i, 1);\n\n\t\tauthority.host_subnets = subnets;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddSubnet: '',\n\t\t\tauthority: authority,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet authority: AuthorityTypes.Authority = this.state.authority ||\n\t\t\tthis.props.authority;\n\t\tlet info: AuthorityTypes.Info = authority.info || {};\n\t\tlet url: string = window.location.protocol + '//' +\n\t\t\twindow.location.host + '/ssh_public_key/' + authority.id;\n\t\tlet isHsm = authority.type === 'pritunl_hsm';\n\t\tlet hsmSecret = AuthoritiesStore.authoritySecret(authority.id);\n\n\t\tlet roles: JSX.Element[] = [];\n\t\tfor (let role of authority.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveRole(role);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet matches: JSX.Element[] = [];\n\t\tfor (let match of authority.host_matches || []) {\n\t\t\tmatches.push(\n\t\t\t\t\n\t\t\t\t\t{match}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveMatch(match);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet subnets: JSX.Element[] = [];\n\t\tfor (let subnet of authority.host_subnets || []) {\n\t\t\tsubnets.push(\n\t\t\t\t\n\t\t\t\t\t{subnet}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveSubnet(subnet);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t,\n\t\t\t);\n\t\t}\n\n\t\tlet tokens: JSX.Element[] = [];\n\t\tfor (let token of this.props.authority.host_tokens || []) {\n\t\t\ttokens.push(\n\t\t\t\t {\n\t\t\t\t\t\tAuthorityActions.deleteToken(\n\t\t\t\t\t\t\t\tthis.props.authority.id, token).then((): void => {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\tlet fields: PageInfos.Field[] = [\n\t\t\t{\n\t\t\t\tlabel: 'ID',\n\t\t\t\tvalue: authority.id || 'None',\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Algorithm',\n\t\t\t\tvalue: info.key_alg || 'None',\n\t\t\t},\n\t\t];\n\n\t\tif (authority.proxy_hosting) {\n\t\t\tfields.push({\n\t\t\t\tlabel: 'Bastion Host',\n\t\t\t\tvalue: this.props.authority.proxy_jump,\n\t\t\t});\n\t\t}\n\n\t\tif (isHsm) {\n\t\t\tlet hsmStatus = this.props.authority.hsm_status || 'disconnected';\n\n\t\t\tfields.push({\n\t\t\t\tvalueClass: hsmStatus === 'connected' ? '' : 'bp3-text-intent-danger',\n\t\t\t\tlabel: 'Status',\n\t\t\t\tvalue: hsmStatus.charAt(0).toUpperCase() + hsmStatus.substr(1),\n\t\t\t});\n\t\t\tfields.push({\n\t\t\t\tlabel: 'Timestamp',\n\t\t\t\tvalue: MiscUtils.formatDate(\n\t\t\t\t\tthis.props.authority.hsm_timestamp) || 'Inactive',\n\t\t\t});\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('type', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('key', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggle('host_certificates');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggle('strict_host_checking');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet authr: AuthorityTypes.Authority;\n\n\t\t\t\t\t\t\tif (this.state.changed) {\n\t\t\t\t\t\t\t\tauthr = {\n\t\t\t\t\t\t\t\t\t...this.state.authority,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tauthr = {\n\t\t\t\t\t\t\t\t\t...this.props.authority,\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tauthr.host_domain = val;\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tchanged: true,\n\t\t\t\t\t\t\t\tauthority: authr,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggle('proxy_hosting');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('host_proxy', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('hsm_serial', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('hsm_generate_secret', !authority.hsm_generate_secret);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('expire', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('host_expire', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.toggle('match_roles');\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddRole}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddMatch: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddMatch}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddSubnet: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddSubnet}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\tHost Tokens\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{tokens}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tAuthorityActions.createToken(\n\t\t\t\t\t\t\t\t\tthis.props.authority.id).then((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\tAdd Token\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tauthority: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport NodesStore from \"../stores/NodesStore\";\nimport * as NodeActions from \"../actions/NodeActions\";\nimport * as NodeTypes from \"../types/NodeTypes\";\nimport NonState from './NonState';\nimport Authority from './Authority';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\n\ninterface State {\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tnodes: NodeTypes.NodesRo;\n\tdisabled: boolean;\n\talgorithm: string;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 0',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tselect: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tselectFirst: {\n\t\twidth: '100%',\n\t\tborderTopLeftRadius: '3px',\n\t\tborderBottomLeftRadius: '3px',\n\t} as React.CSSProperties,\n\tselectInner: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tselectBox: {\n\t\tmargin: '8px 0 0 8px',\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class Authorities extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tnodes: NodesStore.nodes,\n\t\t\tdisabled: false,\n\t\t\talgorithm: '',\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tAuthoritiesStore.addChangeListener(this.onChange);\n\t\tNodesStore.addChangeListener(this.onChange);\n\t\tAuthorityActions.sync();\n\t\tNodeActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tAuthoritiesStore.removeChangeListener(this.onChange);\n\t\tNodesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tnodes: NodesStore.nodes,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet authoritiesDom: JSX.Element[] = [];\n\n\t\tthis.state.authorities.forEach((\n\t\t\t\tauthority: AuthorityTypes.AuthorityRo): void => {\n\t\t\tauthoritiesDom.push();\n\t\t});\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Authorities

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\talgorithm: evt.target.value,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tEC P384\n\t\t\t\t\t\t\t\t\t\tRSA 4096\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\tAuthorityActions.create({\n\t\t\t\t\t\t\t\t\t\tid: null,\n\t\t\t\t\t\t\t\t\t\talgorithm: this.state.algorithm || 'ecp384',\n\t\t\t\t\t\t\t\t\t}).then((): void => {\n\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>New\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{authoritiesDom}\n\t\t\t
    \n\t\t\t\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\n\ninterface Props {\n\tdomain: string;\n\tonChange: (state: string) => void;\n\tonRemove: () => void;\n}\n\nconst css = {\n\tgroup: {\n\t\twidth: '100%',\n\t\tmaxWidth: '310px',\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\tdomain: {\n\t\twidth: '100%',\n\t\tborderRadius: '0 3px 3px 0',\n\t} as React.CSSProperties,\n\tdomainBox: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class CertificateDomain extends React.Component {\n\trender(): JSX.Element {\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tthis.props.onChange(evt.target.value);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.props.onRemove();\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport Help from './Help';\n\ninterface Props {\n\thidden?: boolean;\n\tdisabled?: boolean;\n\treadOnly?: boolean;\n\tlabel: string;\n\thelp: string;\n\tplaceholder: string;\n\trows: number;\n\tvalue: string;\n\tonChange: (val: string) => void;\n}\n\nconst css = {\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\ttextarea: {\n\t\twidth: '100%',\n\t\tresize: 'none',\n\t\tfontSize: '12px',\n\t\tfontFamily: '\"Lucida Console\", Monaco, monospace',\n\t} as React.CSSProperties,\n};\n\nexport default class PageTextArea extends React.Component {\n\trender(): JSX.Element {\n\t\treturn \n\t\t\t{this.props.label}\n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.props.onChange(evt.target.value);\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as CertificateTypes from '../types/CertificateTypes';\nimport * as CertificateActions from '../actions/CertificateActions';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport CertificateDomain from './CertificateDomain';\nimport PageInput from './PageInput';\nimport PageSelect from './PageSelect';\nimport PageInfo from './PageInfo';\nimport PageTextArea from './PageTextArea';\nimport PageSave from './PageSave';\nimport ConfirmButton from './ConfirmButton';\nimport Help from './Help';\n\ninterface Props {\n\tcertificate: CertificateTypes.CertificateRo;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\tcertificate: CertificateTypes.Certificate;\n\taddDomain: string;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '10px 10px 0 10px',\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\tdomain: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n};\n\nexport default class Certificate extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\tcertificate: null,\n\t\t\taddDomain: null,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet certificate: any;\n\n\t\tif (this.state.changed) {\n\t\t\tcertificate = {\n\t\t\t\t...this.state.certificate,\n\t\t\t};\n\t\t} else {\n\t\t\tcertificate = {\n\t\t\t\t...this.props.certificate,\n\t\t\t};\n\t\t}\n\n\t\tcertificate[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tcertificate: certificate,\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tCertificateActions.commit(this.state.certificate).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tcertificate: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tCertificateActions.remove(this.props.certificate.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddDomain = (): void => {\n\t\tlet cert: CertificateTypes.Certificate;\n\n\t\tif (this.state.changed) {\n\t\t\tcert = {\n\t\t\t\t...this.state.certificate,\n\t\t\t};\n\t\t} else {\n\t\t\tcert = {\n\t\t\t\t...this.props.certificate,\n\t\t\t};\n\t\t}\n\n\t\tlet acmeDomains = [\n\t\t\t...cert.acme_domains,\n\t\t\t'',\n\t\t];\n\n\t\tcert.acme_domains = acmeDomains;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddDomain: '',\n\t\t\tcertificate: cert,\n\t\t});\n\t}\n\n\tonChangeDomain(i: number, state: string): void {\n\t\tlet cert: CertificateTypes.Certificate;\n\n\t\tif (this.state.changed) {\n\t\t\tcert = {\n\t\t\t\t...this.state.certificate,\n\t\t\t};\n\t\t} else {\n\t\t\tcert = {\n\t\t\t\t...this.props.certificate,\n\t\t\t};\n\t\t}\n\n\t\tlet acmeDomains = [\n\t\t\t...cert.acme_domains,\n\t\t];\n\n\t\tacmeDomains[i] = state;\n\n\t\tcert.acme_domains = acmeDomains;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tcertificate: cert,\n\t\t});\n\t}\n\n\tonRemoveDomain(i: number): void {\n\t\tlet cert: CertificateTypes.Certificate;\n\n\t\tif (this.state.changed) {\n\t\t\tcert = {\n\t\t\t\t...this.state.certificate,\n\t\t\t};\n\t\t} else {\n\t\t\tcert = {\n\t\t\t\t...this.props.certificate,\n\t\t\t};\n\t\t}\n\n\t\tlet acmeDomains = [\n\t\t\t...cert.acme_domains,\n\t\t];\n\n\t\tacmeDomains.splice(i, 1);\n\n\t\tcert.acme_domains = acmeDomains;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddDomain: '',\n\t\t\tcertificate: cert,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet cert: CertificateTypes.Certificate = this.state.certificate ||\n\t\t\tthis.props.certificate;\n\n\t\tlet info: CertificateTypes.Info = this.props.certificate.info || {};\n\n\t\tlet domains: JSX.Element[] = [];\n\t\tfor (let i = 0; i < cert.acme_domains.length; i++) {\n\t\t\tlet index = i;\n\n\t\t\tdomains.push(\n\t\t\t\t {\n\t\t\t\t\t\tthis.onChangeDomain(index, state);\n\t\t\t\t\t}}\n\t\t\t\t\tonRemove={(): void => {\n\t\t\t\t\t\tthis.onRemoveDomain(index);\n\t\t\t\t\t}}\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('key', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('certificate', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\tLetsEncrypt Domains\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\tAdd Domain\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('type', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tcertificate: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as CertificateTypes from '../types/CertificateTypes';\nimport CertificatesStore from '../stores/CertificatesStore';\nimport * as CertificateActions from '../actions/CertificateActions';\nimport NonState from './NonState';\nimport Certificate from './Certificate';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\n\ninterface State {\n\tcertificates: CertificateTypes.CertificatesRo;\n\tdisabled: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n\tnoCerts: {\n\t\theight: 'auto',\n\t} as React.CSSProperties,\n};\n\nexport default class Certificates extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tcertificates: CertificatesStore.certificates,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tCertificatesStore.addChangeListener(this.onChange);\n\t\tCertificateActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tCertificatesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tcertificates: CertificatesStore.certificates,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet certsDom: JSX.Element[] = [];\n\n\t\tthis.state.certificates.forEach((\n\t\t\t\tcert: CertificateTypes.CertificateRo): void => {\n\t\t\tcertsDom.push();\n\t\t});\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Certificates

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tCertificateActions.create(null).then((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>New\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t
    \n\t\t\t\t{certsDom}\n\t\t\t
    \n\t\t\t\n\t\t;\n\t}\n}\n","/// \nimport * as ChartTypes from '../types/ChartTypes';\n\nexport const SYNC = 'endpoint.sync';\nexport const SYNC_NAMES = 'endpoint.sync_names';\nexport const TRAVERSE = 'endpoint.traverse';\nexport const FILTER = 'endpoint.filter';\nexport const CHANGE = 'endpoint.change';\n\nexport interface Endpoint {\n\tid: string;\n\tname?: string;\n\troles?: string[];\n\tclient_key?: ClientKey;\n\thas_client_key?: boolean;\n\treset_client_key?: boolean;\n\tdata?: EndpointData;\n\tinfo?: EndpointInfo;\n}\n\nexport interface EndpointInfo {\n\talerts?: {[key: string]: string};\n\tchecks?: {[key: string]: string};\n}\n\nexport interface EndpointData {\n\tversion?: string;\n\thostname?: string;\n\tuptime?: number;\n\tplatform?: string;\n\tpackage_updates?: number;\n\tvirtualization?: string;\n\tcpu_cores?: number;\n\tmem_total?: number;\n\tswap_total?: number;\n\thuge_total?: number;\n\tmd_stat?: MdState[];\n}\n\nexport interface MdState {\n\tname?: string;\n\tstate?: string;\n\tlevel?: string;\n\tfailed?: number;\n\tspare?: number;\n\ttotal?: number;\n}\n\nexport type LogData = string[];\n\nexport interface ClientKey {\n\tsecret?: string;\n}\n\nexport interface Filter {\n\tid?: string;\n\tname?: string;\n\trole?: string;\n}\n\nexport type Endpoints = Endpoint[];\n\nexport type EndpointRo = Readonly;\nexport type EndpointsRo = ReadonlyArray;\n\nexport interface EndpointDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tendpoint?: Endpoint;\n\t\tendpoints?: Endpoints;\n\t\tpage?: number;\n\t\tpageCount?: number;\n\t\tfilter?: Filter;\n\t\tcount?: number;\n\t};\n}\n\nexport interface SystemChart {\n\tcpu_usage?: ChartTypes.Points;\n\tmem_usage?: ChartTypes.Points;\n\tswap_usage?: ChartTypes.Points;\n\thuge_usage?: ChartTypes.Points;\n}\n\nexport interface LoadChart {\n\tload1?: ChartTypes.Points;\n\tload5?: ChartTypes.Points;\n\tload15?: ChartTypes.Points;\n}\n\nexport type DiskChart = {[key: string]: ChartTypes.Points};\n\nexport type DiskIoChart = {[key: string]: ChartTypes.Points};\n\nexport type NetworkChart = {[key: string]: ChartTypes.Points};\n\nexport type CheckChart = {[key: string]: ChartTypes.Points};\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as EndpointTypes from '../types/EndpointTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass EndpointsStore extends EventEmitter {\n\t_endpoints: EndpointTypes.EndpointsRo = Object.freeze([]);\n\t_page: number;\n\t_pageCount: number;\n\t_filter: EndpointTypes.Filter = null;\n\t_count: number;\n\t_map: {[key: string]: number} = {};\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget endpoints(): EndpointTypes.EndpointsRo {\n\t\treturn this._endpoints;\n\t}\n\n\tget endpointsM(): EndpointTypes.Endpoints {\n\t\tlet endpoints: EndpointTypes.Endpoints = [];\n\t\tthis._endpoints.forEach((endpoint: EndpointTypes.EndpointRo): void => {\n\t\t\tendpoints.push({\n\t\t\t\t...endpoint,\n\t\t\t});\n\t\t});\n\t\treturn endpoints;\n\t}\n\n\tget page(): number {\n\t\treturn this._page || 0;\n\t}\n\n\tget pageCount(): number {\n\t\treturn this._pageCount || 20;\n\t}\n\n\tget pages(): number {\n\t\treturn Math.ceil(this.count / this.pageCount);\n\t}\n\n\tget filter(): EndpointTypes.Filter {\n\t\treturn this._filter;\n\t}\n\n\tget count(): number {\n\t\treturn this._count || 0;\n\t}\n\n\tendpoint(id: string): EndpointTypes.EndpointRo {\n\t\tlet i = this._map[id];\n\t\tif (i === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._endpoints[i];\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_traverse(page: number): void {\n\t\tthis._page = Math.min(this.pages, page);\n\t}\n\n\t_filterCallback(filter: EndpointTypes.Filter): void {\n\t\tif ((this._filter !== null && filter === null) ||\n\t\t\t(this._filter === {} && filter !== null) || (\n\t\t\t\tfilter && this._filter && (\n\t\t\t\t\tfilter.name !== this._filter.name\n\t\t\t\t))) {\n\t\t\tthis._traverse(0);\n\t\t}\n\t\tthis._filter = filter;\n\t\tthis.emitChange();\n\t}\n\n\t_sync(endpoints: EndpointTypes.Endpoint[], count: number): void {\n\t\tthis._map = {};\n\t\tfor (let i = 0; i < endpoints.length; i++) {\n\t\t\tendpoints[i] = Object.freeze(endpoints[i]);\n\t\t\tthis._map[endpoints[i].id] = i;\n\t\t}\n\n\t\tthis._count = count;\n\t\tthis._endpoints = Object.freeze(endpoints);\n\t\tthis._page = Math.min(this.pages, this.page);\n\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: EndpointTypes.EndpointDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase EndpointTypes.TRAVERSE:\n\t\t\t\tthis._traverse(action.data.page);\n\t\t\t\tbreak;\n\n\t\t\tcase EndpointTypes.FILTER:\n\t\t\t\tthis._filterCallback(action.data.filter);\n\t\t\t\tbreak;\n\n\t\t\tcase EndpointTypes.SYNC:\n\t\t\t\tthis._sync(action.data.endpoints, action.data.count);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new EndpointsStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport EndpointsStore from '../stores/EndpointsStore';\nimport * as EndpointTypes from '../types/EndpointTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\nlet dataSyncReqs: {[key: string]: SuperAgent.Request} = {};\n\nexport function sync(): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/endpoint')\n\t\t\t.query({\n\t\t\t\t...EndpointsStore.filter,\n\t\t\t\tpage: EndpointsStore.page,\n\t\t\t\tpage_count: EndpointsStore.pageCount,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load endpoints');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: EndpointTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tendpoints: res.body.endpoints,\n\t\t\t\t\t\tcount: res.body.count,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function traverse(page: number): Promise {\n\tDispatcher.dispatch({\n\t\ttype: EndpointTypes.TRAVERSE,\n\t\tdata: {\n\t\t\tpage: page,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function filter(filt: EndpointTypes.Filter): Promise {\n\tDispatcher.dispatch({\n\t\ttype: EndpointTypes.FILTER,\n\t\tdata: {\n\t\t\tfilter: filt,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function commit(endpoint: EndpointTypes.Endpoint): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/endpoint/' + endpoint.id)\n\t\t\t.send(endpoint)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to save endpoint');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function create(endpoint: EndpointTypes.Endpoint): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/endpoint')\n\t\t\t.send(endpoint)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to create endpoint');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function remove(endpointId: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/endpoint/' + endpointId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete endpoints');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function removeMulti(endpointIds: string[]): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/endpoint')\n\t\t\t.send(endpointIds)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete endpoints');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function chart(endpointId: string, resource: string,\n\t\tperiod: number, interval: number): Promise {\n\tlet curDataSyncId = MiscUtils.uuid();\n\n\tlet loader = new Loader().loading();\n\n\t// TODO Duplicate requests for numbered resource\n\n\tresource = resource.replace(/[0-9]/g, '');\n\n\treturn new Promise((resolve, reject): void => {\n\t\tlet req = SuperAgent.get('/endpoint/' + endpointId + '/chart')\n\t\t\t.query({\n\t\t\t\tresource: resource,\n\t\t\t\tperiod: period.toString(),\n\t\t\t\tinterval: interval.toString(),\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.on('abort', () => {\n\t\t\t\tloader.done();\n\t\t\t\tresolve(null);\n\t\t\t});\n\t\tdataSyncReqs[curDataSyncId] = req;\n\n\t\treq.end((err: any, res: SuperAgent.Response): void => {\n\t\t\tdelete dataSyncReqs[curDataSyncId];\n\t\t\tloader.done();\n\n\t\t\tif (res && res.status === 401) {\n\t\t\t\twindow.location.href = '/login';\n\t\t\t\tresolve(null);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (err) {\n\t\t\t\tAlert.errorRes(res, 'Failed to load endpoint chart');\n\t\t\t\treject(err);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve(res.body);\n\t\t});\n\t});\n}\n\nexport function log(endpointId: string, resource: string): Promise {\n\tlet curDataSyncId = MiscUtils.uuid();\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tlet req = SuperAgent.get('/endpoint/' + endpointId + '/log')\n\t\t\t.query({\n\t\t\t\tresource: resource,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.on('abort', () => {\n\t\t\t\tloader.done();\n\t\t\t\tresolve(null);\n\t\t\t});\n\t\tdataSyncReqs[curDataSyncId] = req;\n\n\t\treq.end((err: any, res: SuperAgent.Response): void => {\n\t\t\tdelete dataSyncReqs[curDataSyncId];\n\t\t\tloader.done();\n\n\t\t\tif (res && res.status === 401) {\n\t\t\t\twindow.location.href = '/login';\n\t\t\t\tresolve(null);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (err) {\n\t\t\t\tAlert.errorRes(res, 'Failed to load endpoint log');\n\t\t\t\treject(err);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve(res.body);\n\t\t});\n\t});\n}\n\nexport function dataCancel(): void {\n\tfor (let [key, val] of Object.entries(dataSyncReqs)) {\n\t\tval.abort();\n\t}\n}\n\nEventDispatcher.register((action: EndpointTypes.EndpointDispatch) => {\n\tswitch (action.type) {\n\t\tcase EndpointTypes.CHANGE:\n\t\t\tsync();\n\t\t\tbreak;\n\t}\n});\n","/// \nexport const SYNC = 'check.sync';\nexport const SYNC_NAMES = 'check.sync_names';\nexport const TRAVERSE = 'check.traverse';\nexport const FILTER = 'check.filter';\nexport const CHANGE = 'check.change';\n\nexport interface Check {\n\tid: string;\n\tname?: string;\n\troles?: string[];\n\tfrequency?: number;\n\ttype?: string;\n\ttargets?: string[];\n\ttimeout?: number;\n\tstatus_code?: number;\n\theaders?: Header[];\n\tstates?: State[];\n}\n\nexport interface Header {\n\tkey?: string;\n\tvalue?: string;\n}\n\nexport interface State {\n\te?: string;\n\tt?: string;\n\tx?: string[];\n\tl?: string[];\n\tr?: string[];\n}\n\nexport interface Filter {\n\tid?: string;\n\tname?: string;\n\trole?: string;\n}\n\nexport type Checks = Check[];\n\nexport type CheckRo = Readonly;\nexport type ChecksRo = ReadonlyArray;\n\nexport interface CheckDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tcheck?: Check;\n\t\tchecks?: Checks;\n\t\tpage?: number;\n\t\tpageCount?: number;\n\t\tfilter?: Filter;\n\t\tcount?: number;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as CheckTypes from '../types/CheckTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass ChecksStore extends EventEmitter {\n\t_checks: CheckTypes.ChecksRo = Object.freeze([]);\n\t_page: number;\n\t_pageCount: number;\n\t_filter: CheckTypes.Filter = null;\n\t_count: number;\n\t_map: {[key: string]: number} = {};\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget checks(): CheckTypes.ChecksRo {\n\t\treturn this._checks;\n\t}\n\n\tget checksM(): CheckTypes.Checks {\n\t\tlet checks: CheckTypes.Checks = [];\n\t\tthis._checks.forEach((check: CheckTypes.CheckRo): void => {\n\t\t\tchecks.push({\n\t\t\t\t...check,\n\t\t\t});\n\t\t});\n\t\treturn checks;\n\t}\n\n\tget page(): number {\n\t\treturn this._page || 0;\n\t}\n\n\tget pageCount(): number {\n\t\treturn this._pageCount || 20;\n\t}\n\n\tget pages(): number {\n\t\treturn Math.ceil(this.count / this.pageCount);\n\t}\n\n\tget filter(): CheckTypes.Filter {\n\t\treturn this._filter;\n\t}\n\n\tget count(): number {\n\t\treturn this._count || 0;\n\t}\n\n\tcheck(id: string): CheckTypes.CheckRo {\n\t\tlet i = this._map[id];\n\t\tif (i === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._checks[i];\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_traverse(page: number): void {\n\t\tthis._page = Math.min(this.pages, page);\n\t}\n\n\t_filterCallback(filter: CheckTypes.Filter): void {\n\t\tif ((this._filter !== null && filter === null) ||\n\t\t\t(this._filter === {} && filter !== null) || (\n\t\t\t\tfilter && this._filter && (\n\t\t\t\t\tfilter.name !== this._filter.name\n\t\t\t\t))) {\n\t\t\tthis._traverse(0);\n\t\t}\n\t\tthis._filter = filter;\n\t\tthis.emitChange();\n\t}\n\n\t_sync(checks: CheckTypes.Check[], count: number): void {\n\t\tthis._map = {};\n\t\tfor (let i = 0; i < checks.length; i++) {\n\t\t\tchecks[i] = Object.freeze(checks[i]);\n\t\t\tthis._map[checks[i].id] = i;\n\t\t}\n\n\t\tthis._count = count;\n\t\tthis._checks = Object.freeze(checks);\n\t\tthis._page = Math.min(this.pages, this.page);\n\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: CheckTypes.CheckDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase CheckTypes.TRAVERSE:\n\t\t\t\tthis._traverse(action.data.page);\n\t\t\t\tbreak;\n\n\t\t\tcase CheckTypes.FILTER:\n\t\t\t\tthis._filterCallback(action.data.filter);\n\t\t\t\tbreak;\n\n\t\t\tcase CheckTypes.SYNC:\n\t\t\t\tthis._sync(action.data.checks, action.data.count);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new ChecksStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport ChecksStore from '../stores/ChecksStore';\nimport * as CheckTypes from '../types/CheckTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\nlet dataSyncReqs: {[key: string]: SuperAgent.Request} = {};\n\nexport function sync(): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/checks')\n\t\t\t.query({\n\t\t\t\t...ChecksStore.filter,\n\t\t\t\tpage: ChecksStore.page,\n\t\t\t\tpage_count: ChecksStore.pageCount,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load checks');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: CheckTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tchecks: res.body.checks,\n\t\t\t\t\t\tcount: res.body.count,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function traverse(page: number): Promise {\n\tDispatcher.dispatch({\n\t\ttype: CheckTypes.TRAVERSE,\n\t\tdata: {\n\t\t\tpage: page,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function filter(filt: CheckTypes.Filter): Promise {\n\tDispatcher.dispatch({\n\t\ttype: CheckTypes.FILTER,\n\t\tdata: {\n\t\t\tfilter: filt,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function commit(check: CheckTypes.Check): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/checks/' + check.id)\n\t\t\t.send(check)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to save check');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function create(check: CheckTypes.Check): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/checks')\n\t\t\t.send(check)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to create check');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function remove(checkId: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/checks/' + checkId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete checks');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function removeMulti(checkIds: string[]): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/checks')\n\t\t\t.send(checkIds)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete checks');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function chart(checkId: string, resource: string,\n\tperiod: number, interval: number): Promise {\n\tlet curDataSyncId = MiscUtils.uuid();\n\n\tlet loader = new Loader().loading();\n\n\tresource = resource.replace(/[0-9]/g, '');\n\n\treturn new Promise((resolve, reject): void => {\n\t\tlet req = SuperAgent.get('/checks/' + checkId + '/chart')\n\t\t\t.query({\n\t\t\t\tresource: resource,\n\t\t\t\tperiod: period.toString(),\n\t\t\t\tinterval: interval.toString(),\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.on('abort', () => {\n\t\t\t\tloader.done();\n\t\t\t\tresolve(null);\n\t\t\t});\n\t\tdataSyncReqs[curDataSyncId] = req;\n\n\t\treq.end((err: any, res: SuperAgent.Response): void => {\n\t\t\tdelete dataSyncReqs[curDataSyncId];\n\t\t\tloader.done();\n\n\t\t\tif (res && res.status === 401) {\n\t\t\t\twindow.location.href = '/login';\n\t\t\t\tresolve(null);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (err) {\n\t\t\t\tAlert.errorRes(res, 'Failed to load check chart');\n\t\t\t\treject(err);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve(res.body);\n\t\t});\n\t});\n}\n\nexport function log(checkId: string, resource: string): Promise {\n\tlet curDataSyncId = MiscUtils.uuid();\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tlet req = SuperAgent.get('/checks/' + checkId + '/log')\n\t\t\t.query({\n\t\t\t\tresource: resource,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.on('abort', () => {\n\t\t\t\tloader.done();\n\t\t\t\tresolve(null);\n\t\t\t});\n\t\tdataSyncReqs[curDataSyncId] = req;\n\n\t\treq.end((err: any, res: SuperAgent.Response): void => {\n\t\t\tdelete dataSyncReqs[curDataSyncId];\n\t\t\tloader.done();\n\n\t\t\tif (res && res.status === 401) {\n\t\t\t\twindow.location.href = '/login';\n\t\t\t\tresolve(null);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (err) {\n\t\t\t\tAlert.errorRes(res, 'Failed to load check log');\n\t\t\t\treject(err);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolve(res.body);\n\t\t});\n\t});\n}\n\nexport function dataCancel(): void {\n\tfor (let [key, val] of Object.entries(dataSyncReqs)) {\n\t\tval.abort();\n\t}\n}\n\nEventDispatcher.register((action: CheckTypes.CheckDispatch) => {\n\tswitch (action.type) {\n\t\tcase CheckTypes.CHANGE:\n\t\t\tsync();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as EndpointTypes from '../types/EndpointTypes';\n\nexport interface Point {\n\tx: number;\n\ty: number;\n}\nexport type Points = Point[];\nexport type Chart = Points[];\n\nexport interface Dataset {\n\tlabel: string;\n}\nexport type Datasets = Dataset[];\n\nexport type ChartData = {[key: string]: Points};\n\nexport interface EndpointData {\n\thas_data: boolean;\n\tdata: ChartData;\n}\n\nexport interface Labels {\n\ttitle: string;\n\tresource_label: string;\n\tresource_type: string;\n\tresource_suffix: string;\n\tresource_fixed: number;\n\tresource_min: number;\n\tresource_max?: number;\n\thide_zero?: boolean;\n\tdatasets: Datasets;\n}\n\nexport function getChartLabels(resource: string, data: any): Labels {\n\tswitch (resource) {\n\t\tcase 'system':\n\t\t\treturn {\n\t\t\t\ttitle: 'System Usage',\n\t\t\t\tresource_label: 'Percent',\n\t\t\t\tresource_type: 'float',\n\t\t\t\tresource_suffix: '%',\n\t\t\t\tresource_fixed: 3,\n\t\t\t\tresource_min: 0,\n\t\t\t\tresource_max: 100,\n\t\t\t\tdatasets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'CPU Usage',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Memory Usage',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Swap Usage',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'HugePages Usage',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\tcase 'load':\n\t\t\treturn {\n\t\t\t\ttitle: 'Load Average',\n\t\t\t\tresource_label: 'Load',\n\t\t\t\tresource_type: 'float',\n\t\t\t\tresource_suffix: '',\n\t\t\t\tresource_fixed: 4,\n\t\t\t\tresource_min: 0,\n\t\t\t\tdatasets: [\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Load1',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Load5',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: 'Load15',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\tcase 'disk':\n\t\t\tlet diskData = data as EndpointTypes.DiskChart;\n\t\t\tlet diskDatasets: Datasets = [];\n\n\t\t\tfor (let key of Object.keys(diskData).sort()) {\n\t\t\t\tdiskDatasets.push({\n\t\t\t\t\tlabel: key,\n\t\t\t\t} as Dataset);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttitle: 'Disks',\n\t\t\t\tresource_label: 'Usage',\n\t\t\t\tresource_type: 'float',\n\t\t\t\tresource_suffix: '%',\n\t\t\t\tresource_fixed: 3,\n\t\t\t\tresource_min: 0,\n\t\t\t\tresource_max: 100,\n\t\t\t\thide_zero: true,\n\t\t\t\tdatasets: diskDatasets,\n\t\t\t};\n\t\tcase 'diskio0':\n\t\tcase 'diskio1':\n\t\t\tlet diskioData = data as EndpointTypes.NetworkChart;\n\t\t\tlet diskioDatasets: Datasets = [];\n\n\t\t\tfor (let key of Object.keys(diskioData).sort()) {\n\t\t\t\tlet keys = key.split('-');\n\t\t\t\tlet diskDevice = keys.slice(0, keys.length-1).join('-');\n\t\t\t\tlet dataType = keys[keys.length-1];\n\n\t\t\t\tlet label = '';\n\n\t\t\t\tif (resource === 'diskio0') {\n\t\t\t\t\tswitch (dataType) {\n\t\t\t\t\t\tcase 'br':\n\t\t\t\t\t\t\tlabel = 'Read';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'bw':\n\t\t\t\t\t\t\tlabel = 'Written';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tswitch (dataType) {\n\t\t\t\t\t\tcase 'tr':\n\t\t\t\t\t\t\tlabel = 'Read';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'tw':\n\t\t\t\t\t\t\tlabel = 'Write';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'ti':\n\t\t\t\t\t\t\tlabel = 'I/O';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tdiskioDatasets.push({\n\t\t\t\t\tlabel: diskDevice + ' ' + label,\n\t\t\t\t} as Dataset);\n\t\t\t}\n\n\t\t\tif (resource === 'diskio0') {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: 'Disk I/O',\n\t\t\t\t\tresource_label: 'Activity',\n\t\t\t\t\tresource_type: 'bytes',\n\t\t\t\t\tresource_suffix: '',\n\t\t\t\t\tresource_fixed: 2,\n\t\t\t\t\tresource_min: 0,\n\t\t\t\t\thide_zero: true,\n\t\t\t\t\tdatasets: diskioDatasets,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: 'Disk I/O Wait',\n\t\t\t\t\tresource_label: 'Waiting',\n\t\t\t\t\tresource_type: 'milliseconds',\n\t\t\t\t\tresource_suffix: '',\n\t\t\t\t\tresource_fixed: 2,\n\t\t\t\t\tresource_min: 0,\n\t\t\t\t\thide_zero: true,\n\t\t\t\t\tdatasets: diskioDatasets,\n\t\t\t\t};\n\t\t\t}\n\t\tcase 'network':\n\t\t\tlet netData = data as EndpointTypes.NetworkChart;\n\t\t\tlet netDatasets: Datasets = [];\n\n\t\t\tfor (let key of Object.keys(netData).sort()) {\n\t\t\t\tlet keys = key.split('-');\n\t\t\t\tlet iface = keys.slice(0, keys.length-1).join('-');\n\t\t\t\tlet dataType = keys[keys.length-1];\n\n\t\t\t\tlet label = '';\n\t\t\t\tswitch (dataType) {\n\t\t\t\t\tcase 'bs':\n\t\t\t\t\t\tlabel = 'Transmitted';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'br':\n\t\t\t\t\t\tlabel = 'Received';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tlabel = 'Unknown';\n\t\t\t\t}\n\n\t\t\t\tnetDatasets.push({\n\t\t\t\t\tlabel: iface + ' ' + label,\n\t\t\t\t} as Dataset);\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttitle: 'Network Traffic',\n\t\t\t\tresource_label: 'Traffic',\n\t\t\t\tresource_type: 'bytes',\n\t\t\t\tresource_suffix: '',\n\t\t\t\tresource_fixed: 2,\n\t\t\t\tresource_min: 0,\n\t\t\t\thide_zero: true,\n\t\t\t\tdatasets: netDatasets,\n\t\t\t};\n\t\tcase 'check0':\n\t\tcase 'check1':\n\t\tcase 'check2':\n\t\t\tlet checkData = data as EndpointTypes.CheckChart;\n\t\t\tlet checkDatasets: Datasets = [];\n\n\t\t\tfor (let key of Object.keys(checkData).sort()) {\n\t\t\t\tlet keys = key.split('-');\n\t\t\t\tlet diskDevice = keys.slice(0, keys.length-1).join('-');\n\t\t\t\tlet dataType = keys[keys.length-1];\n\n\t\t\t\tlet label = '';\n\n\t\t\t\tif (resource === 'check0') {\n\t\t\t\t\tswitch (dataType) {\n\t\t\t\t\t\tcase 'u':\n\t\t\t\t\t\t\tlabel = 'Up';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (resource === 'check1') {\n\t\t\t\t\tswitch (dataType) {\n\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tlabel = 'Down';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t} else if (resource === 'check2') {\n\t\t\t\t\tswitch (dataType) {\n\t\t\t\t\t\tcase 'p':\n\t\t\t\t\t\t\tlabel = 'Latency';\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcheckDatasets.push({\n\t\t\t\t\tlabel: diskDevice + ' ' + label,\n\t\t\t\t} as Dataset);\n\t\t\t}\n\n\t\t\tif (resource === 'check0') {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: 'Targets Up',\n\t\t\t\t\tresource_label: 'Up',\n\t\t\t\t\tresource_type: '',\n\t\t\t\t\tresource_suffix: '',\n\t\t\t\t\tresource_fixed: 0,\n\t\t\t\t\tresource_min: 0,\n\t\t\t\t\tdatasets: checkDatasets,\n\t\t\t\t};\n\t\t\t} else if (resource === 'check1') {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: 'Targets Down',\n\t\t\t\t\tresource_label: 'Down',\n\t\t\t\t\tresource_type: '',\n\t\t\t\t\tresource_suffix: '',\n\t\t\t\t\tresource_fixed: 0,\n\t\t\t\t\tresource_min: 0,\n\t\t\t\t\tdatasets: checkDatasets,\n\t\t\t\t};\n\t\t\t} else if (resource === 'check2') {\n\t\t\t\treturn {\n\t\t\t\t\ttitle: 'Average Latency',\n\t\t\t\t\tresource_label: 'Latency',\n\t\t\t\t\tresource_type: 'milliseconds',\n\t\t\t\t\tresource_suffix: '',\n\t\t\t\t\tresource_fixed: 0,\n\t\t\t\t\tresource_min: 0,\n\t\t\t\t\tdatasets: checkDatasets,\n\t\t\t\t};\n\t\t\t}\n\t}\n\treturn undefined;\n}\n\nexport function getChartData(resource: string, data: any): Chart {\n\tswitch (resource) {\n\t\tcase 'system':\n\t\t\treturn [\n\t\t\t\tdata.cpu_usage,\n\t\t\t\tdata.mem_usage,\n\t\t\t\tdata.swap_usage,\n\t\t\t\tdata.huge_usage,\n\t\t\t];\n\t\tcase 'load':\n\t\t\treturn [\n\t\t\t\tdata.load1,\n\t\t\t\tdata.load5,\n\t\t\t\tdata.load15,\n\t\t\t];\n\t\tcase 'disk':\n\t\t\tlet diskData = data as EndpointTypes.DiskChart;\n\t\t\tlet diskChart: Chart = [];\n\n\t\t\tfor (let key of Object.keys(diskData).sort()) {\n\t\t\t\tdiskChart.push(diskData[key]);\n\t\t\t}\n\n\t\t\treturn diskChart;\n\t\tcase 'diskio0':\n\t\tcase 'diskio1':\n\t\t\tlet diskioData = data as EndpointTypes.DiskIoChart;\n\t\t\tlet diskioChart: Chart = [];\n\n\t\t\tfor (let key of Object.keys(diskioData).sort()) {\n\t\t\t\tlet keys = key.split('-');\n\t\t\t\tlet dataType = keys[keys.length-1];\n\n\t\t\t\tif (resource === 'diskio0') {\n\t\t\t\t\tif (dataType === 'br' || dataType === 'bw') {\n\t\t\t\t\t\tdiskioChart.push(diskioData[key]);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (dataType === 'tr' || dataType === 'tw' || dataType === 'ti') {\n\t\t\t\t\t\tdiskioChart.push(diskioData[key]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn diskioChart;\n\t\tcase 'network':\n\t\t\tlet netData = data as EndpointTypes.NetworkChart;\n\t\t\tlet netChart: Chart = [];\n\n\t\t\tfor (let key of Object.keys(netData).sort()) {\n\t\t\t\tnetChart.push(netData[key]);\n\t\t\t}\n\n\t\t\treturn netChart;\n\t\tcase 'check0':\n\t\tcase 'check1':\n\t\tcase 'check2':\n\t\t\tlet checkData = data as EndpointTypes.CheckChart;\n\t\t\tlet checkChart: Chart = [];\n\n\t\t\tfor (let key of Object.keys(checkData).sort()) {\n\t\t\t\tlet keys = key.split('-');\n\t\t\t\tlet dataType = keys[keys.length-1];\n\n\t\t\t\tif (resource === 'check0') {\n\t\t\t\t\tif (dataType === 'u') {\n\t\t\t\t\t\tcheckChart.push(checkData[key]);\n\t\t\t\t\t}\n\t\t\t\t} else if (resource === 'check1') {\n\t\t\t\t\tif (dataType === 'd') {\n\t\t\t\t\t\tcheckChart.push(checkData[key]);\n\t\t\t\t\t}\n\t\t\t\t} else if (resource === 'check2') {\n\t\t\t\t\tif (dataType === 'p') {\n\t\t\t\t\t\tcheckChart.push(checkData[key]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn checkChart;\n\t}\n\n\treturn undefined;\n}\n","/// \nimport * as React from 'react';\nimport * as ChartJs from 'chart.js';\nimport * as CheckActions from '../actions/CheckActions';\nimport * as EndpointActions from '../actions/EndpointActions';\nimport * as ChartTypes from '../types/ChartTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport * as Theme from '../Theme';\n\ninterface Props {\n\tendpoint?: string;\n\tcheck?: string;\n\tresource: string;\n\tsync: number;\n\tperiod: number;\n\tinterval: number;\n\tleft: boolean;\n\tonLoading: () => void;\n\tonLoaded: () => void;\n\tgetBoxRect: () => DOMRect;\n}\n\ninterface State {\n\thidden: boolean;\n\tdisabled: boolean;\n}\n\nconst colors = [\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n\n\t'#0091ea', // light blue\n\t'#d50000', // red\n\t'#00c853', // green\n\t'#aa00ff', // purple\n\t'#ffab00', // amber\n\t'#c51162', // pink\n\t'#2962ff', // blue\n\t'#ff6d00', // orange\n\t'#00bfa5', // teal\n\t'#304ffe', // indigo\n\t'#00b8d4', // cyan\n\t'#6200ea', // deep purple\n\t'#ffd600', // yellow\n\t'#dd2c00', // deep orange\n\t'#5d4037', // brown\n\t'#455a64', // blue grey\n\t'#64dd17', // light green\n\t'#aeea00', // lime\n];\n\nexport default class EndpointChart extends React.Component {\n\tdata: ChartTypes.ChartData;\n\tsync: number;\n\tperiod: number;\n\tinterval: number;\n\tchart: ChartJs.Chart;\n\tchartRef: React.RefObject;\n\tlabels: ChartTypes.Labels;\n\tlastDouble: number;\n\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\thidden: false,\n\t\t\tdisabled: false,\n\t\t};\n\t\tthis.chartRef = React.createRef();\n\t}\n\n\tticks = (axis: ChartJs.Scale) => {\n\t\tlet ticks = axis.ticks;\n\t\tlet newTicks: ChartJs.Tick[] = [];\n\t\tlet dataset = Object.values(this.data)[0];\n\t\tlet tickMod = 3600000; // 1 hour\n\t\tlet len = dataset.length;\n\n\t\tif (len) {\n\t\t\tlet first = dataset[0] as ChartJs.ScatterDataPoint;\n\t\t\tlet last = dataset[len-1] as ChartJs.ScatterDataPoint;\n\t\t\tlet range = last.x - first.x;\n\n\t\t\tif (range >= 2833920000) {\n\t\t\t\ttickMod = 604800000; // 7 day\n\t\t\t} else if (range >= 1451520000) {\n\t\t\t\ttickMod = 172800000; // 2 day\n\t\t\t} else if (range >= 611280000) {\n\t\t\t\ttickMod = 86400000; // 1 day\n\t\t\t} else if (range >= 276480000) {\n\t\t\t\ttickMod = 43200000; // 12 hours\n\t\t\t} else if (range >= 89280000) {\n\t\t\t\ttickMod = 21600000; // 6 hours\n\t\t\t} else {\n\t\t\t\ttickMod = 3600000; // 1 hours\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = 0; i < ticks.length; i++) {\n\t\t\tlet tick = ticks[i];\n\n\t\t\tif (tick.value % tickMod === 0) {\n\t\t\t\tnewTicks.push(tick);\n\t\t\t}\n\t\t}\n\n\t\taxis.ticks = newTicks;\n\t}\n\n\tconfig = (): ChartJs.ChartConfiguration => {\n\t\tthis.labels = ChartTypes.getChartLabels(this.props.resource, this.data);\n\t\tlet self = this;\n\n\t\tlet config = {\n\t\t\ttype: 'line',\n\t\t\toptions: {\n\t\t\t\tscales: {\n\t\t\t\t\tx: {\n\t\t\t\t\t\ttype: 'time',\n\t\t\t\t\t\ttitle: {\n\t\t\t\t\t\t\tdisplay: true,\n\t\t\t\t\t\t\ttext: 'Time',\n\t\t\t\t\t\t\tcolor: Theme.chartColor1(),\n\t\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\t\tfont: {\n\t\t\t\t\t\t\t\tweight: 'bold',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttime: {\n\t\t\t\t\t\t\tunit: 'minute',\n\t\t\t\t\t\t\tdisplayFormats: {\n\t\t\t\t\t\t\t\tminute: 'HH:mm',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tticks: {\n\t\t\t\t\t\t\tstepSize: 1,\n\t\t\t\t\t\t\tcount: 100,\n\t\t\t\t\t\t\tmaxTicksLimit: 100,\n\t\t\t\t\t\t\tcolor: Theme.chartColor1(),\n\t\t\t\t\t\t\tsource: 'data',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgrid: {\n\t\t\t\t\t\t\tcolor: Theme.chartColor2(),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tbeforeTickToLabelConversion: this.ticks,\n\t\t\t\t\t},\n\t\t\t\t\ty: {\n\t\t\t\t\t\tmin: this.labels.resource_min,\n\t\t\t\t\t\tmax: this.labels.resource_max,\n\t\t\t\t\t\toffset: false,\n\t\t\t\t\t\tbeginAtZero: true,\n\t\t\t\t\t\ttitle: {\n\t\t\t\t\t\t\tdisplay: true,\n\t\t\t\t\t\t\ttext: this.labels.resource_label,\n\t\t\t\t\t\t\tcolor: Theme.chartColor1(),\n\t\t\t\t\t\t\tpadding: 0,\n\t\t\t\t\t\t\tfont: {\n\t\t\t\t\t\t\t\tweight: 'bold',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tticks: {\n\t\t\t\t\t\t\tcolor: Theme.chartColor1(),\n\t\t\t\t\t\t\tcallback: (val: number): number | string => {\n\t\t\t\t\t\t\t\tswitch (this.labels.resource_type) {\n\t\t\t\t\t\t\t\t\tcase 'bytes':\n\t\t\t\t\t\t\t\t\t\treturn MiscUtils.formatBytes(val, 0);\n\t\t\t\t\t\t\t\t\tcase 'milliseconds':\n\t\t\t\t\t\t\t\t\t\treturn MiscUtils.formatMs(val);\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\treturn val;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgrid: {\n\t\t\t\t\t\t\tcolor: Theme.chartColor2(),\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tplugins: {\n\t\t\t\t\ttitle: {\n\t\t\t\t\t\tdisplay: true,\n\t\t\t\t\t\ttext: this.labels.title,\n\t\t\t\t\t\tcolor: Theme.chartColor1(),\n\t\t\t\t\t\tpadding: 3,\n\t\t\t\t\t\tfont: {\n\t\t\t\t\t\t\tsize: 13,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\ttooltip: {\n\t\t\t\t\t\tenabled: false,\n\t\t\t\t\t\tmode: 'index',\n\t\t\t\t\t\tintersect: false,\n\t\t\t\t\t\tbackgroundColor: 'rgba(0, 0, 0, 0.7)',\n\t\t\t\t\t\texternal: (context): void => {\n\t\t\t\t\t\t\tlet toolElm = document.getElementById('chartjs-tooltip');\n\n\t\t\t\t\t\t\tif (!toolElm) {\n\t\t\t\t\t\t\t\ttoolElm = document.createElement('div');\n\t\t\t\t\t\t\t\ttoolElm.id = 'chartjs-tooltip';\n\t\t\t\t\t\t\t\ttoolElm.className = 'bp3-card';\n\t\t\t\t\t\t\t\ttoolElm.innerHTML = '
    ';\n\t\t\t\t\t\t\t\tdocument.body.appendChild(toolElm);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst model = context.tooltip;\n\t\t\t\t\t\t\tif (model.opacity === 0) {\n\t\t\t\t\t\t\t\ttoolElm.style.opacity = '0';\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfunction getBody(bodyItem: any) {\n\t\t\t\t\t\t\t\treturn bodyItem.lines;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet boxRect = this.props.getBoxRect()\n\t\t\t\t\t\t\tlet boxBottom = boxRect.bottom + window.pageYOffset\n\t\t\t\t\t\t\tlet boxTop = boxRect.top + window.pageYOffset + 130\n\n\t\t\t\t\t\t\tlet rowCount = 0;\n\t\t\t\t\t\t\tlet height = 0;\n\t\t\t\t\t\t\tif (model.body) {\n\t\t\t\t\t\t\t\tconst titleLines = model.title || [];\n\t\t\t\t\t\t\t\tconst bodyLines = model.body.map(getBody);\n\n\t\t\t\t\t\t\t\tlet innerHtml = '';\n\n\t\t\t\t\t\t\t\ttitleLines.forEach(function(title) {\n\t\t\t\t\t\t\t\t\tinnerHtml += '' + title + '';\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tinnerHtml += '';\n\n\t\t\t\t\t\t\t\tlet tableRows: string[] = [];\n\n\t\t\t\t\t\t\t\tbodyLines.forEach(function(body, i) {\n\t\t\t\t\t\t\t\t\tif (!body || !body.length) {\n\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tlet items = body[0].split(';')\n\t\t\t\t\t\t\t\t\tif (items.length < 2) {\n\t\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tconst colors = model.labelColors[i];\n\t\t\t\t\t\t\t\t\tlet style = 'background:' + colors.backgroundColor;\n\t\t\t\t\t\t\t\t\tstyle += '; border-color:' + colors.borderColor;\n\t\t\t\t\t\t\t\t\tconst span = '';\n\t\t\t\t\t\t\t\t\ttableRows.push('' + span + items[0] +\n\t\t\t\t\t\t\t\t\t\t'' + items[1] + '')\n\n\t\t\t\t\t\t\t\t\trowCount += 1\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\theight = 26.33 + (rowCount * 17.33);\n\n\t\t\t\t\t\t\t\tlet double = false;\n\t\t\t\t\t\t\t\tlet curRow = '';\n\t\t\t\t\t\t\t\tlet curTime = Math.round(Date.now() / 1000);\n\n\t\t\t\t\t\t\t\tif (curTime - this.lastDouble < 60 &&\n\t\t\t\t\t\t\t\t\theight > (boxRect.height - 280)) {\n\n\t\t\t\t\t\t\t\t\tdouble = true;\n\t\t\t\t\t\t\t\t\tthis.lastDouble = curTime;\n\t\t\t\t\t\t\t\t} else if (height > (boxRect.height - 130)) {\n\t\t\t\t\t\t\t\t\tdouble = true;\n\t\t\t\t\t\t\t\t\tthis.lastDouble = curTime;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\trowCount = 0\n\t\t\t\t\t\t\t\ttableRows.forEach(function(columns, i) {\n\t\t\t\t\t\t\t\t\tif (double && !curRow) {\n\t\t\t\t\t\t\t\t\t\tcurRow = columns\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tinnerHtml += '' + curRow + columns + '';\n\t\t\t\t\t\t\t\t\t\tcurRow = '';\n\t\t\t\t\t\t\t\t\t\trowCount += 1\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\tif (curRow) {\n\t\t\t\t\t\t\t\t\tinnerHtml += '' + curRow + '';\n\t\t\t\t\t\t\t\t\tcurRow = '';\n\t\t\t\t\t\t\t\t\trowCount += 1\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\theight = 26.33 + (rowCount * 17.33);\n\n\t\t\t\t\t\t\t\tinnerHtml += '';\n\n\t\t\t\t\t\t\t\tlet tableRoot = toolElm.querySelector('table');\n\t\t\t\t\t\t\t\ttableRoot.innerHTML = innerHtml;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttoolElm = document.getElementById('chartjs-tooltip');\n\t\t\t\t\t\t\tconst position = context.chart.canvas.getBoundingClientRect();\n\n\t\t\t\t\t\t\ttoolElm.style.opacity = '1';\n\t\t\t\t\t\t\ttoolElm.style.position = 'absolute';\n\n\t\t\t\t\t\t\tif (this.props.left) {\n\t\t\t\t\t\t\t\ttoolElm.style.right = \"\"\n\t\t\t\t\t\t\t\ttoolElm.style.left = (document.body.offsetWidth -\n\t\t\t\t\t\t\t\t\tposition.right + window.pageXOffset - 18) + 'px';\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttoolElm.style.left = \"\"\n\t\t\t\t\t\t\t\ttoolElm.style.right = (document.body.offsetWidth -\n\t\t\t\t\t\t\t\t\tposition.left + window.pageXOffset + 3) + 'px';\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet toolTop = Math.round(position.top + (position.height / 2) -\n\t\t\t\t\t\t\t\t(height / 2) + window.pageYOffset);\n\n\t\t\t\t\t\t\tif (height > (boxRect.height - 130)) {\n\t\t\t\t\t\t\t\ttoolTop = Math.round(boxRect.top + (boxRect.height / 2) -\n\t\t\t\t\t\t\t\t\t(height / 2) + window.pageYOffset);\n\t\t\t\t\t\t\t} else if (toolTop < boxTop) {\n\t\t\t\t\t\t\t\ttoolTop = boxTop\n\t\t\t\t\t\t\t} else if ((toolTop + height) > boxBottom) {\n\t\t\t\t\t\t\t\t//toolTop -= (toolTop + height) - boxBottom\n\t\t\t\t\t\t\t\ttoolTop = boxBottom - height\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\ttoolElm.style.top = toolTop + 'px';\n\t\t\t\t\t\t\ttoolElm.style.pointerEvents = 'none';\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcallbacks: {\n\t\t\t\t\t\t\tlabel(item): string {\n\t\t\t\t\t\t\t\tlet raw = item.raw as any;\n\n\t\t\t\t\t\t\t\tif (self.labels.hide_zero && !raw.y) {\n\t\t\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet val = '';\n\t\t\t\t\t\t\t\tif (raw) {\n\t\t\t\t\t\t\t\t\tswitch (self.labels.resource_type) {\n\t\t\t\t\t\t\t\t\t\tcase 'bytes':\n\t\t\t\t\t\t\t\t\t\t\tval = MiscUtils.formatBytes(raw.y,\n\t\t\t\t\t\t\t\t\t\t\t\tself.labels.resource_fixed);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 'milliseconds':\n\t\t\t\t\t\t\t\t\t\t\tval = MiscUtils.formatMs(raw.y);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 'float':\n\t\t\t\t\t\t\t\t\t\t\tval = raw.y.toFixed(self.labels.resource_fixed);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\tval = raw.y;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet dataset = item.dataset as any;\n\t\t\t\t\t\t\t\tif (self.labels.resource_fixed) {\n\t\t\t\t\t\t\t\t\treturn dataset.label + ';' +\n\t\t\t\t\t\t\t\t\t\tval + self.labels.resource_suffix;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn dataset.label + ';' + val +\n\t\t\t\t\t\t\t\t\tself.labels.resource_suffix;\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tdata: {\n\t\t\t\tdatasets: [],\n\t\t\t},\n\t\t} as ChartJs.ChartConfiguration;\n\n\t\tlet data = ChartTypes.getChartData(this.props.resource, this.data);\n\t\tfor (let i = 0; i < this.labels.datasets.length; i++) {\n\t\t\tlet datasetLabels = this.labels.datasets[i];\n\n\t\t\tconfig.data.datasets.push({\n\t\t\t\tlabel: datasetLabels.label,\n\t\t\t\tdata: data[i],\n\t\t\t\tfill: 'origin',\n\t\t\t\tpointRadius: 0,\n\t\t\t\tbackgroundColor: colors[i] + '15',\n\t\t\t\tborderColor: colors[i],\n\t\t\t\tborderWidth: 2,\n\t\t\t} as ChartJs.ChartDataset);\n\t\t}\n\n\t\treturn config;\n\t}\n\n\tupdate(sync: number, period: number, interval: number): void {\n\t\tthis.sync = sync;\n\t\tthis.period = period;\n\t\tthis.interval = interval;\n\n\t\tlet loading = true;\n\t\tthis.props.onLoading();\n\n\t\tlet chartResp: Promise\n\t\tif (this.props.check) {\n\t\t\tchartResp = CheckActions.chart(\n\t\t\t\tthis.props.check,\n\t\t\t\tthis.props.resource,\n\t\t\t\tthis.period,\n\t\t\t\tthis.interval,\n\t\t\t)\n\t\t} else {\n\t\t\tchartResp = EndpointActions.chart(\n\t\t\t\tthis.props.endpoint,\n\t\t\t\tthis.props.resource,\n\t\t\t\tthis.period,\n\t\t\t\tthis.interval,\n\t\t\t)\n\t\t}\n\n\t\tchartResp.then((data: ChartTypes.EndpointData): void => {\n\t\t\tif (loading) {\n\t\t\t\tloading = false;\n\t\t\t\tthis.props.onLoaded();\n\t\t\t}\n\n\t\t\tif (data && data.has_data && data.data) {\n\t\t\t\tif (this.state.hidden) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\thidden: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tthis.data = data.data;\n\t\t\t\tif (this.chart) {\n\t\t\t\t\tthis.updateChart();\n\t\t\t\t} else {\n\t\t\t\t\tthis.chart = new ChartJs.Chart(\n\t\t\t\t\t\tthis.chartRef.current,\n\t\t\t\t\t\tthis.config(),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!this.state.hidden) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\thidden: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}).catch((): void => {\n\t\t\tif (loading) {\n\t\t\t\tloading = false;\n\t\t\t\tthis.props.onLoaded();\n\t\t\t}\n\t\t});\n\t}\n\n\tupdateChart(): void {\n\t\ttry {\n\t\t\tthis.labels = ChartTypes.getChartLabels(this.props.resource, this.data);\n\t\t\tlet data = ChartTypes.getChartData(this.props.resource, this.data);\n\n\t\t\tlet dataLen = data.length;\n\t\t\tlet datasetsLen = this.chart.data.datasets.length;\n\n\t\t\tfor (let i = 0; i < Math.min(dataLen, datasetsLen); i++) {\n\t\t\t\tthis.chart.data.datasets[i].label = this.labels.datasets[i].label;\n\t\t\t\tthis.chart.data.datasets[i].data = data[i] as any;\n\t\t\t}\n\n\t\t\tif (dataLen > datasetsLen) {\n\t\t\t\tfor (let i = datasetsLen; i < dataLen; i++) {\n\t\t\t\t\tthis.chart.data.datasets.push({\n\t\t\t\t\t\tlabel: this.labels.datasets[i].label,\n\t\t\t\t\t\tdata: data[i],\n\t\t\t\t\t\tfill: 'origin',\n\t\t\t\t\t\tpointRadius: 0,\n\t\t\t\t\t\tbackgroundColor: colors[i] + '15',\n\t\t\t\t\t\tborderColor: colors[i],\n\t\t\t\t\t\tborderWidth: 2,\n\t\t\t\t\t} as ChartJs.ChartDataset);\n\t\t\t\t}\n\t\t\t} else if (datasetsLen > dataLen) {\n\t\t\t\tfor (let i = 0; i < datasetsLen - dataLen; i++) {\n\t\t\t\t\tthis.chart.data.datasets.pop();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.chart.update();\n\t\t} catch(error) {\n\t\t\tconsole.error(error);\n\t\t}\n\t}\n\n\tcomponentDidMount(): void {\n\t\tthis.sync = this.props.sync;\n\t\tthis.period = this.props.period;\n\t\tthis.interval = this.props.interval;\n\n\t\tlet loading = true;\n\t\tthis.props.onLoading();\n\n\t\tlet chartResp: Promise\n\t\tif (this.props.check) {\n\t\t\tchartResp = CheckActions.chart(\n\t\t\t\tthis.props.check,\n\t\t\t\tthis.props.resource,\n\t\t\t\tthis.period,\n\t\t\t\tthis.interval,\n\t\t\t)\n\t\t} else {\n\t\t\tchartResp = EndpointActions.chart(\n\t\t\t\tthis.props.endpoint,\n\t\t\t\tthis.props.resource,\n\t\t\t\tthis.period,\n\t\t\t\tthis.interval,\n\t\t\t)\n\t\t}\n\n\t\tchartResp.then((data: ChartTypes.EndpointData): void => {\n\t\t\tif (loading) {\n\t\t\t\tloading = false;\n\t\t\t\tthis.props.onLoaded();\n\t\t\t}\n\n\t\t\tif (data && data.has_data && data.data) {\n\t\t\t\tif (this.state.hidden) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\thidden: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tthis.data = data.data;\n\t\t\t\tthis.chart = new ChartJs.Chart(\n\t\t\t\t\tthis.chartRef.current,\n\t\t\t\t\tthis.config(),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tif (!this.state.hidden) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\thidden: true,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}).catch((): void => {\n\t\t\tif (loading) {\n\t\t\t\tloading = false;\n\t\t\t\tthis.props.onLoaded();\n\t\t\t}\n\t\t});\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tif (this.chart) {\n\t\t\tthis.chart.destroy();\n\t\t}\n\t}\n\n\trender(): JSX.Element {\n\t\tif ((this.sync !== undefined && this.period !== undefined &&\n\t\t\t\tthis.interval !== undefined) &&\n\t\t\t\t(this.props.sync !== this.sync ||\n\t\t\t\tthis.props.period !== this.period ||\n\t\t\t\tthis.props.interval !== this.interval)) {\n\t\t\tthis.update(this.props.sync, this.props.period, this.props.interval);\n\t\t}\n\n\t\treturn ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport PageSelect from './PageSelect';\nimport EndpointChart from './EndpointChart';\nimport * as EndpointActions from '../actions/EndpointActions';\n\ninterface Props {\n\tendpoint: string;\n\tdisabled: boolean;\n}\n\ninterface State {\n\tsync: number;\n\tperiod: number;\n\tinterval: number;\n\tloading: {[key: string]: boolean};\n\tcancelable: {[key: string]: boolean};\n}\n\nconst css = {\n\theader: {\n\t\tfontSize: '20px',\n\t\tmarginTop: '-10px',\n\t\tpaddingBottom: '2px',\n\t\tmarginBottom: '10px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t} as React.CSSProperties,\n\tchartGroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t\tmarginBottom: '15px',\n\t} as React.CSSProperties,\n};\n\nexport default class EndpointCharts extends React.Component {\n\tloading: {[key: string]: boolean};\n\tchartBoxRef: React.RefObject;\n\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tsync: 0,\n\t\t\tperiod: 1440,\n\t\t\tinterval: 30,\n\t\t\tloading: {},\n\t\t\tcancelable: {},\n\t\t};\n\n\t\tthis.loading = {};\n\t\tthis.chartBoxRef = React.createRef();\n\t}\n\n\tgetDefaultInterval(period: number): number {\n\t\tswitch (period) {\n\t\t\tcase 60:\n\t\t\t\treturn 1;\n\t\t\tcase 180:\n\t\t\t\treturn 5;\n\t\t\tcase 360:\n\t\t\t\treturn 5;\n\t\t\tcase 720:\n\t\t\t\treturn 30;\n\t\t\tcase 1440:\n\t\t\t\treturn 30;\n\t\t\tcase 4320:\n\t\t\t\treturn 60;\n\t\t\tcase 10080:\n\t\t\t\treturn 120;\n\t\t\tcase 20160:\n\t\t\t\treturn 360;\n\t\t\tcase 43200:\n\t\t\t\treturn 720;\n\t\t\tcase 86400:\n\t\t\t\treturn 1440;\n\t\t\tcase 129600:\n\t\t\t\treturn 1440;\n\t\t\tcase 172800:\n\t\t\t\treturn 4320;\n\t\t\tdefault:\n\t\t\t\treturn 360;\n\t\t}\n\t}\n\n\tsetLoading(resource: string): void {\n\t\tthis.loading[resource] = true;\n\n\t\tlet loading = {\n\t\t\t...this.state.loading,\n\t\t};\n\t\tloading[resource] = true;\n\n\t\tsetTimeout((): void => {\n\t\t\tif (this.loading[resource]) {\n\t\t\t\tlet cancelable = {\n\t\t\t\t\t...this.state.cancelable,\n\t\t\t\t};\n\t\t\t\tcancelable[resource] = true;\n\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tcancelable: cancelable,\n\t\t\t\t});\n\t\t\t}\n\t\t}, 3000);\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tloading: loading,\n\t\t});\n\t}\n\n\tsetLoaded(resource: string): void {\n\t\tdelete this.loading[resource];\n\n\t\tlet loading = {\n\t\t\t...this.state.loading,\n\t\t};\n\t\tdelete loading[resource];\n\n\t\tlet cancelable = {\n\t\t\t...this.state.cancelable,\n\t\t};\n\t\tdelete cancelable[resource];\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tloading: loading,\n\t\t\tcancelable: cancelable,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.disabled) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet intervalMin = 0;\n\t\tlet intervalMax = 0;\n\t\tif (this.state.period > 43200) {\n\t\t\tintervalMin = 120;\n\t\t} else if (this.state.period > 20160) {\n\t\t\tintervalMin = 30;\n\t\t} else if (this.state.period > 4320) {\n\t\t\tintervalMin = 5;\n\t\t}\n\n\t\tif (this.state.period <= 60) {\n\t\t\tintervalMax = 30;\n\t\t} else if (this.state.period <= 180) {\n\t\t\tintervalMax = 60;\n\t\t} else if (this.state.period <= 360) {\n\t\t\tintervalMax = 120;\n\t\t} else if (this.state.period <= 720) {\n\t\t\tintervalMax = 360;\n\t\t} else if (this.state.period <= 1440) {\n\t\t\tintervalMax = 720;\n\t\t} else if (this.state.period <= 4320) {\n\t\t\tintervalMax = 1440;\n\t\t} else if (this.state.period <= 10080) {\n\t\t\tintervalMax = 4320;\n\t\t} else {\n\t\t\tintervalMax = 10080;\n\t\t}\n\n\t\tlet refreshDisabled = false;\n\t\tlet refreshLabel = '';\n\t\tlet refreshClass = 'bp3-button';\n\t\tif (Object.entries(this.state.cancelable).length) {\n\t\t\trefreshLabel = 'Cancel';\n\t\t\trefreshClass += ' bp3-intent-warning bp3-icon-delete'\n\t\t} else {\n\t\t\tif (Object.entries(this.state.loading).length) {\n\t\t\t\trefreshDisabled = true;\n\t\t\t}\n\t\t\trefreshLabel = 'Refresh';\n\t\t\trefreshClass += ' bp3-intent-success bp3-icon-refresh'\n\t\t}\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t

    Charts

    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (Object.entries(this.state.cancelable).length) {\n\t\t\t\t\t\t\t\tEndpointActions.dataCancel();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tsync: this.state.sync + 1,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{refreshLabel}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet period = parseInt(val, 10);\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tperiod: period,\n\t\t\t\t\t\t\t\tinterval: this.getDefaultInterval(period),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tinterval: parseInt(val, 10),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>1 minute\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>5 minutes\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>30 minutes\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>1 hour\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>2 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>6 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>12 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>24 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>3 days\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>7 days\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('system');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('system');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('load');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('load');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('disk');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('disk');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('network');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('network');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('diskio0');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('diskio0');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('diskio1');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('diskio1');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as Theme from '../Theme';\nimport * as EndpointTypes from '../types/EndpointTypes';\nimport * as EndpointActions from '../actions/EndpointActions';\nimport * as CheckActions from '../actions/CheckActions';\nimport {Ace} from \"ace-builds\";\nimport AceEditor from \"react-ace\";\n\nimport \"ace-builds/src-noconflict/mode-text\";\nimport \"ace-builds/src-noconflict/theme-dracula\";\nimport \"ace-builds/src-noconflict/theme-eclipse\";\n\ninterface Props {\n\tendpoint?: string;\n\tcheck?: string;\n\tdisabled: boolean;\n}\n\ninterface State {\n\tdata: string;\n\tloading: boolean;\n\tcancelable: boolean;\n}\n\nconst css = {\n\theader: {\n\t\tfontSize: '20px',\n\t\tmarginTop: '-10px',\n\t\tpaddingBottom: '2px',\n\t\tmarginBottom: '10px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t} as React.CSSProperties,\n\teditorGroup: {\n\t\tmarginBottom: '15px',\n\t} as React.CSSProperties,\n};\n\nexport default class EndpointKmsg extends React.Component {\n\tloaded: boolean;\n\teditor: Ace.Editor;\n\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdata: '',\n\t\t\tloading: false,\n\t\t\tcancelable: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tTheme.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tTheme.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t});\n\t}\n\n\tsetLoading(): void {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tloading: true,\n\t\t\tcancelable: true,\n\t\t});\n\t}\n\n\tsetLoaded(): void {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tloading: false,\n\t\t\tcancelable: false,\n\t\t});\n\t}\n\n\tupdate(): void {\n\t\tlet loading = true;\n\t\tthis.setLoading();\n\n\t\tlet logResp: Promise\n\n\t\tif (this.props.endpoint) {\n\t\t\tlogResp = EndpointActions.log(\n\t\t\t\tthis.props.endpoint,\n\t\t\t\t'kmsg',\n\t\t\t)\n\t\t} else {\n\t\t\tlogResp = CheckActions.log(\n\t\t\t\tthis.props.check,\n\t\t\t\t'check',\n\t\t\t)\n\t\t}\n\n\t\tlogResp.then((data: EndpointTypes.LogData): void => {\n\t\t\tif (loading) {\n\t\t\t\tloading = false;\n\t\t\t\tthis.setLoaded();\n\t\t\t}\n\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdata: data.join(''),\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (this.editor) {\n\t\t\t\t\tthis.editor.scrollToLine(Number.POSITIVE_INFINITY,\n\t\t\t\t\t\tfalse, true, null);\n\t\t\t\t}\n\t\t\t}, 100);\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (this.editor) {\n\t\t\t\t\tthis.editor.scrollToLine(Number.POSITIVE_INFINITY,\n\t\t\t\t\t\tfalse, true, null);\n\t\t\t\t}\n\t\t\t}, 200);\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (this.editor) {\n\t\t\t\t\tthis.editor.scrollToLine(Number.POSITIVE_INFINITY,\n\t\t\t\t\t\tfalse, true, null);\n\t\t\t\t}\n\t\t\t}, 300);\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (this.editor) {\n\t\t\t\t\tthis.editor.scrollToLine(Number.POSITIVE_INFINITY,\n\t\t\t\t\t\tfalse, true, null);\n\t\t\t\t}\n\t\t\t}, 400);\n\t\t}).catch((): void => {\n\t\t\tif (loading) {\n\t\t\t\tloading = false;\n\t\t\t\tthis.setLoaded();\n\t\t\t}\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.disabled) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tif (!this.loaded) {\n\t\t\tthis.loaded = true;\n\t\t\tsetTimeout((): void => {\n\t\t\t\tthis.update();\n\t\t\t});\n\t\t}\n\n\t\tlet title = \"\"\n\t\tif (this.props.endpoint) {\n\t\t\ttitle = \"Dmesg\"\n\t\t} else {\n\t\t\ttitle = \"Error Log\"\n\t\t}\n\n\t\tlet refreshDisabled = false;\n\t\tlet refreshLabel = '';\n\t\tlet refreshClass = 'bp3-button';\n\t\tif (Object.entries(this.state.cancelable).length) {\n\t\t\trefreshLabel = 'Cancel';\n\t\t\trefreshClass += ' bp3-intent-warning bp3-icon-delete'\n\t\t} else {\n\t\t\tif (Object.entries(this.state.loading).length) {\n\t\t\t\trefreshDisabled = true;\n\t\t\t}\n\t\t\trefreshLabel = 'Refresh';\n\t\t\trefreshClass += ' bp3-intent-success bp3-icon-refresh'\n\t\t}\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t

    {title}

    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (Object.entries(this.state.cancelable).length) {\n\t\t\t\t\t\t\t\tif (this.props.endpoint) {\n\t\t\t\t\t\t\t\t\tEndpointActions.dataCancel();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tCheckActions.dataCancel();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.update();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{refreshLabel}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tthis.editor = editor;\n\t\t\t\t\t\tthis.editor.scrollToLine(Number.POSITIVE_INFINITY,\n\t\t\t\t\t\t\tfalse, false, null);\n\t\t\t\t\t}}\n\t\t\t\t\tonChange={(): void => {\n\t\t\t\t\t\tif (this.editor) {\n\t\t\t\t\t\t\tthis.editor.scrollToLine(Number.POSITIVE_INFINITY,\n\t\t\t\t\t\t\t\tfalse, true, null);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as EndpointTypes from '../types/EndpointTypes';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\nimport * as EndpointActions from '../actions/EndpointActions';\nimport * as PageInfos from './PageInfo';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport PageInput from './PageInput';\nimport PageSave from './PageSave';\nimport PageInfo from './PageInfo';\nimport ConfirmButton from './ConfirmButton';\nimport PageInputButton from './PageInputButton';\nimport EndpointCharts from './EndpointCharts';\nimport EndpointKmsg from './EndpointKmsg';\nimport Help from './Help';\nimport PageSwitch from \"./PageSwitch\";\n\ninterface Props {\n\tendpoint: EndpointTypes.EndpointRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\tonClose: () => void;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\taddRole: string;\n\tshowCharts: boolean;\n\tendpoint: EndpointTypes.Endpoint;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '48px 10px 0 10px',\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t} as React.CSSProperties,\n\tcontrolButton: {\n\t\tmarginRight: '10px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\theight: '30px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tcursor: 'pointer',\n\t\tposition: 'absolute',\n\t\ttop: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tpadding: '4px',\n\t\theight: '39px',\n\t\tbackgroundColor: 'rgba(0, 0, 0, 0.13)',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tstatus: {\n\t\tmargin: '6px 0 0 1px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tprotocol: {\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n\tport: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '7px 0px 0px 6px',\n\t\tpaddingTop: '3px',\n\t} as React.CSSProperties,\n};\n\nexport default class EndpointDetailed extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tendpoint: null,\n\t\t\tshowCharts: true,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet endpoint: any;\n\n\t\tif (this.state.changed) {\n\t\t\tendpoint = {\n\t\t\t\t...this.state.endpoint,\n\t\t\t};\n\t\t} else {\n\t\t\tendpoint = {\n\t\t\t\t...this.props.endpoint,\n\t\t\t};\n\t\t}\n\n\t\tendpoint[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tendpoint: endpoint,\n\t\t});\n\t}\n\n\tonResetClientKey = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\n\t\tlet endpoint = {\n\t\t\t...this.props.endpoint,\n\t\t\treset_client_key: true,\n\t\t};\n\n\t\tEndpointActions.commit(endpoint).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Client key reset',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tendpoint: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tEndpointActions.commit(this.state.endpoint).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tendpoint: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tEndpointActions.remove(this.props.endpoint.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddRole = (): void => {\n\t\tlet endpoint: EndpointTypes.Endpoint;\n\n\t\tif (this.state.changed) {\n\t\t\tendpoint = {\n\t\t\t\t...this.state.endpoint,\n\t\t\t};\n\t\t} else {\n\t\t\tendpoint = {\n\t\t\t\t...this.props.endpoint,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...endpoint.roles,\n\t\t];\n\n\t\tif (!this.state.addRole) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (roles.indexOf(this.state.addRole) === -1) {\n\t\t\troles.push(this.state.addRole);\n\t\t}\n\n\t\troles.sort();\n\n\t\tendpoint.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tendpoint: endpoint,\n\t\t});\n\t}\n\n\tonRemoveRole(role: string): void {\n\t\tlet endpoint: EndpointTypes.Endpoint;\n\n\t\tif (this.state.changed) {\n\t\t\tendpoint = {\n\t\t\t\t...this.state.endpoint,\n\t\t\t};\n\t\t} else {\n\t\t\tendpoint = {\n\t\t\t\t...this.props.endpoint,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...endpoint.roles,\n\t\t];\n\n\t\tlet i = roles.indexOf(role);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\troles.splice(i, 1);\n\n\t\tendpoint.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tendpoint: endpoint,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet endpoint: EndpointTypes.Endpoint = this.state.endpoint ||\n\t\t\tthis.props.endpoint;\n\n\t\tlet fields: PageInfos.Field[] = [\n\t\t\t{\n\t\t\t\tlabel: 'ID',\n\t\t\t\tvalue: this.props.endpoint.id || 'None',\n\t\t\t},\n\t\t];\n\n\t\tlet endpointData = endpoint.data || {};\n\t\tif (endpointData) {\n\t\t\tif (endpointData.version) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'Endpoint Version',\n\t\t\t\t\tvalue: endpointData.version,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.hostname) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'Hostname',\n\t\t\t\t\tvalue: endpointData.hostname,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.uptime) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'Uptime',\n\t\t\t\t\tvalue: MiscUtils.formatUptime(endpointData.uptime),\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.platform) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'Platform',\n\t\t\t\t\tvalue: endpointData.platform,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.package_updates) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'System Package Updates',\n\t\t\t\t\tvalue: endpointData.package_updates,\n\t\t\t\t\tvalueClass: 'bp3-text-intent-danger',\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.virtualization) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'Virtualization',\n\t\t\t\t\tvalue: endpointData.virtualization,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.cpu_cores) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'CPU Cores',\n\t\t\t\t\tvalue: endpointData.cpu_cores,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.mem_total) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'Memory',\n\t\t\t\t\tvalue: endpointData.mem_total + 'MB',\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.swap_total) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'Swap',\n\t\t\t\t\tvalue: endpointData.swap_total + 'MB',\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (endpointData.huge_total) {\n\t\t\t\tfields.push({\n\t\t\t\t\tlabel: 'HugePages',\n\t\t\t\t\tvalue: endpointData.huge_total + 'MB',\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (endpoint.data.md_stat && endpoint.data.md_stat.length) {\n\t\t\tlet failed = 0;\n\t\t\tlet total = 0;\n\n\t\t\tfor (let md of endpoint.data.md_stat) {\n\t\t\t\tfailed += md.failed;\n\t\t\t\ttotal += md.total;\n\t\t\t}\n\n\t\t\tfields.push({\n\t\t\t\tlabel: 'Raid Devices',\n\t\t\t\tvalue: 'Failed: ' + failed + ' Total: ' + total,\n\t\t\t});\n\t\t}\n\n\t\tlet roles: JSX.Element[] = [];\n\t\tfor (let role of endpoint.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveRole(role);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet alerts: string[] = [];\n\t\tfor (let alert of Object.values(endpoint.info.alerts)) {\n\t\t\talerts.push(alert);\n\t\t}\n\n\t\tlet checks: string[] = [];\n\t\tfor (let check of Object.values(endpoint.info.checks)) {\n\t\t\tchecks.push(check);\n\t\t}\n\n\t\tlet secretKey = '';\n\t\tlet secretUri = '';\n\t\tif (!endpoint.has_client_key) {\n\t\t\tif (endpoint.client_key) {\n\t\t\t\tsecretKey = endpoint.id + '_' + endpoint.client_key.secret;\n\t\t\t} else {\n\t\t\t\tsecretKey = 'unknown';\n\t\t\t}\n\t\t\tsecretUri = 'pritunl://' + window.location.host + '/' + secretKey;\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\t\t\t\tif (target.className.indexOf('tab-close') !== -1) {\n\t\t\t\t\t\t\t\tthis.props.onClose();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n
    \n \n {\n\t\t\t\t\t\t\t\t\t}}\n onClick={(evt): void => {\n\t\t\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t\t\t}}\n />\n \n \n
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddRole}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tshowCharts: !this.state.showCharts,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tendpoint: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t>\n\t\t\t\t {\n\t\t\t\t\t\tthis.onResetClientKey();\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as Blueprint from '@blueprintjs/core';\nimport * as EndpointTypes from '../types/EndpointTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport EndpointDetailed from './EndpointDetailed';\n\ninterface Props {\n\tendpoint: EndpointTypes.EndpointRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\topen: boolean;\n\tonOpen: () => void;\n}\n\nconst css = {\n\tcard: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tcursor: 'pointer',\n\t} as React.CSSProperties,\n\tcardOpen: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tposition: 'relative',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '2px 0 0 0',\n\t\tpaddingTop: '3px',\n\t\tminHeight: '18px',\n\t} as React.CSSProperties,\n\tname: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t} as React.CSSProperties,\n\tnameSpan: {\n\t\tmargin: '1px 5px 0 0',\n\t} as React.CSSProperties,\n\titem: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '9px',\n\t\twhiteSpace: 'nowrap',\n\t} as React.CSSProperties,\n\troles: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '0 8px 8px 8px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginTop: '1px',\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\ttag: {\n\t\tmargin: '8px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\tbars: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t\twidth: '30px',\n\t} as React.CSSProperties,\n\tbar: {\n\t\theight: '6px',\n\t\tmarginBottom: '1px',\n\t} as React.CSSProperties,\n\tbarLast: {\n\t\theight: '6px',\n\t} as React.CSSProperties,\n};\n\nexport default class Endpoint extends React.Component {\n\trender(): JSX.Element {\n\t\tlet endpoint = this.props.endpoint;\n\n\t\tif (this.props.open) {\n\t\t\treturn \n\t\t\t\t {\n\t\t\t\t\t\tthis.props.onOpen();\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    ;\n\t\t}\n\n\t\tlet cardStyle = {\n\t\t\t...css.card,\n\t\t};\n\n\t\tlet roles: JSX.Element[] = [];\n\n\t\tfor (let role of endpoint.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet updates: JSX.Element;\n\t\tif (endpoint.data.package_updates) {\n\t\t\tupdates = ;\n\t\t}\n\n\t\treturn {\n\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\tif (target.className.indexOf('open-ignore') !== -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.props.onOpen();\n\t\t\t}}\n\t\t>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClick={(evt): void => {\n\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t{endpoint.name}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{updates}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{roles}\n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as EndpointTypes from '../types/EndpointTypes';\nimport SearchInput from './SearchInput';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\n\ninterface Props {\n\tfilter: EndpointTypes.Filter;\n\tonFilter: (filter: EndpointTypes.Filter) => void;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n}\n\nconst css = {\n\tfilters: {\n\t\tmargin: '-15px 0 5px 0',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '200px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\twidth: '150px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\ttype: {\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tcheck: {\n\t\tmargin: '12px 5px 8px 5px',\n\t} as React.CSSProperties,\n};\n\nexport default class EndpointsFilter extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tmenu: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.filter === null) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.id = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.id;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.name = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.name;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.role = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.role;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport EndpointsStore from '../stores/EndpointsStore';\nimport * as EndpointActions from '../actions/EndpointActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class EndpointsPage extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: EndpointsStore.page,\n\t\t\tpageCount: EndpointsStore.pageCount,\n\t\t\tpages: EndpointsStore.pages,\n\t\t\tcount: EndpointsStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tEndpointsStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tEndpointsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: EndpointsStore.page,\n\t\t\tpageCount: EndpointsStore.pageCount,\n\t\t\tpages: EndpointsStore.pages,\n\t\t\tcount: EndpointsStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tEndpointActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tEndpointActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tEndpointActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tEndpointActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tEndpointActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as EndpointTypes from '../types/EndpointTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport EndpointsStore from '../stores/EndpointsStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport * as EndpointActions from '../actions/EndpointActions';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport Endpoint from './Endpoint';\nimport EndpointsFilter from './EndpointsFilter';\nimport EndpointsPage from './EndpointsPage';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\nimport NonState from './NonState';\nimport ConfirmButton from './ConfirmButton';\n\ninterface Selected {\n\t[key: string]: boolean;\n}\n\ninterface Opened {\n\t[key: string]: boolean;\n}\n\ninterface State {\n\tendpoints: EndpointTypes.EndpointsRo;\n\tfilter: EndpointTypes.Filter;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: Selected;\n\topened: Opened;\n\tnewOpened: boolean;\n\tlastSelected: string;\n\tdisabled: boolean;\n}\n\nconst css = {\n\titems: {\n\t\twidth: '100%',\n\t\tmarginTop: '-5px',\n\t\tdisplay: 'table',\n\t\tborderSpacing: '0 5px',\n\t} as React.CSSProperties,\n\titemsBox: {\n\t\twidth: '100%',\n\t\toverflowY: 'auto',\n\t} as React.CSSProperties,\n\tplaceholder: {\n\t\topacity: 0,\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n};\n\nexport default class Endpoints extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tendpoints: EndpointsStore.endpoints,\n\t\t\tfilter: EndpointsStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: {},\n\t\t\topened: {},\n\t\t\tnewOpened: false,\n\t\t\tlastSelected: null,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tget selected(): boolean {\n\t\treturn !!Object.keys(this.state.selected).length;\n\t}\n\n\tget opened(): boolean {\n\t\treturn !!Object.keys(this.state.opened).length;\n\t}\n\n\tcomponentDidMount(): void {\n\t\tEndpointsStore.addChangeListener(this.onChange);\n\t\tAuthoritiesStore.addChangeListener(this.onChange);\n\t\tEndpointActions.sync();\n\t\tAuthorityActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tEndpointsStore.removeChangeListener(this.onChange);\n\t\tAuthoritiesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tlet endpoints = EndpointsStore.endpoints;\n\t\tlet selected: Selected = {};\n\t\tlet curSelected = this.state.selected;\n\t\tlet opened: Opened = {};\n\t\tlet curOpened = this.state.opened;\n\n\t\tendpoints.forEach((endpoint: EndpointTypes.Endpoint): void => {\n\t\t\tif (curSelected[endpoint.id]) {\n\t\t\t\tselected[endpoint.id] = true;\n\t\t\t}\n\t\t\tif (curOpened[endpoint.id]) {\n\t\t\t\topened[endpoint.id] = true;\n\t\t\t}\n\t\t});\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tendpoints: endpoints,\n\t\t\tfilter: EndpointsStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: selected,\n\t\t\topened: opened,\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tEndpointActions.removeMulti(\n\t\t\t\tObject.keys(this.state.selected)).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tselected: {},\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet endpointsDom: JSX.Element[] = [];\n\n\t\tthis.state.endpoints.forEach((\n\t\t\t\tendpoint: EndpointTypes.EndpointRo): void => {\n\t\t\tendpointsDom.push( {\n\t\t\t\t\tlet selected = {\n\t\t\t\t\t\t...this.state.selected,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (shift) {\n\t\t\t\t\t\tlet endpoints = this.state.endpoints;\n\t\t\t\t\t\tlet start: number;\n\t\t\t\t\t\tlet end: number;\n\n\t\t\t\t\t\tfor (let i = 0; i < endpoints.length; i++) {\n\t\t\t\t\t\t\tlet usr = endpoints[i];\n\n\t\t\t\t\t\t\tif (usr.id === endpoint.id) {\n\t\t\t\t\t\t\t\tstart = i;\n\t\t\t\t\t\t\t} else if (usr.id === this.state.lastSelected) {\n\t\t\t\t\t\t\t\tend = i;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (start !== undefined && end !== undefined) {\n\t\t\t\t\t\t\tif (start > end) {\n\t\t\t\t\t\t\t\tend = [start, start = end][0];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor (let i = start; i <= end; i++) {\n\t\t\t\t\t\t\t\tselected[endpoints[i].id] = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tlastSelected: endpoint.id,\n\t\t\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (selected[endpoint.id]) {\n\t\t\t\t\t\tdelete selected[endpoint.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselected[endpoint.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tlastSelected: endpoint.id,\n\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonOpen={(): void => {\n\t\t\t\t\tlet opened = {\n\t\t\t\t\t\t...this.state.opened,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (opened[endpoint.id]) {\n\t\t\t\t\t\tdelete opened[endpoint.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\topened[endpoint.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\topened: opened,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>);\n\t\t});\n\n\t\tlet filterClass = 'bp3-button bp3-intent-primary bp3-icon-filter ';\n\t\tif (this.state.filter) {\n\t\t\tfilterClass += 'bp3-active';\n\t\t}\n\n\t\tlet selectedNames: string[] = [];\n\t\tfor (let instId of Object.keys(this.state.selected)) {\n\t\t\tlet inst = EndpointsStore.endpoint(instId);\n\t\t\tif (inst) {\n\t\t\t\tselectedNames.push(inst.name || instId);\n\t\t\t} else {\n\t\t\t\tselectedNames.push(instId);\n\t\t\t}\n\t\t}\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Endpoints

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (this.state.filter === null) {\n\t\t\t\t\t\t\t\t\tEndpointActions.filter({});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tEndpointActions.filter(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFilters\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\topened: {},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCollapse All\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tEndpointActions.create({\n\t\t\t\t\t\t\t\t\tid: null,\n\t\t\t\t\t\t\t\t}).then((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>New\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tEndpointActions.filter(filter);\n\t\t\t\t}}\n\t\t\t\tauthorities={this.state.authorities}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{endpointsDom}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tselected: {},\n\t\t\t\t\t\tlastSelected: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nexport const SYNC = 'alert.sync';\nexport const SYNC_NAMES = 'alert.sync_names';\nexport const TRAVERSE = 'alert.traverse';\nexport const FILTER = 'alert.filter';\nexport const CHANGE = 'alert.change';\n\nexport interface Alert {\n\tid: string;\n\tname?: string;\n\troles?: string[];\n\tresource?: string;\n\tlevel?: number;\n\tfrequency?: number;\n\tignores?: string[];\n\tvalue_int?: number;\n\tvalue_str?: string;\n}\n\nexport interface Filter {\n\tid?: string;\n\tname?: string;\n\trole?: string;\n}\n\nexport type Alerts = Alert[];\n\nexport type AlertRo = Readonly;\nexport type AlertsRo = ReadonlyArray;\n\nexport interface AlertDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\talert?: Alert;\n\t\talerts?: Alerts;\n\t\tpage?: number;\n\t\tpageCount?: number;\n\t\tfilter?: Filter;\n\t\tcount?: number;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as AlertTypes from '../types/AlertTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass AlertsStore extends EventEmitter {\n\t_alerts: AlertTypes.AlertsRo = Object.freeze([]);\n\t_page: number;\n\t_pageCount: number;\n\t_filter: AlertTypes.Filter = null;\n\t_count: number;\n\t_map: {[key: string]: number} = {};\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget alerts(): AlertTypes.AlertsRo {\n\t\treturn this._alerts;\n\t}\n\n\tget alertsM(): AlertTypes.Alerts {\n\t\tlet alerts: AlertTypes.Alerts = [];\n\t\tthis._alerts.forEach((alert: AlertTypes.AlertRo): void => {\n\t\t\talerts.push({\n\t\t\t\t...alert,\n\t\t\t});\n\t\t});\n\t\treturn alerts;\n\t}\n\n\tget page(): number {\n\t\treturn this._page || 0;\n\t}\n\n\tget pageCount(): number {\n\t\treturn this._pageCount || 20;\n\t}\n\n\tget pages(): number {\n\t\treturn Math.ceil(this.count / this.pageCount);\n\t}\n\n\tget filter(): AlertTypes.Filter {\n\t\treturn this._filter;\n\t}\n\n\tget count(): number {\n\t\treturn this._count || 0;\n\t}\n\n\talert(id: string): AlertTypes.AlertRo {\n\t\tlet i = this._map[id];\n\t\tif (i === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this._alerts[i];\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_traverse(page: number): void {\n\t\tthis._page = Math.min(this.pages, page);\n\t}\n\n\t_filterCallback(filter: AlertTypes.Filter): void {\n\t\tif ((this._filter !== null && filter === null) ||\n\t\t\t(this._filter === {} && filter !== null) || (\n\t\t\t\tfilter && this._filter && (\n\t\t\t\t\tfilter.name !== this._filter.name\n\t\t\t\t))) {\n\t\t\tthis._traverse(0);\n\t\t}\n\t\tthis._filter = filter;\n\t\tthis.emitChange();\n\t}\n\n\t_sync(alerts: AlertTypes.Alert[], count: number): void {\n\t\tthis._map = {};\n\t\tfor (let i = 0; i < alerts.length; i++) {\n\t\t\talerts[i] = Object.freeze(alerts[i]);\n\t\t\tthis._map[alerts[i].id] = i;\n\t\t}\n\n\t\tthis._count = count;\n\t\tthis._alerts = Object.freeze(alerts);\n\t\tthis._page = Math.min(this.pages, this.page);\n\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: AlertTypes.AlertDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase AlertTypes.TRAVERSE:\n\t\t\t\tthis._traverse(action.data.page);\n\t\t\t\tbreak;\n\n\t\t\tcase AlertTypes.FILTER:\n\t\t\t\tthis._filterCallback(action.data.filter);\n\t\t\t\tbreak;\n\n\t\t\tcase AlertTypes.SYNC:\n\t\t\t\tthis._sync(action.data.alerts, action.data.count);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new AlertsStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport AlertsStore from '../stores/AlertsStore';\nimport * as AlertTypes from '../types/AlertTypes';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\n\nexport function sync(): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/alert')\n\t\t\t.query({\n\t\t\t\t...AlertsStore.filter,\n\t\t\t\tpage: AlertsStore.page,\n\t\t\t\tpage_count: AlertsStore.pageCount,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load alerts');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: AlertTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\talerts: res.body.alerts,\n\t\t\t\t\t\tcount: res.body.count,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function traverse(page: number): Promise {\n\tDispatcher.dispatch({\n\t\ttype: AlertTypes.TRAVERSE,\n\t\tdata: {\n\t\t\tpage: page,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function filter(filt: AlertTypes.Filter): Promise {\n\tDispatcher.dispatch({\n\t\ttype: AlertTypes.FILTER,\n\t\tdata: {\n\t\t\tfilter: filt,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function commit(alert: AlertTypes.Alert): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.put('/alert/' + alert.id)\n\t\t\t.send(alert)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to save alert');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function create(alert: AlertTypes.Alert): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.post('/alert')\n\t\t\t.send(alert)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to create alert');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function remove(alertId: string): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/alert/' + alertId)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete alerts');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function removeMulti(alertIds: string[]): Promise {\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.delete('/alert')\n\t\t\t.send(alertIds)\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to delete alerts');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nEventDispatcher.register((action: AlertTypes.AlertDispatch) => {\n\tswitch (action.type) {\n\t\tcase AlertTypes.CHANGE:\n\t\t\tsync();\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as React from 'react';\nimport * as AlertTypes from '../types/AlertTypes';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\nimport * as AlertActions from '../actions/AlertActions';\nimport * as PageInfos from './PageInfo';\nimport PageInput from './PageInput';\nimport PageSave from './PageSave';\nimport PageInfo from './PageInfo';\nimport ConfirmButton from './ConfirmButton';\nimport PageInputButton from './PageInputButton';\nimport Help from './Help';\nimport PageSwitch from \"./PageSwitch\";\nimport PageSelect from \"./PageSelect\";\n\ninterface Props {\n\talert: AlertTypes.AlertRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\tonClose: () => void;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\taddRole: string;\n\taddIgnore: string;\n\talert: AlertTypes.Alert;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '48px 10px 0 10px',\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t} as React.CSSProperties,\n\tcontrolButton: {\n\t\tmarginRight: '10px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\theight: '30px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tcursor: 'pointer',\n\t\tposition: 'absolute',\n\t\ttop: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tpadding: '4px',\n\t\theight: '39px',\n\t\tbackgroundColor: 'rgba(0, 0, 0, 0.13)',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tstatus: {\n\t\tmargin: '6px 0 0 1px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tprotocol: {\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n\tport: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '7px 0px 0px 6px',\n\t\tpaddingTop: '3px',\n\t} as React.CSSProperties,\n\theader: {\n\t\tfontSize: '20px',\n\t\tmarginTop: '-10px',\n\t\tpaddingBottom: '2px',\n\t\tmarginBottom: '10px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\talertsButtons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n\talertsAdd: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n};\n\nexport default class AlertDetailed extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\taddIgnore: '',\n\t\t\talert: null,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet alert: any;\n\n\t\tif (this.state.changed) {\n\t\t\talert = {\n\t\t\t\t...this.state.alert,\n\t\t\t};\n\t\t} else {\n\t\t\talert = {\n\t\t\t\t...this.props.alert,\n\t\t\t};\n\t\t}\n\n\t\talert[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\talert: alert,\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tAlertActions.commit(this.state.alert).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\talert: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tAlertActions.remove(this.props.alert.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddRole = (): void => {\n\t\tlet alert: AlertTypes.Alert;\n\n\t\tif (this.state.changed) {\n\t\t\talert = {\n\t\t\t\t...this.state.alert,\n\t\t\t};\n\t\t} else {\n\t\t\talert = {\n\t\t\t\t...this.props.alert,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...alert.roles,\n\t\t];\n\n\t\tif (!this.state.addRole) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (roles.indexOf(this.state.addRole) === -1) {\n\t\t\troles.push(this.state.addRole);\n\t\t}\n\n\t\troles.sort();\n\n\t\talert.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\talert: alert,\n\t\t});\n\t}\n\n\tonRemoveRole(role: string): void {\n\t\tlet alert: AlertTypes.Alert;\n\n\t\tif (this.state.changed) {\n\t\t\talert = {\n\t\t\t\t...this.state.alert,\n\t\t\t};\n\t\t} else {\n\t\t\talert = {\n\t\t\t\t...this.props.alert,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...alert.roles,\n\t\t];\n\n\t\tlet i = roles.indexOf(role);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\troles.splice(i, 1);\n\n\t\talert.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\talert: alert,\n\t\t});\n\t}\n\n\tonAddIgnore = (): void => {\n\t\tlet alert: AlertTypes.Alert;\n\n\t\tif (this.state.changed) {\n\t\t\talert = {\n\t\t\t\t...this.state.alert,\n\t\t\t};\n\t\t} else {\n\t\t\talert = {\n\t\t\t\t...this.props.alert,\n\t\t\t};\n\t\t}\n\n\t\tlet ignores = [\n\t\t\t...(alert.ignores || []),\n\t\t];\n\n\t\tif (!this.state.addIgnore) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (ignores.indexOf(this.state.addIgnore) === -1) {\n\t\t\tignores.push(this.state.addIgnore);\n\t\t}\n\n\t\tignores.sort();\n\n\t\talert.ignores = ignores;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddIgnore: '',\n\t\t\talert: alert,\n\t\t});\n\t}\n\n\tonRemoveIgnore(ignore: string): void {\n\t\tlet alert: AlertTypes.Alert;\n\n\t\tif (this.state.changed) {\n\t\t\talert = {\n\t\t\t\t...this.state.alert,\n\t\t\t};\n\t\t} else {\n\t\t\talert = {\n\t\t\t\t...this.props.alert,\n\t\t\t};\n\t\t}\n\n\t\tlet ignores = [\n\t\t\t...(alert.ignores || []),\n\t\t];\n\n\t\tlet i = ignores.indexOf(ignore);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\tignores.splice(i, 1);\n\n\t\talert.ignores = ignores;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddIgnore: '',\n\t\t\talert: alert,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet alert: AlertTypes.Alert = this.state.alert ||\n\t\t\tthis.props.alert;\n\n\t\tlet fields: PageInfos.Field[] = [\n\t\t\t{\n\t\t\t\tlabel: 'ID',\n\t\t\t\tvalue: this.props.alert.id || 'None',\n\t\t\t},\n\t\t];\n\n\t\tlet roles: JSX.Element[] = [];\n\t\tfor (let role of alert.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveRole(role);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet ignores: JSX.Element[] = [];\n\t\tfor (let ignore of (alert.ignores || [])) {\n\t\t\tignores.push(\n\t\t\t\t\n\t\t\t\t\t{ignore}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveIgnore(ignore);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet valueInt = false;\n\t\tlet valueStr = false;\n\t\tlet valueLabel = '';\n\t\tlet valueHelp = '';\n\t\tlet ignoreShow = false;\n\t\tlet ignoreLabel = '';\n\t\tlet ignoreTitle = '';\n\t\tlet ignoreHelp = '';\n\t\tswitch (alert.resource) {\n\t\t\tcase \"system_cpu_level\":\n\t\t\t\tvalueInt = true;\n\t\t\t\tvalueLabel = 'Usage Threshold';\n\t\t\t\tvalueHelp = 'Maximum percent CPU usage as integer ' +\n\t\t\t\t\t'before alert is triggered.';\n\t\t\t\tbreak;\n\t\t\tcase \"system_memory_level\":\n\t\t\t\tvalueInt = true;\n\t\t\t\tvalueLabel = 'Usage Threshold';\n\t\t\t\tvalueHelp = 'Maximum percent memory usage as integer ' +\n\t\t\t\t\t'before alert is triggered.';\n\t\t\t\tbreak;\n\t\t\tcase \"system_swap_level\":\n\t\t\t\tvalueInt = true;\n\t\t\t\tvalueLabel = 'Usage Threshold';\n\t\t\t\tvalueHelp = 'Maximum percent swap usage as integer ' +\n\t\t\t\t\t'before alert is triggered.';\n\t\t\t\tbreak;\n\t\t\tcase \"system_hugepages_level\":\n\t\t\t\tvalueInt = true;\n\t\t\t\tvalueLabel = 'Usage Threshold';\n\t\t\t\tvalueHelp = 'Maximum percent hugepages usage as integer ' +\n\t\t\t\t\t'before alert is triggered.';\n\t\t\t\tbreak;\n\t\t\tcase \"system_md_failed\":\n\t\t\t\tvalueInt = false;\n\t\t\t\tvalueStr = false;\n\t\t\t\tbreak;\n\t\t\tcase \"disk_usage_level\":\n\t\t\t\tignoreShow = true;\n\t\t\t\tignoreLabel = 'Ignore Disk Paths';\n\t\t\t\tignoreTitle = 'Ignore Disk Paths';\n\t\t\t\tignoreHelp = 'Path of disk devices to ignore.';\n\t\t\t\tvalueInt = true;\n\t\t\t\tvalueLabel = 'Usage Threshold';\n\t\t\t\tvalueHelp = 'Maximum percent disk space usage as integer ' +\n\t\t\t\t\t'before alert is triggered.';\n\t\t\t\tbreak;\n\t\t\tcase \"kmsg_keyword\":\n\t\t\t\tvalueStr = true;\n\t\t\t\tvalueLabel = 'Dmesg Keyword Match';\n\t\t\t\tvalueHelp = 'Case insensitive dmesg match string to trigger alert.';\n\t\t\t\tbreak;\n\t\t\tcase \"check_http_failed\":\n\t\t\t\tvalueInt = false;\n\t\t\t\tvalueStr = false;\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\t\t\t\tif (target.className.indexOf('tab-close') !== -1) {\n\t\t\t\t\t\t\t\tthis.props.onClose();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonClick={(evt): void => {\n\t\t\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddRole}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('resource', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tCPU Usage Threshold\n\t\t\t\t\t\tMemory Usage Threshold\n\t\t\t\t\t\tSwap Usage Threshold\n\t\t\t\t\t\tHugePages Usage Threshold\n\t\t\t\t\t\tMD RAID Device Failed\n\t\t\t\t\t\tDisk Usage Threshold\n\t\t\t\t\t\tDmesg Keyword Match\n\t\t\t\t\t\tHTTP Health Check Failed\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddIgnore: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddIgnore}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('value_int', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('value_str', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('level', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('frequency', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\talert: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as AlertTypes from '../types/AlertTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport AlertDetailed from './AlertDetailed';\n\ninterface Props {\n\talert: AlertTypes.AlertRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\topen: boolean;\n\tonOpen: () => void;\n}\n\nconst css = {\n\tcard: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tcursor: 'pointer',\n\t} as React.CSSProperties,\n\tcardOpen: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tposition: 'relative',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '2px 0 0 0',\n\t\tpaddingTop: '3px',\n\t\tminHeight: '18px',\n\t} as React.CSSProperties,\n\tname: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t} as React.CSSProperties,\n\tnameSpan: {\n\t\tmargin: '1px 5px 0 0',\n\t} as React.CSSProperties,\n\titem: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '9px',\n\t\twhiteSpace: 'nowrap',\n\t} as React.CSSProperties,\n\troles: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '0 8px 8px 8px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\ttag: {\n\t\tmargin: '8px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\tbars: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t\twidth: '30px',\n\t} as React.CSSProperties,\n\tbar: {\n\t\theight: '6px',\n\t\tmarginBottom: '1px',\n\t} as React.CSSProperties,\n\tbarLast: {\n\t\theight: '6px',\n\t} as React.CSSProperties,\n};\n\nexport default class Alert extends React.Component {\n\trender(): JSX.Element {\n\t\tlet alert = this.props.alert;\n\n\t\tif (this.props.open) {\n\t\t\treturn \n\t\t\t\t {\n\t\t\t\t\t\tthis.props.onOpen();\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    ;\n\t\t}\n\n\t\tlet cardStyle = {\n\t\t\t...css.card,\n\t\t};\n\n\t\tlet roles: JSX.Element[] = [];\n\n\t\tfor (let role of alert.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\tif (target.className.indexOf('open-ignore') !== -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.props.onOpen();\n\t\t\t}}\n\t\t>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClick={(evt): void => {\n\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t{alert.name}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{roles}\n\t\t\t
    \n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as AlertTypes from '../types/AlertTypes';\nimport SearchInput from './SearchInput';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\n\ninterface Props {\n\tfilter: AlertTypes.Filter;\n\tonFilter: (filter: AlertTypes.Filter) => void;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n}\n\nconst css = {\n\tfilters: {\n\t\tmargin: '-15px 0 5px 0',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '200px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\twidth: '150px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\ttype: {\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tcheck: {\n\t\tmargin: '12px 5px 8px 5px',\n\t} as React.CSSProperties,\n};\n\nexport default class AlertsFilter extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tmenu: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.filter === null) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.id = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.id;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.name = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.name;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.role = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.role;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport AlertsStore from '../stores/AlertsStore';\nimport * as AlertActions from '../actions/AlertActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class AlertsPage extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: AlertsStore.page,\n\t\t\tpageCount: AlertsStore.pageCount,\n\t\t\tpages: AlertsStore.pages,\n\t\t\tcount: AlertsStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tAlertsStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tAlertsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: AlertsStore.page,\n\t\t\tpageCount: AlertsStore.pageCount,\n\t\t\tpages: AlertsStore.pages,\n\t\t\tcount: AlertsStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tAlertActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tAlertActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tAlertActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tAlertActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tAlertActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as AlertTypes from '../types/AlertTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport AlertsStore from '../stores/AlertsStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport * as AlertActions from '../actions/AlertActions';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport Alert from './Alert';\nimport AlertsFilter from './AlertsFilter';\nimport AlertsPage from './AlertsPage';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\nimport NonState from './NonState';\nimport ConfirmButton from './ConfirmButton';\n\ninterface Selected {\n\t[key: string]: boolean;\n}\n\ninterface Opened {\n\t[key: string]: boolean;\n}\n\ninterface State {\n\talerts: AlertTypes.AlertsRo;\n\tfilter: AlertTypes.Filter;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: Selected;\n\topened: Opened;\n\tnewOpened: boolean;\n\tlastSelected: string;\n\tdisabled: boolean;\n}\n\nconst css = {\n\titems: {\n\t\twidth: '100%',\n\t\tmarginTop: '-5px',\n\t\tdisplay: 'table',\n\t\tborderSpacing: '0 5px',\n\t} as React.CSSProperties,\n\titemsBox: {\n\t\twidth: '100%',\n\t\toverflowY: 'auto',\n\t} as React.CSSProperties,\n\tplaceholder: {\n\t\topacity: 0,\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n};\n\nexport default class Alerts extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\talerts: AlertsStore.alerts,\n\t\t\tfilter: AlertsStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: {},\n\t\t\topened: {},\n\t\t\tnewOpened: false,\n\t\t\tlastSelected: null,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tget selected(): boolean {\n\t\treturn !!Object.keys(this.state.selected).length;\n\t}\n\n\tget opened(): boolean {\n\t\treturn !!Object.keys(this.state.opened).length;\n\t}\n\n\tcomponentDidMount(): void {\n\t\tAlertsStore.addChangeListener(this.onChange);\n\t\tAuthoritiesStore.addChangeListener(this.onChange);\n\t\tAlertActions.sync();\n\t\tAuthorityActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tAlertsStore.removeChangeListener(this.onChange);\n\t\tAuthoritiesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tlet alerts = AlertsStore.alerts;\n\t\tlet selected: Selected = {};\n\t\tlet curSelected = this.state.selected;\n\t\tlet opened: Opened = {};\n\t\tlet curOpened = this.state.opened;\n\n\t\talerts.forEach((alert: AlertTypes.Alert): void => {\n\t\t\tif (curSelected[alert.id]) {\n\t\t\t\tselected[alert.id] = true;\n\t\t\t}\n\t\t\tif (curOpened[alert.id]) {\n\t\t\t\topened[alert.id] = true;\n\t\t\t}\n\t\t});\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\talerts: alerts,\n\t\t\tfilter: AlertsStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: selected,\n\t\t\topened: opened,\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tAlertActions.removeMulti(\n\t\t\t\tObject.keys(this.state.selected)).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tselected: {},\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet alertsDom: JSX.Element[] = [];\n\n\t\tthis.state.alerts.forEach((\n\t\t\t\talert: AlertTypes.AlertRo): void => {\n\t\t\talertsDom.push( {\n\t\t\t\t\tlet selected = {\n\t\t\t\t\t\t...this.state.selected,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (shift) {\n\t\t\t\t\t\tlet alerts = this.state.alerts;\n\t\t\t\t\t\tlet start: number;\n\t\t\t\t\t\tlet end: number;\n\n\t\t\t\t\t\tfor (let i = 0; i < alerts.length; i++) {\n\t\t\t\t\t\t\tlet usr = alerts[i];\n\n\t\t\t\t\t\t\tif (usr.id === alert.id) {\n\t\t\t\t\t\t\t\tstart = i;\n\t\t\t\t\t\t\t} else if (usr.id === this.state.lastSelected) {\n\t\t\t\t\t\t\t\tend = i;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (start !== undefined && end !== undefined) {\n\t\t\t\t\t\t\tif (start > end) {\n\t\t\t\t\t\t\t\tend = [start, start = end][0];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor (let i = start; i <= end; i++) {\n\t\t\t\t\t\t\t\tselected[alerts[i].id] = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tlastSelected: alert.id,\n\t\t\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (selected[alert.id]) {\n\t\t\t\t\t\tdelete selected[alert.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselected[alert.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tlastSelected: alert.id,\n\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonOpen={(): void => {\n\t\t\t\t\tlet opened = {\n\t\t\t\t\t\t...this.state.opened,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (opened[alert.id]) {\n\t\t\t\t\t\tdelete opened[alert.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\topened[alert.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\topened: opened,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>);\n\t\t});\n\n\t\tlet filterClass = 'bp3-button bp3-intent-primary bp3-icon-filter ';\n\t\tif (this.state.filter) {\n\t\t\tfilterClass += 'bp3-active';\n\t\t}\n\n\t\tlet selectedNames: string[] = [];\n\t\tfor (let instId of Object.keys(this.state.selected)) {\n\t\t\tlet inst = AlertsStore.alert(instId);\n\t\t\tif (inst) {\n\t\t\t\tselectedNames.push(inst.name || instId);\n\t\t\t} else {\n\t\t\t\tselectedNames.push(instId);\n\t\t\t}\n\t\t}\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Alerts

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (this.state.filter === null) {\n\t\t\t\t\t\t\t\t\tAlertActions.filter({});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tAlertActions.filter(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFilters\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\topened: {},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCollapse All\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tAlertActions.create({\n\t\t\t\t\t\t\t\t\tid: null,\n\t\t\t\t\t\t\t\t}).then((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>New\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tAlertActions.filter(filter);\n\t\t\t\t}}\n\t\t\t\tauthorities={this.state.authorities}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{alertsDom}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tselected: {},\n\t\t\t\t\t\tlastSelected: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport PageSelect from './PageSelect';\nimport EndpointChart from './EndpointChart';\nimport * as CheckActions from '../actions/CheckActions';\n\ninterface Props {\n\tcheck: string;\n\tdisabled: boolean;\n}\n\ninterface State {\n\tsync: number;\n\tperiod: number;\n\tinterval: number;\n\tloading: {[key: string]: boolean};\n\tcancelable: {[key: string]: boolean};\n}\n\nconst css = {\n\theader: {\n\t\tfontSize: '20px',\n\t\tmarginTop: '-10px',\n\t\tpaddingBottom: '2px',\n\t\tmarginBottom: '10px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t} as React.CSSProperties,\n\tchartGroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t\tmarginBottom: '15px',\n\t} as React.CSSProperties,\n};\n\nexport default class CheckCharts extends React.Component {\n\tloading: {[key: string]: boolean};\n\tchartBoxRef: React.RefObject;\n\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tsync: 0,\n\t\t\tperiod: 1440,\n\t\t\tinterval: 30,\n\t\t\tloading: {},\n\t\t\tcancelable: {},\n\t\t};\n\n\t\tthis.loading = {};\n\t\tthis.chartBoxRef = React.createRef();\n\t}\n\n\tgetDefaultInterval(period: number): number {\n\t\tswitch (period) {\n\t\t\tcase 60:\n\t\t\t\treturn 1;\n\t\t\tcase 180:\n\t\t\t\treturn 5;\n\t\t\tcase 360:\n\t\t\t\treturn 5;\n\t\t\tcase 720:\n\t\t\t\treturn 30;\n\t\t\tcase 1440:\n\t\t\t\treturn 30;\n\t\t\tcase 4320:\n\t\t\t\treturn 60;\n\t\t\tcase 10080:\n\t\t\t\treturn 120;\n\t\t\tcase 20160:\n\t\t\t\treturn 360;\n\t\t\tcase 43200:\n\t\t\t\treturn 720;\n\t\t\tcase 86400:\n\t\t\t\treturn 1440;\n\t\t\tcase 129600:\n\t\t\t\treturn 1440;\n\t\t\tcase 172800:\n\t\t\t\treturn 4320;\n\t\t\tdefault:\n\t\t\t\treturn 360;\n\t\t}\n\t}\n\n\tsetLoading(resource: string): void {\n\t\tthis.loading[resource] = true;\n\n\t\tlet loading = {\n\t\t\t...this.state.loading,\n\t\t};\n\t\tloading[resource] = true;\n\n\t\tsetTimeout((): void => {\n\t\t\tif (this.loading[resource]) {\n\t\t\t\tlet cancelable = {\n\t\t\t\t\t...this.state.cancelable,\n\t\t\t\t};\n\t\t\t\tcancelable[resource] = true;\n\n\t\t\t\tthis.setState({\n\t\t\t\t\t...this.state,\n\t\t\t\t\tcancelable: cancelable,\n\t\t\t\t});\n\t\t\t}\n\t\t}, 3000);\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tloading: loading,\n\t\t});\n\t}\n\n\tsetLoaded(resource: string): void {\n\t\tdelete this.loading[resource];\n\n\t\tlet loading = {\n\t\t\t...this.state.loading,\n\t\t};\n\t\tdelete loading[resource];\n\n\t\tlet cancelable = {\n\t\t\t...this.state.cancelable,\n\t\t};\n\t\tdelete cancelable[resource];\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tloading: loading,\n\t\t\tcancelable: cancelable,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.disabled) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet intervalMin = 0;\n\t\tlet intervalMax = 0;\n\t\tif (this.state.period > 43200) {\n\t\t\tintervalMin = 120;\n\t\t} else if (this.state.period > 20160) {\n\t\t\tintervalMin = 30;\n\t\t} else if (this.state.period > 4320) {\n\t\t\tintervalMin = 5;\n\t\t}\n\n\t\tif (this.state.period <= 60) {\n\t\t\tintervalMax = 30;\n\t\t} else if (this.state.period <= 180) {\n\t\t\tintervalMax = 60;\n\t\t} else if (this.state.period <= 360) {\n\t\t\tintervalMax = 120;\n\t\t} else if (this.state.period <= 720) {\n\t\t\tintervalMax = 360;\n\t\t} else if (this.state.period <= 1440) {\n\t\t\tintervalMax = 720;\n\t\t} else if (this.state.period <= 4320) {\n\t\t\tintervalMax = 1440;\n\t\t} else if (this.state.period <= 10080) {\n\t\t\tintervalMax = 4320;\n\t\t} else {\n\t\t\tintervalMax = 10080;\n\t\t}\n\n\t\tlet refreshDisabled = false;\n\t\tlet refreshLabel = '';\n\t\tlet refreshClass = 'bp3-button';\n\t\tif (Object.entries(this.state.cancelable).length) {\n\t\t\trefreshLabel = 'Cancel';\n\t\t\trefreshClass += ' bp3-intent-warning bp3-icon-delete'\n\t\t} else {\n\t\t\tif (Object.entries(this.state.loading).length) {\n\t\t\t\trefreshDisabled = true;\n\t\t\t}\n\t\t\trefreshLabel = 'Refresh';\n\t\t\trefreshClass += ' bp3-intent-success bp3-icon-refresh'\n\t\t}\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t

    Charts

    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tif (Object.entries(this.state.cancelable).length) {\n\t\t\t\t\t\t\t\tCheckActions.dataCancel();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tsync: this.state.sync + 1,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{refreshLabel}\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet period = parseInt(val, 10);\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tperiod: period,\n\t\t\t\t\t\t\t\tinterval: this.getDefaultInterval(period),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tinterval: parseInt(val, 10),\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>1 minute\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>5 minutes\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>30 minutes\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>1 hour\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>2 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>6 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>12 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>24 hours\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>3 days\n\t\t\t\t\t\t intervalMax}\n\t\t\t\t\t\t>7 days\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('check0');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('check0');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('check1');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('check1');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setLoading('check2');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonLoaded={(): void => {\n\t\t\t\t\t\t\tthis.setLoaded('check2');\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tgetBoxRect={(): DOMRect => {\n\t\t\t\t\t\t\treturn this.chartBoxRef.current.getBoundingClientRect();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as CheckTypes from '../types/CheckTypes';\n\ninterface Props {\n\theader: CheckTypes.Header;\n\tonChange: (state: CheckTypes.Header) => void;\n\tonRemove: () => void;\n}\n\nconst css = {\n\tgroup: {\n\t\twidth: '100%',\n\t\tmaxWidth: '310px',\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\theader: {\n\t\twidth: '100%',\n\t\tborderRadius: '0 3px 3px 0',\n\t} as React.CSSProperties,\n\theaderBox: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class CheckHeader extends React.Component {\n\tclone(): CheckTypes.Header {\n\t\treturn {\n\t\t\t...this.props.header,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tlet header = this.props.header;\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\tstate.key = evt.target.value;\n\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\tstate.value = evt.target.value;\n\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.props.onRemove();\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as CheckTypes from '../types/CheckTypes';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\nimport * as CheckActions from '../actions/CheckActions';\nimport * as PageInfos from './PageInfo';\nimport PageInput from './PageInput';\nimport PageSave from './PageSave';\nimport PageInfo from './PageInfo';\nimport ConfirmButton from './ConfirmButton';\nimport PageInputButton from './PageInputButton';\nimport CheckCharts from './CheckCharts';\nimport Help from './Help';\nimport PageSwitch from \"./PageSwitch\";\nimport PageSelect from \"./PageSelect\";\nimport CheckHeader from \"./CheckHeader\";\nimport EndpointKmsg from \"./EndpointKmsg\";\n\ninterface Props {\n\tcheck: CheckTypes.CheckRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\tonClose: () => void;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\taddRole: string;\n\taddTarget: string;\n\tcheck: CheckTypes.Check;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '48px 10px 0 10px',\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t} as React.CSSProperties,\n\tcontrolButton: {\n\t\tmarginRight: '10px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\theight: '30px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tcursor: 'pointer',\n\t\tposition: 'absolute',\n\t\ttop: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tpadding: '4px',\n\t\theight: '39px',\n\t\tbackgroundColor: 'rgba(0, 0, 0, 0.13)',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tstatus: {\n\t\tmargin: '6px 0 0 1px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tprotocol: {\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n\tport: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '7px 0px 0px 6px',\n\t\tpaddingTop: '3px',\n\t} as React.CSSProperties,\n\theader: {\n\t\tfontSize: '20px',\n\t\tmarginTop: '-10px',\n\t\tpaddingBottom: '2px',\n\t\tmarginBottom: '10px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tchecksButtons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n\tchecksAdd: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n};\n\nexport default class CheckDetailed extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\taddTarget: '',\n\t\t\tcheck: null,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet check: any;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tcheck[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tCheckActions.commit(this.state.check).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tcheck: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tCheckActions.remove(this.props.check.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddRole = (): void => {\n\t\tlet check: CheckTypes.Check;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...check.roles,\n\t\t];\n\n\t\tif (!this.state.addRole) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (roles.indexOf(this.state.addRole) === -1) {\n\t\t\troles.push(this.state.addRole);\n\t\t}\n\n\t\troles.sort();\n\n\t\tcheck.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\tonRemoveRole(role: string): void {\n\t\tlet check: CheckTypes.Check;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...check.roles,\n\t\t];\n\n\t\tlet i = roles.indexOf(role);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\troles.splice(i, 1);\n\n\t\tcheck.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\tonAddTarget = (): void => {\n\t\tlet check: CheckTypes.Check;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tlet targets = [\n\t\t\t...(check.targets || []),\n\t\t];\n\n\t\tif (!this.state.addTarget) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (targets.indexOf(this.state.addTarget) === -1) {\n\t\t\ttargets.push(this.state.addTarget);\n\t\t}\n\n\t\ttargets.sort();\n\n\t\tcheck.targets = targets;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddTarget: '',\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\tonRemoveTarget(target: string): void {\n\t\tlet check: CheckTypes.Check;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tlet targets = [\n\t\t\t...(check.targets || []),\n\t\t];\n\n\t\tlet i = targets.indexOf(target);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\ttargets.splice(i, 1);\n\n\t\tcheck.targets = targets;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddTarget: '',\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\tonAddHeader = (): void => {\n\t\tlet check: CheckTypes.Check;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tlet headers = [\n\t\t\t...check.headers,\n\t\t\t{},\n\t\t];\n\n\t\tcheck.headers = headers;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\tonChangeHeader(i: number, state: CheckTypes.Header): void {\n\t\tlet check: CheckTypes.Check;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tlet headers = [\n\t\t\t...check.headers,\n\t\t];\n\n\t\theaders[i] = state;\n\n\t\tcheck.headers = headers;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\tonRemoveHeader(i: number): void {\n\t\tlet check: CheckTypes.Check;\n\n\t\tif (this.state.changed) {\n\t\t\tcheck = {\n\t\t\t\t...this.state.check,\n\t\t\t};\n\t\t} else {\n\t\t\tcheck = {\n\t\t\t\t...this.props.check,\n\t\t\t};\n\t\t}\n\n\t\tlet headers = [\n\t\t\t...check.headers,\n\t\t];\n\n\t\theaders.splice(i, 1);\n\n\t\tcheck.headers = headers;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tcheck: check,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet check: CheckTypes.Check = this.state.check ||\n\t\t\tthis.props.check;\n\n\t\tlet fields: PageInfos.Field[] = [\n\t\t\t{\n\t\t\t\tlabel: 'ID',\n\t\t\t\tvalue: this.props.check.id || 'None',\n\t\t\t},\n\t\t];\n\n\t\tlet roles: JSX.Element[] = [];\n\t\tfor (let role of check.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveRole(role);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet targets: JSX.Element[] = [];\n\t\tfor (let target of (check.targets || [])) {\n\t\t\ttargets.push(\n\t\t\t\t\n\t\t\t\t\t{target}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveTarget(target);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet targetLabel = '';\n\t\tlet targetTitle = '';\n\t\tlet targetHelp = '';\n\n\t\ttargetLabel = 'Targets';\n\t\ttargetTitle = 'Targets';\n\t\ttargetHelp = 'Targets for health check. For most configurations each ' +\n\t\t\t'target should be placed in a separate check.';\n\n\t\tlet headers: JSX.Element[] = [];\n\t\tif (check.type === \"http\") {\n\t\t\tfor (let i = 0; i < check.headers.length; i++) {\n\t\t\t\tlet index = i;\n\n\t\t\t\theaders.push(\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onChangeHeader(index, state);\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonRemove={(): void => {\n\t\t\t\t\t\t\tthis.onRemoveHeader(index);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\t\t\t\tif (target.className.indexOf('tab-close') !== -1) {\n\t\t\t\t\t\t\t\tthis.props.onClose();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonClick={(evt): void => {\n\t\t\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddRole}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('type', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\tHTTP Request\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddTarget: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddTarget}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('frequency', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('timeout', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('status_code', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t{headers}\n\t\t\t\t\t\n\t\t\t\t\t\tAdd Header\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tcheck: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t\t\n\t\t\t\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as CheckTypes from '../types/CheckTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport CheckDetailed from './CheckDetailed';\n\ninterface Props {\n\tcheck: CheckTypes.CheckRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\topen: boolean;\n\tonOpen: () => void;\n}\n\nconst css = {\n\tcard: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tcursor: 'pointer',\n\t} as React.CSSProperties,\n\tcardOpen: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tposition: 'relative',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '2px 0 0 0',\n\t\tpaddingTop: '3px',\n\t\tminHeight: '18px',\n\t} as React.CSSProperties,\n\tname: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t} as React.CSSProperties,\n\tnameSpan: {\n\t\tmargin: '1px 5px 0 0',\n\t} as React.CSSProperties,\n\titem: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '9px',\n\t\twhiteSpace: 'nowrap',\n\t} as React.CSSProperties,\n\troles: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '0 8px 8px 8px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\ttag: {\n\t\tmargin: '8px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\tbars: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t\twidth: '30px',\n\t} as React.CSSProperties,\n\tbar: {\n\t\theight: '6px',\n\t\tmarginBottom: '1px',\n\t} as React.CSSProperties,\n\tbarLast: {\n\t\theight: '6px',\n\t} as React.CSSProperties,\n};\n\nexport default class Check extends React.Component {\n\trender(): JSX.Element {\n\t\tlet check = this.props.check;\n\n\t\tif (this.props.open) {\n\t\t\treturn \n\t\t\t\t {\n\t\t\t\t\t\tthis.props.onOpen();\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    ;\n\t\t}\n\n\t\tlet cardStyle = {\n\t\t\t...css.card,\n\t\t};\n\n\t\tlet roles: JSX.Element[] = [];\n\n\t\tfor (let role of check.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\tif (target.className.indexOf('open-ignore') !== -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.props.onOpen();\n\t\t\t}}\n\t\t>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClick={(evt): void => {\n\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t{check.name}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{roles}\n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as CheckTypes from '../types/CheckTypes';\nimport SearchInput from './SearchInput';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\n\ninterface Props {\n\tfilter: CheckTypes.Filter;\n\tonFilter: (filter: CheckTypes.Filter) => void;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n}\n\nconst css = {\n\tfilters: {\n\t\tmargin: '-15px 0 5px 0',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '200px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\twidth: '150px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\ttype: {\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tcheck: {\n\t\tmargin: '12px 5px 8px 5px',\n\t} as React.CSSProperties,\n};\n\nexport default class ChecksFilter extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tmenu: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.filter === null) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.id = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.id;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.name = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.name;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.role = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.role;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport ChecksStore from '../stores/ChecksStore';\nimport * as CheckActions from '../actions/CheckActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class ChecksPage extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: ChecksStore.page,\n\t\t\tpageCount: ChecksStore.pageCount,\n\t\t\tpages: ChecksStore.pages,\n\t\t\tcount: ChecksStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tChecksStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tChecksStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: ChecksStore.page,\n\t\t\tpageCount: ChecksStore.pageCount,\n\t\t\tpages: ChecksStore.pages,\n\t\t\tcount: ChecksStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tCheckActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tCheckActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tCheckActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tCheckActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tCheckActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as CheckTypes from '../types/CheckTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport ChecksStore from '../stores/ChecksStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport * as CheckActions from '../actions/CheckActions';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport Check from './Check';\nimport ChecksFilter from './ChecksFilter';\nimport ChecksPage from './ChecksPage';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\nimport NonState from './NonState';\nimport ConfirmButton from './ConfirmButton';\n\ninterface Selected {\n\t[key: string]: boolean;\n}\n\ninterface Opened {\n\t[key: string]: boolean;\n}\n\ninterface State {\n\tchecks: CheckTypes.ChecksRo;\n\tfilter: CheckTypes.Filter;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: Selected;\n\topened: Opened;\n\tnewOpened: boolean;\n\tlastSelected: string;\n\tdisabled: boolean;\n}\n\nconst css = {\n\titems: {\n\t\twidth: '100%',\n\t\tmarginTop: '-5px',\n\t\tdisplay: 'table',\n\t\tborderSpacing: '0 5px',\n\t} as React.CSSProperties,\n\titemsBox: {\n\t\twidth: '100%',\n\t\toverflowY: 'auto',\n\t} as React.CSSProperties,\n\tplaceholder: {\n\t\topacity: 0,\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n};\n\nexport default class Checks extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tchecks: ChecksStore.checks,\n\t\t\tfilter: ChecksStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: {},\n\t\t\topened: {},\n\t\t\tnewOpened: false,\n\t\t\tlastSelected: null,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tget selected(): boolean {\n\t\treturn !!Object.keys(this.state.selected).length;\n\t}\n\n\tget opened(): boolean {\n\t\treturn !!Object.keys(this.state.opened).length;\n\t}\n\n\tcomponentDidMount(): void {\n\t\tChecksStore.addChangeListener(this.onChange);\n\t\tAuthoritiesStore.addChangeListener(this.onChange);\n\t\tCheckActions.sync();\n\t\tAuthorityActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tChecksStore.removeChangeListener(this.onChange);\n\t\tAuthoritiesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tlet checks = ChecksStore.checks;\n\t\tlet selected: Selected = {};\n\t\tlet curSelected = this.state.selected;\n\t\tlet opened: Opened = {};\n\t\tlet curOpened = this.state.opened;\n\n\t\tchecks.forEach((check: CheckTypes.Check): void => {\n\t\t\tif (curSelected[check.id]) {\n\t\t\t\tselected[check.id] = true;\n\t\t\t}\n\t\t\tif (curOpened[check.id]) {\n\t\t\t\topened[check.id] = true;\n\t\t\t}\n\t\t});\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchecks: checks,\n\t\t\tfilter: ChecksStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: selected,\n\t\t\topened: opened,\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tCheckActions.removeMulti(\n\t\t\t\tObject.keys(this.state.selected)).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tselected: {},\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet checksDom: JSX.Element[] = [];\n\n\t\tthis.state.checks.forEach((\n\t\t\t\tcheck: CheckTypes.CheckRo): void => {\n\t\t\tchecksDom.push( {\n\t\t\t\t\tlet selected = {\n\t\t\t\t\t\t...this.state.selected,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (shift) {\n\t\t\t\t\t\tlet checks = this.state.checks;\n\t\t\t\t\t\tlet start: number;\n\t\t\t\t\t\tlet end: number;\n\n\t\t\t\t\t\tfor (let i = 0; i < checks.length; i++) {\n\t\t\t\t\t\t\tlet usr = checks[i];\n\n\t\t\t\t\t\t\tif (usr.id === check.id) {\n\t\t\t\t\t\t\t\tstart = i;\n\t\t\t\t\t\t\t} else if (usr.id === this.state.lastSelected) {\n\t\t\t\t\t\t\t\tend = i;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (start !== undefined && end !== undefined) {\n\t\t\t\t\t\t\tif (start > end) {\n\t\t\t\t\t\t\t\tend = [start, start = end][0];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor (let i = start; i <= end; i++) {\n\t\t\t\t\t\t\t\tselected[checks[i].id] = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tlastSelected: check.id,\n\t\t\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (selected[check.id]) {\n\t\t\t\t\t\tdelete selected[check.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselected[check.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tlastSelected: check.id,\n\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonOpen={(): void => {\n\t\t\t\t\tlet opened = {\n\t\t\t\t\t\t...this.state.opened,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (opened[check.id]) {\n\t\t\t\t\t\tdelete opened[check.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\topened[check.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\topened: opened,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>);\n\t\t});\n\n\t\tlet filterClass = 'bp3-button bp3-intent-primary bp3-icon-filter ';\n\t\tif (this.state.filter) {\n\t\t\tfilterClass += 'bp3-active';\n\t\t}\n\n\t\tlet selectedNames: string[] = [];\n\t\tfor (let instId of Object.keys(this.state.selected)) {\n\t\t\tlet inst = ChecksStore.check(instId);\n\t\t\tif (inst) {\n\t\t\t\tselectedNames.push(inst.name || instId);\n\t\t\t} else {\n\t\t\t\tselectedNames.push(instId);\n\t\t\t}\n\t\t}\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Health Checks

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (this.state.filter === null) {\n\t\t\t\t\t\t\t\t\tCheckActions.filter({});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tCheckActions.filter(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFilters\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\topened: {},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCollapse All\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tCheckActions.create({\n\t\t\t\t\t\t\t\t\tid: null,\n\t\t\t\t\t\t\t\t}).then((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>New\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tCheckActions.filter(filter);\n\t\t\t\t}}\n\t\t\t\tauthorities={this.state.authorities}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{checksDom}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tselected: {},\n\t\t\t\t\t\tlastSelected: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nexport const SYNC = 'log.sync';\nexport const TRAVERSE = 'log.traverse';\nexport const FILTER = 'log.filter';\nexport const CHANGE = 'log.change';\n\nexport interface Log {\n\tid: string;\n\tlevel?: string;\n\ttimestamp?: string;\n\tmessage?: string;\n\tstack?: string;\n\tfields?: {[key: string]: any};\n}\n\nexport interface Filter {\n\tlevel?: string;\n\tmessage?: string;\n}\n\nexport type Logs = Log[];\n\nexport type LogRo = Readonly;\nexport type LogsRo = ReadonlyArray;\n\nexport interface LogDispatch {\n\ttype: string;\n\tdata?: {\n\t\tid?: string;\n\t\tlog?: Log;\n\t\tlogs?: Logs;\n\t\tpage?: number;\n\t\tpageCount?: number;\n\t\tfilter?: Filter;\n\t\tcount?: number;\n\t};\n}\n","/// \nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventEmitter from '../EventEmitter';\nimport * as LogTypes from '../types/LogTypes';\nimport * as GlobalTypes from '../types/GlobalTypes';\n\nclass LogsStore extends EventEmitter {\n\t_logs: LogTypes.LogsRo = Object.freeze([]);\n\t_page: number;\n\t_pageCount: number;\n\t_filter: LogTypes.Filter = null;\n\t_count: number;\n\t_token = Dispatcher.register((this._callback).bind(this));\n\n\tget logs(): LogTypes.LogsRo {\n\t\treturn this._logs;\n\t}\n\n\tget logsM(): LogTypes.Logs {\n\t\tlet logs: LogTypes.Logs = [];\n\t\tthis._logs.forEach((log: LogTypes.LogRo): void => {\n\t\t\tlogs.push({\n\t\t\t\t...log,\n\t\t\t});\n\t\t});\n\t\treturn logs;\n\t}\n\n\tget page(): number {\n\t\treturn this._page || 0;\n\t}\n\n\tget pageCount(): number {\n\t\treturn this._pageCount || 50;\n\t}\n\n\tget pages(): number {\n\t\treturn Math.ceil(this.count / this.pageCount);\n\t}\n\n\tget filter(): LogTypes.Filter {\n\t\treturn this._filter;\n\t}\n\n\tget count(): number {\n\t\treturn this._count || 0;\n\t}\n\n\temitChange(): void {\n\t\tthis.emitDefer(GlobalTypes.CHANGE);\n\t}\n\n\taddChangeListener(callback: () => void): void {\n\t\tthis.on(GlobalTypes.CHANGE, callback);\n\t}\n\n\tremoveChangeListener(callback: () => void): void {\n\t\tthis.removeListener(GlobalTypes.CHANGE, callback);\n\t}\n\n\t_traverse(page: number): void {\n\t\tthis._page = Math.min(this.pages, page);\n\t}\n\n\t_filterCallback(filter: LogTypes.Filter): void {\n\t\tif ((this._filter !== null && filter === null) ||\n\t\t\t(this._filter === {} && filter !== null) || (\n\t\t\t\tfilter && this._filter && (\n\t\t\t\t\tfilter.level !== this._filter.level\n\t\t\t\t))) {\n\t\t\tthis._traverse(0);\n\t\t}\n\t\tthis._filter = filter;\n\t\tthis.emitChange();\n\t}\n\n\t_sync(logs: LogTypes.Log[], count: number): void {\n\t\tfor (let i = 0; i < logs.length; i++) {\n\t\t\tlogs[i] = Object.freeze(logs[i]);\n\t\t}\n\n\t\tthis._count = count;\n\t\tthis._logs = Object.freeze(logs);\n\t\tthis._page = Math.min(this.pages, this.page);\n\n\t\tthis.emitChange();\n\t}\n\n\t_callback(action: LogTypes.LogDispatch): void {\n\t\tswitch (action.type) {\n\t\t\tcase LogTypes.TRAVERSE:\n\t\t\t\tthis._traverse(action.data.page);\n\t\t\t\tbreak;\n\n\t\t\tcase LogTypes.FILTER:\n\t\t\t\tthis._filterCallback(action.data.filter);\n\t\t\t\tbreak;\n\n\t\t\tcase LogTypes.SYNC:\n\t\t\t\tthis._sync(action.data.logs, action.data.count);\n\t\t\t\tbreak;\n\t\t}\n\t}\n}\n\nexport default new LogsStore();\n","/// \nimport * as SuperAgent from 'superagent';\nimport Dispatcher from '../dispatcher/Dispatcher';\nimport EventDispatcher from '../dispatcher/EventDispatcher';\nimport * as Alert from '../Alert';\nimport * as Csrf from '../Csrf';\nimport Loader from '../Loader';\nimport * as LogTypes from '../types/LogTypes';\nimport LogsStore from '../stores/LogsStore';\nimport * as MiscUtils from '../utils/MiscUtils';\n\nlet syncId: string;\n\nexport function sync(): Promise {\n\tlet curSyncId = MiscUtils.uuid();\n\tsyncId = curSyncId;\n\n\tlet loader = new Loader().loading();\n\n\treturn new Promise((resolve, reject): void => {\n\t\tSuperAgent\n\t\t\t.get('/log')\n\t\t\t.query({\n\t\t\t\t...LogsStore.filter,\n\t\t\t\tpage: LogsStore.page,\n\t\t\t\tpage_count: LogsStore.pageCount,\n\t\t\t})\n\t\t\t.set('Accept', 'application/json')\n\t\t\t.set('Csrf-Token', Csrf.token)\n\t\t\t.end((err: any, res: SuperAgent.Response): void => {\n\t\t\t\tloader.done();\n\n\t\t\t\tif (res && res.status === 401) {\n\t\t\t\t\twindow.location.href = '/login';\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (curSyncId !== syncId) {\n\t\t\t\t\tresolve();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (err) {\n\t\t\t\t\tAlert.errorRes(res, 'Failed to load logs');\n\t\t\t\t\treject(err);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tDispatcher.dispatch({\n\t\t\t\t\ttype: LogTypes.SYNC,\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tlogs: res.body.logs,\n\t\t\t\t\t\tcount: res.body.count,\n\t\t\t\t\t},\n\t\t\t\t});\n\n\t\t\t\tresolve();\n\t\t\t});\n\t});\n}\n\nexport function traverse(page: number): Promise {\n\tDispatcher.dispatch({\n\t\ttype: LogTypes.TRAVERSE,\n\t\tdata: {\n\t\t\tpage: page,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nexport function filter(filt: LogTypes.Filter): Promise {\n\tDispatcher.dispatch({\n\t\ttype: LogTypes.FILTER,\n\t\tdata: {\n\t\t\tfilter: filt,\n\t\t},\n\t});\n\n\treturn sync();\n}\n\nEventDispatcher.register((action: LogTypes.LogDispatch) => {\n\tswitch (action.type) {\n\t\tcase LogTypes.CHANGE:\n\t\t\tif (window.location.hash.indexOf('/logs') !== -1) {\n\t\t\t\tsync();\n\t\t\t}\n\t\t\tbreak;\n\t}\n});\n","/// \nimport * as React from 'react';\nimport * as Blueprint from '@blueprintjs/core';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport * as LogTypes from '../types/LogTypes';\n\ninterface State {\n\tstack: boolean;\n}\n\ninterface Props {\n\tlog: LogTypes.LogRo;\n}\n\nconst css = {\n\tcard: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t} as React.CSSProperties,\n\ttimestamp: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '6px',\n\t} as React.CSSProperties,\n\tlevel: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '6px',\n\t} as React.CSSProperties,\n\tmessage: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '6px',\n\t} as React.CSSProperties,\n\tfields: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '6px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '0',\n\t\twidth: '30px',\n\t} as React.CSSProperties,\n\tkey: {\n\t\tfontWeight: 'bold',\n\t} as React.CSSProperties,\n\tvalue: {\n\t} as React.CSSProperties,\n\tdialog: {\n\t\theight: '500px',\n\t\twidth: '90%',\n\t\tmaxWidth: '700px',\n\t} as React.CSSProperties,\n\tdialogBody: {\n\t\theight: '100%',\n\t} as React.CSSProperties,\n\ttextarea: {\n\t\tresize: 'none',\n\t\tfontSize: '12px',\n\t\tfontFamily: '\"Lucida Console\", Monaco, monospace',\n\t\tmarginBottom: 0,\n\t} as React.CSSProperties,\n};\n\nexport default class Log extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tstack: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tlet log = this.props.log;\n\n\t\tlet className = 'bp3-cell ';\n\t\tswitch (log.level) {\n\t\t\tcase 'debug':\n\t\t\t\tclassName += 'bp3-text-intent-success';\n\t\t\t\tbreak;\n\t\t\tcase 'info':\n\t\t\t\tclassName += 'bp3-text-intent-primary';\n\t\t\t\tbreak;\n\t\t\tcase 'warning':\n\t\t\t\tclassName += 'bp3-text-intent-warning';\n\t\t\t\tbreak;\n\t\t\tcase 'error':\n\t\t\t\tclassName += 'bp3-text-intent-danger';\n\t\t\t\tbreak;\n\t\t\tcase 'fatal':\n\t\t\t\tclassName += 'bp3-text-intent-danger';\n\t\t\t\tbreak;\n\t\t\tcase 'panic':\n\t\t\t\tclassName += 'bp3-text-intent-danger';\n\t\t\t\tbreak;\n\t\t}\n\n\t\tlet fields: JSX.Element[] = [];\n\t\tfor (let key in log.fields) {\n\t\t\tif (!log.fields.hasOwnProperty(key)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tlet val = log.fields[key];\n\n\t\t\tfields.push(\n\t\t\t\t
    \n\t\t\t\t\t{key}: \n\t\t\t\t\t\n\t\t\t\t\t\t{JSON.stringify(val)}\n\t\t\t\t\t\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t{MiscUtils.formatDateShortTime(log.timestamp) || 'Unknown'}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{log.level}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{log.message}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{fields}\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\tstack: true,\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tstack: false,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t\n\t\t\t\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as LogTypes from '../types/LogTypes';\nimport SearchInput from './SearchInput';\n\ninterface Props {\n\tfilter: LogTypes.Filter;\n\tonFilter: (filter: LogTypes.Filter) => void;\n}\n\nconst css = {\n\tfilters: {\n\t\tmargin: '-15px 0 5px 0',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '200px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\twidth: '150px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\ttype: {\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tcheck: {\n\t\tmargin: '12px 5px 8px 5px',\n\t} as React.CSSProperties,\n};\n\nexport default class LogsFilter extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tmenu: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.filter === null) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.message = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.message;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tlet val = evt.target.value;\n\n\t\t\t\t\t\tif (val === 'any') {\n\t\t\t\t\t\t\tdelete filter.level;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfilter.level = val;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport LogsStore from '../stores/LogsStore';\nimport * as LogActions from '../actions/LogActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class LogsPage extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: LogsStore.page,\n\t\t\tpageCount: LogsStore.pageCount,\n\t\t\tpages: LogsStore.pages,\n\t\t\tcount: LogsStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tLogsStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tLogsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: LogsStore.page,\n\t\t\tpageCount: LogsStore.pageCount,\n\t\t\tpages: LogsStore.pages,\n\t\t\tcount: LogsStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tLogActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tLogActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tLogActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tLogActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tLogActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as LogTypes from '../types/LogTypes';\nimport LogsStore from '../stores/LogsStore';\nimport * as LogActions from '../actions/LogActions';\nimport Log from './Log';\nimport LogsFilter from './LogsFilter';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\nimport LogsPage from './LogsPage';\n\ninterface State {\n\tlogs: LogTypes.LogsRo;\n\tfilter: LogTypes.Filter;\n}\n\nconst css = {\n\tlogs: {\n\t\twidth: '100%',\n\t\tmarginTop: '-3px',\n\t\tdisplay: 'table',\n\t\tborderSpacing: '0 3px',\n\t} as React.CSSProperties,\n\tlogsBox: {\n\t\twidth: '100%',\n\t\toverflowY: 'auto',\n\t} as React.CSSProperties,\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n};\n\nexport default class Logs extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tlogs: LogsStore.logs,\n\t\t\tfilter: LogsStore.filter,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tLogsStore.addChangeListener(this.onChange);\n\t\tLogActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tLogsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tlogs: LogsStore.logs,\n\t\t\tfilter: LogsStore.filter,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet logsDom: JSX.Element[] = [];\n\n\t\tthis.state.logs.forEach((log: LogTypes.LogRo): void => {\n\t\t\tlogsDom.push();\n\t\t});\n\n\t\tlet filterClass = 'bp3-button bp3-intent-primary bp3-icon-filter ';\n\t\tif (this.state.filter) {\n\t\t\tfilterClass += 'bp3-active';\n\t\t}\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Logs

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (this.state.filter === null) {\n\t\t\t\t\t\t\t\t\tLogActions.filter({});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tLogActions.filter(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFilters\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tLogActions.filter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{logsDom}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ServiceTypes from '../types/ServiceTypes';\n\ninterface Props {\n\tdomain: ServiceTypes.Domain;\n\tonChange: (state: ServiceTypes.Domain) => void;\n\tonRemove: () => void;\n}\n\nconst css = {\n\tgroup: {\n\t\twidth: '100%',\n\t\tmaxWidth: '310px',\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\tdomain: {\n\t\twidth: '100%',\n\t\tborderRadius: '0 3px 3px 0',\n\t} as React.CSSProperties,\n\tdomainBox: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class ServiceDomain extends React.Component {\n\tclone(): ServiceTypes.Domain {\n\t\treturn {\n\t\t\t...this.props.domain,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tlet domain = this.props.domain;\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\tstate.domain = evt.target.value;\n\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\tstate.host = evt.target.value;\n\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.props.onRemove();\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ServiceTypes from '../types/ServiceTypes';\n\ninterface Props {\n\tserver: ServiceTypes.Server;\n\tonChange: (state: ServiceTypes.Server) => void;\n\tonRemove: () => void;\n}\n\nconst css = {\n\tgroup: {\n\t\twidth: '100%',\n\t\tmaxWidth: '310px',\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\tprotocol: {\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n\thostname: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\thostnameBox: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n\tport: {\n\t\tflex: '0 1 auto',\n\t\twidth: '52px',\n\t\tborderRadius: '0 3px 3px 0',\n\t} as React.CSSProperties,\n};\n\nexport default class ServiceServer extends React.Component {\n\tclone(): ServiceTypes.Server {\n\t\treturn {\n\t\t\t...this.props.server,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tlet server = this.props.server;\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\tstate.protocol = evt.target.value;\n\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\tstate.hostname = evt.target.value;\n\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.port = parseInt(evt.target.value, 10);\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tthis.props.onRemove();\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ServiceTypes from '../types/ServiceTypes';\n\ninterface Props {\n\tpath: ServiceTypes.Path;\n\tonChange: (state: ServiceTypes.Path) => void;\n\tonRemove: () => void;\n}\n\nconst css = {\n\tgroup: {\n\t\twidth: '100%',\n\t\tmaxWidth: '310px',\n\t\tmarginTop: '5px',\n\t} as React.CSSProperties,\n\tpath: {\n\t\twidth: '100%',\n\t\tborderRadius: '0 3px 3px 0',\n\t} as React.CSSProperties,\n\tpathBox: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n};\n\nexport default class ServiceWhitelistPath extends React.Component {\n\tclone(): ServiceTypes.Path {\n\t\treturn {\n\t\t\t...this.props.path,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tlet path = this.props.path;\n\n\t\treturn
    \n\t\t\t
    \n\t\t\t\t {\n\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\tstate.path = evt.target.value;\n\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.props.onRemove();\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\nimport * as ServiceActions from '../actions/ServiceActions';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport ServiceDomain from './ServiceDomain';\nimport ServiceServer from './ServiceServer';\nimport ServiceWhitelistPath from './ServiceWhitelistPath';\nimport PageInput from './PageInput';\nimport PageSelect from './PageSelect';\nimport PageSwitch from './PageSwitch';\nimport PageSave from './PageSave';\nimport PageInfo from './PageInfo';\nimport ConfirmButton from './ConfirmButton';\nimport PageInputButton from './PageInputButton';\nimport Help from './Help';\n\ninterface Props {\n\tservice: ServiceTypes.ServiceRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\tonClose: () => void;\n}\n\ninterface State {\n\tdisabled: boolean;\n\tchanged: boolean;\n\tmessage: string;\n\taddRole: string;\n\taddWhitelistNet: string;\n\tservice: ServiceTypes.Service;\n}\n\nconst css = {\n\tcard: {\n\t\tposition: 'relative',\n\t\tpadding: '48px 10px 0 10px',\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tremove: {\n\t\tposition: 'absolute',\n\t\ttop: '5px',\n\t\tright: '5px',\n\t} as React.CSSProperties,\n\titem: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\titemsLabel: {\n\t\tdisplay: 'block',\n\t} as React.CSSProperties,\n\titemsAdd: {\n\t\tmargin: '8px 0 15px 0',\n\t} as React.CSSProperties,\n\tgroup: {\n\t\tflex: 1,\n\t\tminWidth: '250px',\n\t\tmargin: '0 10px',\n\t} as React.CSSProperties,\n\tsave: {\n\t\tpaddingBottom: '10px',\n\t} as React.CSSProperties,\n\n\tbutton: {\n\t\theight: '30px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tcursor: 'pointer',\n\t\tposition: 'absolute',\n\t\ttop: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tpadding: '4px',\n\t\theight: '39px',\n\t\tbackgroundColor: 'rgba(0, 0, 0, 0.13)',\n\t} as React.CSSProperties,\n\tlabel: {\n\t\twidth: '100%',\n\t\tmaxWidth: '280px',\n\t} as React.CSSProperties,\n\tstatus: {\n\t\tmargin: '6px 0 0 1px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\tinputGroup: {\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\tprotocol: {\n\t\tflex: '0 1 auto',\n\t} as React.CSSProperties,\n\tport: {\n\t\tflex: '1',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '7px 0px 0px 6px',\n\t\tpaddingTop: '3px',\n\t} as React.CSSProperties,\n};\n\nexport default class ServiceDetailed extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tdisabled: false,\n\t\t\tchanged: false,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\taddWhitelistNet: '',\n\t\t\tservice: null,\n\t\t};\n\t}\n\n\tset(name: string, val: any): void {\n\t\tlet service: any;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tservice[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tServiceActions.commit(this.state.service).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tservice: null,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 1000);\n\n\t\t\tsetTimeout((): void => {\n\t\t\t\tif (!this.state.changed) {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tmessage: '',\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, 3000);\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tServiceActions.remove(this.props.service.id).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tonAddRole = (): void => {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...service.roles,\n\t\t];\n\n\t\tif (!this.state.addRole) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (roles.indexOf(this.state.addRole) === -1) {\n\t\t\troles.push(this.state.addRole);\n\t\t}\n\n\t\troles.sort();\n\n\t\tservice.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonRemoveRole(role: string): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet roles = [\n\t\t\t...service.roles,\n\t\t];\n\n\t\tlet i = roles.indexOf(role);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\troles.splice(i, 1);\n\n\t\tservice.roles = roles;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddRole: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonAddWhitelistNet = (): void => {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet whitelistNets = [\n\t\t\t...service.whitelist_networks,\n\t\t];\n\n\t\tif (!this.state.addWhitelistNet) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (whitelistNets.indexOf(this.state.addWhitelistNet) === -1) {\n\t\t\twhitelistNets.push(this.state.addWhitelistNet);\n\t\t}\n\n\t\twhitelistNets.sort();\n\n\t\tservice.whitelist_networks = whitelistNets;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddWhitelistNet: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonRemoveWhitelistNet(whitelistNet: string): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet whitelistNets = [\n\t\t\t...service.whitelist_networks,\n\t\t];\n\n\t\tlet i = whitelistNets.indexOf(whitelistNet);\n\t\tif (i === -1) {\n\t\t\treturn;\n\t\t}\n\n\t\twhitelistNets.splice(i, 1);\n\n\t\tservice.whitelist_networks = whitelistNets;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\taddWhitelistNet: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonAddServer = (): void => {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet servers = [\n\t\t\t...service.servers,\n\t\t\t{\n\t\t\t\tprotocol: 'https',\n\t\t\t\thostname: '',\n\t\t\t\tport: 443,\n\t\t\t},\n\t\t];\n\n\t\tservice.servers = servers;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonChangeServer(i: number, state: ServiceTypes.Server): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet servers = [\n\t\t\t...service.servers,\n\t\t];\n\n\t\tservers[i] = state;\n\n\t\tservice.servers = servers;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonRemoveServer(i: number): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet servers = [\n\t\t\t...service.servers,\n\t\t];\n\n\t\tservers.splice(i, 1);\n\n\t\tservice.servers = servers;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonAddDomain = (): void => {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet domains = [\n\t\t\t...service.domains,\n\t\t\t{},\n\t\t];\n\n\t\tservice.domains = domains;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonChangeDomain(i: number, state: ServiceTypes.Domain): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet domains = [\n\t\t\t...service.domains,\n\t\t];\n\n\t\tdomains[i] = state;\n\n\t\tservice.domains = domains;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonRemoveDomain(i: number): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet domains = [\n\t\t\t...service.domains,\n\t\t];\n\n\t\tdomains.splice(i, 1);\n\n\t\tservice.domains = domains;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonAddWhitelistPath = (): void => {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet paths = [\n\t\t\t...(service.whitelist_paths || []),\n\t\t\t{},\n\t\t];\n\n\t\tservice.whitelist_paths = paths;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonChangeWhitelistPath(i: number, state: ServiceTypes.Path): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet paths = [\n\t\t\t...service.whitelist_paths,\n\t\t];\n\n\t\tpaths[i] = state;\n\n\t\tservice.whitelist_paths = paths;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\tonRemoveWhitelistPath(i: number): void {\n\t\tlet service: ServiceTypes.Service;\n\n\t\tif (this.state.changed) {\n\t\t\tservice = {\n\t\t\t\t...this.state.service,\n\t\t\t};\n\t\t} else {\n\t\t\tservice = {\n\t\t\t\t...this.props.service,\n\t\t\t};\n\t\t}\n\n\t\tlet paths = [\n\t\t\t...service.whitelist_paths,\n\t\t];\n\n\t\tpaths.splice(i, 1);\n\n\t\tservice.whitelist_paths = paths;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tservice: service,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet service: ServiceTypes.Service = this.state.service ||\n\t\t\tthis.props.service;\n\n\t\tlet domains: JSX.Element[] = [];\n\t\tfor (let i = 0; i < service.domains.length; i++) {\n\t\t\tlet index = i;\n\n\t\t\tdomains.push(\n\t\t\t\t {\n\t\t\t\t\t\tthis.onChangeDomain(index, state);\n\t\t\t\t\t}}\n\t\t\t\t\tonRemove={(): void => {\n\t\t\t\t\t\tthis.onRemoveDomain(index);\n\t\t\t\t\t}}\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\tlet roles: JSX.Element[] = [];\n\t\tfor (let role of service.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveRole(role);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet servers: JSX.Element[] = [];\n\t\tfor (let i = 0; i < service.servers.length; i++) {\n\t\t\tlet index = i;\n\n\t\t\tservers.push(\n\t\t\t\t {\n\t\t\t\t\t\tthis.onChangeServer(index, state);\n\t\t\t\t\t}}\n\t\t\t\t\tonRemove={(): void => {\n\t\t\t\t\t\tthis.onRemoveServer(index);\n\t\t\t\t\t}}\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\tlet authorities: JSX.Element[] = [\n\t\t\t,\n\t\t];\n\t\tfor (let authority of this.props.authorities) {\n\t\t\tauthorities.push(\n\t\t\t\t{authority.name},\n\t\t\t);\n\t\t}\n\n\t\tlet whitelistNets: JSX.Element[] = [];\n\t\tfor (let whitelistNet of service.whitelist_networks) {\n\t\t\twhitelistNets.push(\n\t\t\t\t\n\t\t\t\t\t{whitelistNet}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.onRemoveWhitelistNet(whitelistNet);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\tlet whitelistPaths: JSX.Element[] = [];\n\t\tfor (let i = 0; i < (service.whitelist_paths || []).length; i++) {\n\t\t\tlet index = i;\n\n\t\t\twhitelistPaths.push(\n\t\t\t\t {\n\t\t\t\t\t\tthis.onChangeWhitelistPath(index, state);\n\t\t\t\t\t}}\n\t\t\t\t\tonRemove={(): void => {\n\t\t\t\t\t\tthis.onRemoveWhitelistPath(index);\n\t\t\t\t\t}}\n\t\t\t\t/>,\n\t\t\t);\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\t\t\t\tif (target.className.indexOf('tab-close') !== -1) {\n\t\t\t\t\t\t\t\tthis.props.onClose();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n
    \n \n {\n\t\t\t\t\t\t\t\t\t}}\n onClick={(evt): void => {\n\t\t\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t\t\t}}\n />\n \n \n
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('name', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('type', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{domains}\n\t\t\t\t\t\n\t\t\t\t\t\tAdd Domain\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{servers}\n\t\t\t\t\t\n\t\t\t\t\t\tAdd Server\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('client_authority', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{authorities}\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('logout_path', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddRole}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\taddWhitelistNet: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={this.onAddWhitelistNet}\n\t\t\t\t\t/>\n\t\t\t\t\t\n\t\t\t\t\t{whitelistPaths}\n\t\t\t\t\t\n\t\t\t\t\t\tAdd Permitted Path\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('share_session', !service.share_session);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('websockets', !service.websockets);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('disable_csrf_check', !service.disable_csrf_check);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tservice: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as MiscUtils from '../utils/MiscUtils';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport ServiceDetailed from './ServiceDetailed';\n\ninterface Props {\n\tservice: ServiceTypes.ServiceRo;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: boolean;\n\tonSelect: (shift: boolean) => void;\n\topen: boolean;\n\tonOpen: () => void;\n}\n\nconst css = {\n\tcard: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tcursor: 'pointer',\n\t} as React.CSSProperties,\n\tcardOpen: {\n\t\tdisplay: 'table-row',\n\t\twidth: '100%',\n\t\tpadding: 0,\n\t\tboxShadow: 'none',\n\t\tposition: 'relative',\n\t} as React.CSSProperties,\n\tselect: {\n\t\tmargin: '2px 0 0 0',\n\t\tpaddingTop: '3px',\n\t\tminHeight: '18px',\n\t} as React.CSSProperties,\n\tname: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t} as React.CSSProperties,\n\tnameSpan: {\n\t\tmargin: '1px 5px 0 0',\n\t} as React.CSSProperties,\n\titem: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '9px',\n\t\twhiteSpace: 'nowrap',\n\t} as React.CSSProperties,\n\troles: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '0 8px 8px 8px',\n\t} as React.CSSProperties,\n\ticon: {\n\t\tmarginRight: '3px',\n\t} as React.CSSProperties,\n\ttag: {\n\t\tmargin: '8px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n\tbars: {\n\t\tverticalAlign: 'top',\n\t\tdisplay: 'table-cell',\n\t\tpadding: '8px',\n\t\twidth: '30px',\n\t} as React.CSSProperties,\n\tbar: {\n\t\theight: '6px',\n\t\tmarginBottom: '1px',\n\t} as React.CSSProperties,\n\tbarLast: {\n\t\theight: '6px',\n\t} as React.CSSProperties,\n};\n\nexport default class Service extends React.Component {\n\trender(): JSX.Element {\n\t\tlet service = this.props.service;\n\n\t\tif (this.props.open) {\n\t\t\treturn \n\t\t\t\t {\n\t\t\t\t\t\tthis.props.onOpen();\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t
    ;\n\t\t}\n\n\t\tlet cardStyle = {\n\t\t\t...css.card,\n\t\t};\n\n\t\tlet roles: JSX.Element[] = [];\n\n\t\tfor (let role of service.roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\t\tlet target = evt.target as HTMLElement;\n\n\t\t\t\tif (target.className.indexOf('open-ignore') !== -1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.props.onOpen();\n\t\t\t}}\n\t\t>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonClick={(evt): void => {\n\t\t\t\t\t\t\t\tthis.props.onSelect(evt.shiftKey);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t{service.name}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t{roles}\n\t\t\t
    \n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport SearchInput from './SearchInput';\nimport * as AuthorityTypes from \"../types/AuthorityTypes\";\n\ninterface Props {\n\tfilter: ServiceTypes.Filter;\n\tonFilter: (filter: ServiceTypes.Filter) => void;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n}\n\nconst css = {\n\tfilters: {\n\t\tmargin: '-15px 0 5px 0',\n\t} as React.CSSProperties,\n\tinput: {\n\t\twidth: '200px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\twidth: '150px',\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\ttype: {\n\t\tmargin: '5px',\n\t} as React.CSSProperties,\n\tcheck: {\n\t\tmargin: '12px 5px 8px 5px',\n\t} as React.CSSProperties,\n};\n\nexport default class ServicesFilter extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tmenu: false,\n\t\t};\n\t}\n\n\trender(): JSX.Element {\n\t\tif (this.props.filter === null) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.id = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.id;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.name = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.name;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet filter = {\n\t\t\t\t\t\t...this.props.filter,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (val) {\n\t\t\t\t\t\tfilter.role = val;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdelete filter.role;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onFilter(filter);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport ServicesStore from '../stores/ServicesStore';\nimport * as ServiceActions from '../actions/ServiceActions';\n\ninterface Props {\n\tonPage?: () => void;\n}\n\ninterface State {\n\tpage: number;\n\tpageCount: number;\n\tpages: number;\n\tcount: number;\n}\n\nconst css = {\n\tbutton: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 5px 0 0',\n\t} as React.CSSProperties,\n\tbuttonLast: {\n\t\tuserSelect: 'none',\n\t\tmargin: '0 0 0 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tcursor: 'pointer',\n\t\tuserSelect: 'none',\n\t\tmargin: '7px 5px 0 0',\n\t} as React.CSSProperties,\n\tcurrent: {\n\t\topacity: 0.5,\n\t} as React.CSSProperties,\n};\n\nexport default class ServicesPage extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tpage: ServicesStore.page,\n\t\t\tpageCount: ServicesStore.pageCount,\n\t\t\tpages: ServicesStore.pages,\n\t\t\tcount: ServicesStore.count,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tServicesStore.addChangeListener(this.onChange);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tServicesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tpage: ServicesStore.page,\n\t\t\tpageCount: ServicesStore.pageCount,\n\t\t\tpages: ServicesStore.pages,\n\t\t\tcount: ServicesStore.count,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet page = this.state.page;\n\t\tlet pages = this.state.pages;\n\n\t\tif (pages <= 1) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet links: JSX.Element[] = [];\n\t\tlet start = Math.max(0, page - 7);\n\t\tlet end = Math.min(pages, start + 15);\n\n\t\tfor (let i = start; i < end; i++) {\n\t\t\tlinks.push( {\n\t\t\t\t\tServiceActions.traverse(i);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t{i + 1}\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tServiceActions.traverse(0);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tServiceActions.traverse(Math.max(0, this.state.page - 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{links}\n\t\t\t {\n\t\t\t\t\tServiceActions.traverse(Math.min(\n\t\t\t\t\t\tthis.state.pages - 1, this.state.page + 1));\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tServiceActions.traverse(this.state.pages - 1);\n\t\t\t\t\tif (this.props.onPage) {\n\t\t\t\t\t\tthis.props.onPage();\n\t\t\t\t\t}\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ServiceTypes from '../types/ServiceTypes';\nimport * as AuthorityTypes from '../types/AuthorityTypes';\nimport ServicesStore from '../stores/ServicesStore';\nimport AuthoritiesStore from '../stores/AuthoritiesStore';\nimport * as ServiceActions from '../actions/ServiceActions';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport Service from './Service';\nimport ServicesFilter from './ServicesFilter';\nimport ServicesPage from './ServicesPage';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\nimport NonState from './NonState';\nimport ConfirmButton from './ConfirmButton';\n\ninterface Selected {\n\t[key: string]: boolean;\n}\n\ninterface Opened {\n\t[key: string]: boolean;\n}\n\ninterface State {\n\tservices: ServiceTypes.ServicesRo;\n\tfilter: ServiceTypes.Filter;\n\tauthorities: AuthorityTypes.AuthoritiesRo;\n\tselected: Selected;\n\topened: Opened;\n\tnewOpened: boolean;\n\tlastSelected: string;\n\tdisabled: boolean;\n}\n\nconst css = {\n\titems: {\n\t\twidth: '100%',\n\t\tmarginTop: '-5px',\n\t\tdisplay: 'table',\n\t\tborderSpacing: '0 5px',\n\t} as React.CSSProperties,\n\titemsBox: {\n\t\twidth: '100%',\n\t\toverflowY: 'auto',\n\t} as React.CSSProperties,\n\tplaceholder: {\n\t\topacity: 0,\n\t\twidth: '100%',\n\t} as React.CSSProperties,\n\theader: {\n\t\tmarginTop: '-19px',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmargin: '19px 0 0 0',\n\t} as React.CSSProperties,\n\tbutton: {\n\t\tmargin: '8px 0 0 8px',\n\t} as React.CSSProperties,\n\tbuttons: {\n\t\tmarginTop: '8px',\n\t} as React.CSSProperties,\n};\n\nexport default class Services extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tservices: ServicesStore.services,\n\t\t\tfilter: ServicesStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: {},\n\t\t\topened: {},\n\t\t\tnewOpened: false,\n\t\t\tlastSelected: null,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tget selected(): boolean {\n\t\treturn !!Object.keys(this.state.selected).length;\n\t}\n\n\tget opened(): boolean {\n\t\treturn !!Object.keys(this.state.opened).length;\n\t}\n\n\tcomponentDidMount(): void {\n\t\tServicesStore.addChangeListener(this.onChange);\n\t\tAuthoritiesStore.addChangeListener(this.onChange);\n\t\tServiceActions.sync();\n\t\tAuthorityActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tServicesStore.removeChangeListener(this.onChange);\n\t\tAuthoritiesStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tlet services = ServicesStore.services;\n\t\tlet selected: Selected = {};\n\t\tlet curSelected = this.state.selected;\n\t\tlet opened: Opened = {};\n\t\tlet curOpened = this.state.opened;\n\n\t\tservices.forEach((service: ServiceTypes.Service): void => {\n\t\t\tif (curSelected[service.id]) {\n\t\t\t\tselected[service.id] = true;\n\t\t\t}\n\t\t\tif (curOpened[service.id]) {\n\t\t\t\topened[service.id] = true;\n\t\t\t}\n\t\t});\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tservices: services,\n\t\t\tfilter: ServicesStore.filter,\n\t\t\tauthorities: AuthoritiesStore.authorities,\n\t\t\tselected: selected,\n\t\t\topened: opened,\n\t\t});\n\t}\n\n\tonDelete = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tServiceActions.removeMulti(\n\t\t\t\tObject.keys(this.state.selected)).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tselected: {},\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet servicesDom: JSX.Element[] = [];\n\n\t\tthis.state.services.forEach((\n\t\t\t\tservice: ServiceTypes.ServiceRo): void => {\n\t\t\tservicesDom.push( {\n\t\t\t\t\tlet selected = {\n\t\t\t\t\t\t...this.state.selected,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (shift) {\n\t\t\t\t\t\tlet services = this.state.services;\n\t\t\t\t\t\tlet start: number;\n\t\t\t\t\t\tlet end: number;\n\n\t\t\t\t\t\tfor (let i = 0; i < services.length; i++) {\n\t\t\t\t\t\t\tlet usr = services[i];\n\n\t\t\t\t\t\t\tif (usr.id === service.id) {\n\t\t\t\t\t\t\t\tstart = i;\n\t\t\t\t\t\t\t} else if (usr.id === this.state.lastSelected) {\n\t\t\t\t\t\t\t\tend = i;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (start !== undefined && end !== undefined) {\n\t\t\t\t\t\t\tif (start > end) {\n\t\t\t\t\t\t\t\tend = [start, start = end][0];\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tfor (let i = start; i <= end; i++) {\n\t\t\t\t\t\t\t\tselected[services[i].id] = true;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tlastSelected: service.id,\n\t\t\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (selected[service.id]) {\n\t\t\t\t\t\tdelete selected[service.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tselected[service.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tlastSelected: service.id,\n\t\t\t\t\t\tselected: selected,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonOpen={(): void => {\n\t\t\t\t\tlet opened = {\n\t\t\t\t\t\t...this.state.opened,\n\t\t\t\t\t};\n\n\t\t\t\t\tif (opened[service.id]) {\n\t\t\t\t\t\tdelete opened[service.id];\n\t\t\t\t\t} else {\n\t\t\t\t\t\topened[service.id] = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\topened: opened,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>);\n\t\t});\n\n\t\tlet filterClass = 'bp3-button bp3-intent-primary bp3-icon-filter ';\n\t\tif (this.state.filter) {\n\t\t\tfilterClass += 'bp3-active';\n\t\t}\n\n\t\tlet selectedNames: string[] = [];\n\t\tfor (let instId of Object.keys(this.state.selected)) {\n\t\t\tlet inst = ServicesStore.service(instId);\n\t\t\tif (inst) {\n\t\t\t\tselectedNames.push(inst.name || instId);\n\t\t\t} else {\n\t\t\t\tselectedNames.push(instId);\n\t\t\t}\n\t\t}\n\n\t\treturn \n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t

    Services

    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tif (this.state.filter === null) {\n\t\t\t\t\t\t\t\t\tServiceActions.filter({});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tServiceActions.filter(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tFilters\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\topened: {},\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCollapse All\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tServiceActions.create({\n\t\t\t\t\t\t\t\t\tid: null,\n\t\t\t\t\t\t\t\t\tshare_session: true,\n\t\t\t\t\t\t\t\t\twebsockets: true,\n\t\t\t\t\t\t\t\t}).then((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>New\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tServiceActions.filter(filter);\n\t\t\t\t}}\n\t\t\t\tauthorities={this.state.authorities}\n\t\t\t/>\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t{servicesDom}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tselected: {},\n\t\t\t\t\t\tlastSelected: null,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as SettingsTypes from '../types/SettingsTypes';\nimport PageInput from './PageInput';\nimport PageInputButton from './PageInputButton';\nimport PageTextArea from './PageTextArea';\nimport PageSwitch from './PageSwitch';\nimport PageInfo from './PageInfo';\nimport PageSelect from './PageSelect';\nimport Help from './Help';\n\ninterface Props {\n\tprovider: SettingsTypes.ProviderAny;\n\tonChange: (state: SettingsTypes.ProviderAny) => void;\n\tonRemove: () => void;\n}\n\ninterface State {\n\taddRole: string;\n}\n\nconst css = {\n\tlabel: {\n\t\tfontSize: '16px',\n\t\tmargin: '0 0 7px 0',\n\t} as React.CSSProperties,\n\tcard: {\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n};\n\nexport default class SettingsProvider extends React.Component {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\taddRole: '',\n\t\t};\n\t}\n\n\tclone(): SettingsTypes.ProviderAny {\n\t\treturn {\n\t\t\t...this.props.provider,\n\t\t};\n\t}\n\n\tazure(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.tenant = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.client_id = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.client_secret = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\tauthzero(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.domain = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.client_id = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.client_secret = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\tgoogle(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.domain = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.google_email = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.google_key = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\tonelogin(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.issuer_url = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.saml_url = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.saml_cert = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\tokta(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.saml_url = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.issuer_url = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.saml_cert = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\tjumpcloud(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.saml_url = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.issuer_url = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.saml_cert = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.jumpcloud_app_id = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.jumpcloud_secret = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\trender(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\t\tlet label = '';\n\t\tlet options: JSX.Element;\n\n\t\tswitch (provider.type) {\n\t\t\tcase 'azure':\n\t\t\t\tlabel = 'Azure';\n\t\t\t\toptions = this.azure();\n\t\t\t\tbreak;\n\t\t\tcase 'authzero':\n\t\t\t\tlabel = 'Auth0';\n\t\t\t\toptions = this.authzero();\n\t\t\t\tbreak;\n\t\t\tcase 'google':\n\t\t\t\tlabel = 'Google';\n\t\t\t\toptions = this.google();\n\t\t\t\tbreak;\n\t\t\tcase 'onelogin':\n\t\t\t\tlabel = 'OneLogin';\n\t\t\t\toptions = this.onelogin();\n\t\t\t\tbreak;\n\t\t\tcase 'okta':\n\t\t\t\tlabel = 'Okta';\n\t\t\t\toptions = this.okta();\n\t\t\t\tbreak;\n\t\t\tcase 'jumpcloud':\n\t\t\t\tlabel = 'JumpCloud';\n\t\t\t\toptions = this.jumpcloud();\n\t\t\t\tbreak;\n\t\t}\n\n\t\tlet roles: JSX.Element[] = [];\n\t\tfor (let role of provider.default_roles) {\n\t\t\troles.push(\n\t\t\t\t\n\t\t\t\t\t{role}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tlet rls = [\n\t\t\t\t\t\t\t\t...this.props.provider.default_roles,\n\t\t\t\t\t\t\t];\n\n\t\t\t\t\t\t\tlet i = rls.indexOf(role);\n\t\t\t\t\t\t\tif (i === -1) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\trls.splice(i, 1);\n\n\t\t\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\t\t\tstate.default_roles = rls;\n\t\t\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    ,\n\t\t\t);\n\t\t}\n\n\t\treturn
    \n\t\t\t
    {label}
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.label = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t\n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\taddRole: val,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSubmit={(): void => {\n\t\t\t\t\tlet rls = [\n\t\t\t\t\t\t...this.props.provider.default_roles,\n\t\t\t\t\t];\n\n\t\t\t\t\tif (!this.state.addRole) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (rls.indexOf(this.state.addRole) === -1) {\n\t\t\t\t\t\trls.push(this.state.addRole);\n\t\t\t\t\t}\n\n\t\t\t\t\trls.sort();\n\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.default_roles = rls;\n\t\t\t\t\tthis.props.onChange(state);\n\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\taddRole: '',\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.auto_create = !state.auto_create;\n\n\t\t\t\t\tif (!state.auto_create &&\n\t\t\t\t\t\t\tstate.role_management === 'set_on_insert') {\n\t\t\t\t\t\tstate.role_management = 'merge';\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.role_management = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\tSet on insert\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t{options}\n\t\t\t {\n\t\t\t\t\tthis.props.onRemove();\n\t\t\t\t}}\n\t\t\t>Remove\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as SettingsTypes from '../types/SettingsTypes';\nimport PageInput from './PageInput';\nimport PageSelect from './PageSelect';\nimport PageSwitch from './PageSwitch';\nimport PageInfo from './PageInfo';\n\ninterface Props {\n\tprovider: SettingsTypes.SecondaryProviderAny;\n\tonChange: (state: SettingsTypes.SecondaryProviderAny) => void;\n\tonRemove: () => void;\n}\n\nconst css = {\n\tlabel: {\n\t\tfontSize: '16px',\n\t\tmargin: '0 0 7px 0',\n\t} as React.CSSProperties,\n\tcard: {\n\t\tmarginBottom: '5px',\n\t} as React.CSSProperties,\n\trole: {\n\t\tmargin: '9px 5px 0 5px',\n\t\theight: '20px',\n\t} as React.CSSProperties,\n};\n\nexport default class SettingsSecondaryProvider extends React.Component {\n\tclone(): SettingsTypes.SecondaryProviderAny {\n\t\treturn {\n\t\t\t...this.props.provider,\n\t\t};\n\t}\n\n\tduo(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.duo_hostname = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.duo_key = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.duo_secret = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.push_factor = !state.push_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.phone_factor = !state.phone_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.passcode_factor = !state.passcode_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.sms_factor = !state.sms_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\tonelogin(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.one_login_id = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.one_login_secret = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.one_login_region = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t>\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.push_factor = !state.push_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.passcode_factor = !state.passcode_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\tokta(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\n\t\treturn
    \n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.okta_domain = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.okta_token = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.push_factor = !state.push_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.passcode_factor = !state.passcode_factor;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t
    ;\n\t}\n\n\trender(): JSX.Element {\n\t\tlet provider = this.props.provider;\n\t\tlet label = '';\n\t\tlet options: JSX.Element;\n\n\t\tswitch (provider.type) {\n\t\t\tcase 'duo':\n\t\t\t\tlabel = 'Duo';\n\t\t\t\toptions = this.duo();\n\t\t\t\tbreak;\n\t\t\tcase 'one_login':\n\t\t\t\tlabel = 'OneLogin';\n\t\t\t\toptions = this.onelogin();\n\t\t\t\tbreak;\n\t\t\tcase 'okta':\n\t\t\t\tlabel = 'Okta';\n\t\t\t\toptions = this.okta();\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn
    \n\t\t\t
    {label}
    \n\t\t\t\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.name = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t {\n\t\t\t\t\tlet state = this.clone();\n\t\t\t\t\tstate.label = val;\n\t\t\t\t\tthis.props.onChange(state);\n\t\t\t\t}}\n\t\t\t/>\n\t\t\t{options}\n\t\t\t {\n\t\t\t\t\tthis.props.onRemove();\n\t\t\t\t}}\n\t\t\t>Remove\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as SettingsTypes from '../types/SettingsTypes';\nimport SettingsStore from '../stores/SettingsStore';\nimport SubscriptionStore from '../stores/SubscriptionStore';\nimport * as SettingsActions from '../actions/SettingsActions';\nimport Page from './Page';\nimport PageHeader from './PageHeader';\nimport PagePanel from './PagePanel';\nimport PageSplit from './PageSplit';\nimport PageInput from './PageInput';\nimport PageSwitch from './PageSwitch';\nimport PageSelectButton from './PageSelectButton';\nimport PageSave from './PageSave';\nimport SettingsProvider from './SettingsProvider';\nimport SettingsSecondaryProvider from './SettingsSecondaryProvider';\nimport NonState from './NonState';\n\ninterface State {\n\tchanged: boolean;\n\tdisabled: boolean;\n\tmessage: string;\n\tprovider: string;\n\tsecondaryProvider: string;\n\tsettings: SettingsTypes.Settings;\n}\n\nconst css = {\n\tproviders: {\n\t\tpaddingBottom: '6px',\n\t\tmarginBottom: '5px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n\tprovidersLabel: {\n\t\tmargin: 0,\n\t} as React.CSSProperties,\n\tsecondaryProviders: {\n\t\tpaddingBottom: '6px',\n\t\tmarginTop: '5px',\n\t\tmarginBottom: '5px',\n\t\tborderBottomStyle: 'solid',\n\t} as React.CSSProperties,\n};\n\nexport default class Settings extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tchanged: false,\n\t\t\tdisabled: false,\n\t\t\tmessage: '',\n\t\t\tprovider: 'google',\n\t\t\tsecondaryProvider: 'duo',\n\t\t\tsettings: SettingsStore.settingsM,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tSettingsStore.addChangeListener(this.onChange);\n\t\tSettingsActions.sync();\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tSettingsStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: false,\n\t\t\tsettings: SettingsStore.settingsM,\n\t\t});\n\t}\n\n\tonSave = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tdisabled: true,\n\t\t});\n\t\tSettingsActions.commit(this.state.settings).then((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: 'Your changes have been saved',\n\t\t\t\tchanged: false,\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t}).catch((): void => {\n\t\t\tthis.setState({\n\t\t\t\t...this.state,\n\t\t\t\tmessage: '',\n\t\t\t\tdisabled: false,\n\t\t\t});\n\t\t});\n\t}\n\n\tset = (name: string, val: any): void => {\n\t\tlet settings: any = {\n\t\t\t...this.state.settings,\n\t\t};\n\n\t\tsettings[name] = val;\n\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tchanged: true,\n\t\t\tmessage: '',\n\t\t\tsettings: settings,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tlet settings = this.state.settings;\n\n\t\tif (!settings) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\tlet subscriptionActive = SubscriptionStore.subscription ?\n\t\t\tSubscriptionStore.subscription.active : false;\n\n\t\tlet providers: JSX.Element[] = [];\n\t\tfor (let i = 0; i < settings.auth_providers.length; i++) {\n\t\t\tproviders.push( {\n\t\t\t\t\tlet prvdrs = [\n\t\t\t\t\t\t...this.state.settings.auth_providers,\n\t\t\t\t\t];\n\t\t\t\t\tprvdrs[i] = state;\n\t\t\t\t\tthis.set('auth_providers', prvdrs);\n\t\t\t\t}}\n\t\t\t\tonRemove={(): void => {\n\t\t\t\t\tlet prvdrs = [\n\t\t\t\t\t\t...this.state.settings.auth_providers,\n\t\t\t\t\t];\n\t\t\t\t\tprvdrs.splice(i, 1);\n\t\t\t\t\tthis.set('auth_providers', prvdrs);\n\t\t\t\t}}\n\t\t\t/>);\n\t\t}\n\n\t\tlet secondaryProviders: JSX.Element[] = [];\n\t\tfor (let i = 0; i < settings.auth_secondary_providers.length; i++) {\n\t\t\tsecondaryProviders.push( {\n\t\t\t\t\tlet prvdrs = [\n\t\t\t\t\t\t...this.state.settings.auth_secondary_providers,\n\t\t\t\t\t];\n\t\t\t\t\tprvdrs[i] = state;\n\t\t\t\t\tthis.set('auth_secondary_providers', prvdrs);\n\t\t\t\t}}\n\t\t\t\tonRemove={(): void => {\n\t\t\t\t\tlet prvdrs = [\n\t\t\t\t\t\t...this.state.settings.auth_secondary_providers,\n\t\t\t\t\t];\n\t\t\t\t\tprvdrs.splice(i, 1);\n\t\t\t\t\tthis.set('auth_secondary_providers', prvdrs);\n\t\t\t\t}}\n\t\t\t/>);\n\t\t}\n\n\t\treturn \n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\t
    Two-Factor Providers
    \n\t\t\t\t\t
    \n\t\t\t\t\t{secondaryProviders}\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\tsecondaryProvider: val,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonSubmit={(): void => {\n\t\t\t\t\t\t\tlet authProviders: SettingsTypes.SecondaryProviders = [\n\t\t\t\t\t\t\t\t...settings.auth_secondary_providers,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: this.state.secondaryProvider,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\tthis.set('auth_secondary_providers', authProviders);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('auth_admin_expire', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('auth_admin_max_duration', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('auth_proxy_expire', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('auth_proxy_max_duration', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('auth_user_expire', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('auth_user_max_duration', parseInt(val, 10));\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('elastic_address', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('elastic_username', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('elastic_password', val);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t {\n\t\t\t\t\t\t\tthis.set('elastic_proxy_requests',\n\t\t\t\t\t\t\t\t!this.state.settings.elastic_proxy_requests);\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t {\n\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\tchanged: false,\n\t\t\t\t\t\tmessage: 'Your changes have been discarded',\n\t\t\t\t\t\tsettings: SettingsStore.settingsM,\n\t\t\t\t\t});\n\t\t\t\t}}\n\t\t\t\tonSave={this.onSave}\n\t\t\t/>\n\t\t
    ;\n\t}\n}\n","/// \nimport * as React from 'react';\nimport * as ReactRouter from 'react-router-dom';\nimport * as Theme from '../Theme';\nimport * as SubscriptionTypes from '../types/SubscriptionTypes';\nimport SubscriptionStore from '../stores/SubscriptionStore';\nimport LoadingBar from './LoadingBar';\nimport Subscription from './Subscription';\nimport Users from './Users';\nimport UserDetailed from './UserDetailed';\nimport Nodes from './Nodes';\nimport Policies from './Policies';\nimport Authorities from './Authorities';\nimport Certificates from './Certificates';\nimport Endpoints from './Endpoints';\nimport Alerts from './Alerts';\nimport Checks from './Checks';\nimport Logs from './Logs';\nimport Services from './Services';\nimport Settings from './Settings';\nimport * as UserActions from '../actions/UserActions';\nimport * as SessionActions from '../actions/SessionActions';\nimport * as DeviceActions from '../actions/DeviceActions';\nimport * as AlertActions from '../actions/AlertActions';\nimport * as CheckActions from '../actions/CheckActions';\nimport * as AuditActions from '../actions/AuditActions';\nimport * as SshcertificateActions from '../actions/SshcertificateActions';\nimport * as NodeActions from '../actions/NodeActions';\nimport * as PolicyActions from '../actions/PolicyActions';\nimport * as AuthorityActions from '../actions/AuthorityActions';\nimport * as CertificateActions from '../actions/CertificateActions';\nimport * as EndpointActions from '../actions/EndpointActions';\nimport * as LogActions from '../actions/LogActions';\nimport * as ServiceActions from '../actions/ServiceActions';\nimport * as SettingsActions from '../actions/SettingsActions';\nimport * as SubscriptionActions from '../actions/SubscriptionActions';\n\ninterface State {\n\tsubscription: SubscriptionTypes.SubscriptionRo;\n\tdisabled: boolean;\n}\n\nconst css = {\n\tnav: {\n\t\toverflowX: 'auto',\n\t\toverflowY: 'auto',\n\t\tuserSelect: 'none',\n\t\theight: 'auto',\n\t} as React.CSSProperties,\n\tnavTitle: {\n\t\theight: 'auto',\n\t} as React.CSSProperties,\n\tnavGroup: {\n\t\tflexWrap: 'wrap',\n\t\theight: 'auto',\n\t\tpadding: '10px 0',\n\t} as React.CSSProperties,\n\tlink: {\n\t\tpadding: '0 8px',\n\t\tcolor: 'inherit',\n\t} as React.CSSProperties,\n\tsub: {\n\t\tcolor: 'inherit',\n\t} as React.CSSProperties,\n\theading: {\n\t\tmarginRight: '11px',\n\t\tfontSize: '18px',\n\t\tfontWeight: 'bold',\n\t} as React.CSSProperties,\n};\n\nexport default class Main extends React.Component<{}, State> {\n\tconstructor(props: any, context: any) {\n\t\tsuper(props, context);\n\t\tthis.state = {\n\t\t\tsubscription: SubscriptionStore.subscription,\n\t\t\tdisabled: false,\n\t\t};\n\t}\n\n\tcomponentDidMount(): void {\n\t\tSubscriptionStore.addChangeListener(this.onChange);\n\t\tSubscriptionActions.sync(false);\n\t}\n\n\tcomponentWillUnmount(): void {\n\t\tSubscriptionStore.removeChangeListener(this.onChange);\n\t}\n\n\tonChange = (): void => {\n\t\tthis.setState({\n\t\t\t...this.state,\n\t\t\tsubscription: SubscriptionStore.subscription,\n\t\t});\n\t}\n\n\trender(): JSX.Element {\n\t\tif (!this.state.subscription) {\n\t\t\treturn
    ;\n\t\t}\n\n\t\treturn \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\tUsers\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tServices\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tNodes\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tPolicies\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tAuthorities\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tCertificates\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tEndpoints\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tAlerts\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tHealth Checks\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tLogs\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\tSettings\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tSubscriptionActions.sync(true);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>Subscription\n\t\t\t\t\t\t\n\t\t\t\t\t\t (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tlet pathname = props.location.pathname;\n\n\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\tdisabled: true,\n\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\tif (pathname === '/users') {\n\t\t\t\t\t\t\t\t\t\tUserActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname.startsWith('/user/')) {\n\t\t\t\t\t\t\t\t\t\tUserActions.reload().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tSessionActions.reload().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tDeviceActions.reload().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tSshcertificateActions.reload().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tAuditActions.reload().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/nodes') {\n\t\t\t\t\t\t\t\t\t\tServiceActions.syncNames();\n\t\t\t\t\t\t\t\t\t\tNodeActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/policies') {\n\t\t\t\t\t\t\t\t\t\tServiceActions.syncNames();\n\t\t\t\t\t\t\t\t\t\tAuthorityActions.sync();\n\t\t\t\t\t\t\t\t\t\tSettingsActions.sync();\n\t\t\t\t\t\t\t\t\t\tPolicyActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/authorities') {\n\t\t\t\t\t\t\t\t\t\tAuthorityActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/certificates') {\n\t\t\t\t\t\t\t\t\t\tCertificateActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/alerts') {\n\t\t\t\t\t\t\t\t\t\tAlertActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/checks') {\n\t\t\t\t\t\t\t\t\t\tCheckActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/endpoints') {\n\t\t\t\t\t\t\t\t\t\tAuthorityActions.sync();\n\t\t\t\t\t\t\t\t\t\tEndpointActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/logs') {\n\t\t\t\t\t\t\t\t\t\tLogActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/services') {\n\t\t\t\t\t\t\t\t\t\tAuthorityActions.sync();\n\t\t\t\t\t\t\t\t\t\tServiceActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/settings') {\n\t\t\t\t\t\t\t\t\t\tSettingsActions.sync().then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else if (pathname === '/subscription') {\n\t\t\t\t\t\t\t\t\t\tSubscriptionActions.sync(true).then((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}).catch((): void => {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t...this.state,\n\t\t\t\t\t\t\t\t\t\t\tdisabled: false,\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t>Refresh\n\t\t\t\t\t\t)}/>\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\twindow.location.href = '/logout';\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>Logout\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tTheme.toggle();\n\t\t\t\t\t\t\t\tTheme.save();\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t\t (\n\t\t\t\t\t\n\t\t\t\t)}/>\n\t\t\t
    \n\t\t;\n\t}\n}\n","/// \nimport EventDispatcher from './dispatcher/EventDispatcher';\nimport * as Csrf from './Csrf';\n\nlet connected = false;\n\nfunction connect(): void {\n\tlet url = '';\n\tlet location = window.location;\n\n\tif (location.protocol === 'https:') {\n\t\turl += 'wss';\n\t} else {\n\t\turl += 'ws';\n\t}\n\n\turl += '://' + location.host + '/event?csrf_token=' + Csrf.token;\n\n\tlet socket = new WebSocket(url);\n\n\tsocket.addEventListener('close', () => {\n\t\tsetTimeout(() => {\n\t\t\tconnect();\n\t\t}, 500);\n\t});\n\n\tsocket.addEventListener('message', (evt) => {\n\t\tconsole.log(JSON.parse(evt.data).data);\n\t\tEventDispatcher.dispatch(JSON.parse(evt.data).data);\n\t})\n}\n\nexport function init() {\n\tif (connected) {\n\t\treturn;\n\t}\n\tconnected = true;\n\n\tconnect();\n}\n","/// \nimport 'chartjs-adapter-moment';\nimport * as ChartJs from 'chart.js';\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as Blueprint from '@blueprintjs/core';\nimport Main from './components/Main';\nimport * as Alert from './Alert';\nimport * as Event from './Event';\nimport * as Theme from './Theme';\nimport * as Csrf from './Csrf';\n\nChartJs.Chart.register(ChartJs.LineController);\nChartJs.Chart.register(ChartJs.CategoryScale);\nChartJs.Chart.register(ChartJs.LinearScale);\nChartJs.Chart.register(ChartJs.TimeScale);\nChartJs.Chart.register(ChartJs.PointElement);\nChartJs.Chart.register(ChartJs.LineElement);\nChartJs.Chart.register(ChartJs.Title);\nChartJs.Chart.register(ChartJs.Tooltip);\nChartJs.Chart.register(ChartJs.Filler);\n\nclass LineTracerController extends ChartJs.LineController {\n\tdraw(): void {\n\t\tsuper.draw();\n\n\t\tlet chart = this.chart as any;\n\t\tif (chart.tooltip._active && chart.tooltip._active.length) {\n\t\t\tlet ctx = this.chart.ctx;\n\t\t\tlet x = chart.tooltip.caretX;\n\t\t\tlet topY = chart.scales.y.top;\n\t\t\tlet bottomY = chart.scales.y.bottom;\n\n\t\t\tctx.save();\n\t\t\tctx.beginPath();\n\t\t\tctx.moveTo(x, topY);\n\t\t\tctx.lineTo(x, bottomY);\n\t\t\tctx.lineWidth = 0.7;\n\t\t\tctx.strokeStyle = Theme.chartColor3();\n\t\t\tctx.stroke();\n\t\t\tctx.restore();\n\t\t}\n\t}\n}\n(ChartJs.Chart as any).registry.controllers.items.line = LineTracerController;\n\nCsrf.load().then((): void => {\n\tBlueprint.FocusStyleManager.onlyShowFocusOnTabs();\n\tAlert.init();\n\tEvent.init();\n\n\tReactDOM.render(\n\t\t
    ,\n\t\tdocument.getElementById('app'),\n\t);\n});\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","obj","__esModule","window","document","newObj","key","prototype","hasOwnProperty","call","desc","defineProperty","getOwnPropertyDescriptor","get","set","default","_interopRequireWildcard","_addClass","_interopRequireDefault","_removeClass","_react","_Transition","_extends","assign","target","i","arguments","length","source","apply","this","addClass","node","classes","split","forEach","c","removeClass","CSSTransition","_React$Component","subClass","superClass","_this","_len","args","Array","_key","concat","onEnter","appearing","className","getClassNames","removeClasses","props","onEntering","activeClassName","reflowAndAddClass","onEntered","appearClassName","doneClassName","enterClassName","onExit","onExiting","onExited","type","classNames","isStringClassNames","create","constructor","__proto__","_proto","_this$getClassNames6","scrollTop","render","createElement","Component","defaultProps","propTypes","_default","_reactDom","_TransitionGroup","ReplaceTransition","_args","handleEnter","_len2","_key2","handleLifecycle","handleEntering","_len3","_key3","handleEntered","_len4","_key4","handleExit","_len5","_key5","handleExiting","_len6","_key6","handleExited","_len7","_key7","handler","idx","originalArgs","_child$props","children","child","Children","toArray","findDOMNode","_this$props","inProp","in","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","_React$Children$toArr","first","second","cloneElement","EXITING","ENTERED","ENTERING","EXITED","UNMOUNTED","PropTypes","_reactLifecyclesCompat","Transition","context","initialStatus","parentGroup","transitionGroup","appear","isMounting","enter","appearStatus","unmountOnExit","mountOnEnter","state","status","nextCallback","getChildContext","getDerivedStateFromProps","_ref","prevState","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","exit","timeout","undefined","mounting","performEnter","performExit","setState","_this2","timeouts","enterTimeout","safeSetState","onTransitionEnd","_this3","cancel","nextState","callback","setNextCallback","_this4","active","event","doesNotHaveTimeoutOrListener","addEndListener","setTimeout","childProps","only","noop","contextTypes","object","childContextTypes","polyfill","_propTypes","_ChildMapping","_assertThisInitialized","self","ReferenceError","values","k","TransitionGroup","bind","firstRender","appeared","mounted","nextProps","prevChildMapping","getInitialChildMapping","getNextChildMapping","currentChildMapping","getChildMapping","component","childFactory","isRequired","_CSSTransition","_ReplaceTransition","mergeChildMappings","getProp","nextChildMapping","isValidElement","hasPrev","hasNext","prevChild","isLeaving","mapFn","result","mapper","prev","next","getValueForKey","nextKeysPending","pendingKeys","prevKey","push","childMapping","nextKey","pendingNextKey","prop","classNamesShape","timeoutsShape","Caption","handleKeyUp","locale","date","getMonth","getFullYear","keyCode","ENTER","onClick","months","localeUtils","caption","role","onKeyUp","formatMonthTitle","LocaleUtils","clone","d","Date","getTime","isDate","value","isNaN","valueOf","addMonths","n","newDate","setMonth","isSameDay","d1","d2","getDate","isSameMonth","isDayBefore","setHours","isDayAfter","isPastDay","today","isFutureDay","tomorrow","isDayBetween","addDayToRange","day","range","from","to","isDayInRange","getWeekNumber","setDate","getDay","Math","ceil","handleEvent","modifiers","persist","Day","propNames","nextPropNames","some","name","nextProp","nextModifiers","mod","hasOwnProp","modifiersStyles","tabIndex","empty","onMouseEnter","onMouseLeave","onMouseUp","onMouseDown","onKeyDown","onTouchStart","onTouchEnd","onFocus","ariaLabel","ariaDisabled","ariaSelected","defaultClassNames","join","modifier","style","filter","Helpers","DateUtils","ModifiersUtils","DayPicker","dayPicker","showNextMonth","allowNextMonth","deltaMonths","pagedNavigation","numberOfMonths","nextMonth","currentMonth","showMonth","showPreviousMonth","allowPreviousMonth","previousMonth","handleKeyDown","LEFT","dir","cancelEvent","RIGHT","UP","showPreviousYear","DOWN","showNextYear","handleDayKeyDown","focusNextDay","focusPreviousDay","focusPreviousWeek","focusNextWeek","SPACE","onDayClick","handleDayClick","onDayKeyDown","outside","enableOutsideDaysClick","handleOutsideDayClick","handleTodayButtonClick","month","blur","onTodayButtonClick","getModifiersForDay","getCurrentMonthFromProps","startOfMonth","initialMonth","fromMonth","diffInMonths","getMonthsDiff","floor","toMonth","allowMonth","canChangeMonth","onMonthChange","allowYearChange","wrapper","focus","getDayNodes","dayNodes","dayNode","dayNodeIndex","nodeListToArray","focusLastDayOfMonth","focusFirstDayOfMonth","nextMonthDayNodeIndex","previousMonthDayNodes","labels","navbarElement","attributes","navBar","getNextNavigableMonth","getPreviousNavigableMonth","showPreviousButton","showNextButton","onNextClick","onPreviousClick","React","firstDayOfWeek","getFirstDayOfWeekFromProps","reverseMonths","reverse","todayButton","footer","renderTodayButton","container","interactionDisabled","containerProps","ref","el","lang","onBlur","renderNavbar","renderMonths","renderFooter","showOutsideDays","fixedWeeks","showWeekNumbers","showWeekDays","renderDay","renderWeek","weekNumber","weekdayElement","captionElement","VERSION","preventDefault","stopPropagation","getFirstDayOfMonth","getDaysInMonth","selectedDays","selected","disabledDays","disabled","getFirstDayOfWeek","daysInMonth","dayArray","week","weekArray","firstWeek","outsideDate","unshift","lastWeek","lastExtraWeek","lastDay","extraWeek","j","outsideClassName","dayQuery","replace","outsideDayQuery","selector","querySelectorAll","nodeList","slice","resultDate","formatDay","formatWeekdayShort","formatWeekdayLong","getMonths","WEEKDAYS_LONG","WEEKDAYS_SHORT","MONTHS","toDateString","dayMatchesModifier","isArray","isRangeOfDates","after","before","daysOfWeek","dayOfWeek","modifiersObj","reduce","modifierName","Month","monthNumber","propModifiers","getModifiersFromProps","dayModifiers","isOutside","onDayFocus","onDayMouseEnter","onDayMouseLeave","onDayMouseDown","onDayMouseUp","onDayTouchEnd","onDayTouchStart","weekdaysLong","weekdaysShort","onCaptionClick","onWeekClick","captionProps","weeks","getWeekArray","body","Navbar","handleNextClick","handlePreviousClick","handleNextKeyDown","handlePreviousKeyDown","previousClickHandler","nextClickHandler","previousKeyDownHandler","nextKeyDownHandler","shouldShowPrevious","shouldShowNext","previousClassName","navButtonPrev","navButtonInteractionDisabled","nextClassName","navButtonNext","previousButton","nextButton","Weekday","weekday","title","content","Weekdays","days","elementProps","element","weekdays","weekdaysRow","ESC","TAB","_propTypes2","_gud2","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","_inherits","enumerable","writable","configurable","setPrototypeOf","MAX_SIGNED_31_BIT_INT","createEventEmitter","handlers","on","off","h","newValue","changedBits","defaultValue","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","Provider","_Component","_temp","emitter","componentWillReceiveProps","oldValue","x","y","Consumer","_Component2","_temp2","getValue","onUpdate","observedBits","_react2","_implementation2","createContext","global","define","deps","payload","modules","payloads","original","console","error","trace","ns","root","_require","parentId","lookup","toString","params","l","dep","require","packagedModule","normalizeModule","moduleName","chunks","charAt","previous","uri","packaged","ace","Element","remove","parentNode","removeChild","OS","LINUX","MAC","WINDOWS","getOS","isMac","isLinux","_navigator","navigator","os","exec","platform","toLowerCase","ua","userAgent","appName","isWin","isIE","parseFloat","match","isOldIE","isGecko","isMozilla","isOpera","opera","isWebKit","isChrome","isEdge","isAIR","isAndroid","isChromeOS","isIOS","test","MSStream","isMobile","strictCSP","useragent","buildDom","arr","parent","refs","txt","createTextNode","appendChild","els","ch","options","childIndex","val","cssText","setAttribute","getDocumentHead","doc","head","getElementsByTagName","documentElement","tag","createElementNS","removeChildren","innerHTML","textContent","ownerDocument","createFragment","createDocumentFragment","hasCssClass","addCssClass","removeCssClass","index","splice","toggleCssClass","add","setCssClass","include","hasCssString","sheets","cssCache","insertPendingStyles","cache","item","importCssString","getRootNode","insertBefore","firstChild","useStrictCSP","importCssStylsheet","rel","href","scrollbarWidth","inner","width","minWidth","height","display","outer","position","left","overflow","noScrollbar","offsetWidth","withScrollbar","clientWidth","computedStyle","getComputedStyle","setStyle","styles","property","HAS_CSS_ANIMATION","HAS_CSS_TRANSFORMS","HI_DPI","devicePixelRatio","div","transform","animationName","translate","tx","ty","round","top","inherits","ctor","superCtor","super_","mixin","implement","proto","oop","Keys","ret","MODIFIER_KEYS","KEY_MODS","FUNCTION_KEYS","PRINTABLE_KEYS","parseInt","escape","esc","del","mods","pow","keyCodeToString","keyString","String","fromCharCode","activeListenerOptions","pressedKeys","ts","getListenerOptions","createComment","addEventListener","passive","detectListenerOptionsSupport","EventListener","elem","destroy","removeListener","addListener","destroyer","$toDestroy","removeEventListener","stopEvent","getButton","ctrlKey","altKey","shiftKey","button","capture","eventHandler","releaseCaptureHandler","addMouseWheelListener","wheelDeltaX","wheelX","wheelY","wheelDeltaY","wheelDelta","deltaMode","DOM_DELTA_PIXEL","deltaX","deltaY","DOM_DELTA_LINE","DOM_DELTA_PAGE","axis","HORIZONTAL_AXIS","detail","addMultiMouseDownListener","elements","callbackName","startX","startY","timer","clicks","eventNames","onMousedown","isNewClick","abs","clientX","clientY","clearTimeout","_clicks","getModifierHash","metaKey","normalizeCommandKeys","hashId","getModifierState","altGr","location","keyLocation","timeStamp","defaultPrevented","resetPressedKeys","getModifierString","addCommandKeyListener","isOldGecko","lastKeyDownKeyCode","lastDefaultPrevented","postMessage","postMessageId","nextTick","win","messageName","listener","data","$idleBlocked","onIdle","cb","$idleBlockId","blockIdle","delay","nextFrame","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame","oRequestAnimationFrame","Range","startRow","startColumn","endRow","endColumn","start","row","column","end","isEqual","contains","compare","compareRange","cmp","comparePoint","p","containsRange","intersects","isEnd","isStart","setStart","setEnd","inside","insideStart","insideEnd","isMultiLine","compareStart","compareEnd","compareInside","clipRows","firstRow","lastRow","fromPoints","extend","isEmpty","collapseRows","max","toScreenRange","session","screenPosStart","documentToScreenPosition","screenPosEnd","moveBy","comparePoints","p1","p2","last","a","stringReverse","string","stringRepeat","count","trimBeginRegexp","trimEndRegexp","stringTrimLeft","stringTrimRight","copyObject","copy","copyArray","array","deepCopy","arrayToMap","createMap","arrayRemove","escapeRegExp","str","escapeHTML","getMatchOffsets","regExp","matches","offset","deferredCall","fcn","deferred","schedule","isPending","delayedCall","defaultTimeout","_self","$cancelT","lineMode","pasteCancelled","now","dom","clipboard","BROKEN_SETDATA","USE_IE_MIME_TYPE","HAS_FOCUS_ARGS","MAX_LINE_LENGTH","KEYS","MODS","valueResetRegex","TextInput","host","text","opacity","copied","pasted","inComposition","sendingText","tempStyle","fontSize","commandMode","ignoreFocusEvents","lastValue","lastSelectionStart","lastSelectionEnd","lastRestoreEnd","isFocused","activeElement","hasFocus","resetSelection","$focusScroll","preventScroll","isTransformed","getBoundingClientRect","ancestors","t","parentElement","nodeType","removeAttribute","curOp","commandName","command","isUserAction","docChanged","selectionChanged","onCompositionEnd","selectionEnd","selection","setSelectionRange","afterContextMenu","selectionStart","line","getRange","cursor","getLine","prevLine","nextLine","inputHandler","setInputHandler","getInputHandler","sendText","fromInput","onPaste","extendLeft","extendRight","inserted","restoreStart","restoreEnd","endIndex","shouldReset","onTextInput","onInput","onCompositionUpdate","inputType","execCommand","handleClipboardData","forceIEMime","clipboardData","mime","setData","getData","doCopy","isCut","getCopyText","onCut","onCopy","select","onCommandKey","isAllSelected","selectAll","$readOnly","cancelComposition","useTextareaForIME","markerRange","compositionStartOffset","closeTimeout","syncComposition","onContextMenuClose","renderer","$isMousePressed","$keepTextAreaAtCursor","$moveTextAreaToCursor","onCompositionStart","_signal","getSelectionRange","msGetInputContext","getInputContext","getElement","setCommandMode","readOnly","setReadOnly","setCopyWithEmptySelection","onContextMenu","_emit","domEvent","moveToMouse","bringToFront","characterWidth","rect","borderTopWidth","borderLeftWidth","maxTop","bottom","clientHeight","move","min","textInput","scroller","typingResetTimeout","typing","detectArrowKeys","$mouseHandler","isMousePressed","up","home","option","down","right","shift","commands","findKeyCommand","addIosSelectionHandler","$setUserAgentForTests","_isMobile","_isIOS","DefaultHandlers","mouseHandler","$clickSelection","editor","setDefaultHandler","onDoubleClick","onTripleClick","onQuadClick","onMouseWheel","selectByLines","extendSelectionBy","selectByWords","calcRangeOrientation","anchor","ev","inSelection","pos","getDocumentPosition","mousedownEvent","moveToPosition","time","$focusTimeout","inMultiSelectMode","captureMouse","startSelect","waitForClickSelection","screenToTextCoordinates","getShiftKey","selectToPosition","setCapture","orientedRange","setSelectionAnchor","scrollCursorIntoView","unitName","cmpStart","cmpEnd","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","unsetStyle","releaseCapture","focusWait","ax","ay","bx","by","distance","sqrt","getBracketRange","getWordRange","getLineRange","getAccelKey","$lastScroll","vx","vy","allowed","prevScroll","dt","direction","canScroll","isScrollableBy","speed","scrollBy","stop","Tooltip","isOpen","$element","$parentNode","$init","setText","setHtml","html","setPosition","setClassName","show","hide","getHeight","offsetHeight","getWidth","GutterTooltip","windowWidth","innerWidth","windowHeight","innerHeight","GutterHandler","tooltipTimeout","mouseEvent","tooltipAnnotation","gutter","$gutterLayer","tooltip","hideTooltip","moveTooltip","getRegion","selectTo","srcElement","$tooltipFollowsMouse","annotation","$annotations","getLength","screenRow","pixelToScreenCoordinates","$pos","documentToScreenRow","showTooltip","$gutter","MouseEvent","$inSelection","propagationStopped","selectionRange","DragdropHandler","dragImage","dragSelectionMarker","timerId","dragCursor","dragOperation","isInternal","autoScrollStartTime","cursorMovedTime","cursorPointOnCaretMoved","mouseTarget","counter","onDragInterval","prevCursor","vMovement","hMovement","moveCursorToPosition","calcDistance","lineHeight","layerConfig","editorRect","offsets","nearestXOffset","nearestYOffset","scrollCursor","vScroll","hScroll","autoScroll","addDragMarker","toOrientedRange","addMarker","getSelectionStyle","clearSelection","$cursorLayer","setBlinking","clearInterval","setInterval","onMouseMove","clearDragMarker","removeMarker","fromOrientedRange","$resetCursorStyle","onDragStart","cancelDrag","draggable","dataTransfer","effectAllowed","getReadOnly","setDragImage","clearData","getTextRange","onDragEnd","dropEffect","setCursorStyle","onDragEnter","canAccept","getDropEffect","onDragOver","onMouseMoveTimer","onDragLeave","onDrop","moveText","dropData","insert","types","copyAllowed","copyModifierState","dragWait","getDragDelay","startDrag","dragWaitEnd","dragReadyEnd","cursorStyle","onMouseDrag","dragDrop","$dragEnabled","eventTarget","unselectable","addTouchListeners","touchStartT","lastT","longTouchTimer","animationTimer","pressed","contextMenu","mode","animationSteps","clickCount","vX","vY","createContextMenu","handleClick","hasUndo","action","getAttribute","getUndoManager","replaceChild","class","readText","then","writeText","ontouchstart","ontouchend","onclick","showContextMenu","pagePos","textToScreenCoordinates","leftOffset","pageX","scrollLeft","pageY","hideContextMenu","handleLongTap","selectWord","touches","w","touchObj","setRange","switchToSelectionMode","cursorPos","getPixelPosition","anchorPos","offsetTop","offsetLeft","weightedDistance","diff1","diff2","oldScrollTop","getScrollTop","url","xhr","XMLHttpRequest","open","onreadystatechange","readyState","responseText","send","loadScript","path","s","src","onload","_","isAbort","qualifyURL","EventEmitter","_dispatchEvent","eventName","_eventRegistry","_defaultHandlers","listeners","defaultHandler","once","newCallback","Promise","_disabled_","old","removeDefaultHandler","pop","capturing","removeAllListeners","optionsProvider","setOptions","optList","setOption","getOptions","optionNames","$options","hidden","getOption","opt","warn","forwardTo","handlesSet","message","reportError","msg","AppConfig","$defaultOptions","defineOptions","initialValue","resetOptions","setDefaultValue","opts","setDefaultValues","optionHash","net","workerPath","modePath","themePath","basePath","suffix","$moduleUrls","loadWorkerFromBlob","sharedPopups","all","$modes","moduleUrl","parts","sep","base","re","RegExp","setModuleUrl","subst","$loading","loadModule","onLoad","moduleType","afterLoad","reportErrorIfPathIsNotConfigured","init","scriptOptions","scriptUrl","currentScript","_currentScript","scripts","script","attr","m","m1","toUpperCase","version","DefaultGutterHandler","config","MouseHandler","focusEditor","getMouseEventTarget","onMouseEvent","scrollBarV","scrollBarH","Boolean","gutterEl","$dragDelay","character","mousemove","$scrollSpeed","mouseMoveHandler","which","releaseMouse","$mouseMoved","onCaptureEnd","onOperationEnd","onCaptureInterval","$onCaptureMouseMove","endOperation","startOperation","cancelContextMenu","scrollSpeed","dragDelay","dragEnabled","focusTimeout","tooltipFollowsMouse","FoldHandler","fold","getFoldAt","removeFold","expandFold","getUseWrapMode","foldWidgets","onFoldWidgetClick","getParentFoldRangeData","firstRange","addFold","keyUtil","KeyBinding","$editor","$data","$handlers","kb","removeKeyboardHandler","$defaultHandler","addKeyboardHandler","setKeyboardHandler","handleKeyboard","attach","detach","getKeyboardHandler","getStatusText","$callKeyboardHandlers","toExecute","success","passEvent","hiLevel","lastArabic","hasUBAT_B","hasUBAT_S","impTab_LTR","impTab_RTL","ET","BN","UnicodeTBL00","UnicodeTBL20","_invertLevel","lev","levels","_array","lo","hi","tmp","len","_getCharClass","chars","ix","wType","nType","cType","rtlCandidate","_getCharacterType","uc","charCodeAt","L","R","EN","ON_R","AN","R_H","B","RLE","DOT","doBidiReorder","textCharTypes","isRtl","logicalFromVisual","bidiLevels","charTypes","impTab","newClass","newLevel","newState","condPos","_computeLevels","hasBidiCharacters","getVisualFromLogicalIdx","logIdx","rowMap","bidiUtil","bidiRE","BidiHandler","bidiMap","currentRow","charWidths","EOL","showInvisibles","isRtlDir","$isRtl","wrapIndent","EOF","contentWidth","fontMetrics","rtlLineOffset","wrapOffset","isMoveLeftOperation","seenBidi","isBidiRow","docRow","splitIndex","updateRowLine","updateBidiMap","onChange","delta","lines","getDocumentRow","rowCache","$screenRowCache","$getRowCacheIndex","$docRowCache","getSplitIndex","currentIndex","prevIndex","endOfLine","$useWrapMode","splits","$wrapData","indent","substring","size","isFullWidth","getScreenTabSize","$main","substr","markAsDirty","updateCharacterWidths","$characterSize","bidiCharWidth","$measureCharWidth","setShowInvisibles","setEolChar","eolChar","setContentWidth","isRtlLine","setRtlDirection","getCursorPosition","getSelectionAnchor","$bidiHandler","removeInLine","getPosLeft","col","leftBoundary","logicalIdx","getOverwrite","visualIdx","getSelections","startCol","endCol","level","selections","selColMin","selColMax","isSelected","isSelectedPrev","visIdx","offsetToCol","posX","charWidth","Selection","getDocument","lead","createAnchor","$silent","$cursorChanged","$isEmpty","$keepDesiredColumnOnChange","$desiredColumn","$anchorChanged","getCursor","getPosition","getAnchor","getSelectionLead","isBackwards","$setSelection","Number","MAX_VALUE","anchorRow","anchorColumn","cursorRow","cursorColumn","wasEmpty","wasMultiselect","$moveSelection","mover","moveCursorTo","moveTo","selectUp","moveCursorUp","selectDown","moveCursorDown","selectRight","moveCursorRight","selectLeft","moveCursorLeft","selectLineStart","moveCursorLineStart","selectLineEnd","moveCursorLineEnd","selectFileEnd","moveCursorFileEnd","selectFileStart","moveCursorFileStart","selectWordRight","moveCursorWordRight","selectWordLeft","moveCursorWordLeft","selectAWord","getAWordRange","excludeLastChar","rowEnd","rowStart","foldLine","getFoldLine","selectLine","moveCursorBy","wouldMoveIntoSoftTab","tabSize","isTabStop","getTabSize","getNavigateWithinSoftTabs","firstColumnPosition","screenToDocumentPosition","leadingSpace","getDisplayLine","$useEmacsStyleLineStart","lineEnd","getDocumentLastRowColumnPosition","textEnd","search","moveCursorLongWordRight","rightOfCursor","nonTokenRe","lastIndex","tokenRe","moveCursorLongWordLeft","getFoldStringAt","leftOfCursor","$shortWordEndIndex","whitespaceRe","moveCursorShortWordRight","moveCursorShortWordLeft","$selectLongWords","rows","offsetX","screenPos","lineWidgets","widget","rowsAbove","rowCount","docPos","keepDesiredColumn","moveCursorToScreen","desiredColumn","r","getRangeOfMovements","func","toJSON","rangeCount","ranges","r1","fromJSON","rangeList","toSingleRange","addRange","MAX_TOKEN_COUNT","Tokenizer","rules","states","regExps","matchMappings","ruleRegExps","matchTotal","mapping","defaultToken","flag","splitterRurles","rule","caseInsensitive","regex","adjustedregex","matchcount","token","groupCount","tokenArray","onMatch","$arrayTokens","$applyToken","digit","removeCapturingGroups","splitRegex","createSplitterRegexp","$setMaxTokenCount","tokens","stack","inChClass","lastCapture","parenOpen","parenClose","square","getLineTokens","startState","currentState","matchAttempts","skipped","consumeLineEnd","merge","TextHighlightRules","$rules","addRules","prefix","getRules","embedRules","HighlightRules","escapeRules","append","$embeds","getEmbeds","pushState","popState","normalizeRules","processState","processed","toInsert","stateName","includeName","noEscape","keywordMap","createKeywordMapper","ignoreCase","splitChar","keywords","$keywordList","list","word","getKeywords","$keywords","Behaviour","$behaviours","addBehaviours","behaviours","inherit","getBehaviours","TokenIterator","initialRow","initialColumn","$session","$row","$rowTokens","getTokens","getTokenAt","$tokenIndex","stepBackward","stepForward","getCurrentToken","getCurrentTokenRow","getCurrentTokenColumn","rowTokens","tokenIndex","getCurrentTokenPosition","getCurrentTokenRange","SAFE_INSERT_IN_TOKENS","SAFE_INSERT_BEFORE_TOKENS","contextCache","defaultQuotes","initContext","multiSelect","autoInsertedBrackets","autoInsertedRow","autoInsertedLineEnd","maybeInsertedBrackets","maybeInsertedRow","maybeInsertedLineStart","maybeInsertedLineEnd","getWrapped","opening","closing","rowDiff","CstyleBehaviour","getWrapBehavioursEnabled","isSaneInsertion","braces","recordAutoInsert","recordMaybeInsert","$findOpeningBracket","isAutoInsertedClosing","popAutoInsertedClosing","isMaybeInsertedClosing","clearMaybeInsertedClosing","openBracePos","findMatchingBracket","next_indent","$getIndent","getTabString","quotes","$mode","$quotes","lineCommentStart","quote","leftChar","rightChar","rightToken","pair","stringBefore","stringAfter","wordRe","isWordBefore","isWordAfter","charBefore","iterator","$matchTokenType","iterator2","bracket","wordChars","unicode","Mode","$defaultBehaviour","getTokenizer","$tokenizer","$highlightRules","$highlightRuleConfig","blockComment","toggleCommentLines","ignoreBlankLines","shouldRemove","minIndent","Infinity","insertAtTabStop","regexpStart","getUseSoftTabs","uncomment","shouldInsertSpace","commentWithSpace","comment","insertInLine","testRemove","spaces","lineCommentEnd","regexpEnd","iter","fun","minEmptyLength","toggleBlockComment","colDiff","initialRange","startRange","endRange","getNextLineIndent","tab","checkOutdent","input","autoOutdent","createWorker","createModeDelegates","$id","delegations","scope","functionName","$delegator","method","language","transformAction","param","$behaviour","completionKeywords","ruleItr","aLength","$createKeywordList","getCompletions","score","meta","applyDelta","docLines","doNotValidate","Anchor","$onChange","$pointsInOrder","point1","point2","equalPointsInOrder","bColIsAfter","$clipPositionToDocument","$insertRight","point","moveIfEqual","deltaIsInsert","deltaRowShift","deltaColShift","deltaStart","deltaEnd","$getTransformedPoint","noClip","Document","textOrLines","$lines","insertMergedLines","setValue","getAllLines","getNewLineCharacter","$split","$detectNewLine","$autoNewLine","$newLineMode","setNewLineMode","newLineMode","getNewLineMode","isNewLine","getLines","getLinesForRange","insertLines","insertFullLines","removeLines","removeFullLines","insertNewLine","clippedPos","clonePos","$clipPosition","deleteFirstNewLine","deleteLastNewLine","deletedLines","removeNewLine","applyDeltas","deltas","revertDeltas","revertDelta","isInsert","$splitAndapplyLargeDelta","$safeApplyDelta","docLength","MAX","chunk","indexToPosition","newlineLength","positionToIndex","BackgroundTokenizer","tokenizer","running","currentLine","$worker","workerStart","endLine","startLine","processedLines","$tokenizeRow","fireUpdateEvent","setTokenizer","setDocument","scheduleStart","$updateOnChange","getState","SearchHighlight","clazz","setRegexp","MAX_RANGES","update","markerLayer","drawSingleLineMarker","FoldLine","foldData","folds","setFoldLine","shiftRow","sameRow","sort","b","containsRow","walk","lastEnd","isNewRow","placeholder","getNextFoldTo","kind","addRemoveChars","log","foldBefore","newFoldLine","foldLineNext","idxToPosition","lastFoldEndColumn","RangeList","$bias","pointIndex","excludeEdges","startIndex","addList","removed","substractPoint","containsPoint","rangeAtPoint","clipped","removeAll","lineDif","Fold","subFolds","consumePoint","restorePoint","subFold","collapseChildren","addSubFold","afterStart","firstConsumed","consumedFolds","restoreRange","Folding","side","getFoldsInRange","foldLines","$foldData","foundFolds","getFoldsInRangeList","getAllFolds","trim","lastFold","startFoldLine","getNextFoldLine","getFoldedRowCount","$addFoldLine","added","$clipRangeToDocument","startFold","endFold","removeFolds","$updateWrapData","$updateRowLengthCache","$modified","addFolds","$updating","cloneFolds","foldAll","expandFolds","unfold","expandInner","outermostFolds","isRowFolded","startFoldRow","getRowFoldEnd","getRowFoldStart","getFoldDisplayLine","textLine","lastColumn","$cloneFoldData","fd","toggleFold","tryToUnfold","bracketPos","getCommentFoldRange","depth","getFoldWidget","getFoldWidgetRange","foldToLevel","foldAllComments","$foldStyles","$foldStyle","setFoldStyle","$foldMode","$setFolding","foldMode","$updateFoldWidgets","$tokenizerUpdateFoldWidgets","updateFoldWidgets","tokenizerUpdateFoldWidgets","ignoreCurrent","fw","siblings","$toggleFoldWidget","toggleFoldWidget","toggleParent","BracketMatch","chr","charBeforeCursor","$findClosingBracket","getMatchingBracketRanges","$brackets","typeRe","openBracket","valueIndex","closingBracket","valueLength","TextMode","EditSession","$breakpoints","$decorations","$frontMarkers","$backMarkers","$markerId","$undoSelect","$uid","onChangeFold","setMode","bgTokenizer","resetCaches","$resetRowCache","cacheArray","low","mid","$rowLengthCache","removedFolds","$updateInternalDataOnChange","$fromUndo","$undoManager","mergeUndoDeltas","$informUndoManager","setUndoManager","reset","getSelection","undoManager","addSession","$syncInformUndoManager","markUndoGroup","$defaultUndoManager","undo","redo","hasRedo","addSelection","startNewGroup","setUseSoftTabs","$useSoftTabs","$indentWithTabs","setTabSize","$tabSize","setNavigateWithinSoftTabs","navigateWithinSoftTabs","$navigateWithinSoftTabs","$overwrite","setOverwrite","overwrite","toggleOverwrite","addGutterDecoration","removeGutterDecoration","getBreakpoints","setBreakpoints","clearBreakpoints","setBreakpoint","clearBreakpoint","inFront","marker","addDynamicMarker","markerId","getMarkers","highlight","$searchHighlight","highlightLines","setAnnotations","annotations","getAnnotations","clearAnnotations","inToken","wordRange","setUseWorker","useWorker","getUseWorker","$useWorker","onReloadTokenizer","$modeId","$onChangeMode","$isPlaceholder","oldMode","$stopWorker","$startWorker","attachToSession","wrapMethod","$wrapMethod","foldingRules","terminate","getMode","$scrollTop","setScrollTop","$scrollLeft","setScrollLeft","getScrollLeft","getScreenWidth","$computeWidth","getLineWidgetMaxWidth","screenWidth","lineWidgetsWidth","lineWidgetWidth","force","$wrapLimit","longestScreenLine","foldIndex","foldStart","$getStringScreenWidth","undoChanges","dontSelect","selectionBefore","$getUndoSelection","redoChanges","selectionAfter","setUndoSelect","enable","isUndo","fromRange","toPosition","toRange","collDiff","oldStart","newStart","indentRows","indentString","outdentRows","rowRange","deleteRange","$moveLines","diff","$clipRowToDocument","moveLinesUp","moveLinesDown","duplicateLines","$clipColumnToRow","$wrapLimitRange","setUseWrapMode","useWrapMode","setWrapLimitRange","adjustWrapLimit","desiredLimit","$printMargin","limits","wrapLimit","$constrainWrapLimit","getWrapLimit","setWrapLimit","limit","getWrapLimitRange","foldLineBefore","wrapData","walkTokens","$getDisplayTokens","PLACEHOLDER_START","PLACEHOLDER_BODY","$computeWrapSplits","displayLength","lastSplit","lastDocSplit","isCode","$wrapAsCode","indentedSoftWrap","$indentedSoftWrap","maxIndent","addSplit","indentation","getWrapIndent","minSplit","maxScreenColumn","screenColumn","getRowLength","getRowLineCount","getRowWrapIndent","getScreenLastRowColumn","documentToScreenColumn","getDocumentLastRowColumn","docColumn","getRowSplitData","screenToDocumentRow","screenToDocumentColumn","rowLength","doCache","maxRow","foldStartRow","wrapRow","screenRowOffset","getScreenLength","screenRows","$getWidgetScreenLength","$setFontMetrics","fm","$enableVarChar","getCharacterWidth","wrap","$wrap","firstLineNumber","useSoftTabs","foldStyle","Search","find","$matchIterator","sr","sc","er","ec","skipCurrent","findAll","needle","$assembleRegExp","$isMultiLine","prevRange","replacement","preserveCase","$disableFakeMultiline","wholeWord","wordBoundary","addWordBoundary","caseSensitive","$assembleMultilineRegExp","backwards","forEachInLine","HashHandler","commandKeyBinding","addCommands","$singleCommand","MultiHashHandler","bindKey","isDefault","addCommand","removeCommand","_buildKeyHash","keepCommand","ckb","keyId","cmdGroup","keyPart","chain","binding","parseKeys","_addCommandToBinding","removeCommands","bindKeys","keyList","$keyChain","CommandManager","byName","$checkCommandState","isAvailable","returnValue","toggleRecording","$inReplay","recording","macro","$addCommandToMacro","oldMacro","replay","trimMacro","mac","description","showSettingsMenu","showErrorMarker","scrollIntoView","centerSelection","gotoLine","prompt","$type","multiSelectAction","getAllRanges","findNext","findPrevious","aceCommandGroup","navigateFileStart","navigateUp","times","navigateFileEnd","navigateDown","navigateWordLeft","navigateLineStart","navigateLeft","navigateWordRight","navigateLineEnd","navigateRight","selectPageDown","scrollPageDown","gotoPageDown","selectPageUp","scrollPageUp","gotoPageUp","jumpToMatching","$copyWithEmptySelection","$handlePaste","duplicateSelection","sortLines","modifyNumber","copyLinesUp","copyLinesDown","removeToLineStart","removeToLineEnd","removeWordLeft","removeWordRight","blockOutdent","blockIndent","splitLine","transposeLetters","transposeSelections","autoIndent","firstLineEndCol","selectedCount","insertLine","curLine","newRanges","exitMultiSelectMode","defaultCommands","Editor","getContainerElement","getTextAreaContainer","textarea","keyBinding","$search","$historyTracker","$initOperationListeners","_$emitInputEvent","setSession","$opResetTimer","$lastSel","prevOp","commandEvent","previousCommand","scrollSelectionIntoView","animateScrolling","sel","$mergeableCommands","$mergeUndoDeltas","mergeableCommands","shouldMerge","mergeNextCommand","sequenceStartTime","keyboardHandler","$keybindingId","oldSession","$onDocumentChange","$onTokenizerUpdate","$onChangeTabSize","$onChangeWrapLimit","$onChangeWrapMode","$onChangeFold","$onChangeFrontMarker","$onChangeBackMarker","$onChangeBreakpoint","$onChangeAnnotation","$onCursorChange","$onScrollTopChange","$onScrollLeftChange","$onSelectionChange","onDocumentChange","onChangeMode","onTokenizerUpdate","onChangeTabSize","onChangeWrapLimit","onChangeWrapMode","onChangeFrontMarker","onChangeBackMarker","onChangeBreakpoint","onChangeAnnotation","onCursorChange","onScrollTopChange","onScrollLeftChange","onSelectionChange","updateFull","oldEditor","getSession","resize","onResize","setTheme","theme","getTheme","getFontSize","setFontSize","$highlightBrackets","$highlightPending","$bracketHighlight","markerIds","getMatching","markerType","$highlightTags","$highlightTagPending","$tagHighlight","currentTag","prevToken","stepCount","tmpToken","sbm","$isFocused","showCursor","visualizeFocus","hideCursor","visualizeBlur","$cursorChange","updateCursor","$updateHighlightActiveLine","updateLines","scrollToY","scrollToX","$highlightActiveLine","$selectionStyle","$selectionColorConflict","$maxLines","$minLines","$highlightLineMarker","$selectionMarker","$highlightSelectedWord","$getSelectionHighLightRegexp","wordWithBoundary","updateFrontMarkers","updateBackMarkers","updateBreakpoints","updateText","getSelectedText","nl","copyLine","inVirtualSelectionMode","isFullLine","getBehavioursEnabled","lineState","shouldOutdent","$enableAutoIndent","lineIndent","selectedRange","currIndent","prevLineState","composition","applyComposition","forEachSelection","setScrollSpeed","getScrollSpeed","setDragDelay","setSelectionStyle","setHighlightActiveLine","shouldHighlight","getHighlightActiveLine","setHighlightGutterLine","getHighlightGutterLine","setHighlightSelectedWord","getHighlightSelectedWord","setAnimatedScroll","shouldAnimate","getAnimatedScroll","getShowInvisibles","setDisplayIndentGuides","getDisplayIndentGuides","setShowPrintMargin","showPrintMargin","getShowPrintMargin","setPrintMarginColumn","getPrintMarginColumn","setBehavioursEnabled","enabled","setWrapBehavioursEnabled","setShowFoldWidgets","getShowFoldWidgets","setFadeFoldWidgets","fade","getFadeFoldWidgets","new_range","swap","originalRange","$getSelectedRows","getNumberAt","_numberRx","amount","charRange","isFinite","nr","fp","decimals","nnr","toFixed","replaceRange","toggleWord","$toggleWordPairs","currWordStart","wordParts","curLength","itLength","that","reg","wordPairs","negate","firstCondition","res","endPoint","moved","totalDiff","rangeIndex","subRows","compositionState","showComposition","setCompositionText","hideComposition","getFirstVisibleRow","getLastVisibleRow","isRowVisible","isRowFullyVisible","getFirstFullyVisibleRow","getLastFullyVisibleRow","$getVisibleRowCount","getScrollBottomRow","getScrollTopRow","$moveByPage","scrollToRow","scrollToLine","center","animate","alignCursor","getCursorPositionScreen","expand","matchType","bracketType","found","brackets","lineNumber","navigateTo","replaced","$tryReplace","replaceAll","getLastSearchOptions","newRange","revealRange","setAutoScrollEditorIntoView","shouldScroll","$scrollAnchor","scrollAnchor","onChangeSelection","onBeforeRender","onAfterRender","searchBox","$pixelPos","$cursorStyle","cursorLayer","setSmoothBlinking","isBlinking","selectionStyle","highlightActiveLine","highlightSelectedWord","copyWithEmptySelection","behavioursEnabled","wrapBehavioursEnabled","enableAutoIndent","autoScrollEditorIntoView","showLineNumbers","setShowLineNumbers","$loop","CHANGE_GUTTER","$relativeLineNumbers","relativeNumberRenderer","relativeLineNumbers","$showLineNumbers","$updatePlaceholder","$composition","placeholderNode","$placeholder","hScrollBarAlwaysVisible","vScrollBarAlwaysVisible","highlightGutterLine","animatedScroll","printMarginColumn","printMargin","fadeFoldWidgets","showFoldWidgets","displayIndentGuides","showGutter","fontFamily","maxLines","minLines","scrollPastEnd","fixedWidthGutter","hasCssTransforms","maxPixelHeight","getText","lastLineNumber","$renderer","UndoManager","$maxRev","allowMerge","$lastDelta","$keepRedoStack","$redoStack","lastDeltas","$undoStack","$rev","rev","markIgnored","ignore","getRevision","getDeltas","getChangedRanges","getChangedLines","deltaSet","swapped","swapGroups","rearrangeUndoStack","$redoStackBaseRev","undoSelectionRange","$syncRev","redoStack","deltaSets","moveDeltasByOne","rebaseRedoStack","redoSelectionRange","nextDelta","mark","canUndo","canRedo","bookmark","isAtBookmark","isClean","markClean","$prettyPrint","stringifyDelta","stringifyRange","i1","i2","ds1","ds2","xform","c1","splitDelta","shiftPos","rowsBefore","otherLines","cloneDelta","xformed","Lines","canvasHeight","cells","cellCache","$offsetCoefficient","moveContainer","firstRowScreen","pageChanged","oldConfig","newConfig","computeLineTop","screenTop","screenPage","computeLineHeight","$cacheCell","cell","fragment","insertAdjacentElement","createCell","initElement","Gutter","parentEl","$showFoldWidgets","gutterWidth","$updateAnnotations","onCreateCell","textNode","foldWidget","rowInfo","annoText","gutterOffset","oldLastRow","$updateCursorRow","$renderCell","$updateGutterWidth","gutterRenderer","$firstLineNumber","lastLineText","$fixedWidth","padding","$padding","$computePadding","$highlightGutterLine","$cursorRow","updateLineHighlight","$cursorCell","scrollLines","$renderLines","childNodes","breakpoints","decorations","foldHeight","getShowLineNumbers","paddingLeft","borderRightWidth","paddingRight","Marker","setPadding","setMarkers","markers","elt","css","$getTop","drawFullLineMarker","drawScreenLineMarker","drawTextMarker","drawMultiLineMarker","childElementCount","lastChild","stringBuilder","extraStyle","curr","lineRange","range1","drawBidiSingleLineMarker","radiusClass","extraLength","Text","$updateEolChar","EOF_CHAR","EOL_CHAR_LF","EOL_CHAR_CRLF","EOL_CHAR","TAB_CHAR","SPACE_CHAR","margin","getLineHeight","$fontMetrics","measure","$pollSizeChanges","checkForSizeChanges","$pollSizeChangesTimer","$computeTabString","showSpaces","showTabs","showEOL","$tabStrings","tabStr","span","$indentGuideRe","spaceClass","spaceContent","tabClass","tabContent","lineElements","lineElementsIdx","heightChanged","lineElement","$renderLine","$renderLinesFragment","lineEl","$useLineGroups","$textToken","$renderToken","valueFragment","simpleSpace","controlCharacter","cjkSpace","cjk","cloneNode","com","renderIndentGuide","cols","$createLineElement","$renderWrappedLine","splitChars","$renderOverflowMessage","$renderSimpleLine","overflowEl","$getFoldLineTokens","lastLineEl","invisibleEl","renderTokens","addTokens","Cursor","isVisible","blinkInterval","smoothBlinking","cursors","addCursor","$updateCursors","$updateOpacity","$startCssAnimation","animationDuration","$isAnimating","$stopCssAnimation","blinking","restartTimer","setBlinkInterval","removeCursor","intervalId","timeoutId","$isSmoothBlinking","blink","onScreen","isCursorInView","pixelPos","maxHeight","$selectionMarkers","cursorIndex","drawCursor","$setOverwrite","MAX_SCROLL_H","ScrollBar","classSuffix","setVisible","skipEvent","onScroll","coeff","VScrollBar","scrollHeight","$scrollbarWidth","$minWidth","setHeight","setInnerHeight","setScrollHeight","HScrollBar","setWidth","setInnerWidth","setScrollWidth","ScrollBarV","ScrollBarH","RenderLoop","onRender","pending","changes","$recursionLimit","_flush","change","clear","CHAR_COUNT","USE_OBSERVER","ResizeObserver","FontMetrics","$setMeasureNodeStyles","$measureNode","$addObserver","isRoot","visibility","whiteSpace","font","$measureSizes","fontWeight","boldSize","charSizes","allowBoldFonts","$observer","observe","setPolling","disconnect","$getZoom","getZoom","zoom","$initTransformMeasureNodes","transformCoordinates","clientPos","elPos","mul","solve","l1","l2","det","sub","m2","ut","u","f","GutterLayer","MarkerLayer","TextLayer","CursorLayer","editorCss","HIDE_TEXTAREA","VirtualRenderer","onGutterResize","$markerBack","textLayer","$textLayer","canvas","$markerFront","$horizScroll","$vScroll","scrollBar","$scrollAnimation","scrollMargin","updateCharacterSize","$size","scrollerHeight","scrollerWidth","$dirty","minHeight","v","$renderChanges","defaultView","CHANGE_FULL","CHANGE_CURSOR","CHANGE_MARKER","CHANGE_SCROLL","CHANGE_LINES","CHANGE_TEXT","CHANGE_SIZE","CHANGE_MARKER_BACK","CHANGE_MARKER_FRONT","CHANGE_H_SCROLL","$allowBoldFonts","$updatePrintMargin","onChangeNewLineMode","$changedLines","updateFontSize","$changes","$updateSizeAsync","resizing","scrollWidth","$updateCachedSize","$extraHeight","oldSize","$showGutter","$computeLayerConfig","availableWidth","$showPrintMargin","$printMarginColumn","$animatedScroll","getShowGutter","setShowGutter","$printMarginEl","containerEl","posTop","posLeft","setScrollMargin","sm","setMargin","getHScrollBarAlwaysVisible","$hScrollBarAlwaysVisible","setHScrollBarAlwaysVisible","alwaysVisible","getVScrollBarAlwaysVisible","$vScrollBarAlwaysVisible","setVScrollBarAlwaysVisible","$updateScrollBarV","$scrollPastEnd","$updateScrollBarH","$frozen","freeze","unfreeze","st","$updateLines","$autosize","desiredHeight","$maxPixelHeight","$gutterWidth","hideScrollbars","longestLine","$getLongestLine","horizScroll","hScrollChanged","vScrollBefore","vScrollChanged","firstRowHeight","lineCount","charCount","$viewMargin","topMargin","bottomMargin","alignment","STEPS","$calcSteps","fromValue","toValue","x_min","steps","initialScroll","oldSteps","$timer","scrollTo","canvasPos","$hasCssTransforms","$blockCursor","$useTextareaForIME","addToken","removeExtraToken","newToken","$themeId","cssClass","$theme","isDark","setMouseCursor","attachToShadowRoot","workerUrl","Worker","blob","Blob","blobBuilder","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","getBlob","$workerBlob","blobURL","URL","webkitURL","createObjectURL","WorkerClient","worker","$createWorkerFromOldConfig","$sendDeltaQueue","changeListener","onMessage","callbackId","callbacks","onmessage","topLevelNamespaces","classname","importScripts","nameToUrl","toUrl","normalizePath","$normalizePath","tlns","err","deltaQueue","$doc","cmd","emit","ex","attachToDocument","q","UIWorkerClient","main","emitSync","sender","messageBuffer","workerClient","processNext","setEmitSync","Main","PlaceHolder","others","mainClass","othersClass","$onUpdate","$others","undoStack","$undostack","$undoStackDepth","setup","other","showOtherMarkers","othersActive","hideOtherMarkers","updateAnchors","lengthDiff","inMainRange","distanceFromStart","newPos","otherPos","updateMarkers","updateMarker","undosRequired","isSamePoint","alt","ctrl","accel","selectionMode","isMultiSelect","mouseX","mouseY","screenAnchor","screenCursor","$enableJumpToDef","$blockSelectEnabled","addSelectionMarker","oldRange","removeSelectionMarker","tmpSel","rectSel","blockSelect","newCursor","removeSelectionMarkers","rectangularRangeBlock","updateSelectionMarkers","onSelectionInterval","selectMoreLines","selectMore","joinSelections","splitIntoLines","alignCursors","multiSelectCommands","getSelectionMarkers","$blockChangeEvents","$onAddRange","$onRemoveRange","mergeOverlappingRanges","lastRange","$initRangeList","toggleBlockSelection","includeEmptyLines","xBackwards","startOffsetX","endOffsetX","docEnd","yBackwards","MultiSelect","$multiselectOnSessionChange","$onMultiSelect","$onSingleSelect","onSessionChange","$checkMultiselectChange","altCursor","altDown","addAltCursorListeners","selectionMarkerCount","markerList","$onMultiSelectExec","inVirtualMode","keepOrder","$byLines","cmdResult","anim","buf","additive","skip","screenLead","toRemove","words","stopAtFirst","sameRowRanges","maxCol","minSpace","spaceOffsets","spaceOffset","fr","lr","guessRange","$reAlignText","forceLeft","startW","textW","endW","isLeftAligned","isRightAligned","alignLeft","enableMultiselect","enableBlockSelect","FoldMode","foldingStartMarker","foldingStopMarker","indentationBlock","startLevel","openingBracketBlock","closingBracketBlock","LineWidgets","widgetManager","updateOnChange","renderWidgets","measureWidgets","_changedWidgets","$onChangeEditor","updateOnFold","_inDocument","removeLineWidget","$updateRows","noWidgets","$oldWidget","$registerLineWidget","addLineWidget","zIndex","coverGutter","pixelHeight","$fold","onWidgetChanged","w1","getWidgetsAtRow","changedWidgets","fixedWidth","coverLine","fullWidth","oldWidget","gutterAnno","comparator","binarySearch","matched","findAnnotations","arrow","onmousedown","Renderer","edit","_id","getElementById","env","tagName","oldNode","createEditSession","Split","BELOW","BESIDE","$container","$splits","$editorCSS","$editors","$orientation","setSplits","$cEditor","$createEditor","$fontSize","getSplits","getEditor","getCurrentEditor","keybinding","$cloneSession","isUsed","getOrientation","setOrientation","orientation","editorWidth","editorHeight","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","applyBind","hasOwn","arg","argType","Emitter","fn","_callbacks","hasListeners","objectKeys","isArguments","is","isRegex","flags","deepEqual","actual","expected","strict","isUndefinedOrNull","aIsRegex","bIsRegex","aIsBuffer","isBuffer","bIsBuffer","ka","objEquiv","hasSymbols","Symbol","toStr","origDefineProperty","supportsDescriptors","arePropertyDescriptorsSupported","predicate","defineProperties","predicates","getOwnPropertySymbols","diff_match_patch","Diff_Timeout","Diff_EditCost","Match_Threshold","Match_Distance","Patch_DeleteThreshold","Patch_Margin","Match_MaxBits","DIFF_DELETE","Diff","op","diff_main","text1","text2","opt_checklines","opt_deadline","deadline","checklines","commonlength","diff_commonPrefix","commonprefix","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_lineMode_","diff_bisect_","diff_linesToChars_","chars1","chars2","linearray","lineArray","diff_charsToLines_","diff_cleanupSemantic","pointer","count_delete","count_insert","text_delete","text_insert","subDiff","text1_length","text2_length","max_d","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","k1","k1_offset","y1","x1","k2_offset","x2","diff_bisectSplit_","k2","y2","text1a","text2a","text1b","text2b","diffsb","lineHash","diff_linesToCharsMunge_","lineStart","lineArrayLength","pointermin","pointermax","pointermid","pointerstart","pointerend","diff_commonOverlap_","text_length","best","pattern","dmp","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","best_common","prefixLength","suffixLength","hm1","hm2","equalities","equalitiesLength","lastEquality","length_insertions1","length_deletions1","length_insertions2","length_deletions2","diff_cleanupSemanticLossless","deletion","insertion","overlap_length1","overlap_length2","diff_cleanupSemanticScore_","one","two","char1","char2","nonAlphaNumeric1","nonAlphaNumericRegex_","nonAlphaNumeric2","whitespace1","whitespaceRegex_","whitespace2","lineBreak1","linebreakRegex_","lineBreak2","blankLine1","blanklineEndRegex_","blankLine2","blanklineStartRegex_","equality1","equality2","commonOffset","commonString","bestEquality1","bestEdit","bestEquality2","bestScore","diff_cleanupEfficiency","pre_ins","pre_del","post_ins","post_del","diff_xIndex","loc","last_chars1","last_chars2","diff_prettyHtml","pattern_amp","pattern_lt","pattern_gt","pattern_para","diff_text1","diff_text2","diff_levenshtein","levenshtein","insertions","deletions","diff_toDelta","encodeURI","diff_fromDelta","diffsLength","decodeURI","match_main","match_bitap_","match_alphabet_","match_bitapScore_","accuracy","proximity","score_threshold","best_loc","lastIndexOf","bin_min","bin_mid","matchmask","last_rd","bin_max","finish","rd","charMatch","patch_addContext_","patch","start2","length1","start1","length2","patch_make","opt_b","opt_c","patches","patch_obj","patchDiffLength","char_count1","char_count2","prepatch_text","postpatch_text","diff_type","diff_text","patch_deepCopy","patchesCopy","patchCopy","patch_apply","nullPadding","patch_addPadding","patch_splitMax","results","start_loc","expected_loc","end_loc","index2","index1","paddingLength","patch_size","bigpatch","precontext","postcontext","patch_toText","patch_fromText","textline","textPointer","patchHeader","sign","classList","_hasClass","baseVal","replaceClassName","origClass","classToRemove","nodeName","enoughArguments","mutationMacro","nodes","textNodeIfPrimitive","TemporaryPrototype","TemporaryTokenList","wrapVerifyToken","hOP","descriptor","__defineGetter__","__defineSetter__","DOMTokenList","noClassName","isSVG","properties","_isSVG","classListDescriptor","CLASS_LIST","toggle","DocumentFragmentPrototype","DocumentFragment","Node","NodePrototype","CharacterData","CharacterDataPrototype","DocumentType","DocumentTypePrototype","ElementPrototype","HTMLElement","HTMLSelectElement","selectRemove","SVGElement","matchesSelector","webkitMatchesSelector","khtmlMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","nextSibling","had","hasAttribute","replaceWith","_dom4","o_O","verifyToken","raf","rAF","cAF","cancelAnimationFrame","prefixes","goOn","CustomEvent","defaultInitDict","initCustomEvent","bubbles","cancelable","initEvent","eventInitDict","createEvent","Event","$Event","out","KeyboardEvent","$KeyboardEvent","eventType","initType","defaults","char","altGraphKey","repeat","charCode","initKeyboardEvent","keyIdentifier","getModifier","withDefaults","withInitValues","view","initKeyEvent","$MouseEvent","initMouseEvent","screenX","screenY","relatedTarget","what","querySelector","dataScope","random","ELEMENT_NODE","$0","$1","$2","$3","DOMMap","WeakMap","dispatched","drop","dispatch","ce","shouldDrop","dispatchEvent","Handler","__ce__","currentTarget","Dict","createEventListener","eventListener","augment","dm","dE","aEL","rEL","increment","getListenerKey","info","createAEL","createREL","EventTarget","HTMLDocument","Window","ReflectOwnKeys","Reflect","ReflectApply","receiver","Function","ownKeys","getOwnPropertyNames","NumberIsNaN","reject","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_events","_eventsCount","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","_addListener","prepend","events","existing","warning","newListener","warned","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","arrayClone","listenerCount","wrapListener","RangeError","getPrototypeOf","setMaxListeners","getMaxListeners","doError","prependListener","prependOnceListener","originalListener","spliceOne","rawListeners","stringify","stable","deterministicStringify","stableStringify","LIMIT_REPLACE_NODE","CIRCULAR_REPLACE_NODE","replacerStack","defaultOptions","depthLimit","MAX_SAFE_INTEGER","edgesLimit","replacer","spacer","decirc","JSON","replaceGetterValues","part","setReplace","propertyDescriptor","edgeIndex","compareFunction","deterministicDecirc","validateFormat","format","condition","argIndex","framesToPop","Dispatcher","_defineProperty","invariant","_isDispatching","_isHandled","_isPending","_lastID","register","unregister","waitFor","ids","ii","_invokeCallback","_startDispatching","_stopDispatching","isDispatching","_pendingPayload","ERROR_MESSAGE","funcType","bound","binder","boundLength","boundArgs","Empty","implementation","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","getProto","needsEval","TypedArray","Uint8Array","INTRINSICS","AggregateError","ArrayBuffer","Atomics","BigInt","DataView","decodeURIComponent","encodeURIComponent","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","Int32Array","Map","Proxy","Set","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakRef","WeakSet","doEval","gen","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","rePropName","reEscapeChar","stringToPath","number","subString","getBaseIntrinsic","alias","intrinsicName","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","g","origSymbol","hasSymbolSham","sym","symObj","syms","propertyIsEnumerable","toStringTag","reactIs","REACT_STATICS","contextType","displayName","getDefaultProps","getDerivedStateFromError","mixins","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","supportsStandardArguments","tryDateObject","has","$exec","isRegexMarker","badStringifier","throwRegexMarker","toPrimitive","gOPD","HASH_UNDEFINED","funcTag","genTag","reIsDeepProp","reIsPlainProp","reLeadingDot","reIsHostCtor","freeGlobal","freeSelf","uid","arrayProto","funcProto","objectProto","coreJsData","maskSrcKey","IE_PROTO","funcToString","objectToString","reIsNative","getNative","nativeCreate","symbolProto","symbolToString","Hash","entries","entry","ListCache","MapCache","assocIndexOf","baseGet","isSymbol","isKey","toKey","baseIsNative","isObject","isFunction","isHostObject","toSource","getMapData","__data__","memoize","baseToString","memoized","Cache","isObjectLike","argsTag","arrayTag","boolTag","dateTag","errorTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","reIsUint","typedArrayTags","freeExports","freeModule","moduleExports","freeProcess","process","nodeUtil","nodeIsTypedArray","isTypedArray","arraySome","mapToArray","setToArray","nativeObjectToString","Buffer","symToStringTag","nativeGetSymbols","nativeIsBuffer","nativeKeys","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolValueOf","SetCache","Stack","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","iteratee","baseTimes","isIndex","eq","baseGetTag","unmasked","getRawTag","baseIsArguments","baseIsEqual","bitmask","customizer","equalFunc","objIsArr","othIsArr","objTag","getTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","byteLength","byteOffset","buffer","convert","isPartial","stacked","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","getAllKeys","objLength","othLength","skipCtor","objValue","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","isMasked","baseKeys","Ctor","arrLength","seen","arrValue","othIndex","keysFunc","symbolsFunc","arrayPush","baseGetAllKeys","getSymbols","pairs","LARGE_ARRAY_SIZE","resIndex","arrayFilter","symbol","ctorString","isLength","baseUnary","impl","fullPattern","shortPattern","tabletPattern","equalIC","containsIC","valueLC","convertPropsToRegExp","MobileDetect","maxPhoneWidth","prepareUserAgent","_cache","FALLBACK_PHONE","FALLBACK_TABLET","FALLBACK_MOBILE","verPos","mobileDetectRules","oss","phones","tablets","uas","utils","oss0","WindowsPhoneOS","WindowsMobileOS","findMatch","findMatches","getVersionStr","propertyName","patterns","getVersion","prepareVersionNo","NaN","numbers","isMobileFallback","detectMobileBrowsers","isTabletFallback","prepareDetectionCache","mobile","phone","tablet","phoneSized","isPhoneSized","mobileGrade","$isMobile","detectOS","getDeviceSmallerSide","screen","userAgents","versionStr","grade","_impl","factory","moment","defineLocale","monthsShort","weekdaysMin","meridiemParse","isPM","meridiem","hours","minutes","isLower","longDateFormat","LT","LTS","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","sameElse","relativeTime","future","past","ss","mm","hh","dd","M","MM","yy","dayOfMonthOrdinalParse","ordinal","dow","doy","pluralForm","plurals","pluralize","withoutSuffix","isFuture","weekdaysParseExact","hour","minute","postformat","symbolMap","preparse","numberMap","suffixes","plural","num","forms","relativeTimeWithPlural","standalone","isFormat","period","ww","lastDigit","last2Digits","meridiemHour","monthsShortRegex","monthsParseExact","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","softMutation","mutationTable","monthsParse","monthsRegex","monthsStrictRegex","monthsShortStrictRegex","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","weekdaysParse","longMonthsParse","shortMonthsParse","ll","lll","llll","output","processRelativeTime","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","mom","_calendarEl","monthsShortDot","invalidDate","numbersPast","numbersFuture","verbalNumber","monthsShortWithDots","monthsShortWithoutDots","weekEndings","eras","since","narrow","abbr","until","eraYearOrdinalRegex","eraYearOrdinalParse","isUpper","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","units","translateSeconds","translateSingular","special","relativeTimeWithSingular","relativeSeconds","translator","correctGrammaticalCase","wordKey","relativeTimeMr","monthsNominative","monthsSubjective","separator","numbersNouns","translateFuture","translatePast","numberNoun","numberAsNoun","hundred","ten","weekdaysCaseReplace","nominative","accusative","genitive","processHoursFunction","hookCallback","hooks","setHookCallback","isObjectEmpty","isUndefined","isNumber","createUTC","createLocalOrUTC","utc","defaultParsingFlags","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","momentProperties","updateInProgress","copyConfig","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","_relativeTime","pastFuture","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","isLeapYear","year","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","stringGet","stringSet","prioritized","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","p3","p4","addParseToken","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","localeMonthsShort","_monthsShort","handleStrictParse","monthName","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","dayOfMonth","getSetMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","ms","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","fwd","getUTCDay","dayOfYearFromWeeks","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","seconds","kInput","_isPm","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","globalLocale","baseConfig","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","loadLocale","oldLocale","_abbr","getSetGlobalLocale","getLocale","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","E","createLocal","gg","ISO_8601","RFC_2822","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configFromObject","dayOrDate","millisecond","createFromConfig","prepareConfig","configFromInput","isUTC","prototypeMin","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","isoWeek","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","utcOffset","offsetFromString","chunkOffset","matcher","cloneWithOffset","model","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","wholeMonthDiff","toISOString","keepOffset","toDate","inspect","datetime","zone","inputString","defaultFormatUtc","defaultFormat","humanize","fromNow","toNow","newLocaleData","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","_eras","localeErasParse","eraName","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","field","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","propIsEnumerable","test1","test2","test3","letter","shouldUseNative","symbols","hasMap","mapSizeDescriptor","mapSize","mapForEach","hasSet","setSizeDescriptor","setSize","setForEach","weakMapHas","weakSetHas","weakRefDeref","deref","booleanValueOf","functionToString","$match","$slice","$toUpperCase","$toLowerCase","$test","$join","$arrSlice","$floor","bigIntValueOf","gOPS","symToString","hasShammedSymbols","isEnumerable","gPO","O","addNumericSeparator","sepRegex","int","intStr","dec","inspectCustom","inspectSymbol","wrapQuotes","defaultStyle","quoteChar","quoteStyle","inspect_","maxStringLength","customInspect","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","getIndent","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","isElement","attrs","xs","singleLineValues","indentedJoin","isError","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isBigInt","isBoolean","isRegExp","ys","isPlainObject","protoTag","remaining","trailer","lowbyte","lineJoiner","symMap","numberIsNaN","getPolyfill","shim","keysShim","isArgs","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","keysWorksWithArguments","isarray","pathToRegexp","parse","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","escaped","group","asterisk","partial","optional","escapeGroup","escapeString","encodeURIComponentPretty","encode","pretty","segment","attachKeys","sensitive","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","propName","componentName","propFullName","secret","getShim","ReactPropTypes","bigint","bool","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","percentTwenties","Format","formatters","RFC1738","RFC3986","allowDots","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decoder","decode","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictNullHandling","numberStr","parseArrayValue","givenKey","valuesParsed","leaf","cleanRoot","parseObject","normalizeParseOptions","tempObj","cleanStr","skipIndex","bracketEqualsPos","maybeMap","encodedVal","combine","parseValues","compact","getSideChannel","arrayPrefixGenerators","indices","pushToArray","valueOrArray","toISO","addQueryPrefix","encoder","encodeValuesOnly","formatter","serializeDate","skipNulls","sentinel","generateArrayPrefix","sideChannel","tmpSc","step","findFlag","keyValue","valuesArray","valuesJoined","objKeys","keyPrefix","valueSideChannel","normalizeStringifyOptions","arrayFormat","joined","hexTable","arrayToObject","acc","queue","compacted","compactQueue","strWithoutPlus","unescape","defaultEncoder","mapped","mergeTarget","targetItem","getAceInstance","editorEvents","debounce","isInShadow","onBeforeLoad","onValidate","wrapEnabled","refEditor","editorProps","debounceChangePeriod","navigateToFileEnd","updatePlaceholder","handleMarkers","availableOptions","editorOptions","handleOptions","oldProps","oldClass","silent","cursorStart","handleScrollMargins","margins","currentMarkers","showPlaceholder","updateRef","divStyle","enableSnippets","enableBasicAutocompletion","enableLiveAutocompletion","ReactAce","DiffMatchPatch","lhString","rhString","diffedLines","generateDiffedLines","setCodeMarkers","C","chunkType","firstChar","lastChar","linesToHighlight","codeEditorSettings","newMarkerSet","markerObj","DiffComponent","acequire","splitEditor","defaultValueForEditor","valueForEditor","newAnnotations","newMarkers","sp","nextValue","oldAnnotations","oldMarkers","SplitComponent","aa","ba","ca","da","ea","fa","ha","ia","ja","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","D","oa","pa","qa","ma","na","la","setAttributeNS","xlinkHref","ra","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","sa","ta","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","construct","Qa","_render","Ra","$$typeof","_context","_payload","_init","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","checked","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","controlled","$a","ab","bb","eb","db","fb","defaultSelected","gb","dangerouslySetInnerHTML","hb","ib","jb","lb","mb","nb","ob","namespaceURI","MSApp","execUnsafeLocalFunction","pb","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","order","orphans","widows","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","rb","sb","tb","setProperty","ub","menuitem","area","br","embed","hr","img","keygen","link","track","wbr","vb","wb","xb","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","onError","Sb","Tb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","ac","cc","sibling","current","bc","dc","fc","gc","hc","ic","jc","kc","lc","mc","nc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","nativeEvent","targetContainers","delete","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","hydrate","containerInfo","xc","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","transition","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","F","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","clz32","bd","cd","LN2","unstable_UserBlockingPriority","ed","gd","hd","jd","kd","ld","md","nd","od","pd","qd","_reactName","_targetInst","isDefaultPrevented","isPropagationStopped","cancelBubble","isPersistent","wd","xd","yd","sd","eventPhase","isTrusted","td","ud","vd","Ad","zd","buttons","fromElement","toElement","movementX","movementY","Bd","Dd","Fd","Hd","elapsedTime","pseudoElement","Id","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","targetTouches","changedTouches","Xd","Yd","deltaZ","Zd","$d","ae","be","documentMode","de","ee","fe","ge","he","ie","le","color","email","password","tel","me","ne","oe","pe","qe","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","Me","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","Oe","contentEditable","Pe","Qe","Re","Se","Te","Ue","anchorNode","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","G","$e","af","bf","cf","df","Nb","z","ef","ff","parentWindow","gf","hf","J","K","Q","je","ke","jf","kf","lf","mf","autoFocus","nf","__html","of","pf","qf","rf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","H","I","Cf","N","Df","Ef","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","Tf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","bg","cg","dg","eg","fg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","mg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","effects","yg","zg","eventTime","lane","Ag","Bg","Cg","A","Dg","Eg","Fg","Gg","Kg","isMounted","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","shouldComponentUpdate","isPureReactComponent","Mg","updater","Ng","UNSAFE_componentWillReceiveProps","Og","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Pg","Qg","_owner","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","Wg","Xg","done","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","P","ih","memoizedProps","revealOrder","jh","kh","lh","mh","nh","oh","pendingProps","ph","qh","rh","sh","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","wh","xh","S","T","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","baseQueue","Ih","Jh","Kh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","U","useState","getSnapshot","subscribe","useEffect","setSnapshot","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","readContext","useCallback","useContext","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useDebugValue","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","ReactCurrentOwner","fi","gi","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","componentWillUpdate","qi","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","fallback","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","xi","yi","zi","rendering","renderingStartTime","tail","tailMode","Ai","Fi","Gi","wasMultiple","multiple","V","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","componentDidCatch","Ti","componentStack","Ui","Vi","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","Zi","$i","aj","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","hj","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","X","Y","qj","rj","sj","tj","uj","vj","wj","ck","Z","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Tc","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","focusedElem","ek","createRange","removeAllRanges","onCommitFiberRoot","fk","gk","ik","isReactComponent","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","ok","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","sk","uk","hk","_calculateChangedBits","unstable_observedBits","unmount","form","Vj","vk","Events","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","createPortal","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","__reactInternalSnapshotFlag","__reactInternalSnapshot","foundWillMountName","foundWillReceivePropsName","foundWillUpdateName","newApiName","maybeSnapshot","snapshot","__suppressDeprecationWarning","_createClass","protoProps","staticProps","scriptLoading","scriptLoaded","scriptDidError","ReactStripeCheckout","onScriptLoaded","stripeHandler","StripeCheckout","configure","stripeKey","hasPendingClick","showStripeDialog","onScriptError","hideLoadingDialog","onClosed","_isMounted","closed","onOpened","opened","getConfig","showLoadingDialog","handleOnMouseDown","buttonActive","handleOnMouseUp","canceled","promise","onScriptTagCreated","async","loadPromise","onerror","accept","isCanceled","catch","updateStripeHandler","close","reconfigureOnUpdate","triggerEvent","onMouseOut","background","border","textDecoration","borderRadius","boxShadow","userSelect","backgroundImage","textShadow","textStyle","label","desktopShowModal","ComponentClass","renderDisabledButton","renderDefaultStripeButton","image","currency","panelLabel","zipCode","billingAddress","shippingAddress","allowRememberMe","bitcoin","alipay","alipayReusable","forceUpdate","__self","__source","_status","_result","IsSomeRendererActing","PureComponent","_currentValue2","_threadCount","createFactory","createRef","forwardRef","lazy","memo","$Object","hasIndices","multiline","dotAll","sticky","flagsBound","TypeErr","performance","MessageChannel","unstable_forceFrameRate","port2","port1","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","$wm","$m","$o","channel","assert","objects","listGet","listHas","listSet","Agent","_defaults","_setDefaults","def","safeStringify","qs","RequestBase","ResponseBase","Request","request","getXHR","protocol","ActiveXObject","serialize","pushEncodedKeyValuePair","subkey","parseString","isJSON","Response","responseType","statusText","_setStatusProperties","headers","fields","parseHeader","getAllResponseHeaders","header","getResponseHeader","_setHeaderProperties","_responseType","response","_parseBody","_query","_header","new_err","err_","rawResponse","statusCode","_isResponseOK","serializeObject","json","xml","urlencoded","_parser","toError","auth","user","pass","btoa","_auth","query","file","_getFormData","_formData","FormData","_shouldRetry","_retry","_callback","_maxRetries","retries","_retries","crossDomainError","crossDomain","agent","write","pipe","_isHost","_endCalled","_finalizeQueryString","_end","_setUploadTimeout","_uploadTimeout","_uploadTimeoutTimer","_timeoutError","_aborted","_setTimeouts","_responseTimeoutTimer","timedout","handleProgress","percent","loaded","upload","username","_withCredentials","withCredentials","contentType","_serializer","setRequestHeader","post","put","_timer","_timeout","_responseTimeout","retry","_retryCallback","ERROR_CODES","STATUS_CODES","override","timedoutError","_fullfilledPromise","use","_okCallback","getHeader","unset","abort","base64Encoder","redirects","_maxRedirects","maxResponseSize","_maxResponseSize","isObject_","sortQuery","_sort","includes","queryArray","_appendQueryString","reason","errno","ct","links","parseLinks","statusType","redirect","clientError","serverError","created","accepted","noContent","badRequest","unauthorized","notAcceptable","forbidden","notFound","unprocessableEntity","cleanHeader","changesOrigin","authorization","cookie","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","amdD","definition","globalThis","nmd","paths","requestAnimFrame","throttled","thisArg","updateFn","updateArgs","ticking","rest","_toLeftRightCenter","align","_alignStartEnd","isNullOrUndef","isNumberFinite","finiteOrDefault","valueOrDefault","toDimension","dimension","endsWith","each","loopable","_elementsEqual","a0","a1","ilen","v0","datasetIndex","klen","isValidKey","_merger","tval","sval","sources","merger","mergeIf","_mergerIf","indexOfDotOrLength","resolveObjectKey","_capitalize","defined","setsEqual","PI","TAU","PITAU","INFINITY","POSITIVE_INFINITY","RAD_PER_DEG","HALF_PI","QUARTER_PI","TWO_THIRDS_PI","log10","niceNum","roundedRange","almostEquals","niceRange","fraction","epsilon","_setMinAndMaxByKey","toRadians","degrees","toDegrees","radians","_decimalPlaces","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","atan2","distanceBetweenPoints","pt1","pt2","_angleDiff","_normalizeAngle","_angleBetween","sameAngleIsFullCircle","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","_isBetween","atEdge","elasticIn","sin","elasticOut","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInSine","cos","easeOutSine","easeInOutSine","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInElastic","easeOutElastic","easeInOutElastic","easeInBack","easeOutBack","easeInOutBack","easeInBounce","easeOutBounce","easeInOutBounce","hex","h1","h2","hexString","isShort","lim","p2b","n2b","b2n","n2p","RGB_RE","HUE_RE","hsl2rgbn","hsv2rgbn","hwb2rgbn","rgb","rgb2hsl","calln","hsl2rgb","hue","hueParse","hwb2rgb","hsv2rgb","map$1","OiceXe","antiquewEte","aqua","aquamarRe","azuY","beige","bisque","black","blanKedOmond","XeviTet","bPwn","burlywood","caMtXe","KartYuse","KocTate","cSO","cSnflowerXe","cSnsilk","crimson","cyan","xXe","xcyan","xgTMnPd","xWay","xgYF","xgYy","xkhaki","xmagFta","xTivegYF","xSange","xScEd","xYd","xsOmon","xsHgYF","xUXe","xUWay","xUgYy","xQe","xviTet","dAppRk","dApskyXe","dimWay","dimgYy","dodgerXe","fiYbrick","flSOwEte","foYstWAn","fuKsia","gaRsbSo","ghostwEte","gTd","gTMnPd","Way","gYF","gYFLw","gYy","honeyMw","hotpRk","RdianYd","Rdigo","ivSy","khaki","lavFMr","lavFMrXsh","lawngYF","NmoncEffon","ZXe","ZcSO","Zcyan","ZgTMnPdLw","ZWay","ZgYF","ZgYy","ZpRk","ZsOmon","ZsHgYF","ZskyXe","ZUWay","ZUgYy","ZstAlXe","ZLw","lime","limegYF","lRF","magFta","maPon","VaquamarRe","VXe","VScEd","VpurpN","VsHgYF","VUXe","VsprRggYF","VQe","VviTetYd","midnightXe","mRtcYam","mistyPse","moccasR","navajowEte","navy","Tdlace","Tive","TivedBb","Sange","SangeYd","ScEd","pOegTMnPd","pOegYF","pOeQe","pOeviTetYd","papayawEp","pHKpuff","peru","pRk","plum","powMrXe","purpN","YbeccapurpN","Psybrown","PyOXe","saddNbPwn","sOmon","sandybPwn","sHgYF","sHshell","siFna","silver","skyXe","UXe","UWay","UgYy","snow","sprRggYF","stAlXe","tan","teO","tEstN","tomato","viTet","JHt","wEte","wEtesmoke","Lw","LwgYF","names$1","nameParse","unpacked","tkeys","unpack","transparent","modHSL","ratio","fromObject","functionParse","rgbParse","Color","_rgb","_valid","valid","rgbString","hslString","mix","weight","c2","w2","alpha","clearer","greyscale","opaquer","lighten","darken","saturate","desaturate","rotate","deg","index_esm","isPatternOrGradient","CanvasGradient","CanvasPattern","getHoverColor","overrides","descriptors","getScope$1","_descriptors","backgroundColor","borderColor","datasets","chart","getDevicePixelRatio","family","hover","hoverBackgroundColor","ctx","hoverBorderColor","hoverColor","indexAxis","interaction","intersect","maintainAspectRatio","onHover","parsing","plugins","responsive","scale","scales","showLine","drawActiveElementsOnTop","describe","targetScope","targetName","scopeObject","targetScopeObject","privateName","_scriptable","startsWith","_indexable","_fallback","_measureText","longest","textWidth","measureText","_longestText","arrayOfThings","garbageCollect","save","jlen","thing","nestedThing","restore","gcLen","_alignPixel","pixel","currentDevicePixelRatio","halfWidth","clearCanvas","getContext","resetTransform","clearRect","drawPoint","xOffset","yOffset","cornerRadius","pointStyle","rotation","radius","rad","drawImage","beginPath","arc","closePath","lineTo","SQRT1_2","fill","borderWidth","stroke","_isPointInArea","clipArea","clip","unclipArea","_steppedLineTo","flip","midpoint","_bezierCurveTo","bezierCurveTo","cp1x","cp2x","cp1y","cp2y","renderText","strokeColor","translation","fillStyle","textAlign","textBaseline","setRenderOpts","strokeStyle","lineWidth","strokeText","maxWidth","fillText","decorateText","strikethrough","underline","metrics","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","yDecoration","decorationWidth","addRoundedRectPath","topLeft","bottomLeft","bottomRight","topRight","LINE_HEIGHT","FONT_STYLE","toLineHeight","_readValueToProps","read","toTRBL","toTRBLCorners","toPadding","toFont","toFontString","inputs","cacheable","parentContext","_lookup","table","_lookupByKey","_rlookupByKey","arrayEvents","unlistenArrayEvents","stub","_chartjs","_arrayUnique","items","_createResolver","scopes","rootScopes","getTarget","_resolve","_cacheable","_scopes","_rootScopes","_getTarget","deleteProperty","_keys","_cached","proxy","readKey","needsSubResolver","createSubResolver","_resolveWithPrefixes","getKeysFromAllScopes","storage","_storage","_attachContext","subProxy","descriptorDefaults","_proxy","_subProxy","_stack","setContext","isScriptable","_resolveScriptable","isIndexable","_resolveArray","_resolveWithContext","allKeys","scriptable","indexable","_allKeys","resolveFallback","getScope","addScopes","parentScopes","parentFallback","allScopes","addScopesFromKey","subGetTarget","resolveKeysFromAllScopes","EPSILON","getPoint","points","getValueAxis","splineCurve","firstPoint","middlePoint","afterPoint","d01","d12","s01","s12","splineCurveMonotone","valueAxis","pointsLen","deltaK","mK","pointBefore","pointCurrent","pointAfter","slopeDelta","alphaK","betaK","tauK","squaredMagnitude","monotoneAdjust","iPixel","vPixel","monotoneCompute","capControlPoint","pt","_updateBezierControlPoints","loop","controlPoints","spanGaps","cubicInterpolationMode","tension","capBezierPoints","inArea","inAreaPrev","inAreaNext","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","positions","getPositionedStyle","getRelativePosition","evt","borderBox","boxSizing","paddings","borders","box","native","offsetY","shadowRoot","useOffsetPos","getCanvasPosition","round1","getMaximumSize","bbWidth","bbHeight","aspectRatio","containerSize","containerStyle","containerBorder","containerPadding","getContainerSize","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","setTransform","supportsEventListenerOptions","passiveSupported","readUsedSize","getPropertyValue","getStyle","_pointInLine","_steppedInterpolation","_bezierInterpolation","cp1","cp2","intlCache","formatNumber","cacheKey","Intl","NumberFormat","getNumberFormat","getRtlAdapter","rtl","rectX","xPlus","leftForLtr","itemWidth","getRightToLeftAdapter","_itemWidth","overrideTextDirection","getPropertyPriority","prevTextDirection","restoreTextDirection","propertyFn","between","normalize","normalizeSegment","_boundSegment","bounds","startBound","endBound","getSegment","prevValue","subStart","shouldStart","shouldStop","_boundSegments","segments","splitByStyles","segmentOptions","chartContext","_chart","baseStyle","readStyle","_datasetIndex","prevStyle","addStyle","p0","p0DataIndex","p1DataIndex","styleChanged","doSplitByStyles","borderCapStyle","borderDash","borderDashOffset","borderJoinStyle","animator","_request","_charts","_running","_lastDate","_notify","anims","numSteps","initial","currentStep","_refresh","_update","draw","_active","_total","tick","_getAnims","charts","complete","progress","listen","cur","_duration","interpolators","boolean","factor","c0","Animation","cfg","currentValue","_fn","_easing","easing","_start","_loop","_target","_prop","_from","_to","_promises","elapsed","remain","wait","promises","rej","resolved","animationOptions","colors","animations","visible","Animations","_properties","animatedProps","_animateOptions","newOptions","$shared","$animations","resolveTargetOptions","_createAnimations","awaitAll","scaleClip","allowedOverflow","getSortedDatasetIndices","filterVisible","metasets","_getSortedDatasetMetas","applyStack","dsIndex","singleMode","otherValue","isStacked","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","getMatchingVisibleMetas","updateStacks","controller","parsed","_cachedMeta","_stacks","iScale","iAxis","vAxis","indexScale","valueScale","getStackKey","_top","_bottom","getFirstScaleId","clearStacks","_parsed","isDirectUpdateMode","cloneIfNotShared","cached","DatasetController","_ctx","_cachedDataOpts","getMeta","_type","_parsing","_objectData","_sharedOptions","_drawStart","_drawCount","enableOptionSharing","$context","_syncList","initialize","linkScales","_stacked","addElements","updateIndex","dataset","getDataset","chooseId","xid","xAxisID","yid","yAxisID","rid","rAxisID","iid","iAxisID","vid","vAxisID","xScale","getScaleForId","yScale","rScale","getDatasetMeta","scaleID","_getOtherScale","_destroy","_dataCheck","adata","convertObjectDataToArray","isExtensible","datasetElementType","buildOrUpdateElements","resetNewElements","stackChanged","oldStacked","_resyncElements","scopeKeys","datasetScopeKeys","getOptionScopes","createResolver","sorted","_sorted","parseArrayData","parseObjectData","parsePrimitiveData","isNotInOrderComparedToPrev","getLabels","singleScale","xAxisKey","yAxisKey","getParsed","getDataElement","updateRangeFromParsed","parsedValue","getMinMax","canStack","otherScale","createStack","NEGATIVE_INFINITY","otherMin","otherMax","minDefined","maxDefined","getUserBounds","_skip","getAllParsedValues","getMaxOverflow","getLabelAndValue","getLabelForValue","_clip","toClip","defaultClip","chartArea","resolveDatasetElementOptions","resolveDataElementOptions","dataIndex","raw","createDataContext","createDatasetContext","_resolveElementOptions","dataElementType","sharing","datasetElementScopeKeys","resolveNamedOptions","_resolveAnimations","datasetAnimationScopeKeys","getSharedOptions","includeOptions","sharedOptions","_animationsDisabled","updateElement","updateSharedOptions","_setStyle","removeHoverStyle","setHoverStyle","_removeDatasetHoverStyle","_setDatasetHoverStyle","arg1","arg2","numMeta","numData","_insertElements","_removeElements","updateElements","_sync","_dataChanges","_onDataPush","_onDataPop","_onDataShift","_onDataSplice","newCount","_onDataUnshift","computeMinSampleSize","$bar","visibleMetas","getAllScaleValues","_length","updateMinAndPrev","getPixelForValue","ticks","getPixelForTick","parseValue","startValue","endValue","barStart","barEnd","_custom","parseFloatBar","parseArrayOrPrimitive","isFloatBar","custom","setBorderSkipped","edge","borderSkipped","horizontal","borderProps","enableBorderRadius","parseEdge","orig","startEnd","setInflateAmount","inflateAmount","BarController","iAxisKey","vAxisKey","super","bars","getBasePixel","isHorizontal","ruler","_getRuler","firstOpts","vpixels","_calculateBarValuePixels","ipixels","_calculateBarIndexPixels","_getStacks","grouped","_getStackCount","_getStackIndex","pixels","barThickness","_startPixel","_endPixel","stackCount","categoryPercentage","barPercentage","baseValue","minBarLength","actualBase","floating","getDataVisibility","barSign","halfGrid","getLineWidthForValue","skipNull","maxBarThickness","computeFlexCategoryTraits","thickness","computeFitCategoryTraits","stackIndex","rects","_index_","grid","_value_","beginAtZero","BubbleController","getPixelForDecimal","DoughnutController","innerRadius","outerRadius","_getRotation","_getCircumference","circumference","_getRotationExtents","isDatasetVisible","arcs","spacing","getMaxBorderWidth","getMaxOffset","maxSize","cutout","chartWeight","_getRingWeight","ratioX","ratioY","startAngle","endAngle","endX","endY","calcMax","calcMin","maxX","maxY","minX","minY","getRatioAndOffset","maxRadius","radiusLength","_getVisibleDatasetWeightTotal","calculateTotal","_getRingWeightOffset","_circumference","animateRotate","calculateCircumference","animationOpts","centerX","centerY","animateScale","metaData","borderAlign","hoverBorderWidth","hoverOffset","ringWeightOffset","legend","generateLabels","legendItem","toggleDataVisibility","tooltipItem","dataLabel","formattedValue","LineController","_dataset","animationsDisabled","pointCount","getStartAndCountOfVisiblePoints","_scaleRanges","xmin","xmax","ymin","ymax","changed","scaleRangesChanged","_decimated","animated","maxGapLength","directUpdate","prevParsed","nullData","lastPoint","updateControlPoints","PolarAreaController","_updateRadius","minSize","cutoutPercentage","getVisibleDatasetCount","xCenter","yCenter","datasetStartAngle","getIndexAngle","defaultAngle","countVisibleElements","_computeAngle","getDistanceFromCenterForValue","angleLines","circular","pointLabels","PieController","RadarController","_fullLoop","pointPosition","getPointPositionForValue","ScatterController","DateAdapter","timestamp","members","adapters","_date","metaset","lookupMethod","_reversePixels","optimizedEvaluateItems","getSortedVisibleDatasetMetas","getIntersectItems","useFinalPosition","_minPadding","inRange","getNearestCartesianItems","distanceMetric","useX","useY","getDistanceMetricForAxis","minDistance","getCenterPoint","getNearestItems","getProps","getNearestRadialItems","getAxisItems","rangeMethod","intersectsItem","evaluateAllVisibleItems","Interaction","modes","nearest","STATIC_POSITIONS","filterByPosition","filterDynamicPositionByAxis","sortByWeight","setLayoutDims","layouts","stackWeight","placed","buildStacks","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","availableHeight","getCombinedMax","maxPadding","updateMaxPadding","boxPadding","updateDims","getPadding","newWidth","outerWidth","newHeight","outerHeight","widthChanged","same","getMargins","marginForPositions","fitBoxes","boxes","refitBoxes","refit","setBoxDims","placeBoxes","userPadding","autoPadding","addBox","_layers","removeBox","layoutItem","minPadding","layoutBoxes","wrapBoxes","centerHorizontal","centerVertical","leftAndTop","rightAndBottom","vertical","buildLayoutBoxes","verticalBoxes","horizontalBoxes","beforeLayout","visibleVerticalBoxCount","updatePos","handleMaxPadding","BasePlatform","acquireContext","releaseContext","isAttached","updateConfig","BasicPlatform","EVENT_TYPES","touchstart","touchmove","touchend","pointerenter","pointerdown","pointermove","pointerup","pointerleave","pointerout","isNullOrEmpty","eventListenerOptions","nodeListContains","createAttachObserver","observer","MutationObserver","trigger","addedNodes","removedNodes","childList","subtree","createDetachObserver","drpListeningCharts","oldDevicePixelRatio","onWindowResize","dpr","createResizeObserver","contentRect","listenDevicePixelRatioChanges","releaseObserver","unlistenDevicePixelRatioChanges","createProxyAndListen","fromNativeEvent","DomPlatform","renderHeight","renderWidth","displayWidth","displayHeight","initCanvas","proxies","$proxies","isConnected","tooltipPosition","hasValue","final","defaultRoutes","numeric","tickValue","notation","maxTick","calculateDelta","logDelta","numDecimal","minimumFractionDigits","maximumFractionDigits","logarithmic","Ticks","autoSkip","tickOpts","ticksLimit","maxTicksLimit","tickLength","_tickSize","maxScale","maxChart","_maxLength","determineMaxTicks","majorIndices","major","getMajorIndices","numMajorIndices","newTicks","skipMajors","evenMajorSpacing","getEvenSpacing","factors","_factorize","calculateSpacing","avgMajorSpacing","majorStart","majorEnd","grace","drawBorder","drawOnChartArea","drawTicks","tickWidth","tickColor","minRotation","maxRotation","mirror","textStrokeWidth","textStrokeColor","autoSkipPadding","labelOffset","minor","crossAlign","showLabelBackdrop","backdropColor","backdropPadding","offsetFromEdge","sample","numItems","getPixelForGridLine","offsetGridLines","validIndex","lineValue","getTickMarkLength","getTitleHeight","titleAlign","reverseAlign","Scale","_margins","paddingTop","paddingBottom","labelRotation","_range","_gridLineItems","_labelItems","_labelSizes","_longestTextCache","_userMax","_userMin","_suggestedMax","_suggestedMin","_ticksLength","_borderValue","_dataLimitsCached","suggestedMin","suggestedMax","metas","getTicks","xLabels","yLabels","beforeUpdate","sampleSize","beforeSetDimensions","setDimensions","afterSetDimensions","beforeDataLimits","determineDataLimits","afterDataLimits","minmax","keepZero","_addGrace","beforeBuildTicks","buildTicks","afterBuildTicks","samplingEnabled","_convertTicksToLabels","beforeCalculateLabelRotation","calculateLabelRotation","afterCalculateLabelRotation","beforeFit","fit","afterFit","afterUpdate","startPixel","endPixel","reversePixels","_alignToPixels","alignToPixels","_callHooks","notifyPlugins","beforeTickToLabelConversion","generateTickLabels","afterTickToLabelConversion","numTicks","maxLabelDiagonal","_isVisible","labelSizes","_getLabelSizes","maxLabelWidth","widest","maxLabelHeight","highest","asin","titleOpts","gridOpts","titleHeight","tickPadding","angleRadians","labelHeight","labelWidth","_calculatePadding","_handleMargins","isRotated","labelsBelowTicks","offsetRight","isFullSize","_computeLabelSizes","caches","widths","heights","tickFont","fontString","nestedLabel","widestLabelSize","highestLabelSize","_resolveTickFontOptions","valueAt","getValueForPixel","decimal","getDecimalForPixel","getBaseValue","createTickContext","optionTicks","rot","_computeGridLineItems","ticksLength","tl","borderOpts","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","positionAxisID","optsAtIndex","lineColor","tickBorderDash","tickBorderDashOffset","_computeLabelItems","tickAndPadding","hTickAndPadding","textOffset","_getXAxisLabelAlignment","_getYAxisLabelAlignment","halfCount","backdrop","labelPadding","_computeLabelArea","drawBackground","fillRect","findIndex","drawGrid","drawLine","setLineDash","lineDashOffset","lastLineWidth","drawLabels","drawTitle","titleX","titleY","titleArgs","tz","gz","axisID","_maxDigits","TypedRegistry","isForType","isPrototypeOf","parentScope","isIChartComponent","itemDefaults","routes","propertyParts","sourceName","sourceScope","routeDefaults","registerDefaults","registry","controllers","_typedRegistries","_each","addControllers","addPlugins","addScales","getController","_get","getPlugin","getScale","removeControllers","removeElements","removePlugins","removeScales","typedRegistry","_getRegistryForType","_exec","itemReg","camelMethod","PluginService","notify","hook","_createDescriptors","plugin","invalidate","_oldCache","_notifyStateChanges","allPlugins","getOpts","pluginOpts","createDescriptors","previousDescriptors","pluginScopeKeys","getIndexAxis","datasetDefaults","determineAxis","scaleOptions","initOptions","chartDefaults","configScales","chartIndexAxis","firstIDs","scaleConf","defaultId","getDefaultScaleIDFromAxis","defaultScaleOptions","defaultID","getAxisFromDefaultScaleID","mergeScaleConfig","initData","keyCache","keysCached","cachedKeys","generate","addIfFound","Config","initConfig","_scopeCache","_resolverCache","clearCache","datasetType","additionalOptionScopes","_cachedScopes","mainScope","resetCache","keyLists","chartOptionScopes","subPrefixes","getResolver","hasFunction","needContext","resolverCache","KNOWN_POSITIONS","positionIsHorizontal","compare2Level","onAnimationsComplete","onComplete","onAnimationProgress","onProgress","getCanvas","instances","getChart","moveNumericKeys","intKey","Chart","userConfig","initialCanvas","existingChart","OffscreenCanvas","_detectPlatform","_options","_aspectRatio","_metasets","_lastEvent","_responsiveListeners","_sortedMetasets","_plugins","_hiddenIndices","attached","_doResize","resizeDelay","_initialize","bindEvents","_resizeBeforeDraw","_resize","newSize","newRatio","ensureScalesHaveIDs","axisOptions","buildOrUpdateScales","scaleOpts","updated","isRadial","dposition","dtype","scaleType","hasUpdated","_updateMetasets","_destroyDatasetMeta","_removeUnreferencedMetasets","buildOrUpdateControllers","newControllers","ControllerClass","_resetElements","animsDisabled","_updateScales","_checkEventBindings","_updateHiddenIndices","_updateLayout","_updateDatasets","_eventHandler","_updateHoverStyles","existingEvents","newEvents","unbindEvents","_getUniformDataChanges","datasetCount","makeSet","changeSet","noArea","_idx","_updateDataset","layers","_drawDatasets","_drawDataset","useClip","getElementsAtEventForMode","setDatasetVisibility","_updateVisibility","_stop","toBase64Image","toDataURL","bindUserEvents","bindResponsiveEvents","_add","_remove","detached","updateHoverStyle","getActiveElements","setActiveElements","activeElements","lastActive","hoverOptions","deactivated","activated","inChartArea","eventFilter","_handleEvent","_getActiveElements","isClick","_isClickEvent","lastEvent","determineLastEvent","invalidatePlugins","clipArc","pixelMargin","angleMargin","parseBorderRadius$1","angleDelta","halfThickness","innerLimit","computeOuterLimit","outerArcLimit","outerStart","outerEnd","innerStart","innerEnd","rThetaToXY","theta","pathArc","innerR","spacingOffset","avNogSpacingRadius","angleOffset","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","pCenter","p8","lineJoin","fullCircles","drawFullCircleBorders","ArcElement","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","radiusOffset","drawArc","lineCap","pathVars","paramsStart","paramsEnd","segmentStart","segmentEnd","pathSegment","lineMethod","stepped","getLineMethod","fastPathSegment","prevX","lastY","avgX","countX","drawX","truncX","_getSegmentMethod","usePath2D","Path2D","_path","strokePathWithCache","segmentMethod","strokePathDirect","LineElement","_points","_segments","_pointsUpdated","findStartAndEnd","solidSegments","_computeSegments","interpolate","_interpolate","_getInterpolationMethod","interpolated","inRange$1","hitRadius","PointElement","inXRange","inYRange","hoverRadius","getBarBounds","bar","half","skipOrLimit","boundingRects","maxW","maxH","parseBorderWidth","maxR","enableBorder","parseBorderRadius","skipX","skipY","addNormalRectPath","inflateRect","refRect","BarElement","addRectPath","decodeFill","fillOption","parseFillOption","simpleArc","computeBoundary","computeCircularBoundary","computeLinearBoundary","findSegmentEnd","addPointsBelow","sourcePoint","linesBelow","postponed","findPoint","pointValue","linePoints","firstValue","getLineByIndex","sourcePoints","below","getLinesBelow","createBoundaryLine","buildStackLine","boundary","pointsFromSegments","resolveTarget","propagate","visited","clipY","getBounds","_getEdge","clipBounds","interpolatedLineTo","interpolatedPoint","_fill","tpoints","targetSegments","tgt","subBounds","fillSources","fillSource","notShape","lineLoop","targetLoop","drawfill","lineOpts","above","doFill","plugin_filler","afterDatasetsUpdate","$filler","beforeDraw","drawTime","beforeDatasetsDraw","beforeDatasetDraw","Title","_padding","textSize","_drawArgs","fontOpts","plugin_title","_element","titleBlock","createTitle","positioners","average","eventPosition","nearestElement","tp","pushOrConcat","toPush","splitNewlines","createTooltipItem","getTooltipSize","boxWidth","boxHeight","bodyFont","titleFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","beforeBody","afterBody","titleSpacing","titleMarginBottom","displayColors","bodySpacing","footerMarginTop","footerSpacing","widthPadding","maxLineWidth","determineXAlign","yAlign","chartWidth","xAlign","caret","caretSize","caretPadding","doesNotFitWithAlign","determineAlignment","determineYAlign","getBackgroundPoint","paddingAndSize","alignX","alignY","getAlignedX","getBeforeAfterBodyLines","overrideCallbacks","_eventPosition","_size","_cachedAnimations","_tooltipItems","dataPoints","caretX","caretY","labelColors","labelPointStyles","labelTextColors","tooltipItems","getTitle","beforeTitle","afterTitle","getBeforeBody","getBody","bodyItems","scoped","beforeLabel","afterLabel","getAfterBody","getFooter","beforeFooter","afterFooter","_createItems","itemSort","labelColor","labelPointStyle","labelTextColor","positionAndSize","backgroundPoint","external","drawCaret","tooltipPoint","caretPosition","getCaretPosition","x3","y3","ptX","ptY","rtlHelper","titleColor","_drawColorBox","colorX","rtlColorX","yOffSet","colorY","usePointStyle","drawOptions","multiKeyBackground","outerX","innerX","strokeRect","drawBody","bodyAlign","bodyLineHeight","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","bodyColor","drawFooter","footerAlign","footerColor","tooltipSize","quadraticCurveTo","_updateAnimationTarget","animX","animY","hasTooltipContent","globalAlpha","textDirection","positionChanged","_positionChanged","_ignoreReplayEvents","plugin_tooltip","afterInit","afterDraw","afterEvent","labelCount","findOrAddLabel","addedLabels","addIfString","CategoryScale","_startValue","_valueRange","_addedLabels","generateTicks$1","generationOptions","dataRange","precision","maxTicks","maxDigits","includeBounds","maxSpaces","rmin","rmax","countDefined","minSpacing","niceMin","niceMax","numSpaces","rounded","almostWhole","decimalPlaces","relativeLabelSize","LinearScaleBase","_endValue","handleTickRangeOptions","setMin","setMax","minSign","maxSign","MIN_SAFE_INTEGER","getTickLimit","stepSize","computeTickLimit","LinearScale","isMajor","tickVal","LogarithmicScale","_zero","exp","endExp","endSignificand","significand","lastTick","generateTicks","getTickBackdropHeight","determineLimits","fitWithPointLabels","valueCount","_pointLabels","pointLabelOpts","additionalAngle","centerPointLabels","getPointLabelContext","getPointPosition","drawingArea","plFont","updateLimits","setCenterPoint","_pointLabelItems","extra","outerDistance","pointLabelPosition","yForAngle","getTextAlignForAngle","leftForTextAlign","buildPointLabelItems","hLimits","vLimits","pathRadiusLine","RadialLinearScale","leftMovement","rightMovement","topMovement","bottomMovement","scalingFactor","getValueForDistanceFromCenter","scaledDistance","pointLabel","createPointLabelContext","distanceFromCenter","getBasePosition","getPointLabelPosition","drawPointLabels","gridLineOpts","drawRadiusLine","INTERVALS","common","UNITS","sorter","adapter","_adapter","parser","_parseOpts","determineUnitForAutoTicks","minUnit","capacity","interval","addTick","timestamps","ticksFromTimestamps","majorUnit","setMajorTicks","TimeScale","_unit","_majorUnit","_offsets","_normalized","displayFormats","normalized","_applyBounds","_getLabelBounds","getLabelTimestamps","timeOpts","_generate","_filterBetween","_getLabelCapacity","determineUnitForFormatting","determineMajorUnit","initOffsets","getDecimalForValue","hasWeekday","getDataTimestamps","tooltipFormat","_tickFormatFunction","minorFormat","majorFormat","_getLabelSize","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","exampleLabel","prevSource","nextSource","prevTarget","nextTarget","TimeSeriesScale","_table","_minPos","_tableRange","_getTimestampsForTable","buildLookupTable","FORMATS","trunc","Alignment","Elevation","Intent","Position","NS","BLUEPRINT_NAMESPACE","REACT_APP_BLUEPRINT_NAMESPACE","ACTIVE","ALIGN_LEFT","ALIGN_RIGHT","DARK","DISABLED","FILL","LARGE","LOADING","MINIMAL","OUTLINED","SMALL","VERTICAL","INTENT_PRIMARY","positionClass","elevationClass","FOCUS_DISABLED","TEXT_OVERFLOW_ELLIPSIS","BLOCKQUOTE","CODE","CODE_BLOCK","HEADING","LIST","BUTTON","BUTTON_GROUP","BUTTON_SPINNER","BUTTON_TEXT","DIALOG","DIALOG_CONTAINER","DIALOG_CLOSE_BUTTON","DIALOG_HEADER","DIVIDER","HTML_SELECT","LABEL","MENU","MENU_ITEM","MENU_ITEM_LABEL","MENU_SUBMENU","MENU_DIVIDER","MENU_HEADER","OVERLAY","OVERLAY_BACKDROP","OVERLAY_CONTENT","OVERLAY_INLINE","OVERLAY_OPEN","OVERLAY_SCROLL_CONTAINER","POPOVER","POPOVER_ARROW","POPOVER_BACKDROP","POPOVER_CAPTURING_DISMISS","POPOVER_CONTENT","POPOVER_DISMISS","POPOVER_DISMISS_OVERRIDE","POPOVER_OPEN","POPOVER_TARGET","POPOVER_WRAPPER","TRANSITION_CONTAINER","PORTAL","SPINNER","SPINNER_ANIMATION","SPINNER_HEAD","SPINNER_NO_SPIN","SPINNER_TRACK","TOAST","TOAST_CONTAINER","TOAST_MESSAGE","TOOLTIP","ICON","alignmentClass","elevation","intent","isRunning","handleMouseDown","isActive","focusEngine","InteractionModeEngine","FocusStyleManager","_setPrototypeOf","_inheritsLoose","isAbsolute","pathname","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","hash","currentLocation","hashIndex","searchIndex","parsePath","createTransitionManager","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","notifyListeners","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","globalHistory","canUseHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","fromIndex","go","revertPop","initialLocation","createHref","checkDOMListeners","isBlocked","nextKeys","replaceState","goBack","goForward","block","unblock","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","pushHashPath","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","nextIndex","nextEntries","canGo","commonjsGlobal","getUniqueId","_proto2","createNamedContext","historyContext","Router","_pendingLocation","staticContext","computeRootMatch","isExact","RouterContext","HistoryContext","cacheCount","matchPath","pathCache","regexp","compilePath","Route","computedMatch","createURL","staticHandler","methodName","HashRouter","createHistory","resolveToLocation","normalizeToLocation","createLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","isModifiedEvent","Link","ariaCurrent","activeStyle","classNameProp","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","extendStatics","__extends","__","__assign","__rest","__decorate","decorators","decorate","__spreadArrays","il","jl","INVALID_PROPS","removeNonHTMLProps","invalidProps","setRef","refTarget","isRefCallback","refHandler","refTargetParent","refTargetKey","refProp","isKeyboardClick","isNodeEnv","timeoutIds","requestIds","clearTimeouts","cancelAnimationFrames","requestId","validateProps","_prevProps","_prevState","_snapshot","handle","isReactNodeEmpty","skipArray","every","ensureElement","isReactElement","isElementOfType","ComponentType","createReactRef","IconSvgPaths16","IconSvgPaths20","Icon","icon","htmlTitle","iconSize","SIZE_STANDARD","htmlprops","pixelGridSize","SIZE_LARGE","renderSvgPaths","iconName","viewBox","pathsSize","pathStrings","fillRule","DISPLAYNAME_PREFIX","AbstractPureComponent2","PATH_LENGTH","Spinner","getSize","strokeOffset","getViewBox","pathLength","SIZE_SMALL","viewBoxX","viewBoxWidth","currentKeyDown","buttonRef","click","handleBlur","getCommonButtonProps","alignText","large","loading","outlined","minimal","small","renderChildren","rightIcon","handleRef","elementRef","AbstractButton","commonProps","htmlElement","tagClassName","htmlProps","H4","H6","cannotCreatePortal","REACT_CONTEXT_TYPES","blueprintPortalClassName","hasMounted","portalElement","createContainerElement","onChildrenMount","unstableRenderNoPortal","maybeAddClass","hasEverOpened","containerElement","refHandlers","maybeRenderChild","decoratedChild","enforceFocus","onOpening","onClosing","transitionDuration","transitionName","CSSTransitionImplicit","handleTransitionAddEnd","handleBackdropMouseDown","backdropProps","canOutsideClickClose","onClose","bringFocusInsideOverlay","handleDocumentClick","composed","composedPath","openStack","isClickInThisOverlayOrDescendant","isSameNode","handleDocumentFocus","stopImmediatePropagation","canEscapeKeyClose","Overlay","usePortal","childrenWithTransitions","maybeBackdrop","maybeRenderBackdrop","containerClasses","portalClassName","portalContainer","overlayWillOpen","overlayWillClose","autofocusElement","wrapperElement","backdropClassName","hasBackdrop","lastOpenedOverlay","getLastOpened","maybeRenderHeader","isCloseButtonShown","maybeRenderCloseButton","Button","Dialog","Divider","iconProps","optionChildren","HTMLSelect","ManagerReferenceNodeContext","ManagerReferenceNodeSetterContext","Manager","newReferenceNode","referenceNode","setReferenceNode","unwrapArray","InnerReference","Reference","timeoutDuration","longerTimeoutBrowsers","isBrowser","called","scheduled","functionToCheck","getStyleComputedProperty","getParentNode","getScrollParent","overflowX","overflowY","getReferenceNode","reference","isIE11","MSInputMethodContext","isIE10","getOffsetParent","noOffsetParent","offsetParent","nextElementSibling","getRoot","findCommonOffsetParent","element1","element2","DOCUMENT_POSITION_FOLLOWING","commonAncestorContainer","firstElementChild","element1root","getScroll","upperSide","scrollingElement","includeScroll","getBordersSize","sideA","sideB","getWindowSizes","getClientRect","sizes","horizScrollbar","vertScrollbar","getOffsetRectRelativeToArbitraryNode","fixedPosition","runIsIE","isHTML","childrenRect","parentRect","scrollParent","marginTop","marginLeft","getViewportOffsetRectRelativeToArtbitraryNode","excludeScroll","relativeOffset","isFixed","getFixedPositionOffsetParent","getBoundaries","popper","boundariesElement","boundaries","boundariesNode","isPaddingNumber","getArea","computeAutoPlacement","placement","sortedAreas","filteredAreas","computedPlacement","variation","getReferenceOffsets","commonOffsetParent","getOuterSizes","marginBottom","marginRight","getOppositePlacement","getPopperOffsets","referenceOffsets","popperRect","popperOffsets","isHoriz","mainSide","secondarySide","measurement","secondaryMeasurement","check","runModifiers","ends","isDestroyed","positionFixed","originalPlacement","isCreated","onCreate","isModifierEnabled","getSupportedPropertyName","upperProp","toCheck","willChange","disableEventListeners","removeOnDestroy","getWindow","attachToScrollParents","scrollParents","isBody","setupEventListeners","updateBound","scrollElement","eventsEnabled","enableEventListeners","isNumeric","setStyles","isFirefox","isModifierRequired","requestingName","requestedName","requesting","requested","validPlacements","placements","clockwise","BEHAVIORS","parseOffset","basePlacement","useHeight","fragments","frag","divider","ops","mergeWithPrevious","shiftvariation","isVertical","shiftOffsets","transformProp","popperStyles","escapeWithReference","opSide","arrowElement","sideCapitalized","altSide","arrowElementSize","popperMarginSide","popperBorderSide","sideValue","flipped","placementOpposite","flipOrder","behavior","refOffsets","overlapsRef","overflowsLeft","overflowsRight","overflowsTop","overflowsBottom","overflowsBoundaries","flippedVariationByRef","flipVariations","flippedVariationByContent","flipVariationsByContent","flippedVariation","getOppositeVariation","subtractLength","legacyGpuAccelerationOption","gpuAcceleration","offsetParentRect","shouldRound","noRound","referenceWidth","popperWidth","isVariation","horizontalToInteger","verticalToInteger","getRoundedOffsets","prefixedProperty","invertTop","invertLeft","arrowStyles","modifierOptions","Popper","Defaults","jquery","Utils","PopperUtils","initialStyle","pointerEvents","initialArrowStyle","InnerPopper","popperNode","updatePopperInstance","arrowNode","applyStyle","updateStateModifier","popperInstance","destroyPopperInstance","referenceElement","setPopperNode","getPopperStyle","getPopperPlacement","outOfBoundaries","getOutOfBoundariesState","arrowProps","setArrowNode","getArrowStyle","elementIsOrContains","testElement","MapShim","getIndex","class_1","__entries__","global$1","requestAnimationFrame$1","transitionKeys","mutationObserverSupported","ResizeObserverController","connected_","mutationEventsAdded_","mutationsObserver_","observers_","onTransitionEnd_","refresh","leadingCall","trailingCall","lastCallTime","resolvePending","timeoutCallback","addObserver","connect_","removeObserver","observers","disconnect_","updateObservers_","activeObservers","gatherActive","hasActive","broadcastActive","characterData","_b","isReflowProperty","getInstance","instance_","defineConfigurable","getWindowOf","emptyRect","createRectInit","toFloat","getHTMLElementContentRect","positions_1","getPaddings","horizPad","vertPad","isDocumentElement","isSVGGraphicsElement","SVGGraphicsElement","getBBox","getContentRect","bbox","getSVGContentRect","ResizeObservation","broadcastWidth","broadcastHeight","contentRect_","broadcastRect","ResizeObserverEntry","rectInit","Constr","DOMRectReadOnly","createReadOnlyRect","ResizeObserverSPI","callbackCtx","activeObservations_","observations_","callback_","controller_","callbackCtx_","observations","unobserve","clearActive","observation","observeElement","observeParents","ResizeSensor","popover","popoverClassName","restProps","Popover","interactionKind","PopoverInteractionKind","HOVER_TARGET_ONLY","reposition","hoverCloseDelay","hoverOpenDelay","isVerticalPosition","getOppositePosition","getAlignment","getTransformOrigin","arrowSizeShift","arrowOffsetModifier","arrowSize","offsetSide","arrowOffsetSize","getArrowAngle","PopoverArrow","positionToPlacement","assertNever","CLICK","CLICK_TARGET_ONLY","HOVER","popoverRef","popoverElement","targetElement","hasDarkParent","getIsOpen","transformOrigin","isMouseInTargetOrPopover","lostFocusOnSamePage","handlePopoverRef","handleTargetRef","popperScheduleUpdate","renderPopover","popperProps","popoverHandlers","handlePopoverClick","handleMouseEnter","handleMouseLeave","popoverClasses","inheritDarkTheme","captureDismiss","isArrowEnabled","understandChildren","renderTarget","referenceProps","openOnTargetFocus","targetClassName","targetProps","isControlled","isHoverInteractionKind","targetTagName","finalTargetProps","handleTargetBlur","handleTargetFocus","handleTargetClick","rawTarget","rawTabIndex","clonedTarget","isElementInPopover","setOpenState","eventPopover","closest","isEventFromSelf","isEventPopoverCapturing","dismissElement","shouldDismiss","handleOverlayClose","updatePopoverState","wrapperTagName","isContentEmpty","wrapperClasses","getPopperModifiers","updateDarkParent","nextIsOpen","onInteraction","childrenCount","hasContentProp","hasTargetProp","contentProp","targetProp","targetChild","contentChild","defaultIsOpen","preventOverflow","arrowOffset","cancelOpenTimeout","isContentOverflowing","textRef","ellipsize","labelElement","shouldDismissPopover","textClassName","hasSubmenu","intentClass","anchorClasses","DISABLED_PROPS","maybeRenderLabel","liClasses","maybeRenderPopover","labelClassName","popoverProps","SUBMENU_POPOVER_MODIFIERS","MenuItem","ulRef","MenuDivider","Item","buttonGroupClasses","ButtonGroup","handleActionClick","triggerDismiss","handleCloseClick","startTimeout","maybeRenderActionButton","AnchorButton","didTimeoutExpire","onDismiss","Toast","toasts","toastId","renderToast","toast","getDismissHandler","timeoutExpired","dismiss","handleClose","Toaster","toaster","maxToasts","dismissIfAtLimit","createToastOptions","isNewToastKey","matchesKey","getToasts","getPositionClasses","canEscapeKeyClear","errorRes","error_msg","light","dark","chartColor1","chartColor2","emitDefer","SYNC","_token","subscription","_subscription","subscriptionM","emitChange","addChangeListener","removeChangeListener","ADD","DONE","_loaders","_done","progressBar","LoadingBar","EventDispatcher","uuid","zeroPad","capitalize","formatAmount","formatBytes","bytes","formatMs","formatUptime","formatDate","dateStr","getHours","getMinutes","getSeconds","formatDateShort","curDate","formatDateShortTime","syncId","sync","curSyncId","loader","activate","license","sessionTypes","admin","operatingSystems","linux","macos_1010","macos_1011","macos_1012","macos_1013","macos_1014","macos_1015","macos11","macos12","macos13","macos14","windows_xp","windows_7","windows_vista","windows_8","windows_10","windows_11","chrome_os","ios_8","ios_9","ios_10","ios_11","ios_12","ios_13","ios_14","ios_15","ios_16","ios_17","ios_18","android_4","android_5","android_6","android_7","android_8","android_9","android_10","android_11","android_12","android_13","android_14","blackberry_10","windows_phone","firefox_os","kindle","browsers","chrome","chrome_mobile","safari","safari_mobile","firefox","firefox_mobile","internet_explorer","internet_explorer_mobile","opera_mobile","locations","US","US_AL","US_AK","US_AZ","US_AR","US_CA","US_CO","US_CT","US_DE","US_FL","US_GA","US_HI","US_ID","US_IL","US_IN","US_IA","US_KS","US_KY","US_LA","US_ME","US_MD","US_MA","US_MI","US_MN","US_MS","US_MO","US_MT","US_NE","US_NV","US_NH","US_NJ","US_NM","US_NY","US_NC","US_ND","US_OH","US_OK","US_OR","US_PA","US_RI","US_SC","US_SD","US_TN","US_TX","US_UT","US_VT","US_VA","US_WA","US_DC","US_WV","US_WI","US_WY","AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BQ","BA","BW","BV","BR","IO","BG","BF","BI","CV","KH","CM","CA","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CW","CY","CZ","DK","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","NA","NR","NP","NL","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","BL","SH","KN","LC","MF","PM","VC","WS","SM","ST","SA","SN","RS","SC","SL","SG","SX","SK","SI","SB","SO","ZA","GS","SS","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TN","TR","TM","TC","TV","UG","UA","AE","GB","UM","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW","verticalAlign","actionProgress","borderBottomLeftRadius","borderBottomRightRadius","squareActionProgress","dialog","ConfirmButton","openDialog","closeDialog","closeDialogConfirm","onConfirm","confirmId","confirming","clearConfirm","safe","confirmInput","dialogClassName","dialogLabel","autoCapitalize","spellCheck","itemsList","confirmMsg","confirmElem","progressStyle","confirmStyle","progressClassName","card","card2","button2","button3","Subscription","plan","reactivate","balance","balanceLabel","canceling","cancel_at_period_end","periodEnd","period_end","trialEnd","trial_end","quantity","url_key","TRAVERSE","FILTER","LOAD","UNLOAD","_users","_filter","_map","users","usersM","page","_page","pageCount","_pageCount","pages","_count","_traverse","_filterCallback","administrator","_user","userM","_load","_unload","userId","roles","permissions","page_count","traverse","filt","userIds","_audits","_userId","audits","auditsM","audit","lastActivity","nameLink","User","userType","cardStyle","onSelect","last_active","SearchInput","SwitchNull","onToggle","filters","UsersFilter","menu","onFilter","pageWide","Page","wide","borderBottomStyle","PageHeader","buttonLast","onPage","borderSpacing","usersBox","heading","Users","curSelected","onDelete","lastSelected","usersDom","usr","filterClass","selectedNames","SHOW_REMOVED","_sessions","sessions","sessionsM","showRemoved","_showRemoved","_setShowRemoved","show_removed","NonState","initialized","iconClass","formatContinent","continent","continent_code","formatLocation","city","region","region_code","formatCountry","country","country_code","formatCoordinates","latitude","longitude","wordWrap","PageInfo","labelStyle","valueClass","progressClass","Session","sessionId","operating_system","browser","isp","ip","Sessions","showEnded","base64urlToBuffer","baseurl64String","base64String","atob","byteView","bufferToBase64url","copyValue","convertValue","conversionFn","schemaField","deriveFn","schema","required","derived","publicKeyCredentialDescriptorSchema","transports","simplifiedExtensionsSchema","appid","appidExclude","credProps","simplifiedClientExtensionResultsSchema","credentialCreationOptions","publicKey","rp","challenge","pubKeyCredParams","excludeCredentials","authenticatorSelection","attestation","extensions","signal","publicKeyCredentialWithAttestation","rawId","clientDataJSON","attestationObject","getTransports","clientExtensionResults","pkc","getClientExtensionResults","rpId","allowCredentials","userVerification","authenticatorData","signature","userHandle","requestJSON","credential","credentials","createRequestFromJSON","createResponseToJSON","_devices","devices","devicesM","device","popoverTarget","Help","helpElm","PageSwitch","help","PageSave","onCancel","onSave","labelNarrow","PageInput","autoSelect","inputGroup","controlButton","Device","onTestAlert","deviceId","toggleLevel","alert_levels","isPhone","deviceType","deviceOther","deviceMode","wan_rp_id","ssh_public_key","alertIcon","fields1","fields2","testButton","groupBox","inputBox","Devices","wanRegister","wanCreate","cred","deviceName","wanRespond","addDevice","devicePubKey","devicePhoneNumber","deviceTypes","onKeyPress","Audit","AuditsPage","Audits","_sshcertificates","sshcertificates","sshcertificatesM","sshcertificate","certs","certificates","Sshcertificate","certsInfo","certificates_info","serial","expires","authority_ids","SshcertificatesPage","Sshcertificates","panel","PagePanel","PageSplit","groupList","groupTop","buttonTop","PageInputButton","buttonClass","buttonStyle","buttonLabel","labelTop","buttonConfirm","buttonDisabled","onSubmit","listStyle","PageSelect","DATEPICKER","DATEPICKER_CAPTION","DATEPICKER_CAPTION_MEASURE","DATEPICKER_DAY_WRAPPER","DATEPICKER_FOOTER","DATEPICKER_MONTH_SELECT","DATEPICKER_YEAR_SELECT","DATEPICKER_NAVBAR","DATEPICKER_TIMEPICKER_WRAPPER","DATERANGEPICKER","DATERANGEPICKER_SHORTCUTS","DATETIMEPICKER","TIMEPICKER","TIMEPICKER_ARROW_BUTTON","TIMEPICKER_ARROW_ROW","TIMEPICKER_DIVIDER_TEXT","TIMEPICKER_HOUR","TIMEPICKER_INPUT","TIMEPICKER_INPUT_ROW","TIMEPICKER_MILLISECOND","TIMEPICKER_MINUTE","TIMEPICKER_SECOND","TIMEPICKER_AMPM_SELECT","areSameDay","date1","date2","areSameMonth","areSameTime","getMilliseconds","dateRange","exclusive","isDayRangeInRange","innerRange","outerRange","isTimeEqualOrGreaterThan","timeToCompare","isTimeEqualOrSmallerThan","isTimeInRange","minDate","maxDate","getDateOnlyWithTime","minTime","maxTime","isTimeGreaterThanMinTime","isTimeSmallerThanMaxTime","getTimeInRange","dateToCompare","isTimeSameOrAfter","getDateTime","getIsPmFrom24Hour","get12HourFrom24Hour","newHour","DATEPICKER_DEFAULT_VALUE_INVALID","DATEPICKER_INITIAL_MONTH_INVALID","DATEPICKER_MAX_DATE_INVALID","DATEPICKER_VALUE_INVALID","padWithZeroes","minLength","numTimes","monthRightOffset","handleMonthSelectChange","dateChangeHandler","handleYearSelectChange","onYearChange","minYear","maxYear","displayMonth","displayYear","startMonth","endMonth","monthOptionElements","displayedMonthText","monthSelect","yearSelect","orderedSelects","reverseMonthAndYearMenus","positionArrows","monthTextWidth","spanWidth","measureTextWidth","monthSelectWidth","rightOffset","onDateChange","DatePickerCaption","Months","getDefaultMinDate","TimeUnit","hideLeftNavButton","hideRightNavButton","getShorcutClickHandler","shortcut","onShortcutClick","isShortcutInRange","shortcutDateRange","allowSingleDayRange","hasTimePrecision","useSingleDateShortcuts","makeDate","yesterday","oneWeekAgo","oneMonthAgo","threeMonthsAgo","sixMonthsAgo","oneYearAgo","twoYearsAgo","shortcutElements","shortcuts","timePrecision","returnVal","createShortcut","selectedShortcutIndex","setTimeUnit","HOUR_24","HOUR_12","get24HourFrom12Hour","setMinutes","setSeconds","setMilliseconds","isTimeUnitValid","getTimeUnitMin","getTimeUnitMax","TimeUnitMetadata","DEFAULT_MIN_HOUR","DEFAULT_MIN_MINUTE","DEFAULT_MIN_SECOND","DEFAULT_MIN_MILLISECOND","DEFAULT_MAX_HOUR","DEFAULT_MAX_MINUTE","DEFAULT_MAX_SECOND","DEFAULT_MAX_MILLISECOND","TimePrecision","getInputChangeHandler","getStringValueFromInputEvent","hourText","minuteText","secondText","millisecondText","getInputBlurHandler","updateTime","getInputFocusHandler","selectAllOnFocus","getInputKeyDownHandler","actions","handleKeyEvent","incrementTime","decrementTime","getInputKeyUpHandler","handleAmPmChange","isNextPm","toPm","shiftTime","getFullStateFromValue","useAmPm","shouldRenderMilliseconds","shouldRenderSeconds","hourUnit","maybeRenderArrowButton","renderInput","renderDivider","maybeRenderAmPm","didMinTimeChange","didMaxTimeChange","didBoundsChange","didPropValueChange","shouldStateUpdate","isDirectionUp","timeUnit","showArrowButtons","isHour","timeInRange","formatTime","newTime","getTimeUnit","wrapTimeAtUnit","updateState","hasNewValue","ignoreNextMonthChange","shouldHighlightCurrentDay","getDatePickerModifiers","isToday","getDisabledDaysModifier","renderCaption","handleMonthChange","DatePickerNavbar","dayPickerProps","updateDay","canClearSelection","updateValue","handleShortcutClick","onShortcutChange","currentShortcutIndex","includeTime","datePickerShortcut","selectedDay","handleClearClick","computeValidDateInSpecifiedMonthYear","handleTodayClick","handleTimeChange","timePickerProps","getInitialValue","getInitialMonth","DatePicker","showActionsBar","maybeRenderShortcuts","maybeRenderTimePicker","renderOptionsBar","clearButtonText","todayButtonText","applyMin","applyMax","TimePicker","dateRangeShortcuts","Shortcuts","maxDaysInMonth","displayDate","isUserChange","skipOnChange","highlightCurrentDay","handleDateChange","dateValue","timeValue","datePickerProps","DateTimePicker","PageDateTime","dateStyle","PageNew","UserDetailed","onNew","locked","onAddRole","addRole","onRemoveRole","generate_secret","active_until","_nodes","nodesM","SYNC_NAMES","_services","_services_name","_map_name","services","servicesM","service","servicesName","servicesNameM","serviceName","_sync_names","SYNC_SECRET","_authorities","_secrets","authorities","authoritiesM","policy","authority","authoritySecret","_syncSecret","_certificates","certificatesM","certificate","nameSyncId","syncNames","service_names","deleteToken","authorityId","switchLabel","inputLabel","PageInputSwitch","borderTopLeftRadius","selectInner","selectBox","PageSelectButton","itemsLabel","itemsAdd","port","nodeId","onAddService","addService","serviceId","onRemoveService","onAddAuthority","addAuthority","proxy_hosting","onRemoveAuthority","onAddCert","addCert","certId","onRemoveCert","forwardedChecked","forwardedProtoChecked","toggleType","typ","vals","requests_min","memory","load1","load5","load15","servicesSelect","authoritiesSelect","cert","hasCertificates","certificatesSelect","management_domain","user_domain","webauthn_domain","no_redirect_server","software_version","hostname","forwarded_for_header","nde","forwarded_proto_header","Nodes","nodesDom","_policies","policies","policiesM","settings","_settings","settingsM","PolicyRule","onAddValue","addValue","onRemoveValue","defaultOption","selectLabel","selectPlaceholder","optionsSelect","inputElem","disable","Policy","setRule","operatingSystem","whitelistNetworks","whitelist_networks","blacklistNetworks","blacklist_networks","providerIds","adminProviders","userProviders","proxyProviders","authorityProviders","providers","provider","adminProvider","admin_secondary","userProvider","user_secondary","proxyProvider","proxy_secondary","authorityProvider","authority_secondary","admin_device_secondary","user_device_secondary","proxy_device_secondary","authority_device_secondary","authority_require_smart_card","Policies","policiesDom","callout","AuthorityDeploy","route53","awsAccessKey","awsSecretKey","hostCertificate","server","popoverElem","errorMsgElem","errorMsg","hostCertificateDisabled","host_certificates","servers","serverDefault","serversElm","host_tokens","bastionUsername","bastionHostname","bastionSplit","host_proxy","host_domain","epel","boto","public_key","PageTextAreaTab","activeIndex","tabs","Authority","hsm_secret","onAddMatch","host_matches","addMatch","onAddSubnet","subnets","host_subnets","addSubnet","onRemoveMatch","onRemoveSubnet","subnet","isHsm","hsmSecret","key_alg","proxy_jump","hsmStatus","hsm_status","hsm_timestamp","public_key_pem","root_certificate","strict_host_checking","authr","proxy_hostname","proxy_port","hsm_serial","hsm_token","hsm_generate_secret","expire","host_expire","match_roles","selectFirst","Authorities","algorithm","authoritiesDom","domain","domainBox","CertificateDomain","onRemove","PageTextArea","Certificate","onAddDomain","acmeDomains","acme_domains","addDomain","onChangeDomain","onRemoveDomain","domains","signature_alg","public_key_alg","issuer","issued_on","expires_on","dns_names","noCerts","Certificates","certsDom","_endpoints","endpoints","endpointsM","endpoint","dataSyncReqs","endpointId","resource","curDataSyncId","dataCancel","_checks","checks","checksM","checkId","getChartLabels","resource_label","resource_type","resource_suffix","resource_fixed","resource_min","resource_max","diskData","diskDatasets","hide_zero","diskioData","diskioDatasets","diskDevice","dataType","netData","netDatasets","iface","checkData","checkDatasets","getChartData","cpu_usage","mem_usage","swap_usage","huge_usage","diskChart","diskioChart","netChart","checkChart","EndpointChart","tickMod","toolElm","boxRect","getBoxRect","boxBottom","pageYOffset","boxTop","titleLines","bodyLines","innerHtml","tableRows","double","curRow","curTime","lastDouble","pageXOffset","toolTop","datasetLabels","pointRadius","chartRef","chartResp","onLoading","onLoaded","has_data","updateChart","dataLen","datasetsLen","chartGroup","EndpointCharts","chartBoxRef","getDefaultInterval","setLoading","setLoaded","intervalMin","intervalMax","refreshDisabled","refreshLabel","refreshClass","editorGroup","EndpointKmsg","logResp","$blockScrolling","EndpointDetailed","onResetClientKey","reset_client_key","showCharts","endpointData","uptime","package_updates","virtualization","cpu_cores","mem_total","swap_total","huge_total","md_stat","failed","alerts","alert","secretKey","secretUri","has_client_key","client_key","colSpan","cardOpen","nameSpan","barLast","Endpoint","onOpen","updates","EndpointsFilter","EndpointsPage","itemsBox","Endpoints","curOpened","endpointIds","newOpened","endpointsDom","instId","inst","_alerts","alertsM","alertsButtons","alertsAdd","AlertDetailed","alertId","onAddIgnore","ignores","addIgnore","onRemoveIgnore","valueInt","valueStr","valueLabel","valueHelp","ignoreShow","ignoreLabel","ignoreTitle","ignoreHelp","value_int","value_str","frequency","AlertsFilter","AlertsPage","Alerts","alertIds","alertsDom","CheckCharts","headerBox","CheckHeader","checksButtons","checksAdd","CheckDetailed","onAddTarget","targets","addTarget","onAddHeader","onRemoveTarget","onChangeHeader","onRemoveHeader","targetLabel","targetTitle","targetHelp","status_code","Check","ChecksFilter","ChecksPage","Checks","checkIds","checksDom","_logs","logs","logsM","dialogBody","Log","LogsFilter","LogsPage","logsBox","Logs","logsDom","ServiceDomain","hostnameBox","ServiceServer","pathBox","ServiceWhitelistPath","ServiceDetailed","onAddWhitelistNet","whitelistNets","addWhitelistNet","onAddServer","onAddWhitelistPath","whitelist_paths","onRemoveWhitelistNet","whitelistNet","onChangeServer","onRemoveServer","onChangeWhitelistPath","onRemoveWhitelistPath","whitelistPaths","client_authority","logout_path","share_session","websockets","disable_csrf_check","Service","ServicesFilter","ServicesPage","Services","serviceIds","servicesDom","SettingsProvider","azure","tenant","client_id","client_secret","authzero","google","google_email","google_key","onelogin","issuer_url","saml_url","saml_cert","okta","jumpcloud","jumpcloud_app_id","jumpcloud_secret","default_roles","rls","auto_create","role_management","SettingsSecondaryProvider","duo","duo_hostname","duo_key","duo_secret","push_factor","phone_factor","passcode_factor","sms_factor","one_login_id","one_login_secret","one_login_region","okta_domain","okta_token","providersLabel","secondaryProviders","Settings","secondaryProvider","subscriptionActive","auth_providers","prvdrs","auth_secondary_providers","authProviders","auth_admin_expire","auth_admin_max_duration","auth_proxy_expire","auth_proxy_max_duration","auth_user_expire","auth_user_max_duration","elastic_address","elastic_username","elastic_password","elastic_proxy_requests","nav","navTitle","navGroup","flexWrap","connected","connect","socket","WebSocket","topY","bottomY"],"sourceRoot":""} \ No newline at end of file